Aprende › Redes, WiFi y pivoting

SMB y Samba: enumerar, acceder a recursos compartidos y detectar configuraciones peligrosas

· 10 min de lectura

Aprende qué es SMB, por qué los recursos compartidos de Windows y Samba siguen siendo una vía de intrusión, cómo enumerar servicios, usuarios y recursos con las herramientas estándar y cómo endurecer un servidor para que no comparta más de la cuenta.

SMB (Server Message Block) es el protocolo con el que Windows comparte archivos, impresoras y canales de comunicación entre equipos de una red. Tiene décadas, ha evolucionado varias veces y, pese a ello, sigue siendo una de las vías más explotadas en redes corporativas. En Linux, el mismo protocolo lo implementa Samba, un software libre que permite a un servidor Linux compartir carpetas con clientes Windows.

En los laboratorios de whoami-labs es raro que un escaneo de una máquina Windows o de un servidor Samba no muestre los puertos 139 y 445 abiertos, y de ahí suele empezar el recorrido: enumerar los recursos compartidos, probar acceso anónimo, buscar credenciales, descubrir usuarios. Para un defensor, entender cómo lo ven los atacantes es la mejor manera de evitar dejar carpetas accesibles sin darse cuenta.

En esta lección vas a ver qué es SMB, por qué sigue causando problemas, cómo se enumeran los servicios con las herramientas estándar, qué configuraciones suelen fallar y cómo endurecer un servidor Samba.

Enumera solo servidores propios o en entornos autorizados, como los laboratorios de whoami-labs. Acceder a recursos compartidos ajenos sin permiso es un delito.

Qué es SMB y por qué sigue siendo un problema#

SMB permite a un cliente pedirle a un servidor cosas como «dame la lista de carpetas compartidas», «abre este archivo», «escribe en esta carpeta» o «ejecuta este trabajo de impresión». Tiene varias versiones con diferencias de seguridad importantes:

VersiónAñoEstado
SMBv1 (CIFS)Años 90Obsoleto. Vulnerabilidades famosas como EternalBlue. Hay que desactivarlo
SMBv22006Mejoras importantes: paquetes más sencillos, firma, autenticación más fuerte
SMBv32012Añade cifrado de la comunicación y firma obligatoria
SMB en los puertos 139 y 445, con recursos compartidos que pueden permitir acceso anónimo, autenticado o nulo
SMB en los puertos 139 y 445, con recursos compartidos que pueden permitir acceso anónimo, autenticado o nulo

Los puertos típicos son el 445 (TCP) y, en sistemas antiguos, también el 139 (TCP) sobre NetBIOS. Casi todas las implementaciones modernas usan el 445 directamente.

Por qué sigue apareciendo en las intrusiones#

  • Sesiones nulas: SMBv1 permitía conectarse sin credenciales (null session) y pedir información del sistema.
  • SMBv1 sigue vivo en sistemas antiguos, impresoras, cámaras, NAS y equipos industriales.
  • EternalBlue (CVE-2017-0144): el exploit de SMBv1 usado por WannaCry y NotPetya, aún efectivo en sistemas sin actualizar.
  • Recursos mal configurados: carpetas compartidas con permisos a «Todos», Guest habilitado, acceso anónimo en Samba.
  • Credenciales en claro en versiones antiguas y configuraciones mal hechas.

El caso de EternalBlue es especialmente ilustrativo. La vulnerabilidad fue descubierta internamente por la NSA, filtrada por el grupo Shadow Brokers en 2017 y utilizada apenas unas semanas después por el ransomware WannaCry para infectar más de 200.000 equipos en 150 países, incluidos hospitales, trenes y grandes empresas. El parche existía desde dos meses antes de la filtración; lo único que cambió el panorama fue la falta de actualización en miles de servidores. Hoy, ocho años después, Nmap sigue encontrando sistemas vulnerables a esta misma CVE cada vez que se escanea una red corporativa grande. Esa es la realidad de muchos servicios SMB en la práctica.

Cómo se enumera#

Detección con Nmap#

# Detectar servicio y versión
nmap -p 139,445 -sV IP_DEL_LAB

# Scripts específicos de SMB
nmap -p 445 --script "smb-enum-shares,smb-enum-users,smb-os-discovery,smb2-security-mode" IP_DEL_LAB

# Buscar la vulnerabilidad EternalBlue
nmap -p 445 --script smb-vuln-ms17-010 IP_DEL_LAB

Scripts útiles:

  • smb-os-discovery: sistema operativo y dominio.
  • smb-enum-shares: lista las carpetas compartidas.
  • smb-enum-users: enumera usuarios locales (si lo permite).
  • smb2-security-mode: indica si la firma es obligatoria.
  • smb-vuln-ms17-010: comprueba EternalBlue.

Listar recursos compartidos#

Varias herramientas hacen lo mismo con sintaxis distinta; elige la que mejor conozcas:

# smbclient (parte de Samba)
smbclient -L //IP_DEL_LAB -N      # -N: sin contraseña (intento anónimo)
smbclient -L //IP_DEL_LAB -U maria

# smbmap: resumen cómodo con permisos de lectura y escritura
smbmap -H IP_DEL_LAB
smbmap -H IP_DEL_LAB -u maria -p Verano2026

# enum4linux (herramienta clásica de enumeración)
enum4linux -a IP_DEL_LAB

Una salida típica muestra los recursos:

Sharename       Type      Comment
---------       ----      -------
docs            Disk      Documentos de la empresa
backup          Disk      Copias de seguridad
IPC$            IPC       IPC Service (Servidor FTP de pruebas)
print$          Disk      Printer Drivers

IPC$ y print$ son recursos administrativos de Windows. Los interesantes son docs y backup: compruébalos.

Conectarse a un recurso#

# Como anónimo
smbclient //IP_DEL_LAB/docs -N

# Con credenciales
smbclient //IP_DEL_LAB/docs -U maria

# Montarlo como una carpeta del sistema (requiere root)
sudo mount -t cifs //IP_DEL_LAB/docs /mnt/docs \
  -o username=maria,password=Verano2026

Dentro del cliente, los comandos son parecidos a FTP: ls, cd, get, put, mget, recurse ON para descargar recursivamente.

Enumerar sin credenciales (cuando se puede)#

Algunos servidores aún permiten preguntas básicas sin autenticar:

rpcclient -U "" -N IP_DEL_LAB
# Dentro:
srvinfo
enumdomusers
getdompwinfo

En servidores bien configurados, estos comandos responden con error. En servidores antiguos o permisivos, revelan usuarios, políticas de contraseñas y datos del dominio.

Configuraciones típicas que fallan#

ConfiguraciónRiesgo
SMBv1 habilitadoExploits como EternalBlue siguen funcionando
Carpetas con permisos a Todos / Guest OKLectura o escritura sin autenticación
Recursos escribibles por anónimosSubida de malware o scripts a una red compartida
Mismo recurso montado en varios servidores con credencial comúnMovimiento lateral directo
Firma SMB no obligatoriaAtaques SMB Relay (relay NTLM)
Credenciales guardadas en scripts compartidosArchivos como .bat o .cmd con usuarios y contraseñas

El ataque SMB Relay merece una mención: si un atacante en la red puede engañar a un cliente para que se autentique contra él (por ejemplo, con LLMNR poisoning), reenvía esa autenticación a un servidor donde esa cuenta tiene permisos y entra en nombre de la víctima. La firma SMB obligatoria lo evita.

Un flujo típico en un laboratorio#

En un laboratorio autorizado contra un servidor Linux con Samba:

  1. Escanear: nmap -p 139,445 -sV IP_DEL_LAB muestra Samba 4.x.
  2. Listar recursos sin credenciales: smbclient -L //IP -N revela un recurso backup accesible como invitado.
  3. Conectar y descargar: smbclient //IP/backup -N, recurse ON, prompt OFF, mget *. Al revisar los archivos, aparece un config.php con credenciales de WordPress.
  4. Reutilizar: las credenciales funcionan para entrar al panel de WordPress, y la contraseña es la misma que la del usuario maria del sistema. Con ssh maria@IP se tiene una shell.
  5. Continuar la escalada desde ahí, ya con las técnicas de SUID, sudo y demás vistas en otras lecciones de /aprende.

Ese flujo (smb → credenciales → ssh → escalada) es el más habitual en los laboratorios con el puerto 445 abierto.

Qué puede lograr un atacante#

Un SMB mal configurado abre varias puertas a la vez:

ImpactoEjemplo real
Robo de datosDescarga de documentos, código fuente y copias de seguridad desde un recurso lectura-para-todos
Credenciales filtradaswp-config.php, scripts con net use \\servidor /user:admin password
Ejecución remotaCon credenciales administrativas en Windows, PsExec o similares abren una shell
Movimiento lateralLas mismas credenciales suelen funcionar en varios servidores unidos al dominio
RansomwareCarpetas escribibles por muchos usuarios son el vector clásico de cifrado masivo

CrackMapExec y herramientas más potentes#

Cuando los laboratorios se complican (varias máquinas, dominio de Windows), hay utilidades especializadas:

  • CrackMapExec (CME) y su sucesor NetExec (nxc): prueban credenciales contra decenas de servidores de una lista, enumeran recursos, intentan ejecución remota, lanzan Mimikatz en memoria. Es la navaja suiza de las auditorías internas.
  • Impacket: colección de scripts de Python que hablan el protocolo a bajo nivel. psexec.py, wmiexec.py, smbclient.py, GetNPUsers.py (AS-REP Roasting) son los más usados.
  • Responder: herramienta de ataque pasivo en la red local que captura hashes NTLM aprovechando LLMNR y NBT-NS.

Pass-the-hash#

Cuando se obtienen los hashes NTLM de las contraseñas (porque están cacheados en una máquina, porque se extraen de LSASS, porque un relay los filtra), no hace falta crackearlos: las herramientas de Impacket y Mimikatz permiten autenticar directamente con el hash contra otros servidores que usen NTLM. Es una de las razones por las que SMB necesita firma obligatoria y Kerberos bien configurado en entornos Active Directory.

En entornos corporativos reales, el tándem CrackMapExec + Impacket es el que se ve una y otra vez en informes de pentesting interno. En los laboratorios de whoami-labs aparece cuando el escenario incluye Active Directory.

Cómo endurecer Samba#

Configuración segura de Samba: SMBv3, sin acceso de invitado, firma obligatoria y red segmentada
Configuración segura de Samba: SMBv3, sin acceso de invitado, firma obligatoria y red segmentada

Desactivar SMBv1#

Es el cambio más importante. En Samba moderno, SMBv1 está desactivado por defecto; comprueba la versión mínima exigida:

# /etc/samba/smb.conf
[global]
server min protocol = SMB2_10
server max protocol = SMB3

En Windows, Get-SmbServerConfiguration y Set-SmbServerConfiguration -EnableSMB1Protocol $false desactivan SMBv1.

Desactivar invitados#

[global]
map to guest = Never
restrict anonymous = 2

Y en cada recurso compartido:

[docs]
path = /srv/docs
read only = yes
guest ok = no
valid users = maria, @equipo

Firma y cifrado#

Firma SMB obligatoria contra ataques de relay, y cifrado para los datos:

[global]
server signing = mandatory
smb encrypt = required

Mínimo privilegio y segmentación#

  • Comparte solo lo necesario; nada de compartir la raíz del disco.
  • Permisos del sistema de archivos que coincidan con lo que deben ver los usuarios.
  • Los servidores SMB no deberían ser accesibles desde internet: segmentación de red y VPN para acceso remoto.
  • Mantén Samba al día: las versiones acumulan parches de seguridad.

Auditar accesos#

Habilita el registro de accesos y revísalo. Un administrador que se asoma de vez en cuando a los registros detecta antes patrones de enumeración o conexiones anónimas que nadie esperaba.

Errores comunes#

  • Dejar SMBv1 activo «por compatibilidad». Las vulnerabilidades famosas siguen funcionando.
  • Compartir con Guest OK. Es acceso sin credenciales equivalente al FTP anónimo.
  • Montar siempre con las mismas credenciales en todas las máquinas. Multiplica el riesgo de movimiento lateral.
  • No exigir firma SMB. Deja la puerta a ataques de relay.
  • Exponer SMB a internet. Combinado con credenciales débiles, es una invitación a bots que escanean sin parar.

Preguntas frecuentes#

¿Qué diferencia hay entre SMB y CIFS?#

CIFS es el nombre de SMBv1. Hoy se usa SMB a secas y las versiones se numeran: SMBv2 y SMBv3 son los que deberías ver en sistemas actuales.

¿Samba es lo mismo que SMB?#

Samba es una implementación del protocolo SMB en Linux y otros Unix. Es el software que permite a un servidor Linux actuar como servidor de archivos de Windows.

¿Por qué EternalBlue sigue siendo noticia tantos años después?#

Porque sigue habiendo sistemas sin parchear, especialmente en impresoras, equipos industriales, cámaras IP y servidores olvidados. Los parches existen desde 2017, pero el mantenimiento no siempre llega.

¿Qué es una sesión nula?#

Una conexión SMB sin autenticación (usuario y contraseña vacíos) que algunos servidores aceptan para ciertas operaciones. En SMBv1 era común; en versiones modernas está muy limitada.

¿Dónde practico esto?#

En los laboratorios enlazados al final de esta lección, varios de ellos pasan por enumerar SMB y encontrar archivos en recursos compartidos.

Resumen#

  • SMB es el protocolo de Windows para compartir archivos; Samba lo implementa en Linux.
  • SMBv1 sigue siendo peligroso (EternalBlue, sesiones nulas); SMBv3 añade firma y cifrado.
  • Se enumera con nmap (scripts smb-*), smbclient, smbmap, enum4linux y rpcclient.
  • Los errores habituales son acceso de invitado, SMBv1 activo, sin firma y recursos con permisos amplios.
  • Se endurece desactivando SMBv1, prohibiendo invitados, exigiendo firma y cifrado, con mínimo privilegio y segmentación de red.

Fuentes y lecturas recomendadas#

Practícalo en estos laboratorios

Ver todos los laboratorios de esta categoría