{"id":270,"date":"2018-09-19T16:49:05","date_gmt":"2018-09-19T16:49:05","guid":{"rendered":"https:\/\/www.unsafehex.com\/?p=270"},"modified":"2024-09-27T17:29:18","modified_gmt":"2024-09-27T17:29:18","slug":"transparent-ssl-intercept","status":"publish","type":"post","link":"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/","title":{"rendered":"Intercepting SSL with squid proxy and routing to tor"},"content":{"rendered":"<p>There was a time when practically all malware communicated with its command and control (C2) servers unencrypted. Those days are long gone, and now much of what we would wish to see is hidden under HTTPS.\u00a0 What are we to do if we want to know what is going on within that traffic?<\/p>\n<h4>Introduction<\/h4>\n<h5>(for those who are unfamiliar with the HTTPS protocol and public key encryption)<\/h5>\n<p>The foundation of HTTPS is the Public Key Infrastructure. When traffic is to be encrypted, the destination server provides a public key with which to encrypt a message. Only that server, which is in possession of the linked private key, can decrypt the message. Public key, or asymmetric encryption, is relatively slow so instead of all traffic being secured with this, <a href=\"https:\/\/robertheaton.com\/2014\/03\/27\/how-does-https-actually-work\/\" target=\"_blank\" rel=\"noopener noreferrer\">the client and server use this stage only to negotiate a new key in secret<\/a> for a symmetrically encrypted connection. If we wish to be able to read the traffic, we need to obtain the symmetric encryption key.<\/p>\n<p>How can this be achieved? If we are in a position to intercept the traffic, we could provide a public key that we are in control of to the client, and establish our own connection to the server. The traffic would be decrypted at our interception point with our key, and re-encrypted as we pass it to the server with the server&#8217;s key. However, because HTTPS must be able to keep information confidential, it has defences designed with this attack in mind. A key issued by a server is normally provided along with the means to verify that it is genuine, not falsified as we wish to do. The key is accompanied by a cryptographic signature from a Certificate Authority (CA), and computers and other devices using HTTPS to communicate hold a list of CAs which are considered trustworthy and authorised to verify that keys are valid. Comparing the signature against the client&#8217;s stored list enables the client to verify the authenticity of the public key.<\/p>\n<p>If we wish to inspect encrypted communication, we must both intercept the secret key during the exchange, and convince the client that the certificate it receives is genuine. This post will walk through the process needed to achieve those two goals.<\/p>\n<h4>Design<\/h4>\n<h5>Starting point<\/h5>\n<p>I have already been running a sandbox that routes traffic via tor. It is loosely based on <a href=\"https:\/\/infosecspeakeasy.org\/t\/howto-build-a-cuckoo-sandbox\/27\" target=\"_blank\" rel=\"noopener noreferrer\">Sean Whalen&#8217;s Cuckoo guide<\/a>, and implements the tor routing without going via privoxy, as shown below.<\/p>\n<div id=\"attachment_271\" style=\"width: 951px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Pre-proxy-diagram.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-271\" class=\"size-full wp-image-271\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Pre-proxy-diagram.png\" alt=\"\" width=\"941\" height=\"511\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Pre-proxy-diagram.png 941w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Pre-proxy-diagram-300x163.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Pre-proxy-diagram-768x417.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Pre-proxy-diagram-624x339.png 624w\" sizes=\"(max-width: 941px) 100vw, 941px\" \/><\/a><p id=\"caption-attachment-271\" class=\"wp-caption-text\">Initial setup<\/p><\/div>\n<p>Using this method allows me to run malware without revealing the public IP of my lab environment. It has certain drawbacks; some malware will recognise that it is being routed via tor and stop functioning, however the tradeoff is acceptable to me.<\/p>\n<h5>squid | tor<\/h5>\n<p>Using squid with tor comes with some caveats that make the eventual configuration a little complicated. The version of squid I am using (3.5.23) cannot directly connect to a tor process running on the local host. In order to route via tor locally you will need a <strong>parent\u00a0<\/strong><strong>cache\u00a0<\/strong><strong>peer<\/strong>\u00a0to which the connection can be forwarded. Privoxy is capable of serving this purpose, so initially I attempted the setup shown below:<\/p>\n<div id=\"attachment_272\" style=\"width: 931px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-no-ssl-bump.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-272\" class=\"size-full wp-image-272\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-no-ssl-bump.png\" alt=\"\" width=\"921\" height=\"621\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-no-ssl-bump.png 921w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-no-ssl-bump-300x202.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-no-ssl-bump-768x518.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-no-ssl-bump-624x421.png 624w\" sizes=\"(max-width: 921px) 100vw, 921px\" \/><\/a><p id=\"caption-attachment-272\" class=\"wp-caption-text\">Via privoxy<\/p><\/div>\n<p>This configuration will function just fine if all you want is to proxy via squid. Unfortunately, this version of squid does not support SSL\/TLS interception when a parent cache is being used. So, since we cannot use privoxy, and squid cannot route to tor on the same host, what can we do? Run tor on a different host!<\/p>\n<div id=\"attachment_273\" style=\"width: 1011px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-with-ssl-bump.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-273\" class=\"wp-image-273 size-full\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-with-ssl-bump.png\" alt=\"\" width=\"1001\" height=\"735\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-with-ssl-bump.png 1001w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-with-ssl-bump-300x220.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-with-ssl-bump-768x564.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-with-ssl-bump-624x458.png 624w\" sizes=\"(max-width: 1001px) 100vw, 1001px\" \/><\/a><p id=\"caption-attachment-273\" class=\"wp-caption-text\">Via squid and second host running tor<\/p><\/div>\n<h4>Implementation<\/h4>\n<h5>squid with ssl intercept\/ssl-bump<\/h5>\n<p>In order to use squid with ssl-bump, you must have compiled squid with the <em>&#8211;with-openssl<\/em> and <em>&#8211;enable-ssl-crtd<\/em> options. The default package on Debian is not compiled this way, so to save you some time I have provided the commands I used to compile it:<\/p>\n<pre>apt-get source squid\ncd squid3-3.5.23\/\n.\/configure --build=x86_64-linux-gnu --prefix=\/usr --includedir=${prefix}\/include --mandir=${prefix}\/share\/man --infodir=${prefix}\/share\/info --sysconfdir=\/etc --localstatedir=\/var --libexecdir=${prefix}\/lib\/squid3 --srcdir=. --disable-maintainer-mode --disable-dependency-tracking --disable-silent-rules 'BUILDCXXFLAGS=-g -O2 -fdebug-prefix-map=\/build\/squid3-4PillG\/squid3-3.5.23=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,-z,now -Wl,--as-needed' --datadir=\/usr\/share\/squid --sysconfdir=\/etc\/squid --libexecdir=\/usr\/lib\/squid --mandir=\/usr\/share\/man --enable-inline --disable-arch-native --enable-async-io=8 --enable-storeio=ufs,aufs,diskd,rock --enable-removal-policies=lru,heap --enable-delay-pools --enable-cache-digests --enable-icap-client --enable-follow-x-forwarded-for --enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB --enable-auth-digest=file,LDAP --enable-auth-negotiate=kerberos,wrapper --enable-auth-ntlm=fake,smb_lm --enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,time_quota,unix_group,wbinfo_group --enable-url-rewrite-helpers=fake --enable-eui --enable-esi --enable-icmp --enable-zph-qos --enable-ecap --disable-translation --with-swapdir=\/var\/spool\/squid --with-logdir=\/var\/log\/squid --with-pidfile=\/var\/run\/squid.pid --with-filedescriptors=65536 --with-large-files --with-default-user=proxy --enable-build-info='Debian linux' --enable-linux-netfilter build_alias=x86_64-linux-gnu 'CFLAGS=-g -O2 -fdebug-prefix-map=\/build\/squid3-4PillG\/squid3-3.5.23=. -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-z,relro -Wl,-z,now -Wl,--as-needed' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fdebug-prefix-map=\/build\/squid3-4PillG\/squid3-3.5.23=. -fstack-protector-strong -Wformat -Werror=format-security' --with-openssl --enable-ssl-crtd\nmake &amp;&amp; make install<\/pre>\n<p>The configuration above is identical to the precompiled one in the Debian Stretch repository, apart from the addition of the SSL options. If you are using a different distro the above command may not work.<\/p>\n<p>Most of my configuration is based on the <a href=\"https:\/\/wiki.squid-cache.org\/ConfigExamples\/Intercept\/SslBumpExplicit\" target=\"_blank\" rel=\"noopener noreferrer\">guide in the official squid documentation<\/a>. My squid configuration is as follows:<\/p>\n<pre>acl ftp proto FTP\nacl SSL_ports port 443\nacl SSL_ports port 1025-65535\nacl Safe_ports port 80 # http\nacl Safe_ports port 21 # ftp\nacl Safe_ports port 443 # https\nacl Safe_ports port 70 # gopher\nacl Safe_ports port 210 # wais\nacl Safe_ports port 1025-65535 # unregistered ports\nacl Safe_ports port 280 # http-mgmt\nacl Safe_ports port 488 # gss-http\nacl Safe_ports port 591 # filemaker\nacl Safe_ports port 777 # multiling http\nacl CONNECT method CONNECT\nacl LANnet src 192.168.80.0\/24 # local network for virtual machines\nacl step1 at_step SslBump1\nhttp_access deny !Safe_ports\nhttp_access deny CONNECT !SSL_ports\nhttp_access allow localhost manager\nhttp_access allow LANnet\nhttp_access deny manager\nhttp_access allow localhost\nhttp_access deny all\nhttp_port 3128 intercept # intercept required for transparent proxy\nhttps_port 3129 intercept ssl-bump \\\n    cert=\/etc\/squid\/antfarm.pem \\\n    generate-host-certificates=on dynamic_cert_mem_cache_size=4MB\nssl_bump peek step1\nssl_bump bump all\nsslcrtd_program \/usr\/lib\/squid\/ssl_crtd -s \/var\/lib\/ssl_db -M 4MB\nsslcrtd_children 8 startup=1 idle=1\naccess_log daemon:\/var\/log\/squid\/access.log logformat=combined\npid_filename \/var\/run\/squid\/squid.pid\ncoredump_dir \/var\/spool\/squid\nrefresh_pattern ^ftp: 1440 20% 10080\nrefresh_pattern ^gopher: 1440 0% 1440\nrefresh_pattern -i (\/cgi-bin\/|\\?) 0 0% 0\nrefresh_pattern . 0 20% 4320\nrequest_header_access X-Forwarded-For deny all\nhttpd_suppress_version_string on\nalways_direct allow all<\/pre>\n<p>Use the SSL certificate generation process shown in the linked guide. Once you have created the .pem file, copy the section from <em>&#8212;&#8211;BEGIN CERTIFICATE&#8212;&#8211;<\/em> to <em>&#8212;&#8211;END CERTIFICATE&#8212;&#8211;<\/em> into a new file with the extension .crt.<\/p>\n<p>A few notes here:<\/p>\n<ul>\n<li>The &#8216;intercept&#8217; keyword is necessary if you are using iptables to redirect ports to squid as a transparent proxy. If you configure your client to explicitly use a proxy, you should not use it.<\/li>\n<li>The always_direct clause is used because we are routing squid&#8217;s output to another host (running tor) as the default gateway. If you wanted to use the squid\u00a0\u2192 privoxy\u00a0\u2192 tor configuration locally, you would use &#8216;never_direct&#8217; instead.<\/li>\n<li>The path for the <em>ssl_crtd<\/em> tool in Debian is <em>\/usr\/local\/squid\/ssl_crtd\u00a0<\/em>&#8211; no libexec.<\/li>\n<li>When setting permissions for the cache directories in Debian, use &#8220;proxy:proxy&#8221; instead of &#8220;squid:squid&#8221; as this is the default user that Debian creates to run the squid service.<\/li>\n<\/ul>\n<p>In order for the virtual machine to treat the falsified public keys as genuine, we must instruct it to trust the certificate as created above. For a Windows 7 host like mine, double click the .crt file and import the certificate in to the Trusted Root Certification Authorities store.<\/p>\n<div id=\"attachment_274\" style=\"width: 560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/certificate-import.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-274\" class=\"size-full wp-image-274\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/certificate-import.png\" alt=\"\" width=\"550\" height=\"596\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/certificate-import.png 550w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/certificate-import-277x300.png 277w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><p id=\"caption-attachment-274\" class=\"wp-caption-text\">Importing a cert<\/p><\/div>\n<p>With squid set up and certificate imported, you must then configure iptables on the hypervisor host to redirect traffic through squid.<\/p>\n<pre>iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j REDIRECT --to-port 3128\niptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 443 -j REDIRECT --to-port 3129<\/pre>\n<p>where\u00a0<em>virbr0<\/em> is the name of the virtual interface in QEMU. You should adjust interface name and destination ports as required for your setup.<\/p>\n<h5>tor service<\/h5>\n<p>On the second host I have installed tor (version 0.2.5.16 from Debian Stretch repo). This is configured with ports to listen for TCP and DNS connections in <em>\/etc\/tor\/torrc<\/em>:<\/p>\n<pre>TransPort 192.168.42.2:8081\nDNSPort 192.168.42.2:53<\/pre>\n<p>Then with iptables, inbound traffic from the hypervisor host is redirected to tor:<\/p>\n<pre>-A PREROUTING -s 192.168.42.4\/32 -i eth0 -p tcp -j REDIRECT --to-ports 8081<\/pre>\n<h5>routing<\/h5>\n<p>Since the objective is to keep my real IP hidden, care must be taken to ensure the host&#8217;s routing does not leak information. In <em>\/etc\/network\/interfaces<\/em>, instead of specifying a gateway, I added two routes:<\/p>\n<pre>up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.40.1\nup route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.40.2<\/pre>\n<p>This causes all traffic not intended for my internal network to be routed to the host running the tor service (on 192.168.40.2). I have then configured my firewall so that it only allows connections reaching in to this VLAN, or from the tor host,\u00a0<strong>not\u00a0<\/strong>from the malware VM hypervisor.\u00a0 When updates are required, connectivity can be enabled temporarily, with the VMs paused or shut off. Alternative techniques include allowing the hypervisor host to update via tor (if I didn&#8217;t mind it being slow), or routing the traffic from the VMs without NAT and denying anything outbound from the VM network on my core router, but that&#8217;s something to look at another day.<\/p>\n<p>With the gateways set up, the routing for the VM interface can then be applied on the hypervisor host:<\/p>\n<pre>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\niptables -A FORWARD -i virbr0 -j ACCEPT<\/pre>\n<p>After applying these rules you should have a fully functioning TLS\/SSL intercept routed via tor. To test, start by attempting to resolve a few hostnames from the VM and verify that the traffic is hitting your tor service host BEFORE giving any web pages a spin. Move on to HTTP\/HTTPS traffic once you are sure DNS is working correctly.<\/p>\n<h4>Usage<\/h4>\n<p>Once you have a functioning setup you should expect to see both HTTP and HTTPS URLs appearing in your squid access log. In addition, if you perform a packet capture on the hypervisor virtual interface (<em>virbr0<\/em> in my case), you can <a href=\"https:\/\/wiki.wireshark.org\/SSL#Wireshark\" target=\"_blank\" rel=\"noopener noreferrer\">use the key generated earlier to view the decrypted traffic in Wireshark<\/a>. You will need to copy the\u00a0<strong>private key<\/strong> section of the .pem file to a new file to use in Wireshark. When entering the protocol as described in the link above, use &#8216;http&#8217; in lowercase &#8211; uppercase will not work.<\/p>\n<div id=\"attachment_276\" style=\"width: 477px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/SSL-key-in-wireshark.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-276\" class=\"size-full wp-image-276\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/SSL-key-in-wireshark.png\" alt=\"\" width=\"467\" height=\"202\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/SSL-key-in-wireshark.png 467w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/SSL-key-in-wireshark-300x130.png 300w\" sizes=\"(max-width: 467px) 100vw, 467px\" \/><\/a><p id=\"caption-attachment-276\" class=\"wp-caption-text\">importing an SSL key in wireshark<\/p><\/div>\n<div id=\"attachment_275\" style=\"width: 551px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/decrypted.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-275\" class=\"size-full wp-image-275\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/decrypted.png\" alt=\"\" width=\"541\" height=\"317\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/decrypted.png 541w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/decrypted-300x176.png 300w\" sizes=\"(max-width: 541px) 100vw, 541px\" \/><\/a><p id=\"caption-attachment-275\" class=\"wp-caption-text\">decrypted output of call to https:\/\/ipapi.co<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>There was a time when practically all malware communicated with its command and control (C2) servers unencrypted. Those days are long gone, and now much of what we would wish to see is hidden under HTTPS.\u00a0 What are we to do if we want to know what is going on within that traffic? Introduction (for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":273,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,52,12],"tags":[89,88,28,58,91,86,87,90],"class_list":["post-270","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mawlare-analysis","category-sandboxing","category-tutorials-and-guides","tag-decryption","tag-interception","tag-malware","tag-sandboxing","tag-squid","tag-ssl","tag-tls","tag-tor"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Intercepting SSL with squid proxy and routing to tor &#8211; unsafehex<\/title>\n<meta name=\"description\" content=\"Design and configuration guide for using squid with transparent tls\/ssl intercept to decrypt sandbox traffic routed via tor\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Intercepting SSL with squid proxy and routing to tor &#8211; unsafehex\" \/>\n<meta property=\"og:description\" content=\"Design and configuration guide for using squid with transparent tls\/ssl intercept to decrypt sandbox traffic routed via tor\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/\" \/>\n<meta property=\"og:site_name\" content=\"unsafehex\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-19T16:49:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-27T17:29:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-with-ssl-bump.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1001\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"http_error_418\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@http_error_418\" \/>\n<meta name=\"twitter:site\" content=\"@http_error_418\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"http_error_418\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/\",\"url\":\"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/\",\"name\":\"Intercepting SSL with squid proxy and routing to tor &#8211; unsafehex\",\"isPartOf\":{\"@id\":\"https:\/\/www.unsafehex.com\/#website\"},\"datePublished\":\"2018-09-19T16:49:05+00:00\",\"dateModified\":\"2024-09-27T17:29:18+00:00\",\"author\":{\"@id\":\"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652\"},\"description\":\"Design and configuration guide for using squid with transparent tls\/ssl intercept to decrypt sandbox traffic routed via tor\",\"breadcrumb\":{\"@id\":\"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.unsafehex.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Intercepting SSL with squid proxy and routing to tor\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.unsafehex.com\/#website\",\"url\":\"https:\/\/www.unsafehex.com\/\",\"name\":\"unsafehex\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.unsafehex.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652\",\"name\":\"http_error_418\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.unsafehex.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g\",\"caption\":\"http_error_418\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Intercepting SSL with squid proxy and routing to tor &#8211; unsafehex","description":"Design and configuration guide for using squid with transparent tls\/ssl intercept to decrypt sandbox traffic routed via tor","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/","og_locale":"en_GB","og_type":"article","og_title":"Intercepting SSL with squid proxy and routing to tor &#8211; unsafehex","og_description":"Design and configuration guide for using squid with transparent tls\/ssl intercept to decrypt sandbox traffic routed via tor","og_url":"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/","og_site_name":"unsafehex","article_published_time":"2018-09-19T16:49:05+00:00","article_modified_time":"2024-09-27T17:29:18+00:00","og_image":[{"width":1001,"height":735,"url":"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2018\/09\/Proxy-with-ssl-bump.png","type":"image\/png"}],"author":"http_error_418","twitter_card":"summary_large_image","twitter_creator":"@http_error_418","twitter_site":"@http_error_418","twitter_misc":{"Written by":"http_error_418","Estimated reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/","url":"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/","name":"Intercepting SSL with squid proxy and routing to tor &#8211; unsafehex","isPartOf":{"@id":"https:\/\/www.unsafehex.com\/#website"},"datePublished":"2018-09-19T16:49:05+00:00","dateModified":"2024-09-27T17:29:18+00:00","author":{"@id":"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652"},"description":"Design and configuration guide for using squid with transparent tls\/ssl intercept to decrypt sandbox traffic routed via tor","breadcrumb":{"@id":"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.unsafehex.com\/index.php\/2018\/09\/19\/transparent-ssl-intercept\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.unsafehex.com\/"},{"@type":"ListItem","position":2,"name":"Intercepting SSL with squid proxy and routing to tor"}]},{"@type":"WebSite","@id":"https:\/\/www.unsafehex.com\/#website","url":"https:\/\/www.unsafehex.com\/","name":"unsafehex","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.unsafehex.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652","name":"http_error_418","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.unsafehex.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g","caption":"http_error_418"}}]}},"_links":{"self":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts\/270"}],"collection":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/comments?post=270"}],"version-history":[{"count":3,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts\/270\/revisions"}],"predecessor-version":[{"id":345,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts\/270\/revisions\/345"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/media\/273"}],"wp:attachment":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/media?parent=270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/categories?post=270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/tags?post=270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}