
POC tool for ResetNightmare (CVE-2026-27912)
ResetNightmare (CVE-2026-27912) の Proof-of-concept (POC) ツールです。
ResetNightmare は、Kerberos Change Password プロトコルにおける検証の欠陥であり、現在のパスワードを知らなくても、任意のターゲットユーザー/コンピュータアカウントのパスワードをリセットできるようにするものです。
この攻撃には、パッチ未適用のドメインコントローラと、自分が制御する任意のアカウントに userPrincipalName (UPN) を書き込む権限が必要です。
あるいは、任意の OU に新しいユーザー/コンピュータを作成できる攻撃者も、この脆弱性を悪用できます。ユーザー/コンピュータを作成すると、そのオブジェクトに対する GenericWrite 権限を得られるためです。
このスクリプトは攻撃の一連の流れ全体を自動化し、実行後は後片付けも行います。 攻撃の流れは次のとおりです。
-CreateNewPath を使用して作成できます。sAMAccountName(例: "Administrator")に設定します。NT-ENTERPRISE で "Administrator" ユーザー名の TGT を要求できます。この TGT は kadmin/changepw SPN に対して要求されます。ユーザーアカウントとコンピュータアカウントの両方をターゲットにできます。

-RubeusPath で場所を指定してください。-CreateNewPath で指定)。-DC で指定できます。スクリプトをドットソースして関数を読み込んでから、次のように呼び出します:
. .\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/コンテナ内にオブジェクトを作成する権限がある場合、-CreateNewPath を使用して OU/コンテナの DN を指定できます。指定した場合、-UPNUser と -UPNUserPassword は、ドメイン内の既存アカウントではなく、作成するアカウントの資格情報として扱われます:
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "attackerAcct" `
-UPNUserPassword "AttackerP@ss!" `
-CreateNewPath "OU=Temp,DC=demo,DC=lab"
ユーザーアカウントの代わりにコンピュータアカウントを作成/使用するには、-Computer を追加します。
免責事項
このコンテンツは、教育および情報提供のみを目的として提供されています。これは、あなたが所有する、またはテストを許可されたシステムに存在する可能性のあるセキュリティ脆弱性についての認識を高め、責任ある修正を促進することを意図しています。悪意のある目的、悪用、または不正アクセスのためにこの情報を無断で使用することは固く禁じられています。著者は違法行為を支持または容認せず、本資料の誤用から生じるいかなる責任も負いません。さらに、著者はコンテンツの正確性や完全性を保証せず、その使用によって生じた損害についても責任を負いません。
| Parameter | Required | Description |
|---|
-TargetAccount | Yes | パスワードリセットのターゲットとなるアカウントの sAMAccountName。コンピュータアカウントをターゲットにする場合は、末尾の $ を含めてください。 |
-TargetNewPassword | Yes | ターゲットアカウントに設定する新しいパスワード。 |
-UPNUser | Yes | UPN を書き込むことができるアカウント。-CreateNewPath が指定されている場合は、作成するアカウント。 |
-UPNUserPassword | Yes | -UPNUser の平文パスワード。 |
-Computer | No | -UPNUser をコンピュータアカウントとして扱います(-CreateNewPath と組み合わせるとコンピュータアカウントを作成します)。 |
-RubeusPath | No | Rubeus 実行ファイルへのパス。既定値は ".\Rubeus.exe" です。 |
-SupportedEncryption | No | TGT に使用するサポート対象の暗号化タイプ。既定値は "AES256" で、ほとんどの場合に機能するはずです。変更が必要な場合にサポートされている値は次のとおりです: DES|RC4|AES128|AES256 |
-CreateNewPath | No | オブジェクトを作成する権限がある OU/コンテナへの DistinguishedName。指定した場合、-UPNUser と -UPNUserPassword パラメータは、既存のユーザーを使用する代わりに、作成するユーザーの資格情報として扱われます。 |
-DC | No | 操作対象の DC の名前。指定しない場合は自動的に解決されます。 |