>
Декабрь 2017
Пн Вт Ср Чт Пт Сб Вс
« Ноя    
 123
45678910
11121314151617
18192021222324
25262728293031

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

[Всего голосов: 3    Средний: 2.3/5]
Share Button

Вам может быть интересно также:

Last updated by at .

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

Leave a Reply

You can use these HTML tags

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">