PktMon.exe (Packet Monitor, Монитор пакетов) — встроенная утилита в Windows 10 и Windows Server 2019, позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.
Наконец-то можно анализировать пакеты без установки дополнительного софта. Утилита может использоваться для записи пакетов, обнаружения пакетов, фильтрации пакетов и подсчета. Этот инструмент особенно полезен в сценариях виртуализации, например в сетях контейнеров и SDN, так как он обеспечивает видимость сетевого стека. Пригодится системными и сетевыми администраторам для анализа и диагностики сети.
Packet Monitor поддерживает формат WireShark (PCAPNG) и Netmon (ETL), может работать с дампами TcpDump.
Расположение утилиты:
C:\Windows\system32\pktmon.exe
Можно запускать в командной строке или PowerShell. Основные команды Packet Monitor:
- filter — управление фильтрами пакетов.
- comp — управление зарегистрированными компонентами
- reset — сброс счетчиков до нуля
- start — запуск мониторинга пакетов
- stop — остановка мониторинга
- format — преобразование файла журнала в текст
- pcapng — преобразование файла журнала в формат pcapng
- unload — выгрузка драйвера PktMon
Получить справку о команде:
pktmon help
pktmon filter add help
Ссылки
tcpdump — анализатор сетевого трафика
Wireshark — анализатор сетевого трафика
netsh trace — анализатор сетевого трафика
https://docs.microsoft.com/ru-ru/windows-server/networking/technologies/pktmon/pktmon-syntax
Возможности PktMon
- Мониторинг пакетов и подсчет в нескольких расположениях в сетевом стеке
- Удаленное обнаружение пакетов в нескольких расположениях стека
- Гибкая фильтрация пакетов среды выполнения
- Поддержка инкапсуляции
- Анализ сети на основе синтаксического анализа пакетов TcpDump
- Анализ метаданных пакетов (OOB)
- Мониторинг пакетов на экране в режиме реального времени
- Ведение журнала в памяти большого объема
- Поддержка формата Wireshark и сетевой монитор
Ограничения
- Пока только Ethernet, нет поддержки беспроводного трафика.
- Не видит пакеты из брандмауэра Windows.
Немного теории
Все компоненты между сетевым адаптером и приложением формируют сетевой стек: набор сетевых компонентов, которые обрабатывают и перемещают сетевой трафик. В традиционных сценариях сетевой стек невелик, и все маршрутизация пакетов и переключение происходят во внешних устройствах.
В среде виртуализации сетевой стек увеличен. Расширенный сетевой стек теперь включает такие компоненты, как виртуальный коммутатор, ответственный за коммутацию и обработку пакетов. PktMon может работать с таким расширенным сетевым стеком.
Монитор пакетов перехватывает пакеты в нескольких расположениях в сетевом стеке, определяя маршрут пакета. Если пакет был удален поддерживаемым компонентом в сетевом стеке, то монитор пакетов сообщит о том, что пакет удаляется. Это позволяет пользователям отличить компонент, который является предполагаемым местом назначения для пакета, от компонента, который мешает работе пакета. Кроме того, монитор пакетов сообщает о причинах удаления. Например, MTU Mismatch, Filtered VLAN и т.д. Эти причины помогают определить источник проблемы. Монитор пакетов также предоставляет счетчики пакетов для каждой точки перехвата без необходимости длительного анализа журналов.
Пример использования PktMon
Мониторим DNS трафик. Запускаем командную строку или PowerShell. Сбрасываем возможные фильтры:
pktmon filter remove
Создаём фильтр для 53 порта DNS:
pktmon filter add -p 53
Одновременно поддерживается до 32 фильтров. Посмотреть список имеющихся фильтров:
pktmon filter list
Мониторим трафик в реальном времени:
pktmon start --etw -p 0 -l real-time
Или в новой версии:
pktmon start --etw -m real-time
или:
pktmon start --etw --log-mode real-time