Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 17(103)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3

Библиографическое описание:
Бгатов И.П. ЗАХВАТ СЕТЕВОГО ТРАФИКА В ОС WINDOWS // Студенческий: электрон. научн. журн. 2020. № 17(103). URL: https://sibac.info/journal/student/103/178250 (дата обращения: 28.03.2024).

ЗАХВАТ СЕТЕВОГО ТРАФИКА В ОС WINDOWS

Бгатов Игорь Петрович

магистрант, кафедра системы автоматизированного проектирования, Пензенский государственный университет,

РФ, Пенза

АННОТАЦИЯ

Захват сетевого трафика необходим для работы многих служб и специалистов. В данной статье в общих чертах описан принцип работы и программирование модуля для захвата сетевого трафика в ОС Windows.

 

Ключевые слова: Сетевой трафик, Захват, NDIS, Windows, программирование сетевых драйверов, драйвер сетевого фильтра, модуль для захвата сетевого трафика.

 

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

Существуют готовые инструменты для захвата сетевого трафика в ОС «Windows», все они представляют собой сетевой драйвер (на пример WinP cap), который встраивается в сетевой стек операционной системы и, получая доступ к проходящему по сети трафику, копирует его.

Начиная с версии «Windows XP», сетевой интерфейс операционной системы Windows называется NDIS 6.0 – Network Driver Interface Specification  версии 6.0. Все сетевые драйвера должны использовать данный интерфейс для организации работы сети. По своей сути, NDIS это тоже драйвер экспортирующий ряд функций для разновидностей сетевых драйверов.

NDIS подразумевает три разновидности сетевых драйверов:

  • Драйвер протокола;
  • Драйвер фильтра;
  • Драйвер мини порта.

Каждая разновидность драйвера имеет свои особенности и функции. Драйвер протокола обеспечивает функции какого-либо конкретного протокола, например IGMP (Internet Group Management), отправляет и принимает конкретные пакеты. Стоит отметить, что драйверов протокола может быть множество и располагаются они на разных уровнях иерархии согласно стандартной сетевой модели OSI [1].

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

Драйвер минипорта располагается в самом низу сетевого стека, занимается тем, что принимает и отправляет пакеты с сетевого адаптера, уведомляя об этих пакетах NDIS, а он затем передает его дальше по сетевому стеку, который закреплен на данном адаптере [1].

Для захвата сетевого трафика в ОС «Windows» необходимо спроектировать NDIS драйвер фильтра, т.к. он получает доступ ко всем пакетам как на приеме, так и не отправке.

Следует оговориться, что для разработки сетевого драйвера захватывающий трафик лучше всего будет использовать среду программирования Visual Studio, с установленными пакетами SDK и WDM. Для написания драйвера следует использовать язык С. Отладку драйвера можно проводить на виртуальной машине под управлением ОС Windows, с запущенным на основной ОС отладчиком WinDbg.

Для драйвера фильтра NDIS экспортирует ряд обязательных и не обязательных обработчиков, все они заполняются через структуру «NDIS_FILTER_DRIVER_CHARACTERISTICS» при инициализации драйвера в функции DriverEntry [2].

За прием и отправку пакетов отвечают следующие обработчики:

  • SendNetBufferListsHandler – Получает отправляемый пакет в сеть;
  • ReceiveNetBufferListsHandler – Получает принимаемый пакет из сети.

 Перехватить трафик позволят именно эти два обработчика. Следует отметить, что в конце каждого обработчика обязательно нужно передать пакет обратно в NDIS, для этого применяются специализированные функции предоставляемые NDIS.

Пакеты в сети передаются с помощью NET_BUFFER_LIST, так называемые буферизированные сетевые листы. Каждый лист представляет собой список NET_BUFFER, а в каждом NET_BUFFER хранится MDL (Memory Description List). Общая схема представлена на рисунке 1.

 

Рисунок 1. Структура хранения передаваемых сетевых пакетов в ОС Windows

 

На приеме и отправке пакета NDIS предоставляет полный NET_BUFFER_LIST, включающий в себя все пакеты, для которых была вызвана процедура приема / отправки. В коде обработчика будет достаточно циклом пройти по всем NET_BUFFER_LIST и через функцию NdisGetDataBuffer() получить полный доступ к принимаемому, отправляемому пакету [3].

Получив доступ к данным пакета требуется скопировать их во внутренний, буфер драйвера (например LookasideList). Затем можно записать их на диск в созданный драйвером файл. Существуют готовые форматы для создания дампа пакетов, один из них и самый простой это «Pcap» - Packet Capture. Организованный по этому формату файл можно открыть с помощью программы для анализа сетевого трафика «WireShark» и тем самым полностью посмотреть проходящий по сети трафик.

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

 

Список литературы:

  1. NDIS Drivers and Services [Электронный ресурс] / Microsoft Techical Documentation. – Режим доступа: https://docs.microsoft.com/en-us/windows-hardware/drivers/network/ndis-core-functionality2, свободный  (Дата обращения: 23.03.2020)
  2. Уолтер Они. Использование Microsoft Windows Driver Model. — Издательство СПб.: Питер / 2007. - C. 71-75
  3. Network Data Structures [Электронный ресурс] / Microsoft Techical Documentation. – Режим доступа: https://docs.microsoft.com/en-us/windows-hardware/drivers/network/network-data-structures, свободный (Дата обращения: 28.04.2020)

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.