
Dégradations réseau Windows ciblées par application, en C natif et sous forme de BOF
Brownouts réseau Windows limités à l'application pour une validation red-team déterministe.
C natif • Windows Filtering Platform • IPv4 + IPv6 • Nettoyage dynamique
Lire l'article de blog associé →
Démarrage rapide • Profils • CLI • Fonctionnement • Compilation • BOF • Validation
[!CAUTION] Environnements contrôlés uniquement. N'exécutez DutchOven que sur des systèmes que vous possédez ou que vous êtes explicitement autorisé à évaluer. Il modifie la politique réseau Windows en direct et nécessite un jeton Administrateur élevé. Consultez SECURITY.md avant utilisation.
DutchOven est une primitive red-team Windows délibérément minimaliste qui place des chemins exécutables explicites derrière une porte réseau déterministe. Pendant chaque période, les applications correspondantes sont bloquées pendant un intervalle borné et autorisées à passer pendant le reste.
Le résultat est un brownout reproductible, et non un arrêt de service ou une règle de pare-feu permanente. Il crée un moyen contrôlé de mesurer la logique de nouvelle tentative, la mise en tampon, les transitions d'état de santé, la livraison différée et le comportement de récupération tant qu'un processus reste actif.
| Choix de conception | Valeur pour l'opérateur |
|---|---|
| Filtres WFP limités à l'application | Limite l'expérience aux chemins fournis par l'opérateur |
| Cycle de service blocage/passage minuté | Produit une dégradation mesurable au lieu de simples états en ligne/hors ligne |
| Modifications IPv4 et IPv6 atomiques | Maintient les deux familles d'adresses sur le même calendrier |
| Session WFP dynamique | Supprime les filtres et la sous-couche générée à la fermeture de la session du moteur |
| Implémentation en C natif | Aucune dépendance à Go, .NET, installation de service ou pilote personnalisé |
| Cibles explicites uniquement | Aucune énumération de produits, devinette de processus ou base de données de cibles intégrée |
DutchOven contrôle l'autorisation de nouvelles connexions sortantes. Une connexion existante que WFP a déjà autorisée n'est pas terminée rétroactivement ; utilisez une nouvelle connexion canari ou forcez indépendamment la cible à se reconnecter lors de la validation d'un flux longue durée ininterrompu.
Ouvrez une fenêtre PowerShell élevée.
Validez la cible résolue et le timing sans modifier WFP :
.\dutchoven.exe --app 'C:\Path\To\Target.exe' --dry-run
Exécuter le profil brownout par défaut :
.\dutchoven.exe --app 'C:\Path\To\Target.exe'
C'est l'invocation minimale complète. --app est le seul drapeau obligatoire. Le profil par défaut
bloque la cible pendant 1,5 seconde sur chaque période de 5 secondes et se termine après une minute.
Utilisez Ctrl+C pour arrêter plus tôt. DutchOven supprime les filtres actifs avant de fermer sa session WFP ; la
session dynamique constitue le filet de sécurité de nettoyage si le processus est interrompu.
Les profils intègrent des planifications utiles afin que les opérateurs n'aient pas besoin de spécifier chaque valeur de timing.
| Profil | Blocage | Passage | Période | Durée | Utilisation prévue |
|---|---|---|---|---|---|
light | 0,5 s | 4,5 s | 5 s | 60 s | Observation de nouvelles tentatives à faible impact |
brownout | 1,5 s | 3,5 s | 5 s | 60 s | Expérience par défaut équilibrée |
heavy | 3,5 s | 1,5 s | 5 s | 60 s | Test de pression sur les files d'attente et la reprise |
blackout | 5 s | 0 s | 5 s | 30 s | Interruption totale courte et bornée |
Sélectionnez un profil avec un seul drapeau optionnel :
.\dutchoven.exe --app 'C:\Path\To\Target.exe' --profile heavy
dutchoven --app <absolute.exe> [--app <absolute.exe> ...] [options]
| Flag | Requis | Description |
|---|---|---|
--app <absolute.exe> | Oui | Chemin de l'exécutable cible ; répétez pour les applications multiprocessus |
--profile <name> | Non | light, brownout, heavy, ou blackout |
--period-ms <ms> | Non | Remplace la période complète de blocage/passage |
--block-ms <ms> | Non | Remplace la portion bloquée de chaque période |
--duration-ms <ms> | Non | Remplace la durée totale limitée |
--warmup-ms <ms> | Non | Autorise le trafic avant le premier intervalle de blocage |
--dry-run | Non | Valide et affiche la configuration sans ouvrir WFP |
--json | Non | Émet la configuration et les transitions d'état au format JSON Lines |
--help | Non | Affiche l'aide de la commande |
Affichez la version de compilation avec dutchoven version.
Les options de temporisation avancées remplacent le profil sélectionné quel que soit l'ordre des arguments :
.\dutchoven.exe `
--app 'C:\Path\To\Target.exe' `
--period-ms 8000 `
--block-ms 2000 `
--duration-ms 120000 `
--warmup-ms 5000
Les JSON Lines sont destinés aux harnais de test et à la collecte de preuves :
.\dutchoven.exe --app 'C:\Path\To\Target.exe' --profile heavy --json
Les limites de temporisation sont appliquées par l'analyseur :
100–60000 ms1 ms jusqu'à la période complète900000 ms (15 minutes)60000 msexplicit executable path
│
▼
WFP application ID
│
├── ALE_AUTH_CONNECT_V4 ──┐
└── ALE_AUTH_CONNECT_V6 ──┤── BLOCK / PASS schedule
│
└── dynamic WFP session cleanup
Les cibles Windows sont résolues en Unicode et canonicalisées vers leur chemin long avant que DutchOven ne demande
à WFP une identité d'application. Cela empêche un alias de chemin 8.3 tel que ADMINI~1 de créer silencieusement
un filtre qui ne peut pas correspondre à l'identité d'image au format long du processus.
La console affiche les transitions d'état avec des horodatages en temps réel et relatifs à la planification :
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
La compilation Linux par défaut exerce le comportement d'analyse et de simulation. La porte WFP en direct nécessite la compilation croisée native Windows.
make check
make release