Встроенный анализатор (сниффер) сетевого трафика 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:
- filter — управление фильтрами пакетов
- comp – управление зарегистрированными компонентами;
- reset — сброс счетчиков;
- start – запустить мониторинг пакетов;
- stop— остановить сбор пакетов;
- format – конвертировать лог файл трафика в текстовый формат;
- pcapng – конвертация в формат pcapng;
- unload – выгрузить драйвер PktMon.
Чтобы получить справку по субкоманде, укажите ее имя:
pktmon filter
Попробуем собрать дамп трафика, который приходит на некоторые запущенные службы компьютера. Допустим, нам нужно проанализировать трафик FTP (TCP порты 20, 21) и HTTP (порты 80 и 443).
Создадим фильтр пакетов для 4 TCP портов (также можно мониторить UDP и ICMP трафик):
pktmon filter add -p 20 21
pktmon filter add HTTPFilt –p 80 443
Выведем список имеющихся фильтров:
pktmon filter list
Чтобы запустить фоновый сбор трафика, выполните команду:
pktmon start –etw
Log file name: C:\Windows\System32\PktMon.etl Logging mode: Circular Maximum file size: 512 MB Active measurement started.
В таком режиме pktmon собирает данные со всех сетевых интерфейсов, но в журнал попадают только первые 128 байтов пакета. Чтобы захватить пакеты целиком и только на определенном интерфейсе компьютера, используется команда:
pktmon start --etw -p 0 -c 9
где значение аргумента c – номер (ID) нужного сетевого интерфейса, полученного с помощью:
pktmon comp list
Фильтр пакетов начнет запись всего трафика, соответствующего заданным фильтрам в файл C:\Windows\System32\PktMon.etl (максимальный размер 512 Мб). Чтобы остановить запись дампа, выполните команду:
pktmon stop
Также сбор сетевых пакетов прекращается после перезегрузки 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.
ETW, Wireshark, tcpdump — сетевые анализаторы трафика, которые могут использоваться для анализа трафика, проходящего через сетевой интерфейс хоста. Они могут понадобиться для обнаружения и решения проблем с сетью, отладки веб-приложений, сетевых программ или сайтов.
Дамп трафика на серверах Windows стандартными средствами
Запускаем командную строку от имени администратора и запускаем сбор трафика:
C:\Windows\system32>netsh trace start scenario=netconnection capture=yes maxsize=2048 tracefile=c:\dump01.etl
Останавливаем сбор трафика:
C:\Windows\system32>netsh trace stop
Преобразование etl в формат pcapng с помощью etl2pcapng
Windows поставляется с компонентом захвата трафика под названием «ndiscap», который реализован как поставщик трассировки событий Windows (ETW).
Файл, созданный ndiscap, представляет собой файл etl, который можно открыть с помощью инструментов, ориентированных на ETW, таких как Microsoft Message Analyzer, но не может быть открыт с помощью Wireshark.
etl2pcapng.exe может преобразовать файл etl в файл pcapng для открытия с помощью Wireshark.
Бинарники доступны в разделе Releases: https://github.com/microsoft/etl2pcapng/releases
Выполняем преобразование дампа:
c:\etl2pcapng>etl2pcapng.exe in.etl out.pcapng
Дамп трафика на серверах Linux с помощью утилиты tcpdump
Сначала установите утилиту tcpdump:
RHEL
yum install tcpdump -y
dnf установить tcpdump -y
Ubuntu / Debian
apt install tcpdump -y
Запускаем сбор трафика без преобразования имен DNS и с сохранением дампа в файл.
tcpdump -i ens192 -n -w /tmp/dump01.pcap
- IT
- Компьютеры
- Cancel
Метода работает для windows 2008r2 (win7) и старше.
Пример: Моя ip-атс находится по адресу 192.168.0.5.
старт снятия дампа трафика: netsh trace start persistent=yes capture=yes tracefile=c:\trace\trace.etl IPv4.Address=192.168.0.5 Protocol=(TCP,UDP) maxSize=500
останов снятия дампа трафика: netsh trace stop
Использованы опции:
maxSize — Максимальный размер файла трассировки. «0» — без ограничения, по умолчанию 0.
persistent — Продолжит ли работать команда после рестарта компьютера до “Netsh trace stop”, по умолчанию no
traceFile — Местоположение файлв трассировки. Путь и имя файла по умолчанию: “traceFile=%LOCALAPPDATA%\Temp\NetT
Чтобы сделать дамп (журнал) трафика в Windows через Wireshark, проделайте следующие шаги:
- Скачать и установить Wireshark. Нужна полная версия, портативная не подойдет.
- Определить адрес блокируемого сайта командой
nslookup [адрес сайта]
. Выполнять из-под командной строки. - Выбрать сетевой интерфейс, ввести в поле «…using this filter» строку вида:
host [IP-адрес]
- Если адресов несколько, нужно объединить их словом «or»:
host [IP-адрес 1] or [IP-адрес 2]
После чего нажать enter, чтобы запустить захват трафика. - Зайти на заблокированный сайт по HTTPS.
- Остановить захват трафика кнопкой с иконкой красного квадрата на панели. Нажать file → save as, сохранить в файл.
- Если вас попросили отправить файл, отправьте мне на iam@valdikss.org.ru
Проделать это дважды, с запущенным GoodbyeDPI и без.
В системах Windows для захвата и последующего анализа сетевого трафика многие из нас пользуются такими известными инструментами как Network Monitor или Wireshark. Захват трафика через эти инструменты в наблюдаемой системе предполагает установку дополнительных компонент, выстраивающихся в функции сетевого обмена. Начиная с Windows 7 / Windows Server 2008 R2 у нас появилась возможность выполнять захват трафика встроенными в систему средствами, то есть мы можем выполнить захват трафика на интересующей нас системе не выполняя непосредственную установку дополнительных программных средств, а полученный в результате захвата файл сетевого дампа в дальнейшем анализировать на той системе где установлены соответствующие средства анализа, например на рабочей станции администратора с установленным Network Monitor.
Для того, чтобы активировать захват сетевого трафика проходящего через все сетевые интерфейсы на интересующей нас системе выполним команду с правами Администратора:
Netsh trace start scenario=NetConnection capture=yes report=yes persistent=no maxsize=1024 correlation=yes traceFile=C:\Logs\NetTrace.etl
При этом каталог, который мы указываем в качестве сохранения файла захвата должен существовать в файловой системе, иначе мы получим ошибку ‘The system cannot find the path specified‘.
Если обследуемая система имеет несколько сетевых интерфейсов и нас интересует трафик только на определённом интерфейсе, то синтаксис команды будет выглядеть примерно так:
Netsh trace start scenario=NetConnection capture=yes ipv4.address=192.168.0.100 report=yes persistent=no maxsize=1024 correlation=yes traceFile=C:\Logs\NetTrace.etl
Захват трафика запущен и после того, как мы выполнили необходимые манипуляции, например воспроизвели изучаемую проблему из-за которой мы и решили анализировать трафик, останавливаем захват трафика командой:
Netsh trace stop
В результате будет сгенерирован ETL файл а также CAB архив содержащий дополнительные данные, которые могут потребоваться для анализа сетевых проблем.
Полученный ETL файл копируем на рабочую станцию Администратора, запускаем Network Monitor и открываем файл из меню File > Open > Capture
Загруженные данные будут разложены на фреймы с малопонятной структурой, да ещё и с предупреждением в описании практически каждого фрейма типа ‘Windows stub parser: Requires full Common parsers. See the «How Do I Change Parser Set Options(Version 3.3 or before) or Configure Parser Profile (Version 3.4)» help topic for tips on loading these parser sets‘. Для того чтобы получить более или менее читаемый вид, нужно применить так называемый Parser Profile. Через меню Tools > Options откроем свойства Parser Profiles и назначим в качестве активного профиля – Windows
После этого данные трассировки будут перечитаны и представлены в более удобоваримой форме и теперь можно «забуриваться» в анализ…
Дополнительная информация:
The troubleshooters and problem solvers — Network tracing (packet sniffing) built-in to Windows Server 2008 R2 and Windows Server 2012
Blog IT, IS, etc… — Network trace without NetMon, WireShark, etc…
Blog IT, IS, etc… — Network trace without NetMon, wireShark, etc… Part 2