📡 SMB y Samba

Concepto Descripción
SMB (Server Message Block) Protocolo propietario de Microsoft para compartir archivos, impresoras y recursos en red (Windows).
Samba Implementación libre y de código abierto de SMB para sistemas Unix/Linux. Permite interoperabilidad con Windows.

🔑 Diferencias clave:

🔌 Puertos utilizados por SMB:

Puerto Protocolo Uso
139 TCP SMB sobre NetBIOS
445 TCP SMB directamente sobre TCP (moderno y común)

🎯 Puerto 445 suele ser el principal para detección y enumeración SMB en redes actuales.

🧪 Laboratorio de práctica con Samba

Repositorio:
👉 Samba Authenticated RCE – CVE-2017-7494

docker-compose up -d

🔍 Herramientas utilizadas

Listar los recursos

🔧 smbmap

Herramienta de enumeración de recursos SMB: comparte, permisos, accesos anónimos.
📌 Parámetros útiles:

Parámetro Descripción
-H Dirección IP o hostname del servidor SMB
-P Puerto (por defecto: 445)
-u Usuario
-p Contraseña
-d Dominio
-s Recurso compartido específico a enumerar
Ejemplo:
smbmap -H 127.0.0.1

Pasted image 20250710165931.png

🔧 smbclient

Cliente SMB para interactuar con recursos compartidos (subir, bajar, navegar).

📌 Parámetros comunes:

Parámetro Descripción
-L Lista los recursos compartidos del servidor
-U Usuario (usuario%contraseña)
-c Ejecuta comandos en el recurso compartido
-N Sin autenticación (anónimo)
📘 Ejemplos:
Listar recursos:
smbclient -L 127.0.0.1 -N

Pasted image 20250710165820.png
Entrar en recurso compartido:

smbclient  //127.0.0.1/myshare -N

📂 Comandos útiles dentro del recurso:

dir           # Ver archivos y carpetas
put fichero   # Subir archivo
get fichero   # Descargar archivo

Pasted image 20250710170346.png
Cuando accedemos a un recurso compartido SMB con herramientas como smbclient, si hay demasiados archivos y carpetas, puede resultar incómodo navegar entre directorios desde su interfaz interactiva.

🔧 Una solución eficiente es montar el recurso compartido en una carpeta local de tu sistema con cifs-utils, y luego usar herramientas como tree para visualizarlo de forma jerárquica y clara.

sudo apt install cifs-utils

Monta la carpeta compartida SMB en un punto de montaje local, por ejemplo /mnt/mounted:

mount -t cifs //127.0.0.1/myshare /mnt/mounted

🔐 Si no tenemos usuario ni contraseña:

mount -t cifs //127.0.0.1/myshare /mnt/mounted -o username=null,password=null,domain=,rw

tree /mnt/mounted

tree /mnt/mounted

Cuando ya no necesites acceder al recurso, desmonta para liberar el punto de montaje:

``` bash
umount /mnt/mounted

🔧 rpcclient — Cliente RPC sobre SMB

🧠 ¿Qué es RPC?

Remote Procedure Call (RPC) es un protocolo que permite que un programa en un equipo ejecute funciones en otro sistema remoto como si fueran locales. En entornos Windows, RPC es fundamental para muchas operaciones administrativas remotas.

rpcclient -U "" -N <IP-del-servidor>

{4E39917D-799B-484C-A2B4-2EC79E289EF9}.png

🧩 Comandos útiles en rpcclient

Una vez conectado, puedes usar una gran variedad de funciones dentro del prompt (rpcclient $>), o bien ejecutarlas directamente con la opción -c.

Comando Descripción
srvinfo Muestra información básica del servidor SMB
enumdomains Enumera todos los dominios visibles
querydominfo Muestra información del dominio local
netshareenumall Enumera todos los recursos compartidos disponibles
netsharegetinfo <share> Proporciona detalles sobre un recurso compartido específico
enumdomusers Enumera todos los usuarios del dominio (puede requerir permisos)
queryuser <RID> Muestra información sobre un usuario específico a partir de su RID

🛠️ CrackMapExec (CME)

Herramienta avanzada para auditoría de SMB, especialmente útil en entornos Active Directory.

📘 Uso básico:

crackmapexec smb 127.0.0.1 -u guest -p ''

📖 Guía de instalación oficial:
👉 CrackMapExec Wiki