Decripción del entorno
Atacante
| OS | Kali Linux |
| IP | 10.10.14.199 |
Maquina Objetivo
| OS | Windows |
| IP | 10.10.10.178 |
| Dificultad | 5.2/10 / Medium |
| URL | Nest |
Enumeración
Se realiza la enumeración habitual para el reconocimiento e identificación de los puertos abiertos en el sistema:
1
$ nmap -sS -sV -sC -oA nmap_nest 10.10.10.178
Resultado escaneo con nmap
Unicamente se identifica el puerto 445(SMB), así que se intenta una enumeración de sesión nula usando SMB, para identificar las carpetas compartidas:
1
$ smbclient -U "" -L 10.10.10.178
Enumeración por sesión nula con smbclient
Se identifican los siguientes directorios compartidos:
/Data//Secure$/Users/
Montamos la carpeta /Data/ y vemos su contenido:
1
$ sudo mount -t cifs //10.10.10.178/DATA tmp/ -o user=””
Montaje de la carpeta Data
Encontramos un archivo muy interesante en la ruta:
/Shared/Templates/HR/Welcome Email.txt
Informacion del archivo “Welcome Email.txt”
- TempUser: welcome2019
El acceso a esta carpeta permite la captura de credenciales en texto claro, por lo que se validan y se montan de nuevo los volumenes pero haciendo uso de las credenciales:
1
2
$ sudo mount -t cifs //10.10.10.178/DATA smb/ -o user="TempUser"
$ sudo mount -t cifs //10.10.10.178/Users smb2/ -o user="TempUser"
Ya se tiene visibilidad a la carpeta /Users:
Acceso con TMPUser
Ahora, considerando un ataque de Password Spraying, utilizamos la credencial ya capturada y la aplicamos a todos los nombres de usuario identificados previamente:
- Administrator
- L.Frost
- C.Smith
- R.Thompson
Password Splaying
Obteniendo de esta manera que el usuario L.frost y R.Thompson poseen la misma contraseña por defecto. Se verifican los accesos y se obtiene más información:
DATA/IT/Configs/RU Scanner/RU_config.xml```xml <?xml version=”1.0”?>
```
Ahora montamos y revisamos la carpeta competida Secure$:
Carpeta compartida Secure
Nota: En este punto se demoró un poco el analisis, hasta que nos percatamos de que hay subdirectorios en /Secure/ que podían ser accedidos directamente.
DATA/IT/Configs/Notepadplusplus/config.xml
Archivo de configuración Notepad Plus PLus
Por lo que sabemos que existe la siguiente ruta en Secure$:
\\HTB-NEST\Secure$\IT\Carl\Temp.txt
Así que se accede de forma directa:
Acceso al directorio oculto
Encontramos archivos de desarrollo del proyecto RUScanner, que nos prindan una luz sobre cómo descifrar la contraseña del usuario c.smith, así que lo descargamos e intentamos analizarlo para encontrar la funcionalidad y los parámetros requeridos para descifrar:
/RUScanner/Utils.vb
Codigo decrypt RuScanner
Dentro del archivo encontramos los parámetros para descifrar por medio de la función Decrypt. Ahora nos copiamos todo ese código funcional y simplemente creamos una función MAIN() en donde llamaremos a DecryptString, y lo compilaremos utilizando esta herramienta online para código VB.NET.
Al poder leer el código del proyecto, se extraen los parametros necesarios para el descifrado de la información:
- cipherText
- passPhrase
- saltValue
- passwordIterations
- initVector
- keySize
Password Decrypt
Todo el código utilizado lo tenemos en el siguiente enlace:
- https://dotnetfiddle.net/tzEk1b
Y efectivamente obtenemos el resultado de la contraseña descifrada:
- C.smith : xRxRxPANCAK3SxRxRx
Elevación de Privilegios
Una vez obtenidas las credenciales, se intenta la conexión al servidor SMB para recolectar más información en la carpeta /Users/C.smith
Acceso a la carpeta del usuario C.Smith
Descubrimos información interesante del programa HQK, con algunos archivos de configuración y un archivo interesante llamado “Debug Mode Password.txt” el cual parece estar vació.
En el archivo HQK_Config_Backup.xml vemos la existencia de otro puerto que al consumirlo nos permite un interacción mediante algunos comandos:
Acceso al servicio HQK en el puerto 4386
Los comandos principales son:
SETDIR- Tiene el funcionamiento como
CD(Change Directory – Linux) y nos permite movernos entre directorios
- Tiene el funcionamiento como
SHOWQUERY- Muestra el contenido de archivos, pero requiere una credencial de debug.
LIST- Nos permite hacer un
LS(List) el cual nos deja listar los archivos de la carpeta actual
- Nos permite hacer un
Estos comandos nos permite movernos por todo el sistema, viendo las carpetas y nombres de archivos, no obstante, para poder leer los archivos necesitamos mayores privilegios.
NOTA: La verdad esta parte fue fundamental para resolver toda la maquina, pues aunque sí me causo intriga el archivo “Debug Mode Password.txt” pero solo después de mucho tiempo se me ocurrió que tendría un archivo STREAM dentro de si mismo, al mejor estilo de CTF y Wargames.
Después de descubrir el truco, podremos descargar el archivo STREAM escondido y no el archivo falso, que al descargarlo se encuentra vacio:
Acceso al servicio HQK en el puerto 4386
Ahora podemos acceder al modo debug del puerto 4386 que nos deja leer archivos internos, así que lo primero que hacemos es buscar el de configuración del software HQK:
Acceso al servicio HQK con credenciales
Leyendo este archivo de configuración ldap.conf nos damos cuenta de que hay una credencial cifrada al igual que al inicio, pero NO funciona el mismo código que extraimos al inicio, así que seguimos buscando más archivos y nos topamos con el ejecutable hdkladp.exe en la carpeta de C.smith.
Decompiling
Este archivo intentamos ejecutarlo, ver strings e intentar romperlo para ver sí nos permitía saltar algún tipo de flag, sin embargo, lo último que se intento fue decompilarlo con dotpeek de jetBrains, y es aquí donde encontramos el código de descifrado:
Codigo decompulao del ejecutable hdkladp.exe
Vemos la misma estructura del primer código pero unos parámetros diferentes, así que hacemos el mismo proceso e intentamos descifrar esta nueva llave:
- Hash: yyEq0Uvvhq2uQOcWG8peLoeRQehqip/fKdeG/kjEVb4=
Lo compilamos online:
Password descifrada
Obtenemos la credencial de administrator, así que ahora intentamos conectarnos:
- Administrator: XtH4nkS4Pl4y1nGX
Capturamos la flag de usuario administrador:
Acceso como System
Referencias
- Decompilador .NET gratuito y Navegador Assembly