Открыть сервисСервис

WinDivert — драйвер перехвата трафика Windows

WinDivert (Windows Divert) — это свободный (open source) драйвер для операционных систем Windows, предназначенный для перехвата, модификации и подавления сетевых пакетов на уровне ядра. Драйвер работает как виртуальный сетевой интерфейс и позволяет пользовательским приложениям перехватывать входящий и исходящий трафик, а также отправлять собственные пакеты в сеть. WinDivert написан на языке C и распространяется под лицензией LGPL, исходный код доступен на GitHub.

Назначение и принцип работы

WinDivert предоставляет механизм перехвата сетевых пакетов, аналогичный утилитам WinPcap/Npcap, однако работает на более низком уровне — на уровне драйвера ядра Windows. После загрузки драйвера он подключается к стеку сетевых протоколов Windows и может перехватывать пакеты до их доставки приложению-получателю или после их отправки приложением-отправителем.

Основные возможности:

  • Перехват входящих и исходящих IP-пакетов (IPv4 и IPv6).
  • Модификация заголовков и полезной нагрузки пакетов.
  • Полное подавление (drop) пакетов.
  • Отправка поддельных (спуфленных) пакетов в сеть.
  • Фильтрация трафика на основе правил, заданных на языке, похожем на BPF.

Пользовательское приложение взаимодействует с драйвером через API, предоставляемый библиотекой WinDivert.dll. Программист описывает правила фильтрации (например, перехватывать только TCP-трафик на определённый порт), после чего драйвер передаёт соответствующие пакеты в буфер приложения.

Применение

WinDivert активно используется в следующих сценариях:

  • Сетевые утилиты и ускорители — перехват и перенаправление трафика, приоритизация пакетов.
  • Файрволы и средства мониторинга — анализ трафика на уровне ядра.
  • Инструменты тестирования — эмуляция потерь пакетов, задержек, изменение TTL.
  • Античиты и игровые утилиты — некоторые программы используют WinDivert для модификации игрового трафика.
  • VPN-клиенты и прокси — перехват соединений для их перенаправления через туннель.

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

WinDivert как vulnerable driver

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

Драйвер WinDivert имеет следующие свойства, делающие его потенциально опасным:

  1. Доступ к ядру ОС — драйвер работает в режиме ядра (Ring 0) и имеет полный доступ к системной памяти и сетевому стеку.
  2. Отсутствие проверки цифровой подписи Microsoft — драйвер не подписан сертификатом Microsoft, что ограничивает его загрузку на системах с включённой политикой подписи драйверов (Driver Signature Enforcement).
  3. Возможность обхода безопасности — вредоносное ПО может использовать WinDivert для перехвата сетевого трафика, включая пароли, передаваемые по незащищённым протоколам, или для подмены содержимого загружаемых файлов.

Из-за этих характеристик WinDivert включён в различные списки уязвимых драйверов, используемых для обхода систем безопасности (BYOVD — Bring Your Own Vulnerable Driver). Атакующий, получивший административные привилегии, может загрузить WinDivert для перехвата трафика или модификации сетевых соединений без необходимости во внедрении собственного вредоносного драйвера.

Ограничения и защита

По умолчанию Windows 10 и Windows 11 требуют, чтобы драйверы ядра были подписаны сертификатом, доверенным Microsoft. Это ограничивает загрузку WinDivert на системах с включённой политикой подписи драйверов. Однако на системах с отключённой политикой (например, в режиме тестовой подписи или с отключённой проверкой подписи) драйвер может быть загружен.

Для защиты от подобных драйверов Microsoft рекомендует:

  • Включать HVCI (Hypervisor-protected Code Integrity) — виртуализацию изоляции памяти ядра.
  • Использовать Windows Defender Application Control (WDAC) для контроля загружаемых драйверов.
  • Включать Blocklist уязвимых драйверов, обновляемую Microsoft.

Исходный код и лицензирование

WinDivert распространяется под лицензией LGPL (GNU Lesser General Public License). Исходный код доступен на GitHub. Проект поддерживается небольшой командой разработчиков. Драйвер совместим с Windows Vista и более новыми версиями, включая Windows 10 и Windows 11.

Для использования WinDivert в собственных проектах разработчики должны учитывать требования лицензии LGPL, а также необходимость подписи драйвера для его загрузки на системах с включённой проверкой подписи.

Источники:

  • Официальная документация WinDivert
  • GitHub-репозиторий WinDivert
  • Microsoft Docs: Driver signing requirements
  • Microsoft: Vulnerable and malicious driver reporting center
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru