Emotet: características y funcionamiento
Emotet, el malware polimórfico del que ya hemos registrado noticias de sus actuaciones en INCIBE-CERT (Estados Unidos y España), no ha dejado de evolucionar desde sus inicios, cuando era catalogado como un troyano bancario, hasta la actualidad, donde su principal función es la de actuar como un “downloader”, es decir, permitiendo la descarga y ejecución de otros malware como Trickbot, cifradores de archivos, etc.
Como modus operandi, los atacantes, habitualmente, utilizan correos electrónicos fraudulentos con adjuntos o enlaces a archivos ofimáticos maliciosos que mediante macros, buscan la descarga y ejecución de Emotet, intentando así eludir a los antivirus.
En esta entrada se analizará uno de esos documentos ofimáticos, un archivo .doc con macros, mediante el análisis estático y dinámico de la muestra en un entorno controlado, con el objetivo de identificar las acciones que realiza este código dañino.
Análisis
La muestra de estudio se ha obtenido de VirusTotal, al ser identificada durante la búsqueda de la familia Emotet.
- Tabla 1. Detalles de la muestra de malware. -
La información que se obtiene mediante el comando file desde un sistema operativo Linux es la siguiente:
Composite Document File V2 Document, Little Endian, Os: Windows, Version 10.0, Code page: 1252, Template: Normal.dotm, Revision Number: 1, Name of Creating Application: Microsoft Office Word, Create Time/Date: Tue Jul 21 23:37:00 2020, Last Saved Time/Date: Tue Jul 21 23:37:00 2020, Number of Pages: 2, Number of Words: 5, Number of Characters: 30, Security: 0
Lo primero que se observa durante el análisis es que las macros contenidas en el documento utilizan una técnica de bypass para ocultar su contenido del visor específico de Microsoft Office. Sin embargo, aunque estas no puedan ser visualizadas, la advertencia para la ejecución de macros sigue apareciendo, tal y como se muestra en la siguiente imagen:
- Figura 1. Aviso de macros en documento malicioso. -
En caso de que el usuario permita la ejecución y su máquina se encuentre conectada a Internet, las macros descargarán el código malicioso.
Por medio de la herramienta OleVBA es posible ver el contenido de la macro a ejecutar, además de mostrar el contenido También cuenta con opciones de decodificación que permiten una visualización más amigable.
- Figura 2. Macros vistas desde OleVba. -
A continuación, se establecen las versiones de TLS que se utilizarán en futuras comunicaciones con un posible C&C por medio de una sentencia codificada en base64 a través de la consola PowerShell.
Tras la ejecución de las macros de forma automática desde la función “Document_Open”, el documento descarga en disco un archivo mediante un objeto WMI.
La descarga del binario malicioso de Emotet, deja en la ruta actual un ejecutable con el nombre de “262.exe”. Dicho ejecutable es movido a la siguiente ubicación cambiando su nombre para llevar a cabo su ejecución:
C:UsersincibeAppDataLocaldot3hcPresentationSettings.exe
Tras un análisis estático, es posible apreciar cierta información, como la fecha de creación del archivo, algunas API que manejan la memoria del proceso e incluso la ruta y el nombre de compilación del proyecto.
Al ejecutar esta muestra en un debugger, también se identifica un intento de realizar la carga de “taskmgr.exe” como si se tratase de una librería. Posteriormente una rutina se encarga de mover un array de bytes de gran dimensión a una zona específica del código ejecutable generada tras la iteración con la API VirtualAllocExNuma. Dicho código se encuentra ofuscado en su totalidad, por lo que es necesaria otra rutina de descifrado basada en XOR para generar la carga útil en dicha sección de memoria.
Una vez realizada la copia del fragmento de memoria con el ejecutable, se aprecia un binario de 35KB. El análisis estático del archivo no aporta mucha información, ya que muestra patrones de compresión en su cabecera, es decir, es posible que una aplicación externa a su compilación modifique las dimensiones del ejecutable original. La única cadena visible en el interior del ejecutable se encuentra en unos offsets pertenecientes al EOF del archivo con el texto “dave”. Esto vuelve a indicar que el binario fue modificado tras su compilación, ya que ningún compilador conocido escribe información en esa ubicación.
- Figura 3. Cadena "dave". -
Desde el debugger, es posible ver una carga dinámica de librerías tras el uso de LoadLibraryW. Esta acción se complementa en parte por la siguiente rutina, encargada de descifrar el nombre de las librerías a cargar.
Se crean eventos y mutex de sincronización utilizando nombres diferentes para cada sistema en el que se ejecuta, ya que para la generación de este array se utiliza el identificador del disco duro VolumeSerialNumber, mediante el uso de los patrones "Global\E%X", "Global\I%X" y "Global\M%X", observados también en otras muestras recientes de Emotet. De esta manera, se generan nombres del siguiente tipo:
GlobalE78C28DF8
La instalación de Emotet se inicia tras la creación de la carpeta BWUnpairElevated en la siguiente ruta:
/CALL to CreateFileW from SHELL32.75FC02EA |FileName = "C:UsersincibeAppDataLocalBWUnpairElevated" |Access = 80 |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE|4 |pSecurity = NULL |Mode = OPEN_EXISTING |Attributes = NORMAL|BACKUP_SEMANTICS hTemplateFile = NULL
Posteriormente, se mueve el archivo actual a la ubicación creada, utilizando el nombre “shell32.exe” para finalizar su instalación.
/CALL to MoveFileExW from SHELL32.761B267B |ExistingName = "C:UsersincibeDesktopDUMP.exe" |NewName = "C:UsersincibeAppDataLocalBWUnpairElevatedshell32.exe" Flags = REPLACE_EXISTING|COPY_ALLOWED
Seguidamente, el binario elimina el archivo de identificador de zona en caso de existir, mediante la siguiente sintaxis de ejecución.
C:UsersincibeAppDataLocalBWUnpairElevatedshell32.exe:Zone.Identifier
En caso de obtener privilegios de ejecución como administrador, la copia del ejecutable se realiza de la misma manera pero en la siguiente ubicación.
C:Windowssystem32TabSvcMSJET35.exe
Finalmente, se realiza la ejecución desde la nueva ubicación.
/CALL to CreateProcessW from DUMP.000534B3 |ModuleFileName = "C:UsersincibeAppDataLocalBWUnpairElevatedshell32.exe" |CommandLine = NULL |pProcessSecurity = NULL |pThreadSecurity = NULL |InheritHandles = FALSE |CreationFlags = 0 |pEnvironment = NULL |CurrentDir = NULL |pStartupInfo = 0034F96C pProcessInfo = 0034F9B0
Este proceso es el mismo exceptuando la instalación, no obstante ahora se incluye una entrada en el registro para ejecutarse de forma automática tras cada inicio. Esta puede ser visible desde una herramienta como Autoruns o el propio msconfig del sistema.
- Figura 4. Persistencia en el sistema. -
Los próximos eventos de ejecución iniciarán la carga de funciones criptográficas a partir de la librería “rsaenh.dll”, la "Microsoft Enhanced RSA and AES Cryptographic Provider".
Mediante el uso de la API GetComputerName, extrae el nombre del sistema infectado. En este caso, "INCIBE-PC". Tras ser formateado mediante el uso de la cadena “%s_%08X”, se genera la palabra “INCIBEXPC_78C28DF8”.
A continuación, recupera información sobre la arquitectura del sistema mediante el uso de la API GetNativeSystemInfo, además de copiar el nombre de los procesos en ejecución mediante la API Process32.
Una vez que Emotet reúne toda la información necesaria, procede a cifrarla mediante la clave RSA pública que alberga en su interior. Una vez cifrada, la información se envía a través de Internet, mediante una petición HTTP que comienza con la carga en memoria de la siguiente cadena:
r --%S Content-Disposition: form-data; name="%s"; filename="%s" Content-Type: application/octet-stream
La cadena “%u.%u.%u.%u”, es formateada formando la dirección IP 94.49.254.194 tras un proceso de descifrado. Además, se identifica el uso de una rutina de generación de caracteres aleatorios por medio de la función RtlRandomEx. Con esta se generan palabras que terminan siendo unidas en una frase mediante el carácter de separación “/”. De esta forma, se genera una dirección URL aleatoria para cada ejecución, con el objetivo de ser difícilmente bloqueada por sistemas firewall/IDS.
http://94.49.254.194/KMvye/HxC9mXOKTFcWCK6WNV/JSzlnTTgjxJOlN/uTVHKLwfX0RfBIB1CcI/1SnOfnHlfNBJG8OjKV/G22cYrn2PcpeaLGx/
Realiza esta comunicación como una petición POST simulando ser IE 7 en un Windows XP.
Aunque no se ha realizado un análisis de los módulos descargados, ha sido posible identificar parte del comportamiento de Emotet durante esta acción. De igual manera que el actual ejecutable, un binario fue descargado por este en la carpeta de instalación BWUnpairElevated.
La ejecución del nuevo módulo se realiza con la función CreateProcess de la siguiente manera:
C:UsersincibeAppDataLocalBWUnpairElevatedPNPXAssoc7a3.exe CAIAADIAAABCAFcAVQBuAHAAYQBpAHIARQBsAGUAdgBhAHQAZQBkAFwAcwBoAGUAbABsADMAMgAAAA==
El texto codificado en base64, corresponde con la ubicación de ejecución inicial a modo de comprobación.
BWUnpairElevatedshell32
Una vez instalado y en comunicación con su servidor de Comando y Control, EMOTET estará preparado para realizar en el equipo las acciones que se le indiquen.
Vector de propagación
Durante el análisis de esta muestra, no se han encontrado evidencias del procedimiento de infección, no obstante la manera más evidente para llevar a cabo este tipo de ataques es la del envío masivo de correos SPAM, sin descartar la posibilidad de utilizar cualquier otro medio que permita compartir el documento malicioso.
Protección contra la ingeniería inversa y detección
En la muestra se han encontrado diversas técnicas utilizadas para evitar la detección y la ingeniería inversa sobre el archivo, concretamente:
- ocultación de macros,
- uso de empaquetador,
- diferentes rutinas de cifrado,
- compresión del código,
- uso de codificación base64,
- uso de una clave RSA pública.
Criptografía
Otro tipo de protección que se ha observado es el uso de diferentes claves RSA para cada campaña de Emotet, incluyendo la clave pública incrustada en el interior del código malicioso, utilizada para el cifrado de la información obtenida del sistema antes de enviarla a los C&C encargados de las comunicaciones con las máquinas infectadas. Mediante esta táctica se intenta pasar desapercibidos por los firewalls que contengan reglas para otras versiones conocidas de esta amenaza.
Durante la importación de la clave RSA se ha identificado dicha clave tras la llamada a la función CryptImportKey. Como se muestra en la siguiente imagen, se encuentra en el apartado Hex/ASCII con la cabecera RSA1 que incorpora el uso de la CryptoAPI.
- Figura 5. Carga de la clave RSA pública. -
Configuración
Parte de la configuración del malware incluye las rutas de instalación y el nombre utilizado para el proceso.
C:UsersincibeAppDataLocalBWUnpairElevatedshell32.exe C:Windowssystem32TabSvcMSJET35.exe
Además incluye los nombres utilizados para la clave de registro y el servicio para iniciarse automáticamente tras un reinicio.
Autorun Key Shell32 Service MSJET35
La clave RSA y la dirección IP 94.49.254.194 también son elementos configurables de Emotet.
Persistencia
La siguiente ubicación es utilizada por el código dañino para establecer persistencia en el sistema:
HKCUSoftwareMicrosoftWindowsCurrentVersionRunShell32
En caso de obtener privilegios de administrador, se ha identificado la creación de un servicio mediante el uso de la API CreateServiceW.
ServiceName MSJET35 CommandLine C:Windowssystem32TabSvcMSJET35.exe
Defensa
Prevención
Emotet se transmite, principalmente, por correo electrónico, por ello se debe tener especial precaución a la hora de ejecutar cualquier tipo de adjunto o enlace proveniente del correo, incluso los provenientes de contactos conocidos, ya que Emotet puede suplantar su identidad.
Tanto las URLs, como los adjuntos, se pueden analizar por medio de herramientas, como Virus Total o URLhaus. También es aconsejable deshabilitar las macros de terceros por defecto, y nunca habilitarla a no ser que se esté seguro de su legitimidad.
Emotet también utiliza vulnerabilidades conocidas, como EternalBlue/DoublePulsar y ataques de fuerza bruta, por lo que siempre se debe contar con los sistemas actualizados a la última versión disponible y utilizar contraseñas robustas.
También es posible monitorizar las posibles fuentes de infección utilizando diferentes identificadores de compromiso (IOC).
Detección y eliminación
El CERT de Japón ha publicado en su repositorio de GitHub una herramienta llamada EmoCheck destinada a comprobar si el malware Emotet está presente en el dispositivo.
Si este software detecta evidencias, ofrecerá información para su desinfección, como el nombre del proceso, el identificador del proceso y la ruta absoluta donde se encuentra alojado el malware. En caso de infección, lo recomendable es terminar el proceso identificado y eliminar el archivo malicioso.
También es aconsejable analizar el sistema con otras herramientas antimalware.
Para más información, puede consultar la entrada de blog ‘Prevención y desinfección del malware Emotet’.
Conclusiones
Recientemente se han detectado un repunte en el número de campañas del malware Emotet. A lo largo de esta entrada del blog se exponen los resultados obtenidos durante el análisis del fichero malicioso con la intención de dar a conocer su naturaleza y funcionamiento. Mediante esta información, será mucho más fácil estar preparados, tanto en la prevención, como en la detección y respuesta de este malware, para poder reaccionar y evitar su despliegue en nuestros sistemas.
Al igual que en otros ataques basados en la ingeniería social, es muy importante que el usuario conozca la existencia de la amenaza y su funcionamiento, para poder así reconocerlo a tiempo y evitar caer en el engaño, o para eliminarlo en caso de haberse visto afectado.
[Actualización 26/03/2021]
Notificación
INCIBE-CERT, como CSIRT Nacional de referencia en España para empresas y particulares, ha recibido datos de usuarios infectados por Emotet, poniendo dicha información en conocimiento de los afectados. A continuación, se proporcionan respuestas a preguntas frecuentes a modo de resumen:
¿Qué es Emotet?
Emotet es un software malicioso que infecta los ordenadores y permite ejecutar acciones como el robo de información o la instalación de malware adicional con otras funcionalidades (control del equipo por parte de terceros, cifrado de equipos con ransomware, etc.), como se detalla en el artículo.
¿Cómo habéis detectado el malware Emotet en mi equipo?
INCIBE-CERT recibe información de todas partes del mundo relativa a ordenadores españoles infectados, dentro del ámbito de actuación común de actividades colaborativas y de compartición de información que se llevan a cabo entre distintos CERT y también con organismos externos. Los datos relativos a la infección de Emotet provienen de terceros externos a INCIBE-CERT.
Aparecen credenciales de una web, ¿la han comprometido?
No, aunque en determinados casos aparecen credenciales asociadas a una web, el robo de las mismas se ha llevado a cabo por medio de un equipo infectado usado por el usuario, la web no se ha visto comprometida.
¿Cómo puedo saber si estoy afectado y cómo puedo eliminar el malware de mi equipo?
- Consulte los logs del sistema y de su firewall, para comprobar si la dirección IP afectada realiza conexiones a alguna de las direcciones consideradas como C&C de Emotet.
- Puede descargar la herramienta EmoCheck del CERT de Japón, para comprobar si detecta la amenaza: https://github.com/JPCERTCC/EmoCheck.
- Consultar los Indicadores de Compromiso de la amenaza: https://paste.cryptolaemus.com/.
- Ejecutar un antimalware como MalwareBytes o cualquiera de los especificados en: https://www.incibe.es/ciudadania/herramientas/servicio-antibotnet/cleaners.
Ya he eliminado el malware con algún antivirus, ¿podéis volver a comprobar mi equipo?
Desde INCIBE-CERT no podemos realizar comprobaciones relativas a Emotet en equipos particulares. Además, no es previsible la recepción de información adicional sobre nuevos equipos infectados o actualizaciones respecto al estado de la infección de los ya reportados. Aunque es prácticamente imposible alcanzar la certeza absoluta de que un equipo esté libre de infecciones, entendemos que el uso de las herramientas sugeridas acompañadas de una actualización de su base de datos de amenazas debería poder eliminar exitosamente las infecciones que pueda tener. En todo caso, puede lograr una mayor confianza en que el equipo se encuentre libre de infecciones procediendo a formatearlo y reinstalar la última actualización del software que precise en el mismo.
He utilizado la herramienta EmoCheck y otros antimalware y no he detectado nada
Cabe la posibilidad de que la información sobre la infección de Emotet en su equipo sea antigua y ya lo solucionase en su momento, o porque se trate de un falso positivo.
Me habéis pasado una lista de usuarios de mi web que están infectados, pero estoy pasando el antimalware al servidor y no encuentro nada
Esta casuística puede deberse a que, en realidad, quienes están afectados son los usuarios de su web, es decir, la lista que le hemos proporcionado. Le agradeceríamos que se pusiera en contacto con ellos para informarles de la incidencia y les proporcione las recomendaciones que le hemos indicado. Muchas gracias por su colaboración.
¿Tengo que hacer algo a partir del día 25 de Abril?
Los binarios de Emotet que han recibido la actualización se desinstalarán automáticamente el día, 25 de abril de 2021, dejando el fichero en cuarentena en una ruta temporal para posibles investigaciones en el sistema infectado. No obstante, ello no soluciona todos los problemas de seguridad si de resultas de la instalación de Emotet se hubieran instalado otros malware o robado datos y/o contraseñas de su equipo. Aunque haya transcurrido esa fecha, le recomendamos que compruebe igualmente el sistema con la herramienta EmoCheck y programas antimalware.