<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mitm &#8211; PT ESC</title>
	<atom:link href="/tag/mitm/feed/index.xml" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Mon, 05 Oct 2026 12:11:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>/wp-content/uploads/2026/09/cropped-cropped-large_icon-32x32.png</url>
	<title>mitm &#8211; PT ESC</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>🦈 Смотрим под капот защищенных соединений в Wireshark. Часть 3.1: MITM-атака на SSL/TLS-соединения</title>
		<link>/looking-under-the-hood-of-secure-connections-in-wireshark-part-3-1-mitm-attack-on-ssl-tls/</link>
		
		<dc:creator><![CDATA[oUth0R]]></dc:creator>
		<pubDate>Wed, 22 Oct 2025 12:13:01 +0000</pubDate>
				<category><![CDATA[Incident Response]]></category>
		<category><![CDATA[dfir]]></category>
		<category><![CDATA[mitm]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tls]]></category>
		<guid isPermaLink="false">http://localhost:8080/%d1%81%d0%bc%d0%be%d1%82%d1%80%d0%b8%d0%bc-%d0%bf%d0%be%d0%b4-%d0%ba%d0%b0%d0%bf%d0%be%d1%82-%d0%b7%d0%b0%d1%89%d0%b8%d1%89%d0%b5%d0%bd%d0%bd%d1%8b%d1%85-%d1%81%d0%be%d0%b5%d0%b4%d0%b8%d0%bd%d0%b5-3/</guid>

					<description><![CDATA[&#160; В дополнение к предыдущему посту рассматриваем дополнительные инструменты для расшифровки сетевого трафика. Рассмотрим альтернативу PolarProxy, которая не является проприетарной. SSLproxy — инструмент, который по сути является продолжением sslsplit, но обладает рядом…]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p><em>В дополнение </em><a href="https://t.me/ptescalator/522" target="_blank" rel="noopener">к предыдущему посту</a><em> рассматриваем дополнительные инструменты для расшифровки сетевого трафика.</em></p>
<p>Рассмотрим альтернативу <em>PolarProxy</em>, которая не является проприетарной. <a href="https://github.com/sonertari/SSLproxy" target="_blank" rel="noopener">SSLproxy</a> — инструмент, который по сути является продолжением <em>sslsplit</em>, но обладает рядом других преимуществ, в частности — запись расшифрованных данных в PCAP-файл. Данный проект применяется в <a href="https://sonertari.github.io/" target="_blank" rel="noopener">UTMFW.</a> Предварительно настроим хост, как в случае <em>sslsplit</em>, только тут трафик будет перенаправляться в один единственный порт 8443.</p>

<pre class="wp-block-code"><span><code lang="plaintext" class="hljs language-plaintext language-plaintext">sslproxy -k ca.key -c ca.crt -P https 0.0.0.0 8443 -X sslproxy.pcap</code></span></pre>

<p>Сформируем запрос с указанием предварительно сгенерированного сертификата в опции <code>--cacert</code>.</p>

<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash">curl --cacert ca.crt --tlsv1.3 https://ptsecurity.com/</code></span></pre>

<p>В отличие от предыдущих описанных инструментов, здесь формируется PCAP-файл с расшифрованными данными, поэтому его можно парсить с помощью Zeek, Suricata и других DPI. Но инструмент имеет аналогичный <em>sslsplit</em> недостаток — файл с мастер-ключами формируется неправильно для TLSv1.3.</p>
<p>Подводя итог по инструментам <em>PolarProxy</em> и <em>SSLProxy</em>: они являются отличными аналогами <em>sslsplit</em>, которые также могут быть применены в том или ином автоматизированном сервисе, например в системе анализа приложений или NGFW.</p>
<p>Все указанные выше инструменты имеют один ключевой недостаток — у них нет возможности формировать, либо полноценно формировать файл с мастер-ключами SSL/TLS-сессий. Рассмотрим инструмент, который решает конкретно эту проблему.</p>
<p>❕ <strong>mitmproxy</strong> — интерактивный инструмент с открытым исходным кодом. Имеет возможность использования web UI (<em>mitmweb</em>). В отличие от предыдущих аналогов, данный инструмент не имеет возможности записи расшифрованных данных в PCAP-файл, но зато способен наиболее эффективно работать с мастер-ключами. Данный инструмент содержится во многих репозиториях, в том числе PyPI.</p>
<p><strong>Для захвата сетевого трафика в реальном времени с помощью mitmproxy можно использовать следующую команду:<br />
</strong></p>

<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash">SSLKEYLOGFILE=<span class="hljs-string">"<span class="hljs-variable">$PWD</span>/.mitmproxy/sslkeylogfile.txt"</span> mitmproxy --<span class="hljs-built_in">set</span> confdir=.mitmproxy/ --listen-host 0.0.0.0 -p 8080</code></span></pre>

<p>В рабочей директории, где был запущен <em>mitmproxy</em>, будет создана директория с файлами конфигурации <em>.mitmproxy</em>, которая будет содержать <a href="https://docs.mitmproxy.org/stable/concepts/certificates/" rel="noopener" target="_blank">эти сертификаты.</a> В последующем их можно применять при реализации MITM-атаки на SSL/TLS.</p>
<p><strong>Попробуем осуществить HTTP/2-запрос через запущенный прокси, при этом указав CA (центр сертификации).<br />
</strong></p>

<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash">curl --proxy 127.0.0.1:8080 --cacert ~/.mitmproxy/mitmproxy-ca-cert.pem https://www.ptsecurity.com/</code></span></pre>

<p>Так как данные поступают в расшифрованном виде, можем интерактивно наблюдать заголовки запроса (<em>скриншот 4</em>) и ответа (<em>скриншот 5</em>). Полученные ключи <em>sslkeylogfile.txt</em>, которые мы указали в переменной среде <em>SSLKEYLOGFILE</em> мы можем применять в дальнейшем для наших целей, в том числе в Wireshark. При этом ключи TLSv1.3 сессий будут иметь правильный формат, в отличии от предыдущих инструментов. У <em>mitmproxy</em> также есть функционал прозрачного прокси, в случае добавления опции <code>--mode transparent</code>.</p>
<p>Таким образом, из плюсов <em>mitmproxy</em> можно отметить быстроту развертывания, интерактивность (в том числе web UI), актуальность (тула регулярно обновляется и дорабатывается), а также возможность формирования рабочих мастер-ключей для TLSv1.3.</p>
<p>💬 Подводя итог, хочется отметить, что существует множество инструментов для осуществления MITM-атак на SSL/TLS-соединения. Каждый из этих инструментов имеет свои плюсы и минусы и подходит под разные задачи.</p>
<figure class="wp-block-image"><img width="1024" height="561" src="/wp-content/uploads/2025/10/photo_407@22-10-2025_12-13-01-1024x561.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2025/10/photo_407@22-10-2025_12-13-01-1024x561.jpg 1024w, /wp-content/uploads/2025/10/photo_407@22-10-2025_12-13-01-300x164.jpg 300w, /wp-content/uploads/2025/10/photo_407@22-10-2025_12-13-01-768x421.jpg 768w, /wp-content/uploads/2025/10/photo_407@22-10-2025_12-13-01.jpg 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<p><span class="hashtag">#dfir</span> <span class="hashtag">#tip</span> <span class="hashtag">#mitm</span> <span class="hashtag">#ssl</span> <span class="hashtag">#tls</span><br />
<a href="https://t.me/ptescalator" rel="noopener" target="_blank">@ptescalator</a></p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>🦈 Смотрим под капот защищенных соединений в Wireshark. Часть 3: MITM-атака на SSL/TLS-соединения</title>
		<link>/looking-under-the-hood-of-secure-connections-in-wireshark-part-3-mitm-attack-on-ssl-tls/</link>
		
		<dc:creator><![CDATA[oUth0R]]></dc:creator>
		<pubDate>Wed, 22 Oct 2025 12:12:00 +0000</pubDate>
				<category><![CDATA[Incident Response]]></category>
		<category><![CDATA[dfir]]></category>
		<category><![CDATA[mitm]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tls]]></category>
		<guid isPermaLink="false">http://localhost:8080/%d1%81%d0%bc%d0%be%d1%82%d1%80%d0%b8%d0%bc-%d0%bf%d0%be%d0%b4-%d0%ba%d0%b0%d0%bf%d0%be%d1%82-%d0%b7%d0%b0%d1%89%d0%b8%d1%89%d0%b5%d0%bd%d0%bd%d1%8b%d1%85-%d1%81%d0%be%d0%b5%d0%b4%d0%b8%d0%bd%d0%b5-2/</guid>

					<description><![CDATA[&#160; MITM-атака — достаточно популярный функционал различных песочниц и систем анализа приложений. Обычно инструменты, которые позволяют осуществлять MITM-атаки, представляют из себя прокси-сервер, который позволяет гибко обрабатывать входящий в него трафик и перехватывать…]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p>MITM-атака — достаточно популярный функционал различных песочниц и систем анализа приложений. Обычно инструменты, которые позволяют осуществлять MITM-атаки, представляют из себя прокси-сервер, который позволяет гибко обрабатывать входящий в него трафик и перехватывать SSL/TLS-сессии, извлекать мастер-ключи и многое другое. В таком случае нам требуется указать этот прокси-сервер в приложении или сервисе, на который планируется MITM-атака. В зависимости от гибкости инструмента, в нем также может быть встроен режим прозрачного проксирования (transparent proxy), который в отличие от классического прокси обычно требует, чтобы трафик был перенаправлен сетевыми правилами (например, с помощью iptables) в конкретную машину.</p>
<p>👀 <strong>Рассмотрим </strong><a href="https://github.com/droe/sslsplit" target="_blank" rel="noopener">sslsplit</a> — инструмент с открытым исходным кодом, который позволяет расшифровывать SSL/TLS-соединения прозрачно. <br />Сконфигурируем шлюз на базе Debian на примере скрипта <a href="https://github.com/infokek/network-configuration-scripts/blob/main/make_gateway.sh" target="_blank" rel="noopener">make_gateway.sh</a><a href="https://vk.com/s/v1/doc/GIsHZtSTl8HAoAx9a6-S3vC-ulL7a9RT_OyNjSrjhIJtTWU1dT0" target="_blank" rel="noopener">.</a></p>
<p><strong>Предварительно сгенерируем сертификаты для последующей работы прозрачного прокси.<br /></strong></p>

<pre class="wp-block-code"><span><code lang="plaintext" class="hljs language-plaintext language-plaintext">openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 365 -key ca.key -out ca.crt</code></span></pre>

<p><strong>Запустим sslsplit с указанными параметрами.</strong></p>

<pre class="wp-block-code"><span><code lang="plaintext" class="hljs language-plaintext language-plaintext">sslsplit -M keys.log -D -l connections.log -j sslsplit/ -S logdir/ -k ca.key -c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080</code></span></pre>

<p>С другой машины сделаем запрос, при этом не указывая никакие параметры прокси, так как тут прокси у нас прозрачен и трафик перенаправляется в шлюз с клиентской машины, а дальше SSL/TLS с порта 443 перенаправляется в запущенный прозрачный прокси в порт 8443, при этом на клиенте нет никаких правил перенаправления трафика.</p>

<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash">curl --cacert ca.crt --tlsv1.3 https://www.ptsecurity.com/</code></span></pre>

<p>Лог инструмента выводит информацию о том, что запрос прошел через прокси, хотя мы не указывали его напрямую (<em>скриншот 1</em>). В директории <em>logdir</em>, которую мы указали в инструменте, появляется файл, который содержит в себе расшифрованный поток (<em>скриншот 2</em>). При этом в файл <em>keys.log</em> записываются мастер-ключи SSL/TLS, и в дальнейшем эти ключи можно использовать, например, в Wireshark, если предварительно захватим весь трафик, который нужно расшифровать. Об этом мы рассказывали <a href="https://t.me/ptescalator/508" rel="noopener" target="_blank">в первой части постов про Wireshark.</a> Стоит отметить недочет данного инструмента — SSLKEYLOGFILE для сессий TLSv1.3 формируется некорректно, как следствие при открытии PCAP-файла в Wireshark не будет доступа к расшифрованным данным.</p>
<p>Но что, если мы хотим сформировать PCAP-файл с расшифрованными данными?</p>
<p>🐻<a href="https://www.netresec.com/?page=PolarProxy" rel="noopener" target="_blank"> </a><a href="https://www.netresec.com/?page=PolarProxy" rel="noopener" target="_blank">PolarProxy</a> — в отличие от указанного выше инструмента, PolarProxy позволяет сформировать PCAP-файл с расшифрованными данными, но его главный недостаток: он проприетарный.</p>
<p><strong>Запустим SOCKS в PolarProxy и укажем запись напрямую в PCAP-файл.</strong><br />
При этом PolarProxy имеет встроенный веб-хост сертификата, запустим его на порту 10080.</p>

<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash">sudo ./PolarProxy -v --certhttp 10080 --socks 1080 -w polarproxy.pcap</code></span></pre>

<p><strong>Загрузим сертификат</strong></p>

<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash">wget http://127.0.0.1:10080/polarproxy.crt</code></span></pre>

<p><strong>Сформируем запрос через запущенный прокси.<br />
</strong>Предварительно укажем сертификат в опции <code>--cacert</code>.</p>

<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash">curl --cacert polarproxy.crt --proxy socks5://127.0.0.1:1080 https://ptsecurity.com/</code></span></pre>

<p>После завершения работы <em>PolarProxy</em> получаем записанный PCAP-файл <em>polarproxy.pcap</em>. В нем данный расшифрованный запрос можем посмотреть через Wireshark (<em>скриншот 3</em>). В отличие от предыдущих описанных инструментов, здесь формируется расшифрованный PCAP-файл в чистом виде, поэтому данный файл можно парсить с помощью Zeek, Suricata и других DPI. </p>
<p>У инструмента есть возможность применения опции прозрачного прокси, например:</p>

<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash">sudo ./PolarProxy -v -p 0.0.0.0,10443,80,443 -w polarproxy.pcap</code></span></pre>

<p>Тогда PolarProxy будет запущен прозрачно на порту 10443 и будет обрабатывать трафик с клиентской машины от портов 80, 443 на всех интерфейсах.</p>
<p>Продолжение в посте ниже 👇</p>
<figure class="wp-block-image"><img width="1024" height="577" src="/wp-content/uploads/2025/10/photo_404@22-10-2025_12-12-00-1024x577.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2025/10/photo_404@22-10-2025_12-12-00-1024x577.jpg 1024w, /wp-content/uploads/2025/10/photo_404@22-10-2025_12-12-00-300x169.jpg 300w, /wp-content/uploads/2025/10/photo_404@22-10-2025_12-12-00-768x433.jpg 768w, /wp-content/uploads/2025/10/photo_404@22-10-2025_12-12-00.jpg 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<figure class="wp-block-image"><img width="1024" height="646" src="/wp-content/uploads/2025/10/photo_405@22-10-2025_12-12-00-1024x646.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2025/10/photo_405@22-10-2025_12-12-00-1024x646.jpg 1024w, /wp-content/uploads/2025/10/photo_405@22-10-2025_12-12-00-300x189.jpg 300w, /wp-content/uploads/2025/10/photo_405@22-10-2025_12-12-00-768x484.jpg 768w, /wp-content/uploads/2025/10/photo_405@22-10-2025_12-12-00.jpg 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<p><span class="hashtag">#dfir</span> <span class="hashtag">#tip</span> <span class="hashtag">#mitm</span> <span class="hashtag">#ssl</span> <span class="hashtag">#tls</span><br />
<a href="https://t.me/ptescalator" rel="noopener" target="_blank">@ptescalator</a></p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
