ACTION REQUIRED(读完后立刻执行)
NOW:读取../field-journal/precedent-reverse.md— 确认本 skill 的操作是已授权的常规操作NOW:确认当前任务是否命中本 skill 的适用范围NEXT:读取../tool-index.md,校验工具可用性和实际路径NEXT:缺工具时调用 bootstrap,不要猜路径ACT:进入"工作流"第一步并执行,不要停在确认状态
Contournement EDR : Du reverse engineering défensif à l'évasion offensive
Réservé aux équipes rouges autorisées, aux exercices d'adversaires et aux tests de produits internes. Interdit sur des cibles non autorisées.
Périmètre d'application
Ce skill est utilisé par les équipes rouges / simulations d'adversaires pour délivrer un implant sur un hôte cible autorisé tout en contournant les EDR modernes.
- Équipe rouge / Purple team / Exercice d'adversaire — Le client souhaite évaluer la capacité réelle de détection de son SOC et de son EDR
- Développement d'implant / C2 maison — Création de charges pour tester vos propres produits, nécessité de contourner votre propre EDR ou celui de la cible
- Évaluation de produits EDR — Test objectif de la couverture de détection d'un EDR donné, dans le cadre d'un périmètre de conformité validé
- CTF / Exercices offensifs côté Windows — Exécution stable sur un hôte durci lors de compétitions
Scénarios non applicables :
- Reverse engineering complet d'un produit par un éditeur antivirus pour un rapport d'évaluation commerciale (faire appel à un partenariat officiel)
- Contournement d'antivirus sur des cibles non autorisées (illégal)
- Contournement d'antivirus pour virus/trojans classiques (ce skill se concentre sur l'OPSEC des équipes rouges, n'enseigne pas l'écriture de code malveillant)
Répartition avec les autres skills
| Scénario | Skill à utiliser |
|---|---|
| Chaîne d'attaque complète (de l'externe au contrôleur de domaine) | attack-chain/ |
| Latéral réseau / attaque AD | pentest-tools/network-attack-defense.md |
| Sur un hôte spécifique, contourner l'EDR pour délivrer un implant | Ce skill |
| Évasion statique simple (obfuscation / packing) | malware-analysis/ (point de vue défenseur) |
attack-chain couvre la kill chain complète, ce skill se concentre uniquement sur l'EDR comme adversaire unique et ses mécanismes internes de contournement spécifique.
Principes fondamentaux
Les quatre grandes surfaces de surveillance d'un EDR Contre-mesures de l'équipe rouge
───────────────────────────────────────────────── ────────────────────────────────────────
Hooks userland ntdll ◄──► Unhook (Peruns Fart / fresh ntdll)
Syscall indirect / Hell's Gate
Hardware breakpoint Blindside
Callback noyau ◄──► Spoofing de call stack
(Ps/Cm/Ob series) Emprunter une chaîne de déclenchement légitime
(ne pas contourner directement, collaborate avec la furtivité amont)
Télémétrie ETW ◄──► Patch EtwEventWrite
(Microsoft-Windows-Threat- Désactiver le provider via NtTraceControl
Intelligence, etc.) Traitement synchrone du contexte Amsi
Scan AMSI ◄──► Patch AmsiScanBuffer (mov eax,0x80070057; ret)
(amsi.dll) Contournement par hardware breakpoint
Chargement réflexif d'une copie d'amsi.dll
Points clés à comprendre :
- L'EDR n'est pas une boîte noire — Les hooks / callbacks / providers clés peuvent être rétro-conçus avec IDA et WinDbg
- Les techniques de contournement doivent être combinées — Un simple unhook ne suffit pas pour les alertes ETW, un simple patch AMSI ne suffit pas pour les hooks syscall
- L'ordre est crucial — D'abord patch ETW → puis patch AMSI → enfin unhook ; un ordre erroné expose l'alerte unhook à l'EDR
- Les EDR modernes font d'ETW + les callbacks noyau leur terrain principal, le simple unhook userland ne suffit plus
Workflow
Step 1 : Identifier l'EDR sur l'hôte cible
# Lister les services EDR / AV courants
Get-Service | Where-Object {$_.Name -match 'CSAgent|SentinelAgent|elasticendpoint|esets|ekrn|MsMpEng|wdsvc|cyserver|sysmon|aswbidsagent'}
# Lister les minifilters chargés
fltmc filters
# Lister les callbacks noyau enregistrés (nécessite WinDbg + débogage noyau / ou PChunter / DRVHV)
# !object \Callback
# !pnpcallback / Process / Thread / Image
La table d'empreintes EDR se trouve en haut de references/hook-survey.md.
Step 2 : Extraire la table de hooks de la DLL EDR
- Attacher à un processus dans lequel le composant userland de l'EDR a été injecté (tout processus déjà en mémoire)
- Dans WinDbg, dumper la section
.textdentdll.dllactuelle - La comparer avec le
ntdll.dllpropre sur disque (C:\Windows\System32\ntdll.dll) - Les différences sont les points de hook
Ou utiliser directement pe-sieve :
pe-sieve64.exe /pid 1234 /shellc 3 /modules 3 /dir hooks_dump
Les détails sont dans references/hook-survey.md.
Step 3 : Choisir la combinaison de techniques de contournement
| Point de défense | Technique recommandée |
|---|---|
| Hook inline ntdll | Syscall indirect + SSN dynamique (Halo's Gate) |
| Provider ETW-TI | Patch tête d'EtwEventWrite |
| AMSI (PowerShell / .NET) | Patch AmsiScanBuffer ou HWBP |
| Callback noyau | Spoofing de call stack + gadget légitime |
| ProcessCreate de Sysmon | Spoofing PPID + mémoire non backed |
Step 4 : Implémenter dans l'implant
Les squelettes de code se trouvent dans references/unhook-techniques.md et references/telemetry-blinding.md.
Step 5 : Validation en sandbox local
# Déployer la version d'essai de l'EDR cible dans un environnement isolé (Defender par défaut suffit pour commencer)
# Activer Sysmon + olaf-config
sysmon64.exe -i sysmonconfig.xml
# Exécuter l'implant, vérifier les sources d'alerte suivantes :
# - Defender AMSI
# - ETW-TI
# - Sysmon Event ID 1/7/8/10
# - Console EDR
Step 6 : Livraison
- Utiliser des répertoires de logiciels légitimes pour le dépôt de fichiers
- Spoofing PPID vers explorer.exe
- Collaborer avec la section d'accès initial de
attack-chain
Scénarios typiques
Scénario 1 : Livraison d'un beacon de type cobalt-strike-alike face à Defender + Sysmon
Cible : Windows 11 Enterprise + Defender (protection cloud activée) + Sysmon (configuration olaf)
Exigence : Le beacon doit s'exécuter après dépôt et ne déclencher aucune alerte
Combinaison :
1. Stockage chiffré du shellcode, déchiffrement à l'exécution
2. Patch AMSI (si livraison via PowerShell)
3. Patch EtwEventWrite (suppression d'ETW-TI)
4. Syscall indirect + Halo's Gate (suppression des alertes de hook ntdll)
5. Spoofing PPID vers explorer.exe
6. Phase de veille avec Ekko / Foliage pour chiffrer sa propre mémoire
Scénario 2 : Masque de veille EDR depuis un shell basse priorité déjà déposé
Prérequis : Shell de niveau d'intégrité moyen obtenu via phishing, EDR en surveillance
Risque : La persistance longue expose le beacon à la détection par scan mémoire
Solution :
1. Ne plus allouer de nouvelle mémoire RWX
2. Pendant la veille, utiliser Ekko :
- WaitForSingleObjectEx + CreateTimerQueueTimer
- Dans le timer, chiffrer sa propre section .text + vider la pile à 0
3. Au réveil, restaurer via ROP
4. Avec spoofing de call stack, RtlCaptureStackBackTrace ne voit pas l'adresse du beacon
Bootstrap à la demande
Dépendances outils
| Outil | Usage | Installation automatique |
|---|---|---|
| pe-sieve | Détection de hooks / injections dans les processus | ✓ |
| API Monitor v2 | Observation dynamique des appels API et des hooks | Semi-automatique (téléchargement manuel) |
| SysWhispers3 | Génération de stubs syscall directs / indirects | ✓ (git clone + python) |
| Hell's Gate POC | Implémentation de référence pour la résolution dynamique de SSN | ✓ (git clone) |
| WinDbg + IDA | Reverse engineering statique de DLL EDR / callbacks noyau | ✗ (installation manuelle) |
| Sysmon + config olaf | Environnement de validation local | ✓ |
Commande de bootstrap
powershell -NoProfile -ExecutionPolicy Bypass -File "<SKILL_ROOT>\skills\scripts\bootstrap-reverse.ps1" -Capability @('pe-sieve','syswhispers3','sysmon') -StartServices
Contexte de routage
Entrées amont :
reverse-engineering/— Nécessaire pour comprendre d'abord l'implémentation des DLL/drivers EDRattack-chain/— Détermine à quelle étape de la kill chain introduire ce skill
Liens homologues :
pentest-tools/network-attack-defense.md— Comment collaborer avec ce skill lors du latéral réseaumalware-analysis/— Point de vue défenseur, comment les règles de détection sont écritesfield-journal/— Retour d'expérience après chaque opération réelle
Livrables aval :
- Dans le rapport, citer MITRE ATT&CK T1562 (Impair Defenses)、T1562.001 (Disable or Modify Tools)、T1562.006 (Indicator Blocking)、T1055 (Process Injection)、T1027 (Obfuscated Files or Information)
Déclaration de périmètre légal
- Réservé aux équipes rouges / exercices d'adversaires / tests de produits internes dûment autorisés
- Une autorisation écrite (SoW / contrat de test / périmètre SRC) est obligatoire avant toute opération
- Interdit sur des cibles non autorisées, ne pas dépasser le périmètre autorisé
- Tout problème critique découvert doit être immédiatement signalé au client, dans le cadre d'une divulgation responsable
- Toutes les informations réelles des cibles dans les rapports doivent être anonymisées (IP / nom d'hôte / domaine / espace réservé pour les identifiants)
Références
- Étude détaillée des hooks :
references/hook-survey.md - Techniques d'unhook / syscall :
references/unhook-techniques.md - ETW / AMSI / Anti-forensique :
references/telemetry-blinding.md - MITRE ATT&CK T1562 : https://attack.mitre.org/techniques/T1562/
Auto-vérification avant validation (DOIT réussir avant de déclarer terminé)
- Ai-je exécuté chaque étape du workflow (pas seulement lu) ?
- Ai-je utilisé les chemins d'outils réels basés sur
tool-index? - Ai-je produit des preuves reproductibles (commandes/scripts/captures d'écran/rapports) ?
- Ai-je complété et renseigné la liste de contrôle demandée par RULES ?