Hola a tod@s!!

Últimamente he visto un repunte del stealer AgentTesla, así que me he decidido a dedicarle un post para ver cómo podemos identificarlo rápidamente, desde que llega al correo hasta si nos lo encontramos directamente en uno de los procesos de una máquina que estemos analizando, esperemos que esto no nos pase nunca, jeje.

Antes de empezar, vamos a recordar " quién es AgentTesla " :

 Agent Tesla es un software espía que recopila información sobre las acciones de sus víctimas mediante el registro de pulsaciones de teclas e interacciones del usuario. Se comercializa falsamente como un software legítimo en el sitio web dedicado donde se vende este malware.

 Más abajo podemos leer:

El software espía está creado utilizando el Framework de software .Net. Su objetivo es robar datos personales y transmitirlos de vuelta al servidor C2. El malware es capaz de acceder a información de navegadores web, clientes de correo electrónico y servidores FTP.
 Además, el malware de Agent Tesla puede realizar capturas de pantalla y videos. También puede grabar información del portapapeles y valores de formularios.

Digamos que sería como el punto de entrada para poder acceder a los datos de los usuarios que consiga comprometer, acceso a las credenciales de los navegadores

Cuidado si decidís guardar las credenciales al autenticarte en algún sitio

lo mismo ocurre con las credenciales guardadas en los clientes de correos (¿seguro que queremos guardarlo para no tener que introducirlas cada vez que accedamos?) o los clientes de FTP. 

Alguno pensaréis, da igual, capturas las teclas y te las pillaran igualmente. Bueno, la cosa es ponerlo lo más difícil a los atacantes.

 Podemos ver como en la plataforma de Any.run se registran una serie de IOC:

IOCs Stealer AgentTesla

Vemos como aparecen URLs, de FTP, de la api de Telegram, dominios, IP, etc. Esto es debido a existen diferentes formas de exfiltrar los datos que sea capaz de obtener, es configurable, puedes utilizar cualquiera de esos métodos.

Veamos unos ejemplos de como llegan por correo, por ejemplo: 

Correo Tesla Stealer

Las facturas siempre son atractivas para los atacantes, ¿Quién no trata de comprobar una factura que, a priori, no ha solicitado?

Si nos fijamos en la extensión, no es un zip o un rar o un 7zip. ¿O sí lo es?

Archivo Mail Stealer Tesla Malware

Pues se trata de un fichero comprimido con RAR.

Archivo rar Malware

Así que podemos renombrarlo a .rar o abrirlo directamente con Winrar como ya habíamos hecho.

¿Por qué le cambian la extensión origial .rar a .gz?

Lo que se me ocurre es para tratar de confundir a las herramientas que analizan según la extensión. Si fuese RAR el Antivirus de turno podría entrar en acción mientras que si es un GZIP, puede que no se comporte como se espera. Además de parecer que podría ser inocuo de alguna forma. El caso es que se ven muchos .tar, .gz, etc. que son en realidad ficheros RAR. Esto ya nos puede hacer que desconfiemos sobre lo que se oculta dentro de ese fichero, podría ser malicioso.

 Empezaremos con el análisis estático, se trata de un binario .Net para arquitecturas de 32 bit.

Libreria .Net maliciosa

¿Es reciente?

Fecha de creación de libreria net maliciosa

Mira por donde, la posible fecha de compilación (ojo con esto que se puede alterar fácilmente como podéis comprobar en esta muestra) es de 2102, faltan muchos años para que se cree, ¿verdad? xD

Otra característica más para desconfiar, una muestra que viaja en el tiempo.

Como está compilada con .Net, podemos echarle un vistazo rápido con dnSpy y ver su código fuente, la idea es tratar de identificar ese comportamiento que nos mencionaba Any.run.

Análisis Dnspy de libreria .Net maliciosa

Nos fijamos en el punto de entrada y pulsamos sobre él.

Punto de entrada de la librería .NET maliciosa del Stealer Tesla

Vemos en las funciones de la izquierda nombres que no tienen mucho sentido, lo que implicaría ofuscación. No lo quieren poner fácil, es normal, la mayoría de las aplicaciones .Net se ofuscan ya que con herramientas como esta, se puede llegar al código fuente original.

Podemos observar como aparecen funciones relacionadas con criptografía, por lo que posiblemente, esta muestra no sea el malware final, sino que se encuentra cifrado y en algún momento lo descifrará y ejecutará.

Descifrado para libreria ofuscada para posterior ejecución de Malware

Así que tenemos 2 opciones, seguir con el reversing (más tiempo) o ejecutar, esperar y extraer.

 Abrimos Procmon para ver el comportamiento:

Ejecución de Procmon

Esta herramienta tiene una opción de mostrar un árbol de procesos de la ejecución.

árbol de procesos de la ejecución Procmon

En donde podemos observar una inyección en el mismo proceso, Process Hollowing. Pues utilizamos la herramienta Hollows_hunter32.exe para extraer el malware de segundo PID que vemos, del 2352.

Hollows Hunter Liberia Maliciosa Stealer Tesla

Aunque si preferís poner breakpoints y capturar la muestra final, podéis ir directamente a las API ReadProcessMemoryVirtualAllocEx y varios WriteProcessMemory.

API ReadProcessMemory VirtualAllocEx y varios WriteProcessMemory

Aparecen un par de binarios dentro del directorio, el que nos interesa es “400000.soya crypted.exe”. Otra aplicación .Net.

App de cifrado interna 400000.soya
¿Será también una muestra del futuro?

Esta no, es del pasado, cercano…

Fecha de libreria .NET con fecha pasada cercana en el malware

Si pulsamos en el punto de entrada, aterrizamos aquí y vemos de nuevo, que las funciones aparecen ofuscadas:

Funciones ofuscadas

Usaremos De4Dot para desofuscarlas, seguro que algo mejora y así ha sido, ya vemos el Main.

De4Dot Library Decript

Han aparecido algunas funciones que antes no estaban como ns0 y ns1. Ahora ya no queda otra que bucear en el código fuente para detectar todas las acciones maliciosas que realiza este malware.

Veamos un ejemplo, no podemos ver todos porque son muchos, en este caso vemos como trata de buscar credenciales en un fichero llamado logins.json, perteneciente al navegador Mozilla Firefox.

Búsqueda de credenciales en Firefox Malware Stealer Tesla

Este sería el aspecto de ese fichero logins.json que busca:

Archivo Login.json sobre el que el Malware busca credenciales

Si encuentra credenciales que pueda descifrar, estaremos perdidos:

Desencriptar contraseñas del navegador guardadas

Así que pensaros si realmente queréis almacenar credenciales en los navegadores o usar algún gestos de contraseñas, ahí lo dejo.

No solamente extrae las credenciales de Firefox, sino de multitud de navegadores y clientes, lo podemos ver a continuación:

Lista de navegadores que ataca el Stealer Tesla

Podemos exportar el proyecto y así poder trabajar con “grep”, más rápido para identificar ciertos comportamientos:

$ grep VA9 p3N5Y/fAUNhG4wfK.cs | grep true | awk -F\" '{print $2}'

Opera Browser
Chromium
BlackHawk
Flock
Citrio
CyberFox
Sleipnir 6
Liebao Browser
Coccoc
Uran
Iridium Browser
Sputnik
WaterFox
Postbox
K-Meleon
Coowon
CentBrowser
IceCat
Torch Browser
Chrome
Orbitum
PaleMoon
360 Browser
Epic Privacy
IceDragon
Firefox
Edge Chromium
7Star
SeaMonkey
Elements Browser
Comodo Dragon
Amigo
QIP Surf
Yandex Browser
Chedot
Cool Novo
Brave
Vivaldi
Thunderbird
Kometa

Da miedo, ¿verdad? Son muchísimos clientes, ¿Quién no usa alguno de ellos? Digamos, que este malware sabe como obtener las credenciales almacenadas en todos ellos

A la hora de mostrar los resultados, dependiendo de si es en formato texto o html, muestra los siguientes datos, en este caso en formato texto:

Búsqueda de credenciales en los navegadores

Otra de las características es que tenía capacidades de Keylogger, y aquí tenemos el fichero que deberíamos buscar para comprobar si estamos comprometidos. En el directorio temporal, log.tmp.

IOCs stealer malware

Para profundizar como lo hace, se puede acceder a la función correspondiente:

Guardado de credenciales en los logs

También capturaba el portapapeles, como podemos comprobar.

Captura de portapapeles Malware

Y realizar capturas de pantalla:

Capturas de pantalla malware

Además de todo lo que encuentre, envía información sobre la máquina en cuestión:

$ grep -E "<br>.*;" ppkr/HaT.cs | awk -F\" '{print $2}' | sed 's/<br>//g'

RAM: 
OSFullName: 
Computer Name: 
User Name: 
IP Address: 
CPU: 

Llegados a este punto nos interesa, sobre todo, saber a donde se van a enviar las credenciales o los datos obtenidos, y en este caso tenemos que será por correo a través del protocolo SMTP. Esto se encuentra en la configuración del malware:

Servidor exfiltracion de malware Stealer

 ¿Podemos detectar este malware con reglas Yara?

Como suelo utilizar CAPE, pondré la regla Yara incluída en la sandbox.

Comprobando antes que lo detecta:

$ yara AgentTesla.yar .
AgentTeslaV3 400000.soya crypted.exe

 ¡Lo detecta!, así que nos sirve.

Espero que os haya gustado el post y nos vemos en el siguiente.

¡¡¡Hasta otra!!!