Microsoft Network Monitor это классический инструмент сетевой диагностики для Windows, которой позволяет выполнить захват и анализ входящего и исходящего трафика на компьютере. Несмотря на то, что это продукт не развивается и не обновляется уже более 3 лет, его часто используют администраторы, когда нужно выполнить диагностику сетевых подключений. NetMon предоставляет на порядок меньше возможностей и не так хорош в расширенном разборе пакетов, по сравнению с популярным инструментом захвата и анализа WireShark. Однако графический интерфейс Network Monitor гораздо проще и интуитивное, да и сам продукт легче. Поэтому в некоторых сценариях его использование вполне оправдано и удобно.
В этой статье мы рассмотрим, как использовать Network Monitor для захвата и анализа сетевого трафика в реальном времени и для снятия дампа трафика для последующего анализа.
Установить Microsoft Network Monitor 3.4 (последняя в прямо смысле версия) можно, скачав установщик (NM34_x64.exe) с сайта Microsoft (https://www.microsoft.com/en-us/download/details.aspx?id=4865), или установить пакет с помощью пакетного менеджера winget:
winget install Microsoft.NetMon
После установки, запустите Network Monitor с правами администратора.
В окне NetMon нажмите New Capture.
По умолчанию Network Monitor, собирает весь трафик, проходящий через интерфейсы компьютеры. За длительный промежуток времени размер такого сетевого дампа может быть весьма значительным. В нашем случае мы хотим собирать только исходящие пакеты по одному из известных SMTP портов.
Нажмите кнопку Capture Settings. В этом окне можно настроить фильтры, которые определяют какой трафик должен собирать NetMon. В разделе Load Filter -> Standard Filters есть несколько шаблонов фильтров для типовых задач. В нашем случае нам нужен фильтр по TCP портам. Выберите TCP-> TCP ports.
В окно редактора фильтра будет вставлен следующий код шаблона:
tcp.port == 80 OR Payloadheader.LowerProtocol.port == 80
Нужно отредактировать правило и добавить в него все три стандартные SMTP порты:
(tcp.port == 25 OR Payloadheader.LowerProtocol.port == 25 OR
tcp.port == 587 OR Payloadheader.LowerProtocol.port == 587 OR
tcp.port == 465 OR Payloadheader.LowerProtocol.port == 465)
Если на сервере несколько сетевых интерфейсов или дополнительных IP адресов на адаптере, можно добавить фильтр на исходящий IP:
AND
(IPv4.SourceAddress == 192.168.158.144)
OR
/
AND
/
NOT
, или использовать вместо них
||
,
&&
или
!
.Нажмите кнопку Apply, чтобы сохранить фильтр.
Затем перейдите в раздел Tools -> Options -> Parser profiles. Выберите Windows в профиле парсера по умолчанию (Set as active).
Теперь можно запустить захват трафика. Нажмите кнопку Start в панели инструментов.
Теперь вам нужно воспроизвести проблему, или если она появляется редко в неизвестные моменты времени, просто оставьте NetMon запущенным в течении дня/недели.
В нашем случае через некоторое время в журнале пакетов NetMon появились события, соответствующий примененным фильтрам. Если открыть содержимое пакетов, то можно обнаружить что выполнялась попытка SMTP подключения. Внутри пакетом можно увидеть команды SMTP протокола, попытки аутентификации, адрес целевой сервер и email адрес, на который выполняется отправка (пример SMTP команд в telnet для отправки почты с аутентификацией).
В поле Process Name указано имя процесса, который инициировал данные сетевой трафик. В этом случае мы определили, что SMTP рассылка выполняется консольной утилитой
blat.exe
.
powershell.exe
, из которой я проверял доступность порта 25 на внешнем сервере:
Test-NetConnection smtp.mail.ru -port 25
Чтобы остановить захват сетевого трафика, нужно нажать кнопку Stop. Полученный дамп трафика можно сохранить *.CAP файл для последующего анализа в офлайн режиме.
Можно добавить дополнительные фильтры по IP или MAC адресу назначения/источника, различным протоколам, портам и специальные фильтры для анализа трафика некоторых протоколов (SMB, HTTP, DNS). Фильтры можно применять как целиком к захваченному трафику, так и для фильтрации отображаемых данных в рамках текущей сессии (окно Display Filter).
Например, чтобы отфильтровать пакеты, можно щелкнуть по любому из значений в списке пакетов и выбрать Add [something] to Display Filter.
На скриншоте я добавил правило фильтрации по IP адресу назначения. В окно фильтра был добавлен такой код:
Destination == "ip_adress"
Ниже представлены несколько примером часто используемых фильтров Network Monitor.
Фильтр по IP адресу назначения:
IPv4.SourceAddress == 192.168.0.1
Фильтр по IP источника или назначения:
IPv4.Address == 192.168.0.1
Фильтр по номеру TCP порта:
tcp.port == 443
OR
Payloadheader.LowerProtocol.port == 443
Можно указывать диапазоны портов:
(udp.Port>=10000 && udp.port<=19999)
В этой статье мы рассмотрели особенности захвата и последующего анализа сетевого трафика в Windows с помощью Microsoft Network Monitor. Также в Windows для снятия дампа трафика без установки Network Monitor на компьютере можно использовать встроенную консольную утилиту PktMon. Дамп, снятый такой утилитой, можно проанализировать на любом компьютере с установленным NetMon или Wireshark.