- PVSM.RU - https://www.pvsm.ru -

Пакет с сертификатами от Хабра
Wireshark [1] — очень известная программа для захвата и анализа сетевого трафика, незаменимый инструмент хакера, сетевого инженера, программиста, специалиста по безопасности [2]. Да вообще любого любознательного человека, который хочет детально изучить трафик со своего или чужого мобильного телефона, фитнес-браслета, телевизора.
Wireshark в реальном времени перехватывает сетевые пакеты и сохраняет, например, в файлах pcap (Packet Capture). Их потом используют для изучения трафика, восстановления информации, анализа работы сети, обнаружения атак. Это альтернатива и дополнение к стандартной утилите tcpdump, с графическим интерфейсом, фильтрами и более широкими возможностями.
В Wireshark миллион функций, но буквально каждый человек с минимальными знаниями может использовать его с пользой. Ниже примеры основных сетевых задач.
Chrome и Firefox могут записывать логи сессионных ключей, которые используются для шифрования трафика SSL/TLS. Наша задача — включить запись этих логов, а потом загрузить их в Wireshark для анализа. Предполагается, что у нас есть физический доступ к компьютеру пользователя, трафик которого мы хотим расшифровать. Или к серверу, который устанавливает зашифрованное соединение с пользователем.
Сначала включаем запись ключей.
В старых билдах Windows 10 работает старый метод. Заходим в Панель управления → Система и безопасность → Система. На вкладке «Дополнительные параметры системы» нажимаем кнопку «Переменные среды».

Добавляем для пользователя новую переменную SSLKEYLOGFILE и указываем путь до файла.

В результате получаем логи с ключами, начало файла:
# SSL/TLS secrets log file, generated by NSS CLIENT_HANDSHAKE_TRAFFIC_SECRET 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 dcfc82758fbb587e526daaab9fdc0bcaaab68e5706ba0512292dc55a627b8627 SERVER_HANDSHAKE_TRAFFIC_SECRET 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 d807f4757db1f9ba8df434d8b0005d07e4987459c1d14c7ea793e4c4f5b240dc CLIENT_TRAFFIC_SECRET_0 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 40186c6b1c925c63cd57e8fa235ba9d0bf14eb29c21cbb6494ef944e1e7a4cc3 SERVER_TRAFFIC_SECRET_0 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 a0a377f26a0962eceae55bec94fcd7549d9b1d5d1e9b70c45627299ca2b9b129 EXPORTER_SECRET 2f80c7dfd9f1bd5f4cf0084b9c814006178a06b820c5cab264f3727fac1abb23 ...
В более новых версиях после установки Windows 10 старый способ добавления переменных окружения может больше не работать. Тогда есть альтернативный вариант с помощью команды в оболочке PowerShell [3].
Установить переменную:
[Environment]::SetEnvironmentVariable("PATH", "C:TestPath", "User")
Первый параметр — это имя переменной, второй — значение, третий — для какого уровня переменная (пользовательский или системный).
В нашем случае:
[Environment]::SetEnvironmentVariable("SSLKEYLOGFILE", "D:wireshark", "User")
Под Linux и Mac OS X можно использовать такую команду для изменения переменной окружения и ведения логов — с запуском браузера из того же терминального окна, поскольку переменные окружения всегда работают в пределах одной сессии.
# export SSLKEYLOGFILE=/Users/username/sslkeylogs/output.log
# open -a firefox
# wireshark
После накопления лога запускаем Wireshark.

Заходим в «Параметры», там на вкладке «Протоколы» (Protocols) находим раздел TLS (раньше он назывался SSL) — и указываем путь к файлу с логами и ключом, который использовался в сессии симметричного шифрования: (Pre)-Master-Secret log filename.

Например, при заходе пользователя на сервер Gmail в окне инспектирования пакетов QUIC мы видим обычные пакеты QUIC, зашифрованные ключом TLS.

Но в нижней части экрана появляется новая вкладка Decrypted QUIC, которая показывает расшифрованное содержимое этих пакетов.

Такой метод расшифровки трафика клиента не требует установки Wireshark на его компьютер, достаточно только скачать дамп с ключами, а потом использовать его вместе с дампом трафика.
По современному российскому законодательству провайдеры обязаны некоторое время хранить трафик пользователей, в том числе зашифрованный трафик TLS/SSL. Теперь понятно, какой примерно механизм может использоваться для его расшифровки и анализа. Злоумышленник должен иметь сессионные ключи для симметричного шифрования. Крупнейшие российские интернет-компании типа «Яндекс» и Mail.ru послушно выполняют требования российского законодательства — и предоставляют эти ключи (см. приказ ФСБ № 432 [4] от 12.08.2016 г. о порядке получения ключей шифрования).
Примечание. Этот способ не ограничен только HTTP. Точно так же можно перехватывать и расшифровывать трафик SSL/TLS в других потоках. Например, зашифрованный трафик от сервера MySQL [5].

Если нужно разобраться с сервером в продакшне, то удобно скопировать оттуда файлы pcap — и проанализировать трафик на личном компьютере.
Записываем пакеты на сервере с помощью сниффера пакетов tcpdump, который входит в стандартный комплект *nix:
tcpdump port 443 -w output.pcap
Затем копируем файлы к себе на компьютер:
scp host:~/output.pcap
Здесь уже запускаем Wireshark и открываем полученный файл.
Есть вариант отслеживать серверный трафик в реальном времени со своего домашнего/рабочего компьютера. Например, весь трафик, кроме портов 22 и 53:
ssh root@host tcpdump -U -s0 'not port 22 and not port 53' -w - | wireshark -k -I -
Примерно то же самое с компьютера под Windows:
plink.exe -ssh -pw password root@host "tcpdump -ni eth0 -s 0 -w - not port 22" | "C:Program FilesWiresharkWireshark.exe" -k -i -
Чтобы выделить конкретное TCP-соединение, находим любой интересующий пакет, щёлкаем по нему правой кнопкой мыши — и применяем фильтр диалога.

Теперь из всего записанного трафика остались только пакеты, принадлежащие конкретно этому соединению.

На скриншоте мы видим пакеты с начала установки соединения TLS: пакет с приветствием клиента, ответный пакет с приветствием сервера, предъявленный сертификат, список шифров и так далее. Содержимое каждого пакета можно изучить отдельно. Очень удобно.
Типичный паттерн — использовать Wireshark для диагностики конкретных проблем. Например, в случае разрыва TLS-соединения мы можем зайти и посмотреть, кто его разорвал (клиент или сервер), на каком этапе это произошло и по какой причине.
Побайтовое содержимое каждого пакета — это настоящая магия. Конкретно эта функциональность Wireshark позволяет выявить самые серьёзные баги. Например, несколько лет назад выяснилось, что гигабитные Ethernet-контроллеры Intel 82574L отключаются, если отправить на них специально сконструированный пакет с определённой последовательностью байтов — так называемый «пакет смерти» [6]. Именно благодаря Wireshark выяснилось, какие конкретно байты в пакете приводят к гарантированному отключению сетевой карты.
Вот запись конкретных пакетов: pod-http-post.pcap [7] и pod-icmp-ping.pcap [8]. Можем их скачать, открыть в Wireshark и посмотреть своими глазами.
Отключение сетевого интерфейса Intel происходит, если по адресу 0x47f находится значение 2 или 3, то есть 32 HEX или 33 HEX. Если там 4, то всё нормально.

Для атаки подходил любой пакет: HTTP POST, ICMP echo-request и проч. Например, на веб-сервере можно сконфигурировать ответ 200 таким образом, что «убивает» сетевые интерфейсы на клиентских машинах. Довольно любопытная ситуация.
Выше мы применили фильтр диалога, чтобы выдать все пакеты для конкретного TCP-соединения. Однако фильтры можно писать и вручную. Вот некоторые примеры запросов:
frame contains "google" — поиск всех пакетов со словом “google” в любом месте пакета
tcp.port == 443 — порт 443
dns.resp.len > 0 — все DNS-ответы
ip.addr == 95.47.236.28 — конкретный IP-адрес для получателя или отправителя… и так далее. Фильтры гораздо богаче, чем у tcpdump, так что именно анализ трафика лучше делать в Wireshark.
Аналогичным образом можно проанализировать трафик с фитнес-часов по Bluetooth или трафик любого мобильного приложения под Android. Для этого нужно записать пакеты PCAP на мобильном устройстве — и передать их для анализа в Wireshark на рабочем ПК.
Есть несколько мобильных программ для записи PCAP. Например, приложение
PCAPdroid [9] для Android:

PCAPdroid
В принципе, можно не передавать записанные файлы PCAP, а анализировать их прямо на мобильном устройстве. В некоторых мобильных снифферах есть и зачаточные функции анализатора пакетов, см. Packet Capture [10] и Termux [11] (о нём ниже).

Packet Capture
Wireshark имеет и прямой интерфейс Androiddump [12], чтобы снимать данные с телефона напрямую через Android SDK.
Чтобы изучить трафик с телевизора, смартфона жены или других бытовых приборов, которые подключены в домашнюю сеть по Ethernet и WiFi, придётся записывать PCAP на маршрутизаторе. Иногда достаточно встроенных инструментов [13]. Если у вас маршрутизатор с прошивкой DD-WRT, то можно прямо на устройстве запустить tcpdump:
ssh root@192.168.1.1 -c "tcpdump -v -w - -i eth2" > mypackets.pcap
Для прошивки OpenWrt есть вариант зеркалировать трафик с помощью iptables-mod-tee [14].
Можно зеркалировать и записывать трафик с помощью дополнительного физического хаба или врезки в сеть. Подробнее см. в документации [15].


Другой способ — перехватить беспроводной трафик WiFi с помощью утилиты Airodump-ng [16] без подключения к маршрутизатору. Но это больше подходит для анализа трафика на чужих хотспотах.
Далее всё по накатанной — загружаем файлы в Wireshark, запускаем фильтры.
Кстати, Wireshark поддерживает также анализ трафика USB: встроенный сниффер USBPcap [17] и импорт пакетов из сторонних снифферов, таких как Npcap [18] и RawCap [19].
Если вы анализируете объёмные логи на удалённом сервере, но не хотите копировать всё на свою машину, может пригодиться Termshark [20] — удобный пользовательский интерфейс в консоли для анализатора TShark, по внешнему виду напоминающий Wireshark.

Вот как выглядит версия под Android:
Если по каким-то причинам вы не можете запустить Wireshark на локальной машине, можно воспользоваться облачным сервисом CloudShark [22], который сделан на удивление качественно.
Основная функция — совместная работа и публикация разборов пакетов по URL. Например, cloudshark.org/captures/05aae7c1b941 [24]. Файлы загружаются в облако и анализируются в браузере. Это нужно, если вы хотите спросить совета на форуме, поделиться информацией с коллегами или опубликовать разбор пакетов для широкой аудитории. Кстати, удобно использовать с мобильного телефона, ведь под Android есть приложения для захвата пакетов, а вот хорошего анализатора нет.
Сервис платный, есть 30-дневный пробный период.
В общем, Wireshark — просто фантастическая программа на все случаи жизни.
Кроме реальной практической пользы, анализатор даёт примерное представление о том, как работает фильтрация DPI у российских провайдеров. Там всё устроено примерно так же. Система в реальном времени сканирует трафик, фильтрует конкретно пакеты от Twitter — и замедляет их доставку пользователям на территории России. В частности, этим непотребством занимается Роскомнадзор с 10 марта 2021 года [25].
Если для работы необходим сервер в аренду [26] на Linux или Windows, то вам однозначно к нам — активация услуги через минуту после оплаты!
Присоединяйтесь к нашему чату в Telegram [27].
Автор: Анатолий Ализар
Источник [28]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/365228
Ссылки в тексте:
[1] Wireshark: http://www.wireshark.org/
[2] незаменимый инструмент хакера, сетевого инженера, программиста, специалиста по безопасности: https://habr.com/ru/search/?q=%5BWireshark%5D&target_type=posts
[3] команды в оболочке PowerShell: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-powershell-1.0/ff730964(v=technet.10)?redirectedfrom=MSDN
[4] приказ ФСБ № 432: http://publication.pravo.gov.ru/Document/View/0001201608120037
[5] зашифрованный трафик от сервера MySQL: http://databaseblog.myname.nl/2014/07/decoding-encrypted-mysql-traffic-with.html
[6] «пакет смерти»: https://habr.com/ru/post/168607/
[7] pod-http-post.pcap: http://www.kriskinc.com/intel-pod/pod-http-post.pcap?attredirects=0&d=1
[8] pod-icmp-ping.pcap: http://www.kriskinc.com/intel-pod/pod-icmp-ping.pcap?attredirects=0&d=1
[9] PCAPdroid: https://play.google.com/store/apps/details?id=com.emanuelef.remote_capture
[10] Packet Capture: https://4pda.to/forum/index.php?showtopic=759893&
[11] Termux: https://play.google.com/store/apps/details?id=com.termux
[12] Androiddump: https://www.wireshark.org/docs/man-pages/androiddump.html
[13] достаточно встроенных инструментов: http://ciscomaster.ru/content/tcpdump-cisco-router
[14] iptables-mod-tee: https://openwrt.org/packages/pkgdata/iptables-mod-tee
[15] документации: https://gitlab.com/wireshark/wireshark/-/wikis/CaptureSetup/Ethernet
[16] Airodump-ng: https://www.aircrack-ng.org/doku.php?id=airodump-ng
[17] USBPcap: https://desowin.org/usbpcap/
[18] Npcap: https://nmap.org/npcap/
[19] RawCap: https://www.netresec.com/index.ashx?page=RawCap
[20] Termshark: https://termshark.io/
[21] Image: https://habrastorage.org/webt/ip/jf/mj/ipjfmjpauhpn_ddqxb7xxqnnaq8.png
[22] CloudShark: https://www.cloudshark.org/
[23] Image: https://habrastorage.org/webt/-i/rx/it/-irxitmatqdbha03iyu4ueyao2w.png
[24] cloudshark.org/captures/05aae7c1b941: https://www.cloudshark.org/captures/05aae7c1b941
[25] занимается Роскомнадзор с 10 марта 2021 года: https://habr.com/ru/news/t/546280/
[26] сервер в аренду: https://vdsina.ru/cloud-servers?partner=habr426
[27] нашему чату в Telegram: https://t.me/vdsina
[28] Источник: https://habr.com/ru/post/562110/?utm_source=habrahabr&utm_medium=rss&utm_campaign=562110
Нажмите здесь для печати.