Аналог tcpdump для windows

Обновлено: 05.07.2024


Исследователи портала Bleeping Computer обнаружили, что компания Microsoft в составе обновления Windows 10 October 2018 Update без информирования пользователей добавила в ОС незаметную программу для диагностики сети и мониторинга пакетов под названием pktmon (Packet Monitor). Ее можно найти по этому пути: C:\Windows\system32\pktmon.exe.

Причем, информации об этой программе на сайте Microsoft нигде нет. Есть только описание в самой программе, там написано, что это «Monitor internal packet propagation and packet drop reports». Специалисты Bleeping Computer смогли научиться использовать pktmon, тем более у программы есть встроенный справочник. Также они опубликовали в своем исследовании несколько примеров активации разных возможностей pktmon для системных администраторов. Пользователи без административных прав не могут запускать эту программу.

Фактически, в Windows 10 появился встроенный аналог tcpdump, мощного и популярного инструмента для перехвата и анализа сетевых пакетов. Правда pktmon в настоящее время имеет ограниченный производителем функционал, который еще дорабатывается специалистами Microsoft. Причем полученные и сохраненные данные из pktmon уже сейчас можно использовать и в более функциональных приложениях, например, Microsoft Network Monitor или Wireshark. Вдобавок встроенная справочная документация приложения pktmon достаточно подробная, и лучше с ней ознакомиться, перед тем как начать экспериментировать с возможностями этой программы.

При использовании pktmon для мониторинга сетевого трафика необходимо настроить в программе фильтры пакетов на нужных портах, например, использовать команду «pktmon filter add -p 20». Для просмотра фильтров пакетов нужно использовать команду «pktmon filter list». Для удаления фильтров есть команда «pktmon filter remove».

Чтобы отслеживать пакеты на конкретных устройствах необходимо определить ID сетевого адаптера с помощью команды «pktmon comp list». Далее можно начинать перехватывать нужные пакеты: pktmon start --etw -p 0 -c 13, где "-p 0" — аргумент для захвата всего пакета, а "-c 13" — захват только с адаптера с ID 13. Данные будут записываться в файл pktMon.etl:


Для остановки работы процедуры захвата нужно ввести команду «pktmon stop». Далее можно преобразовать полученный файл в текстовый формат: pktmon PktMon.etl -o ftp.txt. Там будет записана в краткой форме информация о сетевом трафике:


Полностью файл pktMon.etl можно открыть и анализировать, например, с помощью Microsoft Network Monitor.


Оказывается, что в новом обновлении Windows 10 May 2020 Update (Windows 10 версии 2004) Microsoft также обновила инструмент pktmon. Теперь с его помощью можно будет перехватывать пакеты в режиме реального времени и даже конвертировать файлы с расширением ETL в формат PCAPNG, которые можно исследовать в программе для захвата и анализа сетевого трафика Wireshark.



Что­бы перех­ватывать тра­фик, ана­лиза­торы могут исполь­зовать перенап­равле­ние пакетов или задей­ство­вать так называ­емый Promiscuous mode — «нераз­борчи­вый» режим работы сетево­го адап­тера, при котором отклю­чает­ся филь­тра­ция и адап­тер при­нима­ет все пакеты незави­симо от того, кому они адре­сова­ны. В обыч­ной ситу­ации Ethernet-интерфейс филь­тру­ет пакеты на каналь­ном уров­не. При такой филь­тра­ции сетевая кар­та при­нима­ет толь­ко широко­веща­тель­ные зап­росы и пакеты, MAC-адрес в заголов­ке которых сов­пада­ет с ее собс­твен­ным. В режиме Promiscuous все осталь­ные пакеты не отбра­сыва­ются, что и поз­воля­ет сниф­феру перех­ватывать дан­ные.

Не­ред­ко ана­лиза­торы тра­фика при­меня­ются в «мир­ных» целях — для диаг­ности­ки сети, выяв­ления и устра­нения непола­док, обна­руже­ния вре­донос­ного ПО или что­бы выяс­нить, чем заняты поль­зовате­ли и какие сай­ты они посеща­ют. Но имен­но при иссле­дова­нии безопас­ности сетево­го перимет­ра или тес­тирова­нии на про­ник­новение сниф­фер — незаме­нимый инс­тру­мент для раз­ведки и сбо­ра дан­ных. Сущес­тву­ют сниф­феры для раз­личных опе­раци­онных сис­тем, кро­ме того, подоб­ное ПО мож­но уста­новить на роуте­ре и иссле­довать весь про­ходя­щий через него тра­фик. Сегод­ня мы погово­рим о наибо­лее рас­простра­нен­ных популяр­ных ана­лиза­торах тра­фика для плат­формы Microsoft Windows.

Wireshark

Об этой прог­рамме зна­ет, навер­ное, каж­дый, кто хотя бы раз стал­кивал­ся с задачей ана­лиза тра­фика. Популяр­ность Wireshark впол­не оправдан­на: во‑пер­вых, дан­ный про­дукт бес­пла­тен, во‑вто­рых, его воз­можнос­тей впол­не хва­тает для решения самых насущ­ных воп­росов, каса­ющих­ся перех­вата и ана­лиза переда­ваемых по сети дан­ных. Про­дукт поль­зует­ся зас­лужен­ной популяр­ностью у вирус­ных ана­лити­ков, реверс‑инже­неров, сис­темных адми­нис­тра­торов и, безус­ловно, пен­тесте­ров.

Что такое Wireshark, знает, наверное, каждый

Что такое Wireshark, зна­ет, навер­ное, каж­дый

Этот ана­лиза­тор име­ет рус­ско­языч­ный интерфейс, уме­ет работать с боль­шим количес­твом сетевых про­токо­лов (перечис­лять здесь их все лишено смыс­ла: пол­ный спи­сок мож­но най­ти на сай­те про­изво­дите­ля). В Wireshark мож­но разоб­рать каж­дый перех­вачен­ный пакет на час­ти, прос­мотреть его заголов­ки и содер­жимое. У при­ложе­ния очень удоб­ный механизм навига­ции по пакетам, вклю­чая раз­личные алго­рит­мы их поис­ка и филь­тра­ции, есть мощ­ный механизм сбо­ра ста­тис­тики. Сох­ранен­ные дан­ные мож­но экспор­тировать в раз­ные фор­маты, кро­ме того, сущес­тву­ет воз­можность авто­мати­зиро­вать работу Wireshark с помощью скрип­тов на Lua и под­клю­чать допол­нитель­ные (даже раз­работан­ные самос­тоятель­но) модули для раз­бора и ана­лиза тра­фика.

По­мимо Ethernet, сниф­фер уме­ет перех­ватывать тра­фик бес­про­вод­ных сетей (стан­дарты 802.11 и про­токол Bluetooth). Тул­за поз­воля­ет ана­лизи­ровать тра­фик IP-телефо­нии и вос­ста­нав­ливать TCP-потоки, под­держи­вает­ся ана­лиз тун­нелиро­ван­ного тра­фика. Wireshark отлично справ­ляет­ся с задачей декоди­рова­ния про­токо­лов, но, что­бы понять резуль­таты это­го декоди­рова­ния, надо, безус­ловно, хорошо раз­бирать­ся в их струк­туре.

К недос­таткам Wireshark мож­но отнести то, что вос­ста­нов­ленные потоки не рас­смат­рива­ются прог­раммой как еди­ный буфер памяти, из‑за чего зат­рудне­на их пос­леду­ющая обра­бот­ка. При ана­лизе тун­нелиро­ван­ного тра­фика исполь­зует­ся сра­зу нес­коль­ко модулей раз­бора, и каж­дый пос­леду­ющий в окне прог­раммы замеща­ет резуль­тат работы пре­дыду­щего — в ито­ге ана­лиз тра­фика в мно­гоуров­невых тун­нелях ста­новит­ся невоз­можен.

В целом Wireshark — не прос­то популяр­ный, но очень доб­ротный про­дукт, поз­воля­ющий отсле­дить содер­жимое гуля­ющих по сети пакетов, ско­рость их переда­чи, най­ти «проб­лемные мес­та» в сетевой инфраструк­туре. Но в отли­чие от ком­мерчес­ких при­ложе­ний здесь нет удоб­ных инс­тру­мен­тов визу­али­зации. Кро­ме того, с помощью Wireshark не так уж и прос­то, нап­ример, выловить из тра­фика логины и пароли, а это одна из типич­ных задач при тес­тирова­нии на про­ник­новение.

CommView

Сре­ди сущес­тву­ющих ныне сниф­феров CommView — один из самых ста­рых и зас­лужен­ных ветера­нов, об этом про­дук­те «Хакер» пи­сал еще в 2001 году. Про­ект жив и по сей день, активно раз­вива­ется и обновля­ется: пос­ледняя на текущий момент вер­сия датиро­вана 2020 годом. Нес­мотря на то что про­дукт плат­ный, про­изво­дитель пред­лага­ет ска­чать три­ал, который поз­воля­ет пос­мотреть работу при­ложе­ния на прак­тике — проб­ная вер­сия сниф­фера перех­ватыва­ет тра­фик в течение пяти минут, пос­ле чего про­сит денег.

CommView — заслуженный «ветеран» в мире снифферов

CommView — зас­лужен­ный «ветеран» в мире сниф­феров

Прог­рамма име­ет рус­ско­языч­ный интерфейс, что может стать опре­деля­ющим фак­тором при выборе сниф­фера для поль­зовате­лей, не вла­деющих англий­ским. Глав­ное пре­иму­щес­тво CommView — воз­можность гиб­ко нас­тро­ить пра­вила филь­тра­ции пакетов: мож­но выб­рать отдель­ные про­токо­лы, которые будет отсле­живать при­ложе­ние, сор­тировать пакеты по ряду приз­наков, нап­ример по раз­меру или заголов­ку. Ассорти­мент под­держи­ваемых про­токо­лов так­же весь­ма велик: сниф­фер уме­ет работать с самыми рас­простра­нен­ными прик­ладны­ми про­токо­лами, а так­же выпол­нять реконс­трук­цию TCP-сес­сии и UDP-потока. При этом CommView поз­воля­ет ана­лизи­ровать тра­фик вплоть до пакетов про­токо­лов самого низ­кого уров­ня — TCP, UDP, ICMP, а так­же прос­матри­вать «сырые» дан­ные. Прог­рамма показы­вает заголов­ки перех­вачен­ных пакетов, собира­ет под­робную ста­тис­тику IP-тра­фика. Сох­ранен­ные дан­ные мож­но экспор­тировать в 12 раз­личных фор­матов, начиная с .txt и .csv и закан­чивая фай­лами дру­гих ана­лиза­торов вро­де Wireshark.

По­мимо тра­фика на сетевой кар­те, CommView может монито­рить соеди­нения по VPN, а так­же тра­фика, про­ходя­щего через модемы — ана­лого­вые, мобиль­ные, ADSL, ISDN и дру­гие, для чего в сис­тему уста­нав­лива­ется спе­циаль­ный драй­вер. Есть воз­можность перех­вата VoIP-тра­фика и сес­сий SIP-телефо­нии. В сос­тав при­ложе­ния вхо­дит генера­тор пакетов, с помощью которо­го мож­но отпра­вить на задан­ный Ethernet-интерфейс пакет ука­зан­ной дли­ны, с про­изволь­ными заголов­ками и содер­жимым. Есть так­же доволь­но удоб­ный прос­мот­рщик лог‑фай­лов, поз­воля­ющий откры­вать фай­лы жур­налов в отдель­ном окне сниф­фера и выпол­нять поиск по их содер­жимому.

Тул­за, вне вся­ких сом­нений, край­не удоб­ная и полез­ная, если бы не «кусачие» цены на лицен­зию. Для про­фес­сиональ­ного пен­тесте­ра покуп­ка такого инс­тру­мен­та навер­няка будет оправдан­на, но ради того, что­бы разок «гля­нуть сеть», мож­но поис­кать аль­тер­натив­ные — более дешевые или бес­плат­ные решения.

Intercepter-NG

Это тоже очень ста­рый и убе­лен­ный седина­ми инс­тру­мент — впер­вые «Хакер» на­писал о нем еще в 2012 году. C тех пор раз­рабаты­ваемый нашими сооте­чес­твен­никами про­ект не толь­ко не исчез с прос­торов интерне­та, как мно­гие его кон­курен­ты, но даже активно раз­вивал­ся и совер­шенс­тво­вал­ся — пос­ледняя акту­аль­ная редак­ция сниф­фера датиро­вана 2020 годом. Сущес­тву­ет вер­сия прог­раммы для Android в виде .APK-фай­ла и даже кон­соль­ная вер­сия это­го инс­тру­мен­та для Unix.

Продолжение доступно только участникам

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

НО такие объемные дампы лучше не делать, а использовать функционал по созданию каждые N-пакетов/секунд/байт нового файла в Output настройках Wireshark (настраивается перед стартом захвата).

  • задать отключение сбора дампа(ов) после N-пакетов/секунд/байт.
  • включить резолвинг IP адресов в DNS имена (как по умолчанию у tcpdump)

Analyze -> Expert Info. Очень удобно понять были ли duplicated ack/retransmissions и прочие проблемы (см. раздел Notes).


WIRESHARK


  • В Wireshark есть выгрузка object из дампов – можно картинки просмотренного сайта выгрузить, страницы html


  • Можно искать запросы к определенным URL (можно и в tcpdump, но проще куда в акулке)
  • Продуманный интерфейс: Сразу можно посмотреть и HEX и ASCII репрезентацию данных, отсортировать пакеты, увидеть проблемы по цвету, отфильтровать вывод и прочпроч

Wireshark не только с точки зрения удобства использования лучше tcpdump, он считается и намного более мощным инструментом в сравнении с ним, особенно когда идет вопрос в анализе уровня приложений (поддержка более 2к протоколов, даже таких как USB/Bluetooth/Zigbee). Так же использует libpcap. Кроме того у Wireshark есть консольная утилита tshark (terminal-shark), которая часто позволяет обойтись без tcpdump вовсе (сори, tcpdump), но при больших нагрузках (гигабит и более фреймами 64 байта) нужно учитывать, что tshark хуже по производительности в сравнении с tcpdump. Например, можно использовать фильтры, аналогичные wireshark в консоли.

Фильтры

Фильтры бывают двух видов:



Очень полезная вещь, которая позволяет не знать синтаксис:


Профили (profiles)

RTT

statistics -> tcp stream graph -> round trip time

VoIP

  • sngrep это утилита для анализа SIP/VoIP трафика в консоли Linux сервера.
  • Wireshark очень полезен для диагностики VoIP.

Заходим в контекст Telephony, выбираем VoIP Calls. Видим звонки успешные и не очень. Так же видим и активные звонки.



Выбрав звонок и нажав на Flow Sequence можно посмотреть наглядно весь процесс согласования.


А по Play Streams можно даже прослушать звонок (если он успешен и поддерживается кодек, как тут G.711A), через встроенный в акулу RTP player. Круто!




Пример дампа с разговором (из курса GNS3 Wireshark: Packet Analysis and Ethical Hacking: Core Skills). Для прослушивания RTP потока нужно сделать decode as по одному из UDP пакетов разговора и выбрать протокол RTP для интерпретирования.

Время


Статистика

В разделе statistics можно узнать кучу разных вещей (только часть):

  • общая статистика по файлу, эту статистику можно получить используя консольную утилиту capinfos от Wireshark:
    • дата/время первого и последнего пакета
    • размер дампа
    • количество пакетов
    • время съема трафика
    • средний pps, packet size, bits/s


    • распределение по протоколам в protocol hierarchy, причем можно посмотреть на эти данные в самом дампе, применив стандартный Apply as a filter в статистике


    • по размерам пакетов в packet lengths


    • найти top talkers в endpoints (MAC, IP4/6, UDP, TCP)


    • проанализировать взаимодействие между хостами по объему трафика в conversations (MAC, IP4/6, UDP, TCP)




    tcpdump
    • Tcpdump работает на почти любые типы интерфейсов, которые идентифицируются системой (не DPDK): sub интерфейсы, bridge интерфейсы, туннельные интерфейсы и даже loopback
    • Tcpdump может при старте не показывать какое-то время наличие пакетов на интерейсе, особенно если не отключен DNS resolve через -n
    • При передаче файлов с дампами по сети, всегда нужно учитывать, что Wireshark/tcpdump не ужимают дампы, а после сжатия обычным zip/rar файл может весить в десятки раз меньше (gzip c 800MB до 50MB, 7z c 800MB до 20MB).

    Опции (подробнее в man tcpdump):

    Есть поддержка фильтров, как базовых, так и довольно сложных (напр. L4). Возможна комбинация фильтров (см. usage).

    packetdump

    Читаем последние логи для интерфейса:

    Python + pyshark
    Редактирование
    PYTHON + SCAPy

    Самый удобный способ когда нужно сделать более чем одно действие по изменению сетевых дампов. Легко можно сделать даже непростые операции, например, заменить все сетевые (MAC, IP, PORT) адреса в дампе на другие, IPv6 header на IPv4. Замена IPv6 header на IPv4 подразумевает извлечение payload, создание IPv4 header, добавление в него payload, пересчет checksum и length (см. в HEX EDITORS).

    Подробнее в python поиском по scapy.

    HEX READER and WIRESHARK

    Извлекаем из записанных byte файлов вывод для сопоставления с Wireshark.

    hex editors

    Самый хардкорный 🙂 способ изменения дампов. Подразумевает и пересчет checksum, тут может помочь tcprewrite.

    К примеру, c помощью hex editor ipv6 header заменить на ipv4 не так просто (особенно, в сравнении со python + scapy):

    1) изменяем hex строку. Много разных способов, хорошо с gif описано тут.

    2) после изменения нужно использовать pcapfix (причина однозначно непонятна, возможно, разрушается структура при экспорте)

    4) IPv4 header должен иметь корректный total length от IPv4 header + payload; т.е. при каждой замене нужно корректировать total length для каждого пакета, иначе пакет будет отбрасываться еще на уровне ядра ОС (Linux, Windows)

    5) Checksum может не пересчитываться tcprewrite с segmentation fault (помог запуск tcprewrite на другой VM)

    И все это нужно делать для всех пакетов в дампе.

    tcprewrite

    Хороший, хотя и базовый, редактор дампов.

    Change MAC

    Change IP

    Можно менять по net/mask, если не использовать опцию -fixsum, то чексумма может не пересчитаться.

    bittwist/bittwiste

    Хорошие, но старые утилиты для воспроизведения/генерации трафика (bittwist) и редактирования pcap (bittwiste). Bittwiste не поддерживает IPv6.

    Может помочь удалить лишние инкапсуляции

    dsniff
    WireEdit

    Хороший продукт для редактирования pcap. У самого Wireshark была beta с возможностью edit, но видимо дальше беты не зашло.

    С помощью WireEdit в пару кликов можно поменять любые поля (в том числе массовые замены) и пересчитать checksum. Требует лицензию (высылают на почту при регистрации, сейчас с этим стало сложнее).


    Продукт развивается, пример добавлений в новом релизе:

    SPLIT PCAP

    Разбиваем крупный pcap на несколько дампов по 100 MB (tcpdump).

    Разбиваем крупный pcap на несколько дампов по миллиону пакетов (editcap).

    editcap + mergecap
    Воспроизведение
    pfsend

    pfsend позволяет создавать большую нагрузку в сравнении с tcpreplay без кастомизаций (netmap, preload). Основан не на netmap/DPDK, а на pfring.

    Tcpreplay

    Tcpreplay по умолчанию стремится повторить pcap с точки зрения задержек между пакетами и уложить все за время снятия дампа!

    performance tuning results

    dump size

    объем памяти

    taskset

    tcpreplay-edit с fuzzing

    Может падать с segmentation fault (segfault) на какие-то дампы/каких-то сборках, так же как tcprewrite.

    tcpreplay с netmap

    Сборка netmap.

    Для начала качаем сборку tcpreplay-4.3.1.tar.xz с сайта разработчика т.к. напрямую с git требует autogen + сборка можеты быть не stable. Далее схема аналогична netmap.

    Запуск tcpreplay с netmap.

    Для запуска требуются установленные в ядро драйвера netmap (netmap.ko) и сетевой карты (напр. ixgbe.ko, igb.ko, igb_uio.ko, e1000e), иначе будет ошибка. Загружаем в ядро драйвер с помощью insmod.

    Можно так же проверить lsmod, ls /dev/netmap. Просмотреть путь до всех модулей ядра/драйверов можно используя awk + xargs.

    Выгрузить драйвер можно с помощью rmmod и modprobe.

    Анонимизация
    Комплексные продукты

    date

    07.07.2020

    directory

    Windows 10, Windows Server 2019

    comments

    комментариев 8

    Встроенный анализатор (сниффер) сетевого трафика Packet Monitor (PktMon.exe) появился еще в Windows 10 1809 и Windows Server 2019. В последнем билде Windows 10 2004 (May 2020 Update), функционал анализатора пакета был существенно расширен (появилась поддержка захвата пакетов в реальном времени, и поддержка формата PCAPNG для простого импорта в анализатор сетевого трафика Wireshark). Таким образом в Windows появился функционал захвата сетевого трафика, аналогичный tcpdump, и его можно смело использовать системными и сетевыми администраторам для диагностики работы сети.

    Packet Monitor позволяет получить всю сетевую активность, проходящую через сетевой интерфейс компьютера на уровне каждого пакета.

    Ранее для захвата сетевого трафика и инспектирования пакетов в Windows использовалась команда netsh trace.

    Справку по использованию параметров pktmon.exe можно получить, набрав команду в командной строке.

    Packet Monitor (PktMon) сниффер сетевого трафика в Windows

    Основные команды утилиты Packet Monitor:

    Чтобы получить справку по субкоманде, укажите ее имя:

    справка по командам pktmon

    Создадим фильтр пакетов для 4 TCP портов (также можно мониторить UDP и ICMP трафик):

    Выведем список имеющихся фильтров:

    pktmon filter list

    добавлние сетевых фильтров в pktmon filter

    Чтобы запустить фоновый сбор трафика, выполните команду:

    pktmon start –etw

    pktmon start запустить сбор сетевых пакетов

    В таком режиме pktmon собирает данные со всех сетевых интерфейсов, но в журнал попадают только первые 128 байтов пакета. Чтобы захватить пакеты целиком и только на определенном интерфейсе компьютера, используется команда:

    pktmon start --etw -p 0 -c 9

    где значение аргумента c – номер (ID) нужного сетевого интерфейса, полученного с помощью:

    pktmon comp list

    pktmon comp list - список сетевых интерфейсов, загруженных драйверов, протоколов и фильтров стека TCP-IP в Windows

    Фильтр пакетов начнет запись всего трафика, соответствующего заданным фильтрам в файл C:\Windows\System32\PktMon.etl (максимальный размер 512 Мб). Чтобы остановить запись дампа, выполните команду:

    Также сбор сетевых пакетов прекращается после перезегрузки Windows.

    Теперь вы можете сконвертировать файл с дампом трафика из формата ETL в обычный текст:

    pktmon format PktMon.etl -o c:\ps\packetsniffer.txt

    pktmon PCAPNG PktMon.etl -o c:\ps\packetsniffer.pcapng

    Полученный дамп трафика можно анализировать в текстовом виде, загрузить ETL файл в установленный на компьютере администратора Microsoft Network Monitor или WireShark (в форматер PCAPNG).

    анализ дампа трафика в Microsoft Network Monitor

    Чтобы удалить все созданные фильтры Packet Monitor, выполните:

    pktmon filter remove

    Вы можете использовать PktMon для мониторинга сетевого трафика в реальном времени. Для этого используется параметр -l real-time . В этом режиме захваченные сетевые пакеты отображаются в консоли, и не пишутся в фоновом режиме в лог файл.

    pktmon start --etw -p 0 -l real-time

    PktMon трафик в реальном времени real-time

    Чтобы остановить сбор трафика, используйте комбинацию клавиш Ctrl+C.

    Если у вас наблюдается drop пакетов на сетевом интерфейсе, PacketMon может показать причину дропов (например, некорректный MTU или VLAN).

    Также вы можете использовать PktMon в Windows Admin Center через расширения. Собранные данные с компьютеров и серверов при диагностике сетевых проблем можно использовать для анализа в более мощных программах анализа сетевого трафика, таких как Microsoft Network Monitor или Wireshark.

    Читайте также: