RECONOCIMIENTO — Escaneo de puertos
Se lanza un escaneo completo para descubrir la superficie de ataque disponible en la máquina víctima.
| PUERTO | ESTADO | SERVICIO |
|---|---|---|
| 135/tcp | OPEN | msrpc |
| 139/tcp | OPEN | netbios-ssn |
| 445/tcp | OPEN | microsoft-ds (SMB) |
| 1433/tcp | OPEN | ms-sql-s (MSSQL) |
| 5985/tcp | OPEN | wsman (WinRM) |
| 47001/tcp | OPEN | winrm |
El puerto 1433 aloja un servidor Microsoft SQL Server y el puerto 445 indica un servicio SMB activo. Son los dos vectores principales a explorar.
ENUMERACIÓN SMB — Credenciales en texto claro
Se listan los shares disponibles en el servicio SMB sin necesidad de autenticación, usando la flag -N para null session:
Los shares administrativos terminan en $. El único share sin ese sufijo — y por tanto accesible sin privilegios — es backups. Se accede directamente:
Se descarga el fichero prod.dtsConfig. Los archivos .dtsConfig son ficheros de configuración de paquetes SSIS (SQL Server Integration Services) y habitualmente contienen cadenas de conexión a bases de datos. Al examinar su contenido:
ACCESO MSSQL — Habilitando xp_cmdshell
Con las credenciales obtenidas se usa mssqlclient.py de la suite Impacket para establecer una sesión autenticada contra el servidor SQL. La flag -windows-auth es necesaria porque las credenciales son de dominio Windows:
La conexión es exitosa. El siguiente paso es obtener ejecución de comandos en el sistema operativo mediante el procedimiento almacenado xp_cmdshell, que permite lanzar comandos de shell directamente desde SQL.
Por defecto está deshabilitado como medida de seguridad, pero el usuario tiene permisos de sysadmin, lo que permite activarlo:
sql_svc tiene rol de sysadmin en el servidor SQL. Esto otorga control total sobre la instancia, incluyendo la capacidad de habilitar xp_cmdshell para ejecutar comandos arbitrarios en el sistema operativo subyacente.
REVERSE SHELL — Netcat en la víctima
Tener ejecución de comandos vía xp_cmdshell es útil pero limitado. El objetivo es obtener una shell interactiva. Se transfiere nc64.exe a la máquina víctima usando un servidor HTTP temporal:
Con Netcat en la víctima, se pone el listener en escucha y se lanza la reverse shell:
PRIVILEGE ESCALATION — ConsoleHost_history.txt
Con acceso como sql_svc, el objetivo es escalar a Administrator. Se transfiere y ejecuta WinPEAS, una herramienta que automatiza la búsqueda de vectores de escalada en entornos Windows:
En la sección de archivos sensibles, WinPEAS marca en rojo el historial de comandos de PowerShell:
C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
Este fichero es el equivalente Windows al .bash_history de Linux: registra los comandos ejecutados en PowerShell. Es un lugar habitual donde quedan expuestas credenciales tecleadas manualmente:
.bash_history. La contraseña del administrador es MEGACORP_4dm1n!!
ACCESO COMO SYSTEM — psexec.py
Con las credenciales del administrador se usa psexec.py de Impacket para obtener una shell con máximos privilegios. PSExec funciona subiendo un servicio al share ADMIN$ y ejecutándolo remotamente, devolviendo una shell como SYSTEM:
Acceso completo como SYSTEM. La flag de root se encuentra en el escritorio del usuario Administrator:
CADENA DE ATAQUE
backups accesible sin autenticación → prod.dtsConfig con credenciales SQL en texto claro: ARCHETYPE\sql_svc / M3g4c0rp123mssqlclient.py. El usuario tiene rol de sysadmin → se habilita xp_cmdshell → RCE en el sistema operativonc64.exe vía HTTP + reverse shell interactiva → flag de usuario obtenidaMEGACORP_4dm1n!!impacket-psexec → flag de root en C:\Users\Administrator\Desktop\root.txt