Como siempre empezaremos a enumerar nuestra máquina víctima con Nmap.
Con el anterior escaneo de Nmap, logramos identificar varios servicios interesantes, incluyendo un sitio de Sharepoint.
A continuación, realizaremos un descubrimiento de directorios con Gobuster utilizando uno de los diccionarios SecLists.
Seclists, es una colección de múltiples tipos de diccionarios utilizados durante las evaluaciones de seguridad, compilados en un solo lugar. Estas listas incluyen nombres de usuario, contraseñas, URLs, patrones de datos confidenciales, cargas útiles de fuzzing y muchos más.
Gobuster, es una herramienta utilizada para la fuerza bruta:
- Descubrimiento de URLs (directorios y archivos) en sitios web.
- Descubrimiento de subdominios DNS. Artículo completo en Kali-Linux
Entre los resultados arrojados por el Gobuster, mostraré los más relevantes.
De todo lo encontrado por el Gobuster, una de las rutas más interesantes de un sitio hecho con Sharepoint, son:
Revisaremos las rutas mencionadas anteriormente.
Página de inicio de Sharepoint
Podemos identificar que hay un documento y también una página que aparece en el directorio.
Si revisamos la página de Documentos, se nos presenta lo siguiente:
Documento con nombre interesante en una ruta de Sharepoint
Abriendo un documento de Sharepoint
Después de descargar el archivo, se nos presenta la siguiente información:
Aparentemente encontramos unas credenciales de FTP, seguiremos enumerando para ver si encontramos información sobre el usuario.
Vamos a revisar la otra ruta que teníamos.
Encontrando un documento ofimatico
Usuario FTP encontrado
Ok, ya tenemos un nombre de usuario y una contraseña para el servicio FTP.
Vamos a autenticarnos.
Encontramos algunos directorios, después de listar un rato encontramos algunas cosas interesantes.
Especificamente, en la carpeta de Tim encontramos una base de datos de KeePass.
Tomemos esa base de datos de KeePass y veamos si podemos descifrar la contraseña con HashCat; pero primero debemos extraer un hash compatible con HashCat, para ello utilizaremos una herramienta llamada keepass2john de la suite John The Ripper.
Hashcat es la utilidad de cracking de contraseñas más rápida y avanzada del mundo, que admite cinco modos de ataque únicos para más de 200 algoritmos de hashing altamente optimizados. Actualmente, hashcat es compatible con CPUs, GPUs y otros aceleradores de hardware en Linux, Windows y OSX, y cuenta con facilidades para permitir el crackeo distribuido de contraseñas. Artículo completo en Kali-Linux
Jhon The Ripper, está diseñado para ser rico en características y rápido. Combina varios modos de craqueo en un solo programa y es totalmente configurable para sus necesidades particulares. Artículo completo en Kali-Linux
Ahora que tenemos nuestro hash podemos intentar crackearlo con hashcat.
NOTA: Elimine tim: del hash antes de intentar crackear.
Voy a utilizar HashCat en Windows, de esta manera puedo identificar mi GPU y el proceso de cracking será más rápido.
La contraseña de Tim es simplementeyo.
Abramos la base de datos con Keepass.
Y en esta encontraremos un usuario y una contraseña.
Comprobemos estas credenciales con smbclient. SMBCLIENT, Es un cliente SMB para máquinas UNIX. Proporciona una interfaz similar a la de ftp en la línea de comandos. Puede utilizar esta utilidad para transferir archivos entre un “servidor” de Windows y un cliente de Linux. Articulo Completo
Accedamos al directorio ACCT.
En primer lugar, encontramos información de conexión SQL dentro de la carpeta zz_Archived.
Miramos el contenido del archivo con el comando cat.
Después de una búsqueda entre los directorios, encontramos tester.exe parece interesante y parece ser personalizado.
El siguiente paso es ver las cadenas de caracteres imprimibles del archivo .EXE con STRINGS.
Listo, hemos encontrado un nombre de usuario y una contraseña para el servicio de MSSQL.
Gracias a estas credenciales encontradas podemos autenticarnos sobre el SQL Server.
Obteniendo una shell #1 (Veil)
Nos identificamos con las credenciales anteriores con sqsh. SQSH, es un cliente SQL de línea de comandos para servidores MS SQL y Sybase para conectarse a servidores Sybase o Microsoft SQL. Referencia
Después de autenticarnos, debemos habilitar el xp_cmdshell para que podamos obtener la ejecución de comandos en nuestra máquina víctima.
Listo, ahora vamos a intentar algo sencillo vamos a listar el disco C.
De esta manera validamos que ya podemos ejecutar comandos en la víctima.
Excelente, después de tener nuestro RCE, procederemos a enumerar todo.
Ejecutaremos el comando systeminfo, que se utiliza para devolver la información del sistema.
Al parecer, algunos comandos no están disponibles.
Para evitar estos errores debemos utilizar el operador & de la siguiente manera:
Perfecto, aparentemente nuestra máquina comprometida tiene como sistema operativo, Windows Server 2016.
Por otro lado, hay una nota en el escritorio de Sarah que nos indica que Windows Defender se encuentra activo y también parcheó el sistema.
Evasion de Windows Defender con Veil-Evasion
Generaremos un payload con Veil y lo subiremos al servidor FTP, concretamente a la carpeta Intranet.
Después de generar el exe podemos subirlo vía FTP a la carpeta de la Intranet.
Sabemos que tenemos permisos de escritura allí por las instrucciones del archivo llamado Finance encontrado en el SharePoint.
Ahora podemos iniciar nuestro handler en Metasploit y ejecutar nuestro payload vía SQL.
El EXE se ejecutaría de la siguiente manera.
Tras ejecutarlo, en nuestra ventana de metasploit recibiremos nuestra shell.
Otra forma más fácil de obtener un shell en esta máquina, sería usando un auxiliar de metasploit.
Obteniendo una shell #2
Evading Windows Defender with Metasploit
Hagamos un payload de meterpreter usando msfvenom. Si usamos el formato psh-reflection nuestro payload evade la detección del antivirus:
Configuramos nuestro oyente con exploit/multi/handler:
Ahora, suba Malware2.ps1 a /Intranet vía FTP.
Podemos ejecutar nuestro payload a través de MSSQL como hemos indicado anteriormente:
En el parámetro CMD del auxiliar, debemos configurarlo para que ejecute con powershell nuestro payload ofuscado.
El auxiliar utilizado es auxiliary/admin/mssql/mssql_exec.
El módulo admin mssql_exec aprovecha el procedimiento almacenado xp_cmdshell para ejecutar comandos en el sistema remoto. Reference
Después del comando exploit, tenemos nuestro shell:
Escalada de privilegios
Aquí lo interesante es que la cuenta de Sarah se está ejecutando como la cuenta de servicio de SQL. Así que tal vez podamos elevar ya que las cuentas de servicio suelen tener privilegios especiales.
Para esta parte final aprenderemos a usar Incognito y RottenPotato.
Incognito era originalmente una aplicación independiente que permitía suplantar los tokens de los usuarios cuando se lograba comprometer un sistema. Reference.
El exploit de la patata podrida es una técnica de escalada de privilegios que permite escalar desde cuentas de nivel de servicio a SYSTEM a través de la suplantación de tokens. Reference.
A través del comando getprivs podemos verificar todos los privilegios habilitados al proceso actual.
Subimos el rottenpotato a nuestra máquina comprometida.
Cargamos el módulo en nuestra sesión de Meterpreter ejecutando el comando use incognito. Ejecutando el comando help nos muestra la variedad de opciones que tenemos para incognito y breves descripciones de cada opción.
Vemos aquí que hay un token de administrador válido que parece ser de interés. Ahora necesitamos suplantar este token para asumir sus privilegios.
Como se ve en la captura de pantalla anterior, nos muestra que en los tokens disponibles solo hay NT SERVICE\SQLSERVERAGENT.
Es el momento de utilizar el rottenpotato que acabamos de descargar, para ejecutarlo debemos hacer lo siguiente:
Bien, ya tenemos un Token disponible de NT AUTORIDAD\SISTEMA.
Para realizar la suplantación del token hacemos lo siguiente: