Перейти к основному содержанию

netsh trace — анализатор сетевого трафика

Network

В 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

net

И узнаём список атрибутов, которые можно применять в команде. Список, к слову, не полный. Больше данных получим запросом:

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

net

Процесс остановки может быть долгим, если данных много. В итоге получаем два файла:

  • CAB
  • ETL

net

Мы получили дамп трафика в формате Netmon (ETL), его можно анализировать в Network Monitor. А как быть, если нам нужно анализировать трафик в виде WireShark (PCAPNG)?

Конвертация ETL в PCAPNG

На такой случай есть утилита etl2pcapng.

https://github.com/microsoft/etl2pcapng

На всякий случай сохранил себе в Сборку для системного администратора.

Качаем, распаковываем.

net

Туда де скидываю ETL файл.

net

Запускаем командную строку под администратором. Использовать утилиту просто:

etl2pcapng <infile> <outfile>

Выполняю:

etl2pcapng.exe NetTrace2.etl NetTrace2.pcapng

net

Получаем файл PCAPNG.

net

Ссылки

Wireshark — анализатор сетевого трафика

tcpdump — анализатор сетевого трафика

PktMon — анализатор сетевого трафика

Теги

 

Похожие материалы

PktMon — анализатор сетевого трафика

PktMon.exe — встроенная утилита в Windows 10 и Windows Server 2019, позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.

Теги