Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
DutchOven — Сетевые браунауты Windows на уровне приложения в виде нативного кода на C и BOF | Kitploit
Инструменты/GitHubGitHub/loosehose/dutchoven
Пост-эксплуатацияСетевая безопасностьRed TeamingИнженерия ХаосаСостязательная Атака
GitHubloosehose/dutchoven

DutchOven

Сетевые браунауты Windows на уровне приложения в виде нативного кода на C и BOF

Репозиторий
12 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Логотип DutchOven — красный котелок

DutchOven

Сетевые браунауты Windows с привязкой к приложениям для детерминированной red-team-валидации.

Нативный C  •  Windows Filtering Platform  •  IPv4 + IPv6  •  Динамическая очистка

Быстрый старт • Профили • CLI • Как это работает • Сборка • BOF • Валидация

[!CAUTION] Только контролируемые среды. Запускайте DutchOven только на системах, которыми вы владеете или на проверку которых у вас есть явное разрешение. Он изменяет действующую сетевую политику Windows и требует повышенного токена администратора. Перед использованием ознакомьтесь с SECURITY.md.

Что такое DutchOven?

DutchOven — это намеренно небольшой red-team-примитив для Windows, который помещает явно указанные пути к исполняемым файлам за детерминированный сетевой шлюз. В течение каждого периода соответствующие приложения блокируются на ограниченный интервал, а в остальное время им разрешено проходить.

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

Проектное решениеПольза для оператора
Фильтры WFP с привязкой к приложениямОграничивают эксперимент путями, указанными оператором
Таймированный цикл блокировка/пропускДаёт измеримую деградацию вместо только состояний онлайн/офлайн
Атомарные изменения IPv4 и IPv6Удерживают оба семейства адресов на одном расписании
Динамическая сессия WFPУдаляет фильтры и созданный подслой при закрытии сессии движка
Реализация на нативном CБез Go, .NET, установки служб или зависимости от сторонних драйверов
Только явные целиБез перечисления продуктов, угадывания процессов или встроенной базы целей

DutchOven управляет авторизацией новых исходящих соединений. Существующее соединение, уже авторизованное WFP, задним числом не разрывается; при проверке непрерывного долгоживущего потока используйте свежее канареечное соединение или самостоятельно принудите цель переподключиться.

Быстрый старт

Откройте окно PowerShell с повышенными правами.

Проверьте итоговую цель и тайминг, не изменяя WFP:

root@kitploit:~
.\dutchoven.exe --app 'C:\Path\To\Target.exe' --dry-run

Запустите профиль brownout по умолчанию:

root@kitploit:~
.\dutchoven.exe --app 'C:\Path\To\Target.exe'

Это полная минимальная команда запуска. --app — единственный обязательный флаг. Профиль по умолчанию блокирует цель на 1,5 секунды в каждом 5-секундном периоде и завершается через одну минуту.

Для досрочной остановки нажмите Ctrl+C. DutchOven удаляет активные фильтры перед закрытием своей сессии WFP; динамическая сессия служит страховочным механизмом очистки, если процесс будет прерван.

Профили работы

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

Выберите профиль одним необязательным флагом:

root@kitploit:~
.\dutchoven.exe --app 'C:\Path\To\Target.exe' --profile heavy

Справочник CLI

root@kitploit:~
dutchoven --app <absolute.exe> [--app <absolute.exe> ...] [options]

Выведите версию сборки командой dutchoven version.

Расширенные флаги тайминга переопределяют выбранный профиль независимо от порядка аргументов:

root@kitploit:~
.\dutchoven.exe `
  --app 'C:\Path\To\Target.exe' `
  --period-ms 8000 `
  --block-ms 2000 `
  --duration-ms 120000 `
  --warmup-ms 5000

JSON Lines предназначены для тестовых стендов и сбора доказательств:

root@kitploit:~
.\dutchoven.exe --app 'C:\Path\To\Target.exe' --profile heavy --json

Парсер обеспечивает соблюдение ограничений тайминга:

  • Период: 100–60000 ms
  • Блокировка: от 1 ms до полного периода
  • Длительность: не менее одного периода, не более 900000 ms (15 минут)
  • Прогрев: не более 60000 ms
  • Цели: не более 16 явных локальных путей к исполняемым файлам

Как это работает

root@kitploit:~
explicit executable path
          │
          ▼
   WFP application ID
          │
          ├── ALE_AUTH_CONNECT_V4 ──┐
          └── ALE_AUTH_CONNECT_V6 ──┤── BLOCK / PASS schedule
                                    │
                                    └── dynamic WFP session cleanup
  1. DutchOven преобразует каждый переданный исполняемый файл в идентификатор приложения WFP.
  2. Он открывает неперсистентную динамическую сессию движка WFP и создаёт генерируемый подслой.
  3. В начале интервала блокировки фильтры IPv4 и IPv6 добавляются одной транзакцией.
  4. В начале интервала пропуска эти фильтры удаляются одной транзакцией.
  5. По завершении или при штатном прерывании DutchOven удаляет все активные фильтры и закрывает движок.

Цели Windows преобразуются в Unicode и канонизируются до длинной формы пути, прежде чем DutchOven запросит у WFP идентификатор приложения. Это не позволяет псевдониму пути 8.3, например ADMINI~1, незаметно создать фильтр, который не сможет совпасть с длинной формой идентификатора образа процесса.

Консоль выводит переходы состояний с абсолютными метками времени и метками относительно расписания:

root@kitploit:~
Targets: 1
  C:\Path\To\Target.exe
Schedule: block=1500ms pass=3500ms period=5000ms duration=60000ms warmup=0ms
Profile: brownout
Mode: brownout
BLOCK cycle=1 filters=2 wall_ms=1786973903811 elapsed_ms=0
PASS cycle=1 wall_ms=1786973908813 elapsed_ms=5000
...
CLEAN filters=0 session=closed cycles=12 wall_ms=1786973963812 elapsed_ms=60000

Сборка

Сборка Linux по умолчанию проверяет парсинг и поведение dry-run. Живой шлюз WFP требует нативной кросс-сборки для Windows.

root@kitploit:~
make check
make release

make check запускает переносимые тесты, кросс-собирает Windows-артефакты и проверяет контракт импорта BOF. make release создаёт релизные артефакты без отладочных символов и SHA256SUMS в каталоге artifacts/v<version>/.

Основные результаты сборки:

Windows-исполняемый файл линкуется только с системными библиотеками Windows: fwpuclnt, rpcrt4 и advapi32.

Beacon Object File

BOF упаковывает DutchOven в виде короткого синхронного импульса, который выполняется инлайн в x64 Beacon. Соберите COFF-объект, обновите версионируемый артефакт и проверьте его контракт импорта командой:

root@kitploit:~
make bof

Загрузите bof/dutchoven.cna в Script Manager Cobalt Strike, затем вызовите его из консоли Beacon:

root@kitploit:~
dutchoven "C:\Path\To\Target.exe"
dutchoven "C:\Path\To\Target.exe" heavy

Профиль по умолчанию — brownout. Профили сопоставляются с одним ограниченным интервалом блокировки:

ПрофильИмпульс
light0.5 s
brownout1.5 s
heavy

Каждый вызов открывает динамическую сессию WFP, атомарно устанавливает фильтры подключения IPv4 и IPv6, ожидает выбранный импульс, явно удаляет оба фильтра и закрывает сессию перед возвратом. Закрытие динамической сессии остаётся страховочным механизмом очистки, если явное удаление не сработает.

BOF использует динамическое разрешение функций для Kernel32, Rpcrt4 и Fwpuclnt; у него нет импортов C runtime. Он принимает один существующий абсолютный путь к исполняемому файлу, требует Beacon с повышенными правами и отказывается ограничивать процесс, в котором размещён BOF. Поскольку он выполняется инлайн, он намеренно не воспроизводит одноминутный многоцикловый планировщик автономного бинарника.

Процедура валидации

Полезный результат работы red-team требует независимых доказательств. Не считайте успешный вызов добавления фильтра доказательством того, что цель испытала предполагаемый браунаут.

  1. Выберите безвредное канареечное приложение, сетевое поведение которого наблюдаемо.
  2. Зафиксируйте базовый уровень без ограничений.
  3. Запустите DutchOven параллельно с несвязанным контрольным приложением.
  4. Измерьте как новые попытки подключения, так и уже установленное соединение.
  5. Независимо фиксируйте метки времени клиента, сервера и пакеты.
  6. Подтвердите, что контроль остался без изменений и каждый интервал пропуска восстановился.
  7. Подтвердите, что после штатного завершения и принудительного прерывания не осталось фильтров DutchOven.

Репозиторий включает Windows-стенд интеграционного тестирования, который автоматизирует эти проверки с помощью двух копий безвредного TCP-канареечного приложения. Для него требуются сессия PowerShell с повышенными правами и доступный нелокальный TCP-слушатель; loopback-трафик не является допустимой заменой маршрутизируемой валидации WFP.

root@kitploit:~
.\tests\windows_integration.ps1 `
  -DutchOvenPath '.\build-windows\dutchoven.exe' `
  -CanaryPath '.\build-windows\windows_canary.exe' `
  -ServerAddress '192.0.2.10' `
  -ServerPort 8443

Стенд подтверждает базовую связность, точечную блокировку, незатронутый контроль, штатное восстановление, восстановление после принудительного завершения через динамическую сессию и нулевой остаток в WFP.

Проверенное поведение

DutchOven 0.4.1 был проверен на Windows Server 2022 с Elastic Defend 9.4.2:

  • шесть активных фильтров покрывали IPv4 и IPv6 для трёх явно заданных путей к исполняемым файлам Elastic;
  • после принудительного создания новых соединений целевые подключения к бэкенду упали до нуля, тогда как несвязанный контрольный PowerShell по-прежнему достигал обоих портов бэкенда;
  • службы Elastic продолжали работать в течение всего ограниченного блэкаута;
  • DutchOven завершился успешно, и независимые дампы состояния WFP не обнаружили остаточных фильтров, сессий или подслоёв; и
  • все подключения агентов и работоспособность Fleet восстановились.

Elastic зафиксировал запуск процесса DutchOven, его завершение, идентичность SYSTEM и полную командную строку, а затем, после восстановления, доставил буферизованную телеметрию. В такой конфигурации он не создал оповещение Elastic Defend. Относитесь к этому как к одному измеренному результату, а не как к универсальному утверждению об обнаружении или обходе защит.

Эксплуатационные ограничения

DutchOven намеренно не:

  • перечисляет установленные продукты безопасности;
  • выводит пути к исполняемым файлам или определяет владельцев процессов;
  • останавливает, приостанавливает или изменяет службы;
  • устанавливает службу, драйвер, механизм персистентности или фильтр времени загрузки;
  • изменяет профили брандмауэра Windows, групповые политики или состояние реестра policy-QoS;
  • имитирует коммерческий агентный протокол; или
  • заявляет о телеметрических результатах на стороне вендора без независимых доказательств с бэкенда.

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

Структура репозитория

Скачать инструмент
ПрофильБлокировкаПропускПериодДлительностьНазначение
light0.5 s4.5 s5 s60 sНаблюдение за повторами с низким воздействием
brownout1.5 s3.5 s5 s60 sСбалансированный эксперимент по умолчанию
heavy3.5 s1.5 s5 s60 sТестирование очередей и нагрузки на восстановление
blackout5 s0 s5 s30 sКороткое ограниченное полное прерывание
ФлагОбязателенОписание
--app <absolute.exe>ДаПуть к целевому исполняемому файлу; повторяйте для многопроцессных приложений
--profile <name>Нетlight, brownout, heavy или blackout
--period-ms <ms>НетПереопределяет полный период блокировка/пропуск
--block-ms <ms>НетПереопределяет заблокированную часть каждого периода
--duration-ms <ms>НетПереопределяет ограниченное общее время работы
--warmup-ms <ms>НетРазрешает трафик до первого интервала блокировки
--dry-runНетПроверяет конфигурацию и выводит её без открытия WFP
--jsonНетВыводит конфигурацию и переходы состояний в формате JSON Lines
--helpНетВыводит справку по команде
АртефактНазначение
build/dutchovenPOSIX-бинарник парсера и dry-run
build/dutchoven_testsОсновные модульные тесты
build-windows/dutchoven.exeНативный Windows-шлюз WFP
build-windows/dutchoven_tests.exeНативный тестовый бинарник Windows
build-windows/windows_canary.exeКанареечное приложение для маршрутизируемых интеграционных тестов
bof/dutchoven.x64.oВерсионируемый x64 Beacon Object File
artifacts/v<version>/Релизные EXE и BOF без отладочных символов, а также контрольные суммы
3.5 s
blackout5 s
ПутьСодержимое
src/main.cМинимальная точка входа командной строки
src/gate.cШлюз WFP, профили, тайминг и очистка
tests/test_gate.cТесты парсера, профилей и граничных условий
tests/windows_canary.cБезвредный TCP-канареечник для маршрутизируемых интеграционных тестов Windows
tests/windows_integration.ps1Стенд WFP-интеграции для штатного и принудительного завершения
bof/Исходный код x64 BOF, обёртка Aggressor и проверщик контракта