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 — анализатор сетевого трафика
Возможности PktMon
- Мониторинг пакетов и подсчет в нескольких расположениях в сетевом стеке
- Удаленное обнаружение пакетов в нескольких расположениях стека
- Гибкая фильтрация пакетов среды выполнения
- Поддержка инкапсуляции
- Анализ сети на основе синтаксического анализа пакетов TcpDump
- Анализ метаданных пакетов (OOB)
- Мониторинг пакетов на экране в режиме реального времени
- Ведение журнала в памяти большого объема
- Поддержка формата Wireshark и сетевой монитор
Ограничения
- Пока только Ethernet, нет поддержки беспроводного трафика.
- Не видит пакеты из брандмауэра Windows.
Немного теории
Все компоненты между сетевым адаптером и приложением формируют сетевой стек: набор сетевых компонентов, которые обрабатывают и перемещают сетевой трафик. В традиционных сценариях сетевой стек невелик, и все маршрутизация пакетов и переключение происходят во внешних устройствах.
![](https://netws.ru/wp-content/uploads/2022/08/image-3.png)
В среде виртуализации сетевой стек увеличен. Расширенный сетевой стек теперь включает такие компоненты, как виртуальный коммутатор, ответственный за коммутацию и обработку пакетов. PktMon может работать с таким расширенным сетевым стеком.
![](https://netws.ru/wp-content/uploads/2022/08/image-5.png)
Монитор пакетов перехватывает пакеты в нескольких расположениях в сетевом стеке, определяя маршрут пакета. Если пакет был удален поддерживаемым компонентом в сетевом стеке, то монитор пакетов сообщит о том, что пакет удаляется. Это позволяет пользователям отличить компонент, который является предполагаемым местом назначения для пакета, от компонента, который мешает работе пакета. Кроме того, монитор пакетов сообщает о причинах удаления. Например, MTU Mismatch, Filtered VLAN и т.д. Эти причины помогают определить источник проблемы. Монитор пакетов также предоставляет счетчики пакетов для каждой точки перехвата без необходимости длительного анализа журналов.
![](https://netws.ru/wp-content/uploads/2022/08/image-6.png)
Пример использования PktMon
Мониторим DNS трафик. Запускаем командную строку или PowerShell. Сбрасываем возможные фильтры:
pktmon filter remove
Создаём фильтр для 53 порта DNS:
pktmon filter add -p 53
Одновременно поддерживается до 32 фильтров. Посмотреть список имеющихся фильтров:
pktmon filter list
![](https://netws.ru/wp-content/uploads/2022/08/image-4.png)
Мониторим трафик в реальном времени:
pktmon start —etw -p 0 -l real-time