Как проснифать трафик в Windows без использования WINCAP

Wireshark и его аналоги предоставляют возможность снифать трафик за счет установки WinPcap. Тот, в свою очередь, требует установки драй вера в ОС. Это мы не всегда можем себе позволить, например если хотим сделать все совсем незаметно, с минимальными следами в ОС. И первая радость: начиная с версии Win 7/2008 появилась встроенная возможность отснифать трафик!



Но подход здесь совсем другой — не через драйверы, а за счет логирования событий. Возможности этой подсистемы ОС значительно расширились по сравнению с прошлыми версиями.

Одно из главных понятий в системе логирования — «провайдер». Именно провайдеры отвечают за генерацию событий, которые возникают при определенных действиях пользовательского или системного ПО. То есть захотело приложение послать HTTP-запрос на google.com — должны «отработать» провайдеры, которые отвечают и за резолв имени, и провайдеры API, отвечающего за генерацию запроса, и провайдеры файрвола с конкретными данными пакетов. Получается такая стопка блинчиков… Признаюсь, что от глубин этой части винды я очень далек, но, думаю, общее описание вполне корректно.

Но провайдеров очень-очень много, у меня на Win 8 насчиталось около тысячи. И хотя можно логировать данные отовсюду, но очень быстро утонешь в потоках ивентов. Причем часто данных с одного провайдера может быть недостаточно. Потому есть такое понятие, как сценарии — группы провайдеров, объединенные тематически. Перечень всех провайдеров можно получить командой (под админом в консоли)

netsh trace show providers

Перечень сетевых сценариев:

netsh trace show scenarios

Правда, с ними другая беда — без инета, чисто по описанию об их содержании ничего не поймешь. Например, «Разрешение проблем, связанных с сетевым адаптером». Ну да ладно…

Можно попробовать посмотреть, какие провайдеры входят в тот или иной сценарий:

netsh trace show scenario имя_сценария

В инете для того, чтобы отснифать трафик, предлагается такая команда:

netsh trace start scenario=NetConnection capture=yes
report=yes persistent=no maxsize=1024 correlation=yes
traceFile=C:LogsTrace_name.etl

•netsh trace start — стандартная последовательность для запуска логирования сетевых событий;
•scenario=NetConnection — выбираем сценарий;
•capture=yes — указываем, что данные сетевых пакетов необходимо сохранять (можно хранить только сами события);
•report=yes — создание итогового файла отчета;
•persistent=no — логирование будет отключено при перезагрузке компа;
•maxsize=1024 — максимальный размер итогового файла логов в мегабайтах;
•correlation=yes — группировка связанных событий;
•traceFile=C:LogsTrace_name.etl — путь до файла с логом событий.

Для остановки логирования нужна команда:

netsh trace stop

Фактически эта связка работает. Трафик сохраняется. Но сценарий NetConnection содержит в себе очень много провайдеров, а потому получается слишком много событий, и файл с отчетом растет на глазах. Для реальных действий рекомендую выбрать лишь необходимые провайдеры.

На выходе работы подсистемы логирования событий мы получаем файл в формате etl. Для каких-то дел он, может, и подошел бы, но для анализа трафика реально очень хотелось бы получить pcap, чтобы потом его запихнуть напрямую в Wireshark. Тут нам иногда может помочь тулза от Microsoft — Network Monitor (goo.gl/v0RoQj). Она по функционалу во многом смахивает на Wireshark. Позволяет и снифать, и просматривать содержимое пакетов, но, имхо, значительно менее удобна. Но зато она умеет читать etl-файлы и сохранять потом в pcap (хотя и не всегда с этим успешно справляется).

Архитектура трейсинга событий (взято с MSDN)
Архитектура трейсинга событий (взято с MSDN)

Подход не на уровне трафика, а на уровне событий имеет свои плюсы. Network Monitor может указать, какое приложение выполняет те или иные действия в сети (ведь известно, кто инициировал событие), что местами помогает.

Click to rate this post!
[Total: 4 Average: 3]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

1 comments On Как проснифать трафик в Windows без использования WINCAP

Leave a reply:

Your email address will not be published.