# ¿Qué es el Protocolo SMB (445)?
SMB (Server Message Block) es un protocolo de red que permite a aplicaciones y usuarios compartir archivos, discos, directorios, impresoras, puertos seriales y mail slots a través de una red, predominantemente en sistemas operativos Microsoft Windows. SMB sigue una estructura cliente-servidor, donde el cliente realiza una solicitud y el servidor responde. Básicamente, SMB permite a un cliente leer, crear y modificar archivos en un servidor remoto, facilitando la comunicación con cualquier servidor configurado para aceptar solicitudes SMB.
Además, existe Samba, una implementación libre del protocolo SMB con las extensiones específicas de Microsoft. Samba funciona en sistemas operativos GNU/Linux y otros UNIX, proporcionando compatibilidad y funcionalidad similar a la de SMB en entornos Windows. Como cualquier protocolo de intercambio de archivos en red, SMB necesita puertos de red para comunicarse con otros sistemas. Originalmente, utilizaba el puerto 139, que permitía la comunicación entre computadoras en la misma red local. Sin embargo, desde Windows 2000, SMB utiliza el puerto 445 y el protocolo de red TCP para establecer comunicación con otras computadoras, incluso a través de Internet.

# RECOPILAR y ENUMERAR RECURSOS | SMBMAP & SMBCLIENT
Para este ejemplo voy a utilizar la máquina Kenobi de TryHackMe y también la de Metasploitable 2.
- SMBMAP es una útil herramienta pensada en la post-explotación de un sistema, es decir, cuando ya se consigue el usuario y contraseña. Permite enumerar los recursos compartidos de un servicio SMB/Samba para así ver el contenido, los permisos, subir y descargar archivos, hasta la ejecución de comandos. Esta herramienta viene por defecto en Kali Linux.
Instalar en Debian:
$ sudo apt-get install smbmapPara hacer un escaneo predeterminado simplemente ingresamos la IP de destino de esta manera:
$ smbmap -H 10.10.241.119Podemos ver que anonymous tiene acceso de lectura. En el siguiente ejemplo, veamos cómo enumerar el directorio anonymous con el parámetro -r.
$ smbmap -H 10.10.241.119 -r anonymousNos muestra que el archivo log.txt tiene permiso de lectura (-r = read). Esta herramienta se utiliza en dos fases: una durante la recolección de información y la otra en la post-explotación. En el ejemplo anterior se utiliza antes de la explotación (recopilar información), ahora veamos para enumerar recursos de samba en la post-explotación (cuando ya se tiene las credenciales del objetivo).
$ smbmap -H 192.168.25.130 -u msfadmin -p msfadmin| COMANDO | DESCRIPCION |
|---|---|
| -H | Dirección IP de destino |
| -u | Usuario |
| -p | Contraseña |
-
SMBCLIENT es otra alternativa que permite acceder a los recursos compartidos de un servidor SMB, se usa principalmente para subir y descargar archivos; sus comandos comparten similitudes a una conexión FTP.
-
Instalar en Debian:
$ sudo apt-get install smbclientPara acceder a los recursos compartidos se debe ejecutar lo siguiente:
$ smbclient //10.10.241.119/anonymous -N| COMANDO | DESCRIPCION |
|---|---|
| -N | Sesión de tipo NULL, sin credenciales |
Con credenciales:
$ smbclient //192.168.25.130/tmp --password=msfadminAhora, una vez dentro veamos como descargar un archivo, en mi caso el log.txt.
$ get log.txtObtener información del archivo:
$ allinfo log.txtY como ven, desde la máquina local he descargado el archivo para una mejor inspección.
# RIESGO A TOMAR EN CUENTA
Tener el protocolo SMB abierto puede permitir a un atacante remoto obtener información confidencial de los sistemas afectados mediante recursos compartidos como se observan en los ejemplos. Una de las vulnerabilidades más famosas fue la de EternalBlue, utilizada por el ransomware WannaCry en el año 2017, y también en la vulnerabilidad SMBGhost que permitió ejecutar comando remoto.
Como acción recomendada, deshabilita el puerto 445 desde el firewall de Windows a menos que se necesite por algún servicio. Para ello se deben ir a la configuración de Firewall de Windows Defender > Configuración avanzada.
Luego a Reglas de Salida > Nueva regla.
Seleccionan puerto y le dan a siguiente.
Escriben el número del puerto (445) y le dan a siguiente.
Bloquean la conexión del puerto.
Activan las tres casillas.
Y por último le dan un nombre a la regla para que sea fácil identificarla y así poder modificarla cuando se requiera.
Y con esto ya bastaría, recuerda que para volver a usar el protocolo deben deshabilitar la regla o permitir la conexión desde propiedades,