Skip to content

Enumeración del Servicio SMB

SMB (Server Message Block) es un protocolo de comunicación de red utilizado para compartir archivos, impresoras y otros recursos entre dispositivos de red. Es un protocolo propietario de Microsoft que se utiliza principalmente en sistemas operativos Windows.

Samba, por otro lado, es una implementación libre y de código abierto del protocolo SMB, que se utiliza principalmente en sistemas operativos basados en Unix y Linux. Samba proporciona una manera de compartir archivos y recursos entre dispositivos de red que ejecutan sistemas operativos diferentes, como Windows y Linux.

CIFS (Common Internet File System) son las siglas de Sistema Común de Archivos de Internet, un protocolo de red desarrollado por Microsoft para compartir archivos e impresoras en red, funcionando como una implementación del protocolo SMB. CIFS permite a los clientes acceder y manipular archivos en servidores remotos, facilitando el acceso compartido a recursos como servidores de archivos y impresoras, y es compatible con sistemas operativos como Windows, Linux (a través de Samba) y macOS.

Aunque SMB y Samba comparten una funcionalidad similar, existen algunas diferencias notables:

  • SMB es un protocolo propietario de Microsoft, mientras que Samba es un proyecto de software libre y de código abierto
  • SMB es una implementación más completa y compleja del protocolo
  • Samba es una implementación más ligera y limitada

Para practicar la enumeración y explotación del servicio Samba, utilizamos el siguiente laboratorio vulnerable:

Samba Authenticated RCE (CVE-2017-7494): https://github.com/vulhub/vulhub/tree/master/samba/CVE-2017-7494

Este laboratorio permite practicar técnicas de enumeración y explotación de vulnerabilidades en servicios Samba.

Smbmap es una herramienta de línea de comandos utilizada para enumerar recursos compartidos y permisos en un servidor SMB (Server Message Block) o Samba. Es una herramienta muy útil para la enumeración de redes y para la identificación de posibles vulnerabilidades de seguridad.

  • Enumeración de recursos compartidos en servidores SMB
  • Obtención de información detallada sobre permisos de acceso
  • Identificación de usuarios y grupos autorizados
  • Detección de recursos compartidos sin autenticación
  • Verificación rápida de configuraciones de permisos
  • -H: Especifica la dirección IP o nombre de host del servidor SMB
  • -P: Especifica el puerto TCP (predeterminado: 445)
  • -u: Especifica el nombre de usuario para la conexión
  • -p: Especifica la contraseña para la conexión
  • -d: Especifica el dominio al que pertenece el usuario
  • -s: Especifica el recurso compartido específico a enumerar
Terminal window
# Enumeración básica sin autenticación
smbmap -H 192.168.1.100
# Enumeración con credenciales
smbmap -H 192.168.1.100 -u administrador -p password123
# Enumeración de un recurso compartido específico
smbmap -H 192.168.1.100 -u user -p pass -s "compartido"
# Enumeración con dominio
smbmap -H 192.168.1.100 -d DOMINIO -u usuario -p password

Smbclient es otra herramienta de línea de comandos utilizada para interactuar con servidores SMB y Samba. A diferencia de smbmap que se enfoca en enumeración, smbclient proporciona una interfaz completa para interactuar con recursos compartidos.

  • Interfaz de línea de comandos para recursos SMB/Samba
  • Descarga y subida de archivos
  • Ejecución de comandos remotos
  • Navegación por sistemas de archivos remotos
  • Soporte para operaciones interactivas
  • -L: Lista los recursos compartidos disponibles
  • -U: Especifica usuario y contraseña para autenticación
  • -c: Ejecuta un comando específico
Terminal window
# Listar recursos compartidos disponibles
smbclient -L //192.168.1.100
# Conectar a un recurso compartido
smbclient //192.168.1.100/compartido -U usuario%password
# Ejecutar comando específico
smbclient //192.168.1.100/compartido -U user%pass -c "ls"
# Conexión interactiva
smbclient //192.168.1.100/compartido -U administrador
  1. Escaneo de puertos: Identificar si el puerto 445 (SMB) o 139 (SMB sobre NetBIOS) están abiertos
  2. Detección de versión: Determinar la versión del protocolo SMB/Samba
  3. Identificación del sistema operativo: Diferenciar entre Windows y Linux/Samba
  1. Listado de recursos compartidos nulos
  2. Verificación de acceso público
  3. Recolección de información del sistema
  1. Enumeración completa de recursos
  2. Verificación de permisos
  3. Análisis de contenido de recursos compartidos
#!/bin/bash
# Script de enumeración SMB básica
TARGET=$1
echo "[+] Escaneando puertos SMB..."
nmap -p 139,445 --script smb-os-discovery $TARGET
echo "[+] Enumerando recursos compartidos con smbmap..."
smbmap -H $TARGET
echo "[+] Listando recursos con smbclient..."
smbclient -L $TARGET
#!/bin/bash
# Script avanzado de enumeración SMB
TARGET=$1
USER=$2
PASS=$3
echo "[+] Enumeración avanzada de SMB"
echo "[+] Target: $TARGET"
# Verificación de conectividad
echo "[+] Verificando conectividad..."
nmap -p 445 $TARGET -Pn
# Enumeración sin credenciales
echo "[+] Enumeración sin autenticación..."
smbmap -H $TARGET
# Si se proporcionan credenciales
if [ ! -z "$USER" ] && [ ! -z "$PASS" ]; then
echo "[+] Enumeración con credenciales..."
smbmap -H $TARGET -u $USER -p $PASS
echo "[+] Conexión interactiva..."
smbclient -L $TARGET -U $USER%$PASS
fi
# Análisis de vulnerabilidades comunes
echo "[+] Escaneando vulnerabilidades conocidas..."
nmap --script smb-vuln* $TARGET -p 445
  • Tiempo entre solicitudes: Evitar triggers de IDS/IPS
  • Rotación de user-agents: Simular diferentes clientes
  • Uso de proxies: Enmascarar origen de las solicitudes
Terminal window
# Enumeración de usuarios con rpcclient
rpcclient -U "" -N $TARGET -c "enumdomusers"
Terminal window
# Información del sistema con nmap
nmap --script smb-system-info $TARGET -p 445

⚠️ Importante: La enumeración de servicios SMB debe realizarse únicamente con autorización expresa del propietario del sistema. El acceso no autorizado puede constituir un delito según leyes como la CFAA (EE.UU.), GDPR (Europa) y legislaciones locales.

  • Autorización escrita del propietario
  • Alcance definido de las pruebas
  • Código de ética del pentesters
  • Reportes detallados de hallazgos
  • enum4linux: Enumeración completa de Windows/Samba
  • CrackMapExec: Framework de enumeración y explotación
  • Responder: Herramienta para ataques MITM en SMB
  • Samba Mailing Lists: Foros oficiales de desarrollo
  • OWASP: Guías de testing de servicios compartidos
  • NIST: Frameworks de ciberseguridad

La enumeración del servicio SMB es fundamental en auditorías de seguridad de redes Windows y entornos mixtos. Las herramientas como smbmap y smbclient proporcionan capacidades poderosas para identificar configuraciones incorrectas y vulnerabilidades potenciales.

Recuerda siempre operar dentro de marcos legales y éticos, utilizando estas técnicas únicamente para mejorar la seguridad de sistemas autorizados.