
POC tool for ResetNightmare (CVE-2026-27912)
ResetNightmare(CVE-2026-27912) 취약점에 대한 개념 증명(POC) 도구입니다.
ResetNightmare는 Kerberos 암호 변경 프로토콜의 검증 결함으로, 현재 암호를 알지 못해도 모든 대상 사용자/컴퓨터 계정의 암호를 재설정할 수 있게 해줍니다.
이 공격에는 패치되지 않은 도메인 컨트롤러와, 자신이 제어하는 계정에 userPrincipalName(UPN)을 쓸 수 있는 권한이 필요합니다.
또는, 공격자가 모든 OU에 새 사용자/컴퓨터를 생성할 수 있는 권한을 가진 경우에도 이 취약점을 악용할 수 있습니다. 사용자/컴퓨터를 생성하면 해당 개체에 대한 GenericWrite 권한을 얻을 수 있기 때문입니다.
이 스크립트는 전체 공격 흐름을 자동화하며 작업 후 스스로 정리합니다. 공격 흐름은 다음과 같습니다:
-CreateNewPath를 사용하여 생성할 수 있습니다.sAMAccountName(예: "Administrator")으로 설정합니다.NT-ENTERPRISE인 "Administrator" 사용자 이름으로 TGT를 요청할 수 있습니다. 이 TGT는 kadmin/changepw SPN으로 요청됩니다.사용자 계정과 컴퓨터 계정 모두 공격 대상이 될 수 있습니다.

-RubeusPath로 경로를 지정하십시오.-CreateNewPath로 지정).-DC로 지정할 수 있습니다.스크립트를 dot-source하여 함수를 로드한 후 호출합니다:
. .\ResetNightmare.ps1
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
-TargetAccount에 (끝에 $가 붙는) sAMAccountName을 사용합니다:
Invoke-ResetNightmare `
-TargetAccount 'server$' `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
OU/Container에 개체를 생성할 권한이 있다면 -CreateNewPath를 사용하여 OU/Container의 DN을 지정할 수 있습니다. 이 값이 지정되면 -UPNUser와 -UPNUserPassword는 도메인의 기존 계정이 아닌, 생성할 계정의 자격 증명으로 처리됩니다:
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "attackerAcct" `
-UPNUserPassword "AttackerP@ss!" `
-CreateNewPath "OU=Temp,DC=demo,DC=lab"
사용자 계정 대신 컴퓨터 계정을 생성/사용하려면 -Computer를 추가하십시오.
면책 고지
이 콘텐츠는 교육 및 정보 제공 목적으로만 제공됩니다. 소유하거나 테스트 권한이 있는 시스템에 존재할 수 있는 보안 취약점에 대한 인식을 높이고 책임 있는 수정을 장려하기 위한 것입니다. 악의적인 목적, 악용 또는 불법적인 접근을 위한 무단 사용은 엄격히 금지됩니다. 저자는 어떠한 불법 활동도 지지하거나 용납하지 않으며, 자료의 오용으로 인해 발생하는 모든 책임을 부인합니다. 또한 저자는 콘텐츠의 정확성이나 완전성을 보장하지 않으며, 사용으로 인해 발생하는 손해에 대해 어떠한 책임도 지지 않습니다.
| 매개 변수 | 필수 | 설명 |
|---|
-TargetAccount | 예 | 암호를 재설정할 대상 계정의 sAMAccountName. 컴퓨터 계정을 대상으로 하는 경우 끝에 $를 포함해야 합니다. |
-TargetNewPassword | 예 | 대상 계정에 설정할 새 암호. |
-UPNUser | 예 | UPN을 쓸 수 있는 계정. -CreateNewPath가 지정된 경우 생성할 계정. |
-UPNUserPassword | 예 | -UPNUser의 평문 암호. |
-Computer | 아니요 | -UPNUser를 컴퓨터 계정으로 취급합니다(-CreateNewPath와 함께 사용하면 컴퓨터 계정을 생성합니다). |
-RubeusPath | 아니요 | Rubeus 실행 파일의 경로. 기본값은 ".\Rubeus.exe"입니다. |
-SupportedEncryption | 아니요 | TGT에 사용할 지원 암호화 유형. 기본값은 "AES256"이며 대부분의 경우 이 값으로 충분합니다. 변경이 필요한 경우 지원되는 값은 다음과 같습니다: DES|RC4|AES128|AES256 |
-CreateNewPath | 아니요 | 개체를 생성할 권한이 있는 OU/Container의 DistinguishedName. 지정하면 -UPNUser 및 -UPNUserPassword 매개 변수가 기존 사용자 대신 생성할 사용자의 자격 증명이 됩니다. |
-DC | 아니요 | 작업 대상 DC의 이름. 지정하지 않으면 자동으로 확인됩니다. |