В Linux есть утилита tcpdump, позволяющая перехватывать и анализировать сетевой трафик. Работает в командной строке не хуже Wireshark. В Windows 10 есть утилита PktMon, которая поддерживает формат WireShark (PCAPNG) и Netmon (ETL), может работать с дампами TcpDump.
Очень удобно. Снимаешь дамп, тянешь его себе, а потом спокойно за привычным рабочим окружением ковыряешь его в Wireshark.
А что делать в более старых версиях Windows, где нет PktMon? На помощь приходит парочка других утилит.
netsh trace
Начиная с Windows 7 / Windows Server 2008 R2 появилась возможность выполнять захват трафика встроенными в систему средствами с помощью netsh trace. Команда позволяет перехватить и сохранить сетевой трафик в формате Netmon (ETL). Дополнительно создаётся CAB архив, содержащий дополнительные данные, которые могут потребоваться для анализа сетевого трафика.
Для начала запускаем командную строку под администратором. Выполняем:
netsh trace help
И узнаём список атрибутов, которые можно применять в команде. Список, к слову, не полный. Больше данных получим запросом:
netsh trace start /?
start
Запускает трассировку.
Использование: trace start [sessionname=<sessionname>]
[[scenario=]<сценарий1,сценарий2>]
[[globalKeywords=]keywords] [[globalLevel=]level]
[[capture=]yes|no] [[capturetype=]physical|vmswitch|both]
[[report=]yes|no|disabled] [[persistent=]yes|no]
[[traceFile=]path\filename] [[maxSize=]filemaxsize]
[[fileMode=]single|circular|append] [[overwrite=]yes|no]
[[correlation=]yes|no|disabled] [capturefilters]
[[provider=]providerIdOrName] [[keywords=]keywordMaskOrSet]
[[level=]level] [bufferSize=<bufferSize>]
[[[provider=]provider2IdOrName] [[providerFilter=]yes|no]]
[[keywords=]keyword2MaskOrSet] [[perfMerge=]yes|no]
[[level=]level2] ...
Значения по умолчанию:
capture=no (указывает, включен ли захват пакетов в дополнение к трассировке событий)
capturetype=physical (указывает, будет ли включен захват пакетов только
для физических сетевых адаптеров, только для виртуальных коммутаторов или как для
физических сетевых адаптеров, так и для виртуальных коммутаторов)
report=no (указывает, будет ли вместе с файлом трассировки создан
отчет)
persistent=no (указывает, будет ли сеанс трассировки продолжаться
при перезагрузках до тех пор, пока не будет получена команда "netsh trace stop")
maxSize=250 MB (указывает максимальный размер файла трассировки; "0" - без ограничений)
bufferSize=512 (указывает размер буфера трассировки в КБ, мин. 4, макс. 16384)
fileMode=circular
overwrite=yes (указывает, будет ли перезаписан существующий файл вывода
трассировки)
correlation=disabled (указывает, будут ли связанные события соотноситься и
объединяться в группу)
perfMerge=yes (указывает, будут ли метаданные производительности объединяться с данными
трассировки)
traceFile=%LOCALAPPDATA%\Temp\NetTraces\[sessionname]NetTrace.etl
(указывает расположение файла вывода)
providerFilter=no (указывает, включен ли фильтр поставщика)
sessionname='' (указывает имя для сеанса трассировки, чтобы
можно было собрать одновременные трассировки.
Если для параметров поставщика keywords и level значения не заданы, по умолчанию используются значения all и 255 соответственно.
Пример:
netsh trace start scenario=InternetClient capture=yes
Запускает трассировку сценария InternetClient и зависящих от него
поставщиков и включает захват пакетов только для физических сетевых адаптеров.
Трассировка остановится после получения команды "netsh trace stop"
или после перезагрузки системы.
Для файла вывода будут использованы имя и расположение по умолчанию.
При наличии там старого файла он будет перезаписан.
netsh trace start provider=microsoft-windows-wlan-autoconfig
keywords=state,ut:authentication
Запускает трассировку для поставщика microsoft-windows-wlan-autoconfig
Трассировка завершится после получения команды "netsh trace stop" или
после перезагрузки системы.
Для файла вывода будут использованы имя и расположение по умолчанию.
При наличии там старого файла он будет перезаписан.
В журнал будут записываться только события с ключевыми словами "state" или "ut:authentication".
Команду "netsh trace show provider" можно использовать для просмотра
поддерживаемых ключевых слов и уровней.
Фильтры захвата:
Фильтры захвата поддерживаются, только если захват явно
включен параметром capture=yes. Используйте команду "netsh trace show
CaptureFilterHelp" для отображения списка поддерживаемых фильтров захвата и сведений об их использовании.
Фильтры поставщиков:
Фильтры поставщиков поддерживаются многими поставщиками и включаются параметром
providerFilter=Yes после каждого поставщика.
Используйте команду "netsh trace show ProviderFilterHelp" для отображения списка
поддерживаемых фильтров поставщиков для каждого поставщика и их использования.
Создаём директорию для сохранения дампа. Формируем запрос, в котором указываем параметры захвата и имя файла для дампа, выполняем.
netsh trace start capture=yes ipv4.address=10.12.54.14 fileMod=single maxsize=0 traceFile=C:\dump\NetTrace2.etl
Для остановки захвата трафика выполняем:
netsh trace stop
Процесс остановки может быть долгим, если данных много. В итоге получаем два файла:
- CAB
- ETL
Мы получили дамп трафика в формате Netmon (ETL), его можно анализировать в Network Monitor. А как быть, если нам нужно анализировать трафик в виде WireShark (PCAPNG)?
Конвертация ETL в PCAPNG
На такой случай есть утилита etl2pcapng.
https://github.com/microsoft/etl2pcapng
На всякий случай сохранил себе в Сборку для системного администратора.
Качаем, распаковываем.
Туда де скидываю ETL файл.
Запускаем командную строку под администратором. Использовать утилиту просто:
etl2pcapng <infile> <outfile>
Выполняю:
etl2pcapng.exe NetTrace2.etl NetTrace2.pcapng
Получаем файл PCAPNG.
Ссылки
Wireshark — анализатор сетевого трафика







