Вбудований аналізатор (сніффер) мережевого трафіку Монітор пакетів (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:
- фільтр – управління фільтрами пакетів
- комп – управління зареєстрованими компонентами;
- скинути – скидання лічильників;
- почати – запустити моніторинг пакетів;
- Стоп– зупинити збір пакетів;
- формат – конвертувати лог файл трафіку в текстовий формат;
- pcapng – конвертація в формат pcapng;
- розвантажити – вивантажити драйвер 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:WindowsSystem32PktMon.etl Logging mode: Circular Maximum file size: 512 MB Active measurement started.
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:pspacketsniffer.txt
або
pktmon PCAPNG PktMon.etl -o c:pspacketsniffer.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.