В 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 — анализатор сетевого трафика