Главная

Saturday, 14 July 2018

Перехватываем трафик с NetEventPacketCapture.

Всем привет.

Я хочу ловить сетевой трафик для выявления одной проблемы. Чем? Как? До изобретения своего велосипеда можно вспомнить о готовых продуктах, предназначенных для перехвата сетевого трафика и последующего анализа. Вот основные программы, занимающиеся анализом трафика. Из бесплатных это TCPdump, Wireshark и MS Message Analyzer. В зависимости от имеющегося сетевого оборудования это еще могут быть встроенные средства типа Mikrotik Packet Sniffer.

Но оказалось что ловить сетевые пакеты можно просто из командной строки Powershell с использованием набора командлетов NetEventPacketCapture. Такая фишка начиная с Windows 8.1/2012R2.

Но, если вы помните, поскольку в PowerShell можно использовать инструментарий .NET, то еще до появления набора командлетов NetEventPacketCapture в сети был скрипт сниффера Get-Packet. Ознакомиться с вариантом его работы можно здесь.

А сегодня разберем пример с NetEventPacketCapture.

Представим, что на компьютере пользователь работает в терминальной сессии, подглядим за его работой при помощи PowerShell.

Для начала создадим подключение к компьютеру пользователя:

$Cim = New-CimSession -ComputerName 'WASA07'


После этого создадим сессию обработчика событий:

New-NetEventSession -Name "Session01" -CimSession $Cim -LocalFilePath "C:\Windows\Temp\Trace.etl" -CaptureMode SaveToFile

И добавим поставщика событий:

Add-NetEventProvider -CimSession $Cim -Name 'Microsoft-Windows-TCPIP' -SessionName "Session01"

Посмотреть всех возможных поставщиков можно командой logman query providers.
После чего осталось запустить трассировку:

Start-NetEventSession -Name "Session01" -CimSession $Cim

Для остановки достаточно в той же команде заменить Start на Stop.

Результаты можно посмотреть следующей командой:

Get-WinEvent -Path "\\WASA07\C$\Windows\Temp\Trace.etl" -Oldest

Кстати вот вам еще один пример чтения файлов формата ETL.

Для автоматизации процессов такой трассировки системный администратор Dan Franciscus написал скрипт Invoke-PSTrace.

При запуске его скрипта можно задать имя удаленной машины, поставщика событий, а при необходимости открыть трассировку в Microsoft Message Analyzer.

Удачи.


No comments:

Post a Comment

А что вы думаете по этому поводу?