Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
DutchOven — 네이티브 C 및 BOF 형식으로 구현된 애플리케이션 범위의 Windows 네트워크 브라운아웃 | Kitploit
도구/GitHubGitHub/loosehose/dutchoven
Post-ExploitationNetwork SecurityRed TeamingChaos EngineeringAdversarial Attack
GitHubloosehose/dutchoven

DutchOven

네이티브 C 및 BOF 형식으로 구현된 애플리케이션 범위의 Windows 네트워크 브라운아웃

저장소 보기
13일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

DutchOven 빨간 조리용 냄비 로고

DutchOven

결정적 레드팀 검증을 위한 애플리케이션 범위 Windows 네트워크 브라운아웃.

네이티브 C  •  Windows Filtering Platform  •  IPv4 + IPv6  •  동적 정리

빠른 시작 • 프로필 • CLI • 작동 방식 • 빌드 • BOF • 검증

[!CAUTION] 통제된 환경에서만 사용하세요. DutchOven은 소유하거나 명시적으로 평가 권한을 부여받은 시스템에서만 실행하세요. 이 도구는 활성 Windows 네트워크 정책을 변경하며 상승된 관리자 토큰이 필요합니다. 사용 전에 SECURITY.md를 검토하세요.

DutchOven이란 무엇인가?

DutchOven은 의도적으로 작게 설계된 Windows 레드팀 프리미티브로, 명시적 실행 파일 경로를 결정적 네트워크 게이트 뒤에 배치합니다. 각 주기 동안 일치하는 애플리케이션은 제한된 구간 동안 차단되고 나머지 시간에는 통과가 허용됩니다.

결과는 반복 가능한 브라운아웃이며, 서비스 중지나 영구 방화벽 규칙이 아닙니다. 프로세스가 살아 있는 동안 재시도 로직, 버퍼링, 헬스 상태 전환, 지연 전달, 복구 동작을 측정할 수 있는 통제된 방법을 제공합니다.

설계 선택운영자 가치
애플리케이션 범위 WFP 필터실험을 운영자가 공급한 경로로 제한
시간 제한 블록/패스 듀티 사이클온라인/오프라인 상태만이 아닌 측정 가능한 성능 저하 생성
원자적 IPv4 및 IPv6 변경두 주소 패밀리를 동일한 일정으로 유지
동적 WFP 세션엔진 세션이 닫힐 때 필터와 생성된 서브레이어 제거
네이티브 C 구현Go, .NET, 서비스 설치 또는 사용자 지정 드라이버 의존성 없음
명시적 대상만제품 열거, 프로세스 추측 또는 내장 대상 데이터베이스 없음

DutchOven은 새로운 아웃바운드 연결 권한 부여를 게이팅합니다. WFP가 이미 승인한 기존 연결은 소급하여 종료되지 않습니다. 중단 없는 장기 연결을 검증할 때는 새 카나리 연결을 사용하거나 대상이 독립적으로 재연결하도록 강제하세요.

빠른 시작

상승된 PowerShell 창을 엽니다.

WFP를 변경하지 않고 확인된 대상과 타이밍을 검증합니다:

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

기본 브라운아웃 프로필을 실행합니다:

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

이것이 최소 실행의 전부입니다. --app은 유일한 필수 플래그입니다. 기본 프로필은 5초마다 1.5초 동안 대상을 차단하고 1분 후 종료합니다.

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 애플리케이션 ID로 해석합니다.
  2. 비영구적이고 동적인 WFP 엔진 세션을 열고 생성된 서브레이어를 만듭니다.
  3. 블록 구간이 시작되면 IPv4 및 IPv6 필터가 하나의 트랜잭션으로 추가됩니다.
  4. 패스 구간이 시작되면 해당 필터가 하나의 트랜잭션으로 제거됩니다.
  5. 완료 또는 정상 중단 시 DutchOven은 활성 필터를 제거하고 엔진을 닫습니다.

Windows 대상은 Unicode로 해석되며, DutchOven이 WFP에 애플리케이션 ID를 요청하기 전에 긴 경로로 정규화됩니다. 이는 ADMINI~1과 같은 8.3 경로 별칭이 프로세스의 긴 형식 이미지 ID와 일치할 수 없는 필터를 조용히 생성하는 것을 방지합니다.

콘솔은 벽시계(wall-clock) 및 일정 기준 타임스탬프와 함께 상태 전환을 출력합니다:

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는 artifacts/v<version>/ 아래에 스트리핑된 릴리스 아티팩트와 SHA256SUMS를 생성합니다.

주요 산출물:

Windows 실행 파일은 Windows 시스템 라이브러리인 fwpuclnt, rpcrt4, advapi32에만 링크됩니다.

Beacon Object File

BOF는 DutchOven을 x64 Beacon에서 인라인으로 실행되는 짧은 동기식 펄스로 패키징합니다. COFF 오브젝트를 빌드하고 버전화된 아티팩트를 갱신한 다음 임포트 계약을 검증합니다:

root@kitploit:~
make bof

Cobalt Strike의 Script Manager에서 bof/dutchoven.cna를 로드한 다음 Beacon 콘솔에서 호출합니다:

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

기본 프로필은 brownout입니다. 프로필은 단일 제한 블록 구간에 매핑됩니다:

프로필펄스
light0.5 s
brownout1.5 s
heavy3.5 s

각 호출은 동적 WFP 세션을 열고 IPv4 및 IPv6 연결 필터를 원자적으로 설치한 다음 선택된 펄스 동안 대기하고, 두 필터를 명시적으로 제거한 후 세션을 닫고 반환합니다. 명시적 제거가 실패하면 동적 세션을 닫는 것이 정리 백스톱으로 유지됩니다.

BOF는 Kernel32, Rpcrt4, Fwpuclnt에 대해 Dynamic Function Resolution을 사용하며 C 런타임 임포트가 없습니다. 기존 절대 실행 파일 경로 하나를 허용하고 상승된 Beacon을 요구하며 BOF를 호스팅하는 프로세스는 게이팅하지 않습니다. 인라인으로 실행되므로 독립 실행형 바이너리의 1분 다중 사이클 스케줄러를 의도적으로 재현하지 않습니다.

검증 워크플로우

유용한 레드팀 결과에는 독립적인 증거가 필요합니다. 필터 추가 호출이 성공했다고 해서 대상이 의도된 브라운아웃을 겪었다는 증거로 간주하지 마세요.

  1. 네트워크 동작을 관찰할 수 있는 무해한 카나리 애플리케이션을 선택합니다.
  2. 게이팅되지 않은 기준(baseline)을 기록합니다.
  3. 무관한 제어 애플리케이션과 함께 DutchOven을 병렬로 실행합니다.
  4. 새 연결 시도와 이미 수립된 연결을 모두 측정합니다.
  5. 클라이언트 타임스탬프, 서버 타임스탬프, 패킷을 독립적으로 캡처합니다.
  6. 제어 애플리케이션이 영향을 받지 않았고 모든 패스 구간이 복구되었는지 확인합니다.
  7. 정상 종료 및 강제 종료 후에도 DutchOven 필터가 남아 있지 않은지 확인합니다.

리포지토리에는 무해한 TCP 카나리 두 개로 이러한 검증을 자동화하는 Windows 통합 하네스가 포함되어 있습니다. 상승된 PowerShell 세션과 연결 가능한 비로컬 TCP 리스너가 필요합니다. 루프백 트래픽은 라우팅 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은 Elastic Defend 9.4.2와 함께 Windows Server 2022에서 검증되었습니다:

  • 세 개의 명시적 Elastic 실행 파일 경로에 대해 IPv4 및 IPv6를 포괄하는 6개의 활성 필터;
  • 새 연결을 강제한 후 대상 백엔드 연결은 0으로 떨어진 반면, 무관한 PowerShell 제어는 두 백엔드 포트에 모두 도달;
  • Elastic 서비스는 제한된 블랙아웃 기간 내내 계속 실행됨;
  • DutchOven이 정상 종료되었고, 독립적인 WFP 상태 덤프에서 잔여 필터, 세션, 서브레이어가 발견되지 않음; 그리고
  • 모든 에이전트 연결과 Fleet 상태가 복구됨.

Elastic은 DutchOven의 프로세스 시작, 프로세스 종료, SYSTEM ID, 전체 명령줄을 기록한 후 복구 후 버퍼링된 텔레메트리를 전달했습니다. 해당 구성에서는 Elastic Defend 알림이 생성되지 않았습니다. 이를 보편적인 탐지 또는 회피 주장이 아닌 단일 측정 결과로 간주하세요.

운영 경계

DutchOven은 의도적으로 다음을 수행하지 않습니다:

  • 설치된 보안 제품을 열거하지 않으며;
  • 실행 파일 경로나 프로세스 소유권을 추론하지 않으며;
  • 서비스를 중지, 일시 중단 또는 수정하지 않으며;
  • 서비스, 드라이버, 지속성 메커니즘 또는 부팅 시 필터를 설치하지 않으며;
  • Windows 방화벽 프로필, 그룹 정책 또는 policy-QoS 레지스트리 상태를 변경하지 않으며;
  • 상용 에이전트 프로토콜을 가장하지 않으며; 또는
  • 독립적인 백엔드 증거 없이 공급업체 측 텔레메트리 결과를 주장하지 않습니다.

WFP 개체를 추가하려면 Base Filtering Engine에 대한 쓰기 액세스가 필요하므로 관리자 권한이 필요합니다. 애플리케이션 ID는 실제로 네트워크 흐름을 소유한 실행 파일과 일치해야 합니다. 다중 프로세스 에이전트, 프록시, 커널 네트워킹, 장기 연결은 관찰된 결과를 변경할 수 있으므로 가정하지 말고 측정해야 합니다.

리포지토리 구조

도구 다운로드
프로필블록패스주기지속 시간의도된 용도
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 및 체크섬
blackout5 s
경로내용
src/main.c최소 명령줄 진입점
src/gate.cWFP 게이트, 프로필, 타이밍 및 정리
tests/test_gate.c파서, 프로필 및 경계 테스트
tests/windows_canary.c라우팅 Windows 통합 테스트용 무해한 TCP 카나리
tests/windows_integration.ps1정상 및 강제 정리 WFP 통합 하네스
bof/x64 BOF 소스, Aggressor 래퍼 및 계약 검사기