¿Qué es SMB?
SMB (Server Message Block) es un protocolo de red que permite compartir archivos, impresoras y otros tipos de recursos entre dispositivos de una red.
SMB es un protocolo que permite que aplicaciones y usuarios remotos accedan a archivos, bases de datos y otros recursos como si estuvieran en su propio sistema.
SMB utiliza un modelo cliente-servidor, donde un cliente solicita un recursos y el servidor le proporciona el acceso a dicho recurso.
Enumeración de SMB
En este caso vamos a utilizar una de las máquinas de la pagina TryHackMe.
Vamos a comenzar con un escaneo de versión con Nmap. Queremos asegurarnos que SMB esté funcionando y averiguar sus puertos.
El escaneo detecta tres puertos abiertos en una maquina Linux.
En el puerto 22 funciona el servicio SSH y en el 139 y 445 funciona Samba, la implementacion Linux para el protocolo SMB.
Confirmamos entonces, mediante Nmap, que este protocolo está corriendo en puertos abiertos.
Para enumerar SMB utilizamos un programa llamado Enum4Linux, una aplicación de consola que, mediante un comando, nos entregará una lista de información de las carpetas SMB.
En esta imagen vemos que nos entrega una lista de nombres de usuario.
En esta otra imagen la enumeración de información nos revela:
-Nombre de la maquina
-Version del S.O
Tambien nos revela una lista de carpetas compartidas.
-netlogon
-profiles
-prints
-IPC
Podemos deducir que, en la carpeta Profiles, encontraremos información sensible para nuestra prueba de explotación.
Explotación de SMB
Probamos entonces la seguridad del sistema SMB intentando loguearnos sin contraseña y con un usuario inventado. En este caso "Tete", el nombre de mi gato.
Para esto utilizamos el comando:
"smbclient //<IP>/profiles -U <USUARIO> -p445
Queremos entrar en la carpeta profiles para reunir información importante.
El logueo es exitoso.
Mediante el comando "ls" podemos listar los archivos contenidos en la carpeta profiles.
Podemos deducir que hay una cosa que nos interesa mucho: El archivo de texto "Working From Home Information.txt"
Utilizando el comando "mget <NOMBRE DEL ARCHIVO>" abrimos el fichero.
Allí encontramos un mensaje dirigido a un tal John Cactus, procede desde el jefe del departamento. En el mismo se le detalla que, por causa de la pandemia, los empleados deben trabajar desde casa y se le ha habilitado el protocolo SSH para conectarse.
Si estuvimos atentos a la carpeta profiles, recordaremos que había una carpeta llamada SSH. ¡Podemos entrar allí!
Una vez dentro encontramos 3 archivos. Los descargamos todos con el comando "mget*"
Tenemos guardado el fichero id_rsa en el directorio principal de Kali. Este archivo es la clave de acceso del usuario al sistema SSH.
En este caso tambien tenemos el archivo id_rsa.pub (que contiene el hash de la contraseña y el nombre del usuario).
Para asegurarnos de que poder hacerlo, inicamos en Kali una consola de administrador y movemos el archivo id_rsa a la carpeta /.ssh.
Una vez allí le cambiamos los privilegios con
"chmod 600 id_rsa"
Abrimos, finalmente, el archivo id_rsa.pub y obenemos un hash y, a lo ultimo un posible nombre de usuario:
cactus@polosmb
Desde dentro de la carpeta /.ssh nos conectamos al protocolo
"ssh cactus@<IP>"
El sistema nos pide confirmación y, al tener el archivo id_rsa, nos permite entrar.
Listamos los archivos. Encontramos el fichero smb.txt.
¡Y listo! Hemos capturado la bandera!
Esta vulnerabilidad que hemos encontrado se debe a una mala configuración del sistema. El protocolo SMB tiene varias otras formas de acceso que son interesantes de investigar.
NOTA: Todas estas pruebas fueron realizado en la página TryHackMe, un sitio que ofrece entornos controlados para practicar pentesting..
Estos procedimientos no deben realizarse a equipos ajenos sin una previa autorización.