Tactics — HTB Starting Point (Tier 1)
Tier 1 · SO: Windows · Dificultad: Very Easy · Skills: SMB enumeration, Impacket psexec/smbexec, Windows remote execution
Tactics expone el patrón más clásico de movimiento lateral en redes Windows: una cuenta administrativa con credencial débil (contraseña en blanco) y SMB abierto. Con Impacket se obtiene una shell SYSTEM sin explotar ningún CVE, solo abusando de la configuración. Es un laboratorio legal y autorizado de Hack The Box, diseñado explícitamente para aprender estas técnicas en un entorno seguro.
Objetivo
Obtener ejecución remota en la máquina Windows como SYSTEM a través de SMB, usando credenciales del administrador local, y leer la flag.
Acceso a la maquina (paso previo)
Antes de atacar nada necesitas conectarte a la red de HTB y arrancar la maquina para obtener su IP:
- Descarga tu VPN desde el panel de HTB (Starting Point → Connect → descarga el
.ovpn). - Conectate a la VPN y dejala corriendo en una terminal aparte:
sudo openvpn starting_point_<tu_usuario>.ovpn - Lanza la maquina en la web (boton Spawn Machine). HTB te dara una IP (tipo
10.129.x.x). - Comprueba que llegas a ella:
ping -c2 <IP> - En el resto de este writeup, sustituye
<IP>por la IP que te toque (es dinamica: cambia cada vez que lanzas la maquina).
Alternativa sin VPN: el Pwnbox (Kali en el navegador que ofrece HTB) ya viene conectado a la red; solo lanzas la maquina y usas su IP directamente.
Reconocimiento
Categoría: escaneo de puertos y detección de servicio.
nmap -sV -sC -Pn <IP>Flags clave:
-sV— detección de versión de servicio-sC— scripts por defecto (incluye enumeración SMB básica)-Pn— salta el ping (necesario en muchos hosts Windows que bloquean ICMP)
Lo que revela nmap:
- Puerto 445/tcp abierto → SMB (Server Message Block)
- Posiblemente 135 (RPC) y 139 (NetBIOS) también abiertos
- El hostname y el dominio de la máquina (si está unida a un AD, lo indica; en este caso es un workgroup)
445/tcp open microsoft-ds?
El escaneo por sí solo no dice “credencial débil”, pero confirma que SMB está expuesto y que la máquina es Windows — suficiente para proceder a enumerar.
Enumeracion
Categoría: listado de recursos compartidos SMB (shares) sin credenciales o con cuenta conocida.
Primero se prueba si el servidor responde sin credenciales (null session) o con usuario Administrator y contraseña vacía:
smbclient -L //<IP>/ -U AdministratorCuando te pida contraseña, pulsa Enter (contraseña vacía). Si la autenticación funciona, verás los shares disponibles:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
Los shares ADMIN$ y C$ son admin shares de Windows, accesibles solo a administradores. El hecho de que se listen confirma que la cuenta Administrator tiene acceso administrativo completo y sin contraseña.
Si
smbclientdevuelve “NT_STATUS_LOGON_FAILURE”, la contraseña vacía no funciona — ajusta la credencial contra la máquina en vivo (pruebaguesto credenciales que hayas encontrado en etapas anteriores del Starting Point).
Acceso inicial (foothold)
Categoría: ejecución remota vía SMB con Impacket psexec — abuso de admin shares.
Impacket psexec.py replica el comportamiento de PsExec de Sysinternals: sube un ejecutable al share ADMIN$, crea un servicio Windows para ejecutarlo, y devuelve una shell interactiva. El resultado es una sesión con privilegios SYSTEM.
impacket-psexec Administrator@<IP>O con el binario directo si tienes Impacket instalado desde fuente:
python3 /usr/share/doc/python3-impacket/examples/psexec.py Administrator@<IP>Cuando pida contraseña: Enter (vacía).
Si psexec.py falla por restricciones de escritura en ADMIN$, prueba smbexec.py, que ejecuta comandos vía el servicio svcctl sin subir un binario al disco:
impacket-smbexec Administrator@<IP>Al conectar obtienes un prompt de shell:
C:\Windows\system32>whoami
nt authority\system
Eres SYSTEM. No se necesita escalada de privilegios.
Escalada de privilegios
No requiere privesc: el foothold con psexec.py / smbexec.py entrega directamente una sesión SYSTEM, el nivel más alto de privilegio en Windows. La flag se obtiene desde esa misma shell.
Flags
Tactics es una máquina Starting Point con una sola flag (no hay separación user/root en muchas SP de Tier 1).
Localización típica:
type C:\Users\Administrator\Desktop\flag.txtO si hay estructura user/root:
# User flag
type C:\Users\<usuario>\Desktop\user.txt
# Root/Admin flag
type C:\Users\Administrator\Desktop\root.txtValor: <flag> (lo obtienes en la sesión SYSTEM de la máquina real).
Patron y teoria
El patron: acceso administrativo por SMB con credencial débil
Esquema general:
Atacante
└─► Puerto 445 (SMB) abierto
└─► Cuenta administrativa con contraseña vacía/débil
└─► Admin shares accesibles (ADMIN$, C$)
└─► Impacket psexec → shell SYSTEM
Este patrón se llama Pass-the-Hash / Lateral Movement via SMB en su variante más sencilla (aquí ni siquiera hace falta hash, la contraseña es vacía). En entornos reales aparece cuando:
- Un administrador dejó la contraseña por defecto en una imagen de despliegue.
- La cuenta
Administratorlocal no fue deshabilitada (buena práctica: desactivarla y usar cuentas nominativas). - SMB no está restringido por firewall interno.
Por qué psexec funciona: anatomía del ataque
psexec.py hace tres cosas en secuencia:
- Autenticación SMB con las credenciales dadas.
- Escritura de un servicio ejecutable en
ADMIN$(mapea aC:\Windows\). - Creación y arranque de un servicio Windows vía RPC (
svcctl) que ejecuta ese binario y conecta stdin/stdout al atacante.
El proceso resultante hereda el contexto del Service Control Manager → SYSTEM.
smbexec.py es más sigiloso: no escribe un binario, ejecuta comandos mediante cmd.exe /Q /c <comando> a través del mismo canal RPC.
Defensa y diseño seguro (clave dev/purple team)
| Problema | Contramedida |
|---|---|
| Contraseña vacía/débil en Administrator | Password policy: mínimo 12 chars, complejidad, rotación; bloqueo de cuentas |
Cuenta Administrator local activa | Desactivarla; usar LAPS (Local Administrator Password Solution) para gestionar contraseñas locales únicas por máquina |
| SMB expuesto en la red | Firewall: bloquear 445/139 entre segmentos que no lo necesiten; nunca exponer SMB a Internet |
Admin shares (ADMIN$, C$) accesibles | Deshabilitar admin shares si no son necesarios (AutoShareServer = 0 en el registro); restringir con ACLs |
| Sin detección de movimiento lateral | SIEM: alertas sobre eventos 4624 (logon type 3 + share ADMIN$), 7045 (nuevo servicio instalado), accesos a C$ |
Regla de diseño para devs: cualquier servicio/aplicación que despliegues en Windows debe correr con una cuenta de servicio de mínimo privilegio, nunca con Administrator ni con contraseña vacía. Usa Managed Service Accounts (gMSA) en entornos de dominio.