Auto-Elevate
このツールは、UACバイパスやWindowsの組み込み機能の力を示しています。このユーティリティはwinlogon.exeを自動的に特定し、そのプロセスのTOKENを奪取して偽装し、奪取したトークンで新しいSYSTEMレベルのプロセスを生成します。hfiref0xのUACMEユーティリティのUACバイパス方法 #41 (ICMLuaUtil UAC バイパス) と組み合わせることで、このユーティリティは低特権のAdministratorアカウントからNT AUTHORITY\SYSTEMへ自動昇格できます。
次の画像は、UACMEとAuto-Elevateを組み合わせて、Windows 10 21H1上で低特権のAdministratorアカウントからNT AUTHORITY\SYSTEMに移行することを示しています。

次の画像は、UACバイパスなしで高特権のAdministratorアカウントからSYSTEMへの昇格を示しています。

技術的説明
Auto-Elevateが低特権のAdministratorからSYSTEMへ昇格するために実行する手順は次のとおりです:

Auto-Elevate
- winlogon.exeプロセスは、CreateToolhelp32Snapshot、Process32First、Process32Nextを使用してシステムで実行中のプロセスを列挙することにより特定されます。
- SeDebugPrivilegeは、winlogon.exeへのHANDLEを開くために必要であるため、AdjustTokenPrivilegesの呼び出しを介して現在のプロセスに対して有効化されます。
- winlogon.exeプロセスへのハンドルは、OpenProcessを呼び出すことによって開かれます。この呼び出しにはPROCESS_ALL_ACCESSが使用されます(ただし、過剰です)。
- winlogonのプロセストークンへのハンドルは、以前に取得したプロセスハンドルと組み合わせてOpenProcessTokenを呼び出すことによって取得されます。
- winlogonのユーザー(SYSTEM)は、ImpersonateLoggedOnUserを呼び出すことによって偽装されます。
- 偽装されたトークンハンドルは、SecurityImpersonationを指定してDuplicateTokenExを呼び出すことによって複製されます。これにより、使用可能な複製トークンが作成されます。
- 複製され偽装されたトークンを使用して、CreateProcessWithTokenWを呼び出すことにより、新しいCMDインスタンスが生成されます。
今後の予定
MITRE ATT&CK マッピング