Поиск по сайту:

Как перехватывать и проверять сетевые пакеты в Windows Server


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

Конечно, вы можете использовать сторонние инструменты для захвата сети, такие как WireShark. Хотя некоторые сторонние инструменты могут предложить лучший опыт, Microsoft Network Monitor по-прежнему сохраняет свои позиции. В этой статье мы рассмотрим, как перехватывать и проверять пакеты с помощью последней доступной версии Microsoft Network Monitor, одного из самых популярных инструментов.

Хотя я мог бы использовать WireShark, я обнаружил, что интерфейс и удобство использования Microsoft Network Monitor из коробки намного проще в использовании. Многое из того же можно сделать в WireShark, но вам, возможно, придется выполнить гораздо больше настроек в интерфейсе.

Захват пакетов с помощью Microsoft Network Monitor

Во-первых, нам нужно установить Microsoft Network Monitor, вы можете скачать его здесь, а затем приступить к его установке. После того, как вы установили Microsoft Network Monitor, запустите программу. После запуска вы нажмете New Capture.

Затем вам нужно будет запустить мониторинг, нажав кнопку «Пуск». Это немедленно начнет захват, и вы увидите, что разговоры начинают появляться с левой стороны.

Если вы обнаружите, что получаете сообщение об ошибке, в котором говорится, что адаптеры не привязаны, вам следует запустить Microsoft Network Monitor от имени администратора. Кроме того, если вы только что установили это, вам может потребоваться перезагрузка.

Одним из больших преимуществ использования Microsoft Network Monitor является то, что он очень легко группирует ваши сетевые разговоры с левой стороны. Это значительно упрощает поиск конкретных процессов, а затем их изучение.

Расширение любого из знаков «плюс» покажет вам определенный набор «диалогов», которые сетевой монитор мог захватить и сгруппировать под процессом.

Фильтрация трафика

Вы быстро обнаружите, что со всеми поступающими данными вам нужно будет легче отфильтровывать шум. Одним из примеров использования фильтра является DnsAllNameQuery в разделе DNS стандартных фильтров. Добавив эту строку в раздел фильтра отображения и нажав «Применить», вы сможете отображать только те пакеты, которые являются DNS-запросами, как показано ниже.

Строительные фильтры

Создавать фильтры или изменять встроенные фильтры очень просто. В поле «Фильтр отображения» есть несколько способов создания фильтров. Введя имя протокола и после него . (точка), вы увидите автозаполнение возможных значений поля для сравнения. Используя стандартный оператор сравнения ==, мы можем увидеть, равны ли определенные значения. Мы даже можем создавать мультивыражения, используя логические операторы, такие как и и или. Пример того, как это выглядит, приведен ниже.

DNS.QuestionCount AND
DNS.ARecord.TimeToLive == 14

Есть также несколько доступных методов, таких как contains() и UINT8(). Вы можете увидеть, как с помощью метода contains ниже отфильтровываются только записи DNS, которые содержат [google.com](http://google.com) и TimeToLive 14.

DNS.QuestionCount AND
DNS.ARecord.TimeToLive == 14 AND
DNS.QRecord.QuestionName.contains("google.com")

Как вы могли заметить, существует несколько способов комбинировать фильтры, чтобы сделать их полезными и удобными в использовании. Это отличный способ вернуть только те данные, которые вас интересуют, тем более что захват пакетов может стать довольно большим. В следующем разделе мы рассмотрим еще несколько полезных примеров.

Примеры фильтров

Некоторые практические примеры, помимо встроенных по умолчанию, помогут вам понять, как получить только те полезные данные, которые вам нужны.

Фильтрация по номеру порта

Хотя для фильтрации можно использовать протокол HTTP, использование следующего метода позволяет учитывать настраиваемые порты, такие как 8080 или 8443, что особенно полезно при устранении неполадок. .

// Filter by TCP Port Number
tcp.port == 80 OR Payloadheader.LowerProtocol.port == 80
tcp.port == 443 OR Payloadheader.LowerProtocol.port == 443

Фрагментированные кадры TCP снова собираются и вставляются в новый кадр в трассировке, который содержит специальный заголовок с именем Payloadheader. Выполняя поиск в обоих случаях, мы можем быть уверены, что получим все данные, которые ищем здесь.

Найдите фреймы согласования SSL

При устранении неполадок вам может потребоваться понять, какие соединения SSL пытаются согласовать. Хотя вы, возможно, не сможете расшифровать внутренний трафик, это поможет определить, какие серверы пытается использовать соединение.

// Filter by SSL Handshake
TLS.TlsRecLayer.TlsRecordLayer.SSLHandshake.HandShake.HandShakeType == 0x1

Найти повторные передачи TCP и повторные передачи SYN

Чтобы устранить проблемы с загрузкой и загрузкой файлов, вы можете посмотреть, не происходит ли много повторных передач, которые могут повлиять на производительность.

Property.TCPRetransmit == 1 || Property.TCPSynRetransmit == 1

Убедитесь, что у вас включены беседы, этот фильтр зависит от этой функции.

Чтение кадров и шестнадцатеричных данных

По умолчанию в макете окна есть две нижние панели, посвященные деталям кадра и шестнадцатеричным деталям. В деталях кадра каждый пакет разбит на составные части. На противоположной стороне находятся шестнадцатеричные данные, которые представляют собой необработанные байты и декодирование. Когда вы выбираете другой раздел в деталях кадра, тот же раздел в шестнадцатеричном коде также будет выделен.

Заключение

Выполнение сетевой трассировки очень просто с последней версией Windows. Хотя Microsoft решила прекратить выпуск своих собственных инструментов или отказаться от их поддержки, некоторые из них все еще процветают. Есть много других, таких как WireShark, но Microsoft Network Monitor по-прежнему позволяет довольно легко анализировать и понимать захваченную информацию о пакетах.