Abreviatura de Server Message Block, SMB es un protocolo de capa de aplicación que permite compartir archivos, impresoras y dispositivos, así como la comunicación entre procesos (IPC) entre aplicaciones en una red a través de una arquitectura cliente-servidor. En otras palabras, los ordenadores (clientes SMB) de una red pueden conectarse a servidores SMB para acceder a archivos y directorios compartidos o realizar tareas como la impresión a través de la red.
Antecedentes
SMB fue creado por IBM en 1984 para compartir archivos locales. Con el tiempo, se desarrollaron múltiples variaciones del protocolo SMB para mejorar sus características y cumplir con la evolución de los requisitos de red y seguridad. En general, SMBv2 redujo el carácter de charla del protocolo y SMBv3 proporcionó más mejoras de rendimiento y un fuerte cifrado de extremo a extremo. A continuación se ofrece un breve resumen de las versiones de SMB:
- SMBv1: La primera versión de SMB fue lanzada en 1984 por IBM para compartir archivos en DOS.
- CIFS: Con Windows 95, Microsoft lanzó una versión actualizada de SMBv1 y la rebautizó como CIFS, abreviatura de Common Internet File System.
- SMBv2: Con Windows Vista, Microsoft lanzó SMBv2, que venía con notables mejoras de rendimiento y mayor eficiencia.
- SMBv2.1: Con Windows 7, se lanzó SMBv2.1 con más mejoras de rendimiento.
- SMBv3: Con Windows 8, se lanzó SMBv3 con importantes actualizaciones de seguridad, incluido el cifrado de extremo a extremo.
- SMBv3.02: Con Windows 8.1, SMBv3.02 proporcionó más mejoras de seguridad, especialmente por la posibilidad de desactivar el inseguro SMBv1.
- SMBv3.1.1: En 2015, con Windows 10 y Windows Server 2016, se lanzó la última versión de SMB, SMBv3.1.1. Esta versión proporciona protección contra los ataques man-in-the-middle y soporta el cifrado AES-128-GCM (Advanced Encryption Standard-128 bits) e implementa comprobaciones de integridad previas a la autenticación mediante SHA-512 (Secure Hashing Algorithm).
¿Cómo funciona el protocolo SMB?
Para empezar con el modelo de comunicación, SMB funciona en una arquitectura cliente-servidor. En este modelo, los servidores SMB proporcionan recursos de red, como archivos o impresoras, a los demás ordenadores, conocidos como clientes. Gracias a esta función, los usuarios de diferentes dispositivos remotos pueden colaborar en archivos compartidos e imprimir sus documentos en impresoras compartidas a través de una red.
Además de esta funcionalidad principal de archivos e impresoras compartidas en los servicios, SMB también proporciona una comunicación interproceso (IPC) autenticada entre los procesos que se ejecutan en los ordenadores remotos. Para ello, se utiliza un recurso compartido de red, conocido como recurso compartido IPC (ipc$), en los ordenadores Windows para facilitar la comunicación entre los procesos y los ordenadores remotos.
Con respecto al modelo OSI, SMB opera en la capa 7 como un protocolo de capa de aplicación y se apoya en protocolos de nivel inferior para el transporte. En las primeras versiones de Windows, SMB se ejecutaba sobre el protocolo NetBIOS y utilizaba los puertos 137, 138 y 139 (puertos UDP 137, 138 y puertos TCP 137, 139). Como protocolo de capa de sesión, NetBIOS (capa 5 en el modelo OSI) permite que las aplicaciones se comuniquen a través de una red de área local (LAN) con nombres NetBIOS específicos del dispositivo, además de las direcciones IP. Sin embargo, desde Windows 2000, el protocolo SMB se ejecuta directamente en TCP/IP y utiliza el puerto 445.
¿Qué es Samba?
SMB es un protocolo específico de Windows y los ordenadores o servidores no Windows de una red no pueden interactuar con los ordenadores Windows a través de SMB.
Por este motivo, en 1992 se lanzó una implementación de código abierto del protocolo SMB, conocida como Samba, para dispositivos Unix y Linux. Soporta características similares a las de SMB, pero no sólo puede comunicarse entre dispositivos y servidores Unix/Linux, sino también con clientes Windows.
Qué tipos de servicios representa el protocolo SMB
El protocolo SMB, que corresponde a los niveles adecuados y representativos del modelo OSI, regula la interacción de la estación de trabajo con el servidor. La función SMB incluye las siguientes operaciones:
- Gestión de la sesión. Creación y ruptura de un canal lógico entre una estación de trabajo y los recursos de red de un servidor de archivos.
- Acceso a archivos: la estación de trabajo puede acceder al servidor de archivos con solicitudes para crear y eliminar directorios, crear, abrir y cerrar archivos, renombrar y eliminar archivos, buscar archivos, recuperar archivos e instalar archivos.
- Servicio de impresión. La estación de trabajo puede poner en cola archivos en el servidor y obtener información de la cola de impresión.
- Servicio de mensajes. SMB admite la mensajería sencilla con las siguientes funciones: enviar un mensaje simple, enviar un mensaje de difusión, enviar el principio del bloque de mensajes, enviar el texto del bloque de mensajes, enviar el final del bloque de mensajes, enviar el nombre de usuario, cancelar el envío, obtener el nombre de la máquina.
- A alto nivel, la representación del protocolo SMB es bastante simple. Incluye todas las operaciones posibles para trabajar con archivos e impresoras que se utilizan en un ordenador normal.
Cuestiones y problemas de seguridad
Especialmente debido a su amplia gama de características y a su compleja implementación (que es contraria al principio de «Economía de Mecanismos»), a lo largo de los años se descubrieron bastantes vulnerabilidades relacionadas con SMB y algunas de ellas causaron graves problemas de seguridad en todo el mundo.
Las más infames de estas vulnerabilidades fueron 5 vulnerabilidades de Ejecución Remota de Código (RCE) (CVE-2017-0143, CVE-2017-0144, CVE-2017-0145, CVE-2017-0146, CVE-2017-0148) que afectaban a los ordenadores Windows que ejecutaban SMBv1. Posteriormente, Microsoft publicó un parche MS17-010) el 14 de marzo de 2017, sin embargo, los expertos aconsejaron a los usuarios y administradores que tomaran la medida adicional de desactivar SMBv1 en todos los sistemas.
Tan solo un mes después de parchear las vulnerabilidades MS17-010, un grupo de hackers llamado Shadow Brokers filtró (el 14 de abril de 2017) el exploit Eternal Blue que supuestamente fue desarrollado por la Agencia de Seguridad Nacional (NSA) de Estados Unidos. Tras esta revelación, se detectaron dos infames programas maliciosos que se propagaban a través del exploit Eternal Blue. Primero, el ataque global de ransomware WannaCry tuvo lugar en mayo de 2017, afectando a más de 200 000 ordenadores que no estaban parcheados. Después, un ransomware más devastador con el nombre de NotPetya afectó incluso a ordenadores totalmente parcheados en junio de 2017 con los exploits EternalRomance y EternalBlue. NotPetya causó más de 10.000 millones de dólares en daños según un informe de la Casa Blanca.
Por poner ejemplos recientes, en 2020 se descubrieron las siguientes 2 notables vulnerabilidades SMB que afectan a SMBv3.1.1.
Medidas de seguridad
Dado el malware WannaCry y NotPetya y varias otras vulnerabilidades, incluyendo la SMBGhost y SMBleed que fueron descubiertas en la versión más reciente de SMB (v3.1.1), muchos administradores de red y profesionales de la seguridad se preguntan si debe ser desplegado en las redes o no. En general, la versión más reciente y parcheada de SMB se considera un protocolo seguro. Sin embargo, para reducir cualquier riesgo de seguridad debido a SMB, se deben tomar las siguientes medidas:
- No utilice SMBv1 ya que carece de cifrado, es ineficiente y debido a su compleja implementación podrían aparecer en el futuro otros fallos críticos similares a las vulnerabilidades MS17-010.
- Prefiera la última versión de SMB (SMBv3.1.1 a fecha de este post) siempre que sea posible. SMBv3.1.1 es más eficiente en comparación con las versiones anteriores de SMB y proporciona características de seguridad de última generación.
- Como mejor práctica de seguridad (mínimo privilegio), el acceso a SMB debe restringirse sólo a redes y clientes de confianza.
- Por último, pero no menos importante, si la funcionalidad de SMB no es necesaria, se debería desactivar SMB en las plataformas Windows para reducir la superficie global de ataque y filtrar la menor cantidad posible de información de huellas dactilares a los atacantes.
Espero que les haya gustado el post y les sirva de ayuda.
1 comentario