📡 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:
-
SMB: Propietario, nativo de Windows.
-
Samba: Libre, usado en Linux/Unix para interoperar con SMB.
🔌 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

🔧 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

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

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>

🧩 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