[ << ALL_FEED ]

🦈 Смотрим под капот защищенных соединений в Wireshark. Часть 3.1: MITM-атака на SSL/TLS-соединения

Ещё в группе «Общее»

 

В дополнение к предыдущему посту рассматриваем дополнительные инструменты для расшифровки сетевого трафика.

Рассмотрим альтернативу PolarProxy, которая не является проприетарной. SSLproxy — инструмент, который по сути является продолжением sslsplit, но обладает рядом других преимуществ, в частности — запись расшифрованных данных в PCAP-файл. Данный проект применяется в UTMFW. Предварительно настроим хост, как в случае sslsplit, только тут трафик будет перенаправляться в один единственный порт 8443.

sslproxy -k ca.key -c ca.crt -P https 0.0.0.0 8443 -X sslproxy.pcapCode language: plaintext (plaintext)

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

curl --cacert ca.crt --tlsv1.3 https://ptsecurity.com/Code language: Bash (bash)

В отличие от предыдущих описанных инструментов, здесь формируется PCAP-файл с расшифрованными данными, поэтому его можно парсить с помощью Zeek, Suricata и других DPI. Но инструмент имеет аналогичный sslsplit недостаток — файл с мастер-ключами формируется неправильно для TLSv1.3.

Подводя итог по инструментам PolarProxy и SSLProxy: они являются отличными аналогами sslsplit, которые также могут быть применены в том или ином автоматизированном сервисе, например в системе анализа приложений или NGFW.

Все указанные выше инструменты имеют один ключевой недостаток — у них нет возможности формировать, либо полноценно формировать файл с мастер-ключами SSL/TLS-сессий. Рассмотрим инструмент, который решает конкретно эту проблему.

❕ mitmproxy — интерактивный инструмент с открытым исходным кодом. Имеет возможность использования web UI (mitmweb). В отличие от предыдущих аналогов, данный инструмент не имеет возможности записи расшифрованных данных в PCAP-файл, но зато способен наиболее эффективно работать с мастер-ключами. Данный инструмент содержится во многих репозиториях, в том числе PyPI.

Для захвата сетевого трафика в реальном времени с помощью mitmproxy можно использовать следующую команду:

SSLKEYLOGFILE="$PWD/.mitmproxy/sslkeylogfile.txt" mitmproxy --set confdir=.mitmproxy/ --listen-host 0.0.0.0 -p 8080Code language: Bash (bash)

В рабочей директории, где был запущен mitmproxy, будет создана директория с файлами конфигурации .mitmproxy, которая будет содержать эти сертификаты. В последующем их можно применять при реализации MITM-атаки на SSL/TLS.

Попробуем осуществить HTTP/2-запрос через запущенный прокси, при этом указав CA (центр сертификации).

curl --proxy 127.0.0.1:8080 --cacert ~/.mitmproxy/mitmproxy-ca-cert.pem https://www.ptsecurity.com/Code language: Bash (bash)

Так как данные поступают в расшифрованном виде, можем интерактивно наблюдать заголовки запроса (скриншот 4) и ответа (скриншот 5). Полученные ключи sslkeylogfile.txt, которые мы указали в переменной среде SSLKEYLOGFILE мы можем применять в дальнейшем для наших целей, в том числе в Wireshark. При этом ключи TLSv1.3 сессий будут иметь правильный формат, в отличии от предыдущих инструментов. У mitmproxy также есть функционал прозрачного прокси, в случае добавления опции --mode transparent.

Таким образом, из плюсов mitmproxy можно отметить быстроту развертывания, интерактивность (в том числе web UI), актуальность (тула регулярно обновляется и дорабатывается), а также возможность формирования рабочих мастер-ключей для TLSv1.3.

💬 Подводя итог, хочется отметить, что существует множество инструментов для осуществления MITM-атак на SSL/TLS-соединения. Каждый из этих инструментов имеет свои плюсы и минусы и подходит под разные задачи.

#dfir #tip #mitm #ssl #tls
@ptescalator

Ещё от oUth0R

Ещё от oUth0R

Ещё в группе «Общее»