Publicaciones HTB-NEST
Post
Cancel

HTB-NEST

Decripción del entorno

Atacante

OSKali Linux
IP10.10.14.199

Maquina Objetivo

OSWindows
IP10.10.10.178
Dificultad5.2/10 / Medium
URLNest

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

Escaneo con Nmap 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

SMBClient 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=””

Carpeta Data montada Montaje de la carpeta Data

Encontramos un archivo muy interesante en la ruta:

  • /Shared/Templates/HR/Welcome Email.txt

Welcome Email 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 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 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”?>
389 c.smith fTEzAfYDoz1YzkqhQkH6GQFYKp1XY5hm7bjOP86yYxE=

```

Ahora montamos y revisamos la carpeta competida Secure$:

Carpeta 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

NotepadPlusPlus 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:

IT Carl 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

Decrypt RuScanner 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 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 usuario cSmith 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:

Servicio HQK 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
  • 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

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:

Password Oculta 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 HQK con credenciales 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:

Decompiling hdqladp.exe 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 Password descifrada

Obtenemos la credencial de administrator, así que ahora intentamos conectarnos:

  • Administrator: XtH4nkS4Pl4y1nGX

Capturamos la flag de usuario administrador:

Acceso como System Acceso como System

Referencias

  1. Decompilador .NET gratuito y Navegador Assembly
This post is licensed under CC BY 4.0 by the author.
Tabla de Contenido