Аналог tcpdump для windows
Исследователи портала 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 с помощью скриптов на Lua и подключать дополнительные (даже разработанные самостоятельно) модули для разбора и анализа трафика.
Помимо Ethernet, сниффер умеет перехватывать трафик беспроводных сетей (стандарты 802.11 и протокол Bluetooth). Тулза позволяет анализировать трафик IP-телефонии и восстанавливать TCP-потоки, поддерживается анализ туннелированного трафика. Wireshark отлично справляется с задачей декодирования протоколов, но, чтобы понять результаты этого декодирования, надо, безусловно, хорошо разбираться в их структуре.
К недостаткам Wireshark можно отнести то, что восстановленные потоки не рассматриваются программой как единый буфер памяти, из‑за чего затруднена их последующая обработка. При анализе туннелированного трафика используется сразу несколько модулей разбора, и каждый последующий в окне программы замещает результат работы предыдущего — в итоге анализ трафика в многоуровневых туннелях становится невозможен.
В целом Wireshark — не просто популярный, но очень добротный продукт, позволяющий отследить содержимое гуляющих по сети пакетов, скорость их передачи, найти «проблемные места» в сетевой инфраструктуре. Но в отличие от коммерческих приложений здесь нет удобных инструментов визуализации. Кроме того, с помощью Wireshark не так уж и просто, например, выловить из трафика логины и пароли, а это одна из типичных задач при тестировании на проникновение.
CommView
Среди существующих ныне снифферов CommView — один из самых старых и заслуженных ветеранов, об этом продукте «Хакер» писал еще в 2001 году. Проект жив и по сей день, активно развивается и обновляется: последняя на текущий момент версия датирована 2020 годом. Несмотря на то что продукт платный, производитель предлагает скачать триал, который позволяет посмотреть работу приложения на практике — пробная версия сниффера перехватывает трафик в течение пяти минут, после чего просит денег.
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.
Анонимизация
Комплексные продукты
07.07.2020
Windows 10, Windows Server 2019
комментариев 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:
Чтобы получить справку по субкоманде, укажите ее имя:
Создадим фильтр пакетов для 4 TCP портов (также можно мониторить UDP и ICMP трафик):
Выведем список имеющихся фильтров:
pktmon filter list
Чтобы запустить фоновый сбор трафика, выполните команду:
pktmon start –etw
В таком режиме pktmon собирает данные со всех сетевых интерфейсов, но в журнал попадают только первые 128 байтов пакета. Чтобы захватить пакеты целиком и только на определенном интерфейсе компьютера, используется команда:pktmon start --etw -p 0 -c 9
где значение аргумента c – номер (ID) нужного сетевого интерфейса, полученного с помощью:
pktmon comp list
Фильтр пакетов начнет запись всего трафика, соответствующего заданным фильтрам в файл 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).
Чтобы удалить все созданные фильтры Packet Monitor, выполните:
pktmon filter remove
Вы можете использовать PktMon для мониторинга сетевого трафика в реальном времени. Для этого используется параметр -l real-time . В этом режиме захваченные сетевые пакеты отображаются в консоли, и не пишутся в фоновом режиме в лог файл.
pktmon start --etw -p 0 -l real-time
Чтобы остановить сбор трафика, используйте комбинацию клавиш Ctrl+C.Если у вас наблюдается drop пакетов на сетевом интерфейсе, PacketMon может показать причину дропов (например, некорректный MTU или VLAN).
Также вы можете использовать PktMon в Windows Admin Center через расширения. Собранные данные с компьютеров и серверов при диагностике сетевых проблем можно использовать для анализа в более мощных программах анализа сетевого трафика, таких как Microsoft Network Monitor или Wireshark.
Читайте также: