viernes, 31 de diciembre de 2021

Reto Forense - HTB: EMO

 

Abrimos el archivo comprimido que nos hemos descargado, y vemos que contiene un archivo de tipo ofimático.

Pues como ya comente en alguna otra entrada que no recuerdo, suelo seguir los siguientes pasos:

1.- Abrir el archivo ofimático con un gestor de archivos comprimidos, como por ejemplo: winrar, con lo que analizo la estructura interna del fichero. Aunque en muchos casos la información obtenida no es muy prometedora.

2.- Abrir el documento, y comprobar si el documento tiene macros. Es fácil, si el gestor de archivos ofimáticos con el que abramos el documento no sugiere activar las macros, es que obviamente hay macros dentro del documento.

Si tenemos macros, sugiero la modificación de la/s susodicha/s para así poder analizar el código y, si se considera, ejecutar la macro paso a paso.

En este caso, la macro solicita una contraseña para poder acceder a su contenido, por lo tanto, estamos en vía muerta

3.- Usar la herramienta: oledump, de Didier Steven, para analizar el contenido. Si el contenido tuviera macros, las detectaría e incluso podría extraerlas para su posterior análisis.

 

Para el archivo ofimático que estamos analizado se ha hecho se ha seguido este último punto. Pero tras analizar el archivo, se ha podido ver que el cogollo del asunto reside en alguna variable/propiedad definida dentro del documento, por lo que sin ese contenido, la ejecución que hagamos resulta ineficaz

Por este motivo, pasamos a ejecutar el archivo, teniendo el programa visor de procesos: Process Explorer.exe , en ejecución.

Pues bien, uno de los procesos que se crean y que son hijos del archivo ofimático, es un proceso de PowerShell que si pausamos, podemos ver el comando que se ejecuta… o eso creía

 


Como se ve, el comando a ejecutar viene codificado en base64, pero el problema no es ese, el problema es que no es posible copiar todo el mensaje codificado para decodificarlo. Los campos de texto en Visual Basic tienen limitado en número de caracteres.

¿Y ahora qué?... Pues hay varias opciones:

1.- Un dumpeo de la memoria del proceso anterior, mediante el propio programa: Process Explorer

Para ello sólo tenemos que botón derecho sobre nuestro proceso de PowerShell parado y seleccionar: Create Dump > Create Full Dump > Seleccionar ubicación y nombre del archivo.

 


Ahora ya sólo nos queda abrir un editor hexadecimal y buscar por alguna parte el código en base64 encontrado anteriormente.

 

2.- Si hemos instalado antes de la ejecución la herramienta Sysmon, podemos visualizar dentro de Visor de Procesos los eventos con ID 1.

Pues para eso nos vamos al visor de eventos y buscamos: Registros de aplicaciones y servicios > Microsoft > Windows > Sysmon > Operational.

Tras unos minutos buscando, llegamos hasta el premio.

 


Bueno, tras extraer nuestra preciada materia prima, procedemos a decodificar y obtenemos nuestro ansiado código fuente:


Lo primero que llama la atención es una parte del código en dónde se utiliza la función: downloadfile, que creo que no hace falta explicar lo que hace. Se extraen las distintas URLs que contiene el código pero, ni sus visitas ni la estructura de las URLs nos facilita pistas.

Por lo tanto, nos toma ahondar en el código de nuevo.

Revisandolo vemos que hay una condición que nunca se dará y que depende de la descarga de un archivo desde cualquiera de las anteriores URL. Pero qué ocurre si comentamos dicha condición.


Pues que tras la ejecución del código vemos que se ha creado la estructura de directorio: Jrbevk4/Ccwr_2h. Y que dentro aparece un archivo de nombre: Ale7g_8.conf, que contiene el siguiente texto en base64


Al intentar decodificarlo no obtenemos ningún texto legible, pero eso es porque hay que fijarse en un parte del código que a primera vista se me paso desapercibida. La puedes ver a continuación

 


Ok, pues apliquemos la función XOR con clave: 0xdf, a texto codificación en base64.

 


 

¡Perfecto!, hemos obtenido nuestro premio.

En cualquier caso

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.