SMB 101
SMB (Server Message Block) es un protocolo utilizado para compartir recursos como archivos, impresoras y directorios en una red. Utiliza una arquitectura cliente-servidor, donde el servidor pone los recursos a disposición y múltiples clientes pueden acceder a ellos. Aunque SMB3 introduce cifrado para proteger los datos, versiones anteriores como SMB1 transmiten información en texto plano, lo que las hace vulnerables a ciertos ataques.
En este artículo, nos centraremos en conceptos básicos, comandos clave y ataques comunes relacionados con SMB, destacando el uso de herramientas como enum4linux para la enumeración.
Teoría
Puertos usados por SMB
SMB opera principalmente en los siguientes puertos:
- 445/TCP: Utilizado por SMB modernos para conexiones directas sin NetBIOS.
- 139/TCP: Utilizado por versiones antiguas dependientes de NetBIOS.
Autenticación en SMB
SMB emplea varios mecanismos de sincronización:
- NTLM (LAN Manager): Vulnerable a ataques de transmisión y de fuerza bruta.
- Kerberos: Más seguro, usando en entornos con Active Directory.
Enumeración con SMB
La enumeración es el paso inicial para recoger información sobre los recursos compartidos, los usuarios, y otras configuraciones del servidor SMB. Aquí hay algunas herramientas comunes para este propósito:
Enum4linux
Enum4linux es una herramienta de enumeración diseñada específicamente para SMB. Nos permite identificar los recursos compartidos, políticas de contraseñas, y los usuarios en sistemas Windows.
Comandos comunes:
Modos específicos:
-
Enumeración de usuarios:
-
Enumeración de recursos compartidos:
-
Enumeración de la información del dominio:
Salidas típicas:
- Recursos compartidos disponibles.
- Usuarios del sistema.
- Políticas de contraseñas, como la caducidad o la longitud mínima.
SMBClient
SMBClient es una herramienta integrada en sistemas Linux para interactuar directamente con recursos SMB.
Ejemplo de uso:
Después de conectarnos, podemos listar, descargar, y subir archivos con comandos similares a los de FTP.ls # Lista el directorio actual (gestión de archivos y navegación similar a Linux)
get # Descarga archivos
put # Sube archivos
Enumerar recursos compartidos:
Ataques Comunes a SMB
Sesiones Nulas (Null Sessions)
Las sesiones nulas ocurren cuando el servidor SMB permite conexiones sin autenticación, exponiendo información como los recursos compartidos y usuarios.
Enumeración de sesiones nulas con smbclient:
Danger
Los atacantes pueden utilizar esta información para planear ataques más avanzados, como ataques de fuerza bruta a contraseñas.
Fuerza Bruta y Password Spraying
SMB puede ser vulnerable a ataques de fuerza bruta si no se implementan las medidas de seguridad adecuadas. Herramientas como Hydra y Medusa son comunes para este propósito.
Hydra para SMB:
NetExec:
Danger
Los atacantes pueden ganar acceso no autorizado para compartir recursos si se descifran credenciales válidas.
NTLM Relay
Este ataque intercepta y reenvía autenticaciones NTLM para hacerse pasar por el usuario legítimo. Los servidores SMB con la forma desactivada son especialmente vulnerables.
Utilizando Responder:
Tip
Con el fin de mitigarlo, habilite la firma SMB y utilice la autenticación de Kerberos en lugar de NTLM.
Credential Sniffing
Versiones antiguas como SMB1 transmiten credenciales en texto plano, permitiendo que los atacantes capturen las credenciales con herramientas como Wireshark.
Filtros Wireshark:
Danger
Un atacante puede utilizar las credenciales interceptadas para acceder al servidor SMB.
Carga de archivos para RCE
Si un recurso SMB permite la escritura, un atacante puede subir un archivo malicioso, como una web shell, para ejecutar código remotamente.
Subiendo un archivo con SMBClient:
Danger
Esto puede comprometer al servidor, permitiendo la ejecución de comandos o la instalación de malware.
Defensas en contra de los exploits SMB
- Deshabilita SMB1: Está obsoleto y es vulnerable. Sustitúyelo ya sea por SMB2 o SMB3:
- Habilita SMB Singing: Para prevenir ataques de retransmisión NTLM.
- Restringe los permisos: Asegura que los recursos compartidos están protegidos con permisos estrictos.
- Cifrado SMB3: SMB3 permite cifrar el tráfico, protegiendo así contra ataques de sniffing.
- Monitorización periódica: Utiliza herramientas como Splunk o Wireshark para detectar actividad anómala.
En el siguiente artículo de esta serie sobre SMB hablaremos de errores comunes de implementación y de algunas vulnerabilidades conocidas de algunas implementaciones del protocolo.
Stay safe. Stay smart. Stay secure.