<?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>tls &#8211; PT ESC</title>
	<atom:link href="/tag/tls/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>tls &#8211; PT ESC</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ищем RAT&#8217;ов по их же сертификатам 🕵️</title>
		<link>/hunting-for-rats-by-their-own-certificates/</link>
		
		<dc:creator><![CDATA[ti_author]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 15:43:34 +0000</pubDate>
				<category><![CDATA[Threat Intelligence]]></category>
		<category><![CDATA[C2]]></category>
		<category><![CDATA[detect]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[rat]]></category>
		<category><![CDATA[suricata]]></category>
		<category><![CDATA[TI]]></category>
		<category><![CDATA[tls]]></category>
		<guid isPermaLink="false">/hunting-for-rats-by-their-own-certificates/</guid>

					<description><![CDATA[Коллеги из Censys выкатили разбор семейства AsyncRAT, описав целое генеалогическое древо: AsyncRAT → DCRAT (DarkCrystal RAT) → VenomRAT → еще десятки форков вплоть до LMTeamRAT, Alfa Red Fox, EchoRAT, Gh0stRAT (не путать…]]></description>
										<content:encoded><![CDATA[<p>Коллеги из Censys <a href="https://censys.com/blog/asyncrat-family-threat-overview/" rel="noopener" target="_blank">выкатили</a> разбор семейства AsyncRAT, описав целое генеалогическое древо: AsyncRAT → DCRAT (DarkCrystal RAT) → VenomRAT → еще десятки форков вплоть до LMTeamRAT, Alfa Red Fox, EchoRAT, Gh0stRAT (не путать с оригинальным Gh0st RAT 2008 года) и т. д. Всего насчитали около 40 именованных вариантов, 13 из них — с живой C2-инфраструктурой на момент исследования.</p>
<p>Ключевая мысль их исследования: форки почти никогда не переписывают TLS-сертификат сервера, доставшийся от родителя. DCRAT принес в семью структуру <code>O=&lt;Name&gt; By &lt;author&gt;</code>, <code>L=SH</code>, <code>C=CN</code>, и это наследуется вплоть до самых мелких потомков — даже если сам билд больше никак не забрендирован. Именно этот паттерн Censys называет самым надежным сигналом для всей линейки, независимо от конкретного варианта.</p>
<p>У нас, отдела сетевой экспертизы антивирусной лаборатории, уже был опыт детектирования <strong>VenomRAT</strong> по его дефолтовому сертификату, и мы даже отдали в сообщество <a href="https://rules.ptsecurity.com/view/rules/ptopen-malware.rules#L135" rel="noopener" target="_blank">сигнатуру</a> для Suricata в рамках проекта <strong>PT Rules</strong>.</p>
<p>Именно поэтому нас это исследование, само собой, зацепило — и мы решили прогнать похожую логику не по интернет-скану, а по трафику из собственных песочниц: а вдруг мы что-то упустили?</p>
<p>Взяли любимый NTA и сделали в нем следующий запрос (аналогичный хант можно сделать где угодно, хоть в базе данных):</p>
<pre><code>tls.server_cert.subject.value ~ &quot;*RAT*&quot; 
&amp;&amp; !tls.server_cert.subject.value ~ &quot;*CORPORAT*&quot; 
&amp;&amp; !tls.server_cert.subject.value ~ &quot;*INTEGRAT*&quot;</code></pre>
<p>(исключения нужны, потому что <code>corporated</code>, <code>corporation</code> или <code>integrator</code> тоже с радостью матчатся на <code>*RAT*</code> — привет, ложные срабатывания)</p>
<p>Результат — реально интересный: помимо вышеупомянутого VenomRAT куча других C2-серверов буквально сами себя подписывают.</p>
<p>Вот например прародитель AsyncRAT не стесняется подписываться как <code>AsyncRAT Server</code>:</p>
<figure class="wp-block-image"><img width="1024" height="682" src="/wp-content/uploads/2026/07/photo_587@02-07-2026_15-43-34-1024x682.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2026/07/photo_587@02-07-2026_15-43-34-1024x682.jpg 1024w, /wp-content/uploads/2026/07/photo_587@02-07-2026_15-43-34-300x200.jpg 300w, /wp-content/uploads/2026/07/photo_587@02-07-2026_15-43-34-768x512.jpg 768w, /wp-content/uploads/2026/07/photo_587@02-07-2026_15-43-34.jpg 1501w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<p>PureRAT притворяется <code>PureRAT Agent</code>:</p>
<figure class="wp-block-image"><img width="1024" height="682" src="/wp-content/uploads/2026/07/photo_588@02-07-2026_15-43-34-1024x682.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2026/07/photo_588@02-07-2026_15-43-34-1024x682.jpg 1024w, /wp-content/uploads/2026/07/photo_588@02-07-2026_15-43-34-300x200.jpg 300w, /wp-content/uploads/2026/07/photo_588@02-07-2026_15-43-34-768x512.jpg 768w, /wp-content/uploads/2026/07/photo_588@02-07-2026_15-43-34.jpg 1501w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<p>LiberiumRAT подписал сам себе сертификат под именем <code>Liberium RAT Authority</code>:</p>
<figure class="wp-block-image"><img width="1024" height="682" src="/wp-content/uploads/2026/07/photo_589@02-07-2026_15-43-34-1024x682.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2026/07/photo_589@02-07-2026_15-43-34-1024x682.jpg 1024w, /wp-content/uploads/2026/07/photo_589@02-07-2026_15-43-34-300x200.jpg 300w, /wp-content/uploads/2026/07/photo_589@02-07-2026_15-43-34-768x512.jpg 768w, /wp-content/uploads/2026/07/photo_589@02-07-2026_15-43-34.jpg 1501w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<p>Еще ряд менее известных семплов — все радостно светят своим назначением прямо в сертификате.</p>
<h2>Как детектить в Suricata?</h2>
<p>Аналогично нашему правилу на VenomRAT можно зацепиться за байты <code>|3082|</code> — встречаются в начале сертификата, далее <code>|550403|</code> — это закодированный <code>ASN.1 Object ID 2.5.4.3 (id-at-commonName)</code>, и в завершение — искомая строка, например:</p>
<pre><code>alert tls any any -&gt; any any (msg: &quot;REMOTE [PTsecurity] LiberiumRAT SSL certificate&quot;; flow: established, from_server; content: &quot;|3082|&quot;; depth: 300; content: &quot;|550403|&quot;; depth: 600; content: &quot;Liberium RAT&quot;; distance: 2; within: 12; classtype: trojan-activity; sid: 1; rev: 1;)</code></pre>
<figure class="wp-block-image"><img width="1024" height="682" src="/wp-content/uploads/2026/07/photo_590@02-07-2026_15-43-34-1024x682.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2026/07/photo_590@02-07-2026_15-43-34-1024x682.jpg 1024w, /wp-content/uploads/2026/07/photo_590@02-07-2026_15-43-34-300x200.jpg 300w, /wp-content/uploads/2026/07/photo_590@02-07-2026_15-43-34-768x512.jpg 768w, /wp-content/uploads/2026/07/photo_590@02-07-2026_15-43-34.jpg 1501w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<h2>А как хантить, на что смотреть:</h2>
<ul>
<li><strong>Issuer/Subject</strong> вида <code>CN=.*RAT.*</code> — как видно выше, срабатывает идеально.</li>
<li><strong>Комбинация</strong> <code>L=SH</code>, <code>C=CN + O=* By *</code> на нестандартном порту.</li>
<li><strong>Самоподписанные сертификаты в целом</strong> — malware-C2, в отличие от фишинговых сайтов, не боится браузерных ошибок, поэтому самоподпись используется массово.</li>
<li><strong>Признаки дефолтной генерации</strong> — пустые <code>O/L/ST</code>, <code>CN</code> продублирован в <code>SAN</code> или <code>Issuer</code> — <code>CN=example.com</code>, <code>O=Acme</code>.</li>
</ul>
<p>Из истории вопроса — похожий трюк еще в 2023 году проворачивали с Quasar RAT: там дефолтный сертификат <code>CN=Quasar Server CA</code> через Shodan/Censys вывел исследователей сразу на 60+ живых серверов. Nuff said.</p>
<p>Мораль: TLS-сертификат, при наличии, конечно, — это метаданные, которые остаются в открытом виде, даже когда весь остальной трафик зашифрован. Авторы билдеров RAT&#039;ов почему-то регулярно об этом забывают 🙂</p>
<p>Happy hunting!</p>
<p><span class="hashtag">#TI</span> <span class="hashtag">#malware</span> <span class="hashtag">#RAT</span> <span class="hashtag">#C2</span> <span class="hashtag">#tls</span> <span class="hashtag">#detect</span> <span class="hashtag">#suricata</span><br />
<a href="https://t.me/ptescalator" rel="noopener" target="_blank">@ptescalator</a></p>
]]></content:encoded>
					
		
		
			</item>
		<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>
		<item>
		<title>Смотрим под капот защищенных соединений в Wireshark. Часть 1: TLS</title>
		<link>/looking-under-the-hood-of-secure-connections-in-wireshark-part-1-tls/</link>
		
		<dc:creator><![CDATA[oUth0R]]></dc:creator>
		<pubDate>Mon, 06 Oct 2025 15:14:50 +0000</pubDate>
				<category><![CDATA[Incident Response]]></category>
		<category><![CDATA[dfir]]></category>
		<category><![CDATA[network]]></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/</guid>

					<description><![CDATA[🦈 Смотрим под капот защищенных соединений в Wireshark. Часть 1: TLS Нашим сетевым экспертам часто бывает нужно расшифровывать трафик TLS-соединений и проанализировать защищенное содержимое. Современные алгоритмы TLS уже очень давно используют схему…]]></description>
										<content:encoded><![CDATA[🦈 <strong>Смотрим под капот защищенных соединений в Wireshark. Часть 1: TLS</strong><br />
<br />
Нашим сетевым экспертам часто бывает нужно расшифровывать трафик TLS-соединений и проанализировать защищенное содержимое. Современные алгоритмы TLS уже очень давно используют схему Ephemeral Diffie–Hellman (EDH), которая не позволяет расшифровывать TLS-сессии закрытым ключом RSA. <br />
<br />
Теперь для расшифровки необходимо собирать так называемые сессионные ключи (session keys) средствами самого TLS-клиента или сервера. И за много лет мы собрали несколько лайфхаков, которые работают для большинства анализируемых приложений. Поехали!<br />
<br />
<strong>1️⃣ Браузеры и консольные утилиты</strong><br />
<br />
Для расшифровки браузерных TLS-сессий или консольных утилит, например curl, необходимо установить переменную окружения SSLKEYLOG. Это делается при помощи команды <code>export SSLKEYLOGFILE=/path/to/keylog.log</code> для Linux-систем или через переменные среды (<em>скриншоты 1 и 2</em>) в системах Windows. Теперь браузеры и утилиты будут сохранять сессионные ключи в указанном файле.<br />
<br />
<strong>2️⃣ Приложения на Go</strong><br />
<br />
Настройка дампа ключей в подобных приложениях потребует небольшого патча. Необходимо либо добавить эти строки в код самого приложения (<a href="https://pkg.go.dev/crypto/tls#example-Config-KeyLogWriter" rel="noopener" target="_blank">пример</a>).<br />
<br />
<pre class="wp-block-code"><span><code lang="plaintext" class="hljs language-plaintext language-plaintext">w, err := os.OpenFile("/path/to/SSLKEYLOGFILE", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
config := &amp;tls.Config{KeyLogWriter: w}
</code></span></pre><br />
<br />
Либо, если в файле явно не определяется tls config, но в самой программе или в библиотеке используется стандартная библиотека crypto/go, можно задать sslkeylog-файл прямо в ней. Мы привели пример diff-файла (<a href="https://disk.yandex.ru/d/MMcWIr9YlM8FAw" rel="noopener" target="_blank">common_go.diff</a>) для <code>go version go1.24.4 linux/amd64</code>. После этого достаточно задать путь к keylog-файлу в переменной окружения SSLKEYLOGFILE:<br />
<br />
<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash"><span class="hljs-built_in">export</span> SSLKEYLOGFILE=/path/to/keylog.log
</code></span></pre><br />
<br />
<strong>3️⃣ Приложения на Python</strong><br />
<br />
Настройка дампа ключей также работает через установку переменной окружения SSLKEYLOGFILE:<br />
<br />
<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash"><span class="hljs-built_in">export</span> SSLKEYLOGFILE=/path/to/keylog.log
python main.py
</code></span></pre><br />
<br />
<strong>4️⃣ Приложения на Node.js</strong><br />
<br />
Необходимо просто запустить приложение с ключом tls-keylog<br />
<br />
<pre class="wp-block-code"><span><code lang="plaintext" class="hljs language-plaintext language-plaintext">node --tls-keylog=/path/to/keylog.log program.js
</code></span></pre><br />
<br />
Либо задать переменную окружения NODE_OPTIONS и запустить программу в той же консоли:<br />
<br />
<pre class="wp-block-code"><span><code lang="bash" class="hljs language-bash language-bash"><span class="hljs-built_in">export</span> NODE_OPTIONS=--tls-keylog=/path/to/keylog.log
</code></span></pre><br />
<br />
<strong>5️⃣ Xray Core</strong><br />
<br />
Другие проприетарные приложения могут использовать свои собственные параметры для дампа сессионных ключей. Особенно те, которые реализуют TLS-соединения по-своему. Xray — это целый фреймворк, который поддерживает множество VPN-протоколов, включая VMess, VLESS и XTLS. Благодаря разработчикам ядра Xray собрать сессионные ключи не составит труда. Нужно всего лишь добавить ключ masterKeyLog в конфигурацию исходящего (outbound) подключения.<br />
<br />
<pre class="wp-block-code"><span><code lang="plaintext" class="hljs language-plaintext language-plaintext">"realitySettings": {
  "serverName": "yahoo.com",
  "publicKey": "publicKey",
  "shortId": "shortId",
  "fingerprint": "chrome",
  "spiderX": "/",
  "masterKeyLog": "/path/to/keylog"
}
</code></span></pre><br />
<br />
Большинство конфигураций Xray задается при помощи URL, для добавления ключа необходимо поправить JSON-конфигурацию внутри клиента или сервера уже после добавления ключа.<br />
<br />
<strong>Как использовать полученные session keys</strong><br />
<br />
Чтобы расшифровать TLS-сессию в Wireshark, необходимо открыть Edit → Preferences, затем в настройках протокола TLS выбрать файл Master-Secret log filename (<em>скриншот 3, результат на скриншоте 4</em>).<br />
<br />
☠️ Ну а в следующей части мы расскажем о расшифровке зашифрованного содержимого протоколов SMB/LDAP/DCERPC с NTLM- и Kerberos-аутентификацией. <br />
<br />
Делитесь вашими собственными лайфхаками в комментариях ⬇️

<figure class="wp-block-image"><img width="1024" height="439" src="/wp-content/uploads/2025/10/photo_393@06-10-2025_15-14-50-1024x439.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2025/10/photo_393@06-10-2025_15-14-50-1024x439.jpg 1024w, /wp-content/uploads/2025/10/photo_393@06-10-2025_15-14-50-300x129.jpg 300w, /wp-content/uploads/2025/10/photo_393@06-10-2025_15-14-50-768x330.jpg 768w, /wp-content/uploads/2025/10/photo_393@06-10-2025_15-14-50.jpg 1172w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<figure class="wp-block-image"><img width="1024" height="824" src="/wp-content/uploads/2025/10/photo_394@06-10-2025_15-14-50-1024x824.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2025/10/photo_394@06-10-2025_15-14-50-1024x824.jpg 1024w, /wp-content/uploads/2025/10/photo_394@06-10-2025_15-14-50-300x241.jpg 300w, /wp-content/uploads/2025/10/photo_394@06-10-2025_15-14-50-768x618.jpg 768w, /wp-content/uploads/2025/10/photo_394@06-10-2025_15-14-50.jpg 1102w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<figure class="wp-block-image"><img width="1024" height="634" src="/wp-content/uploads/2025/10/photo_395@06-10-2025_15-14-50-1024x634.jpg" class="attachment-large size-large" alt="" decoding="async" loading="lazy" srcset="/wp-content/uploads/2025/10/photo_395@06-10-2025_15-14-50-1024x634.jpg 1024w, /wp-content/uploads/2025/10/photo_395@06-10-2025_15-14-50-300x186.jpg 300w, /wp-content/uploads/2025/10/photo_395@06-10-2025_15-14-50-768x475.jpg 768w, /wp-content/uploads/2025/10/photo_395@06-10-2025_15-14-50.jpg 1280w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>

<br />
<br />
<span class="hashtag">#dfir</span> <span class="hashtag">#tip</span> <span class="hashtag">#tls</span> <span class="hashtag">#network</span><br />
<a href="https://t.me/ptescalator" rel="noopener" target="_blank">@ptescalator</a>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
