En 2018, los investigadores de Cisco Talos publicaron un análisis del espía GravityRAT utilizado en ataques selectivos contra las fuerzas armadas de la India. El Centro de respuesta a incidentes de seguridad informática de la India (CERT-IN), fue el primero en descubrir este troyano en 2017. Se atribuye la autoría de esta familia a grupos de hackers paquistaníes. Según conocemos, la campaña ha estado activa desde al menos 2015 y anteriormente estaba dirigida contra equipos con Windows. Sin embargo, desde 2018 ha sufrido cambios y los dispositivos Android han aparecido en la lista de sus objetivos.
Un guía malicioso
En 2019, en VirusTotal, nos topamos con un curioso espía para Android y al analizarlo encontramos una conexión con GravityRAT. Los atacantes agregaron un módulo espía a la aplicación de Android Travel Mate para viajeros a la India, cuyo código fuente está publicado en Github.
La app Travel Mate, limpia en Google Play
Los atacantes utilizaron la versión de la aplicación publicada en Github en octubre de 2018, le agregaron un código malicioso y le cambiaron el nombre a Travel Mate Pro.
Al iniciarse, la app solicita permisos
En el manifiesto del troyano están registrados los servicios (Services) y el receptor (Receiver), que no están en la aplicación de Github
Lista de clases del troyano
Las funciones del espía son bastante corrientes: envía a su servidor de administración los datos del dispositivo, la lista de contactos, la dirección de correo electrónico, los registros de llamadas y mensajes SMS. Además, el troyano busca archivos con las extensiones .jpg, .jpeg, .log, .png, .txt, .pdf, .xml, .doc, .xls, .xlsx, .ppt, .pptx, .docx y .opus en la memoria del dispositivo y en los medios conectados, y también los envía al servidor de administración.
El malware no parecía un espía de Android “típico” (porque los delincuentes eligieron una aplicación bastante específica, y el código malicioso no se basa en el código de aplicaciones de software espía conocidas, como suele ser el caso), por lo que decidimos buscar conexiones con las familias APT ya conocidas.
Direcciones del servidor de administración especificadas en el código del troyano
Lo más sencillo es comprobar las direcciones del servidor de administración que utiliza el troyano:
- n2.nortonupdates[.]online: 64443
- n4.nortonupdates[.]online: 64443
Resultó que la dirección n3.nortonupdates[.]online: 64443 era utilizada por otro malware para descargar datos sobre los archivos encontrados en la computadora (.doc, .ppt, .pdf, .xls, .docx, .pptx, .xlsx) junto con datos sobre la máquina infectada. Usando Threat Intelligence, logramos encontrar este malware: se trataba del script de PowerShell malicioso Enigma.ps1 que ejecuta códigos en C#.
El script de PowerShell ejecutado por un script de VBS:
Más adelante, encontramos una plantilla de script VBS muy similar, sin rutas especificadas, con el nombre iV.dll:
Estaba dentro del contenedor PyInstaller enigma.exe firmado por E-Crea Limited el 05.09.2019. El instalador se descargaba del sitio web enigma[.]net[.]in bajo la apariencia de una aplicación segura para compartir archivos protegiéndolos contra los troyanos cifradores:
Además de la plantilla VBS, en el contenedor había plantillas XML para el Programador de tareas de Windows, con los nombres aeS.dll, rsA.dll, eA.dll, eS.dll:
En el programa principal, se escribían en plantillas las rutas y los nombres necesarios, y se agregaba una tarea a la programación:
El programa se comunicaba con un servidor ubicado en download.enigma[.]net[.]in/90954349.php (tenga en cuenta que 90954349A es el inicio del hash MD5 de la palabra enigma). La sencilla interfaz gráfica, la lógica del cifrado y el intercambio de archivos eran:
La versión para Mac tiene una funcionalidad similar y agrega una tarea en cron:
La aplicación Titanium (titaniumx.co [.] In), firmada el 14.04.2019 por Plano Logic Ltd, tiene una funcionalidad similar a enigma.exe. El certificado fue revocado el 08.09.2019.
Las cargas útiles de Enigma y Titanium incluían los siguientes troyanos espía:
- Wpd.exe, firmado el 17.09.2018 por Plano Logic Ltd, certificado revocado
- Taskhostex.exe, firmado el 18.02.2020 por “Theravada Solutions Ltd”
- WCNsvc.exe, firmado el 17.09.2018 por Plano Logic Ltd, certificado revocado
- SMTPHost.exe, firmado el 21.12.2018 por Plano Logic Ltd, certificado revocado
- CSRP.exe
Sus servidores de administración son:
- daily.windowsupdates[.]eu:467699
- nightly.windowsupdates[.]eu:46769
- dailybuild.mozillaupdates[.]com:46769
- nightlybuild.mozillaupdates[.]com:46769
- zen.mozillaupdates[.]us
Notamos que los troyanos mencionados usaban el puerto 46769. La familia GravityRAT también utilizaba el mismo puerto. Una nueva búsqueda en nortonupdates[.]online nos condujo al archivo PE Xray.exe:
Esta versión recopilaba datos y los enviaba a n1.nortonupdates[.]online y n2.nortonupdates[.]online.
Los dominios n*.nortonupdates[.]online se resolvían en la dirección IP 213.152.161[.]219. Verificamos en nuestra base de datos Pasive DNS qué otros dominios se podían encontrar en esta dirección anteriormente y encontramos uno de aspecto sospechoso: u01.msoftserver[.]eu. Una búsqueda en este dominio nos llevó a la aplicación ZW.exe escrita en Python y empaquetada con el mismo PyInstaller (firmado el 10.04.2019 por Plano Logic Ltd, certificado revocado el 08.09.2019).
Las direcciones del servidor de administración a las que accedió ZW.exe son descifradas por el algoritmo AES del archivo Extras\SystemEventBrokerSettings.dat:
- u01.msoftserver[.]eu:64443
- u02.msoftserver[.]eu:64443
- u03.msoftserver[.]eu:64443
- u04.msoftserver[.]eu:64443
La comunicación con el servidor se realiza en la dirección relativa “/ZULU_SERVER.php”.
El espía recibe comandos del servidor para, entro otros:
- recibir información sobre el sistema;
- buscar y subir al servidor archivos con las extensiones .doc, .docx, .ppt, .pptx, .xls, .xlsx, .pdf, .odt, .odp, .ods desde la computadora y los discos extraíbles,
- obtener una lista de los procesos en ejecución,
- interceptar las pulsaciones en el teclado,
- tomar capturas de pantalla,
- ejecutar comandos de shell arbitrarios,
- grabar audio (no implementado en esta versión),
- escanear puertos.
El código contempla su ejecución en múltiples plataformas:
Y la ruta característica también confirma que estamos frente a una nueva versión de GravityRAT:
RW.exe y TW.exe, las variantes más nuevas de malware con una funcionalidad similar que detectamos usando Threat Intelligence estaban firmadas por Theravada Solutions Ltd el 10.01.2019 y el 20.02.2020, respectivamente, los certificados son válidos.
RW.exe se comunicaba con el servidor de administración en la dirección relativa “/ROMEO/5d907853.php” y TW.exe en “/TANGO/e252a516.php”, por lo que podemos asumir que la primera letra del nombre del ejecutable es la versión del servidor de administración.
Servidor de administración de esta instancia:
- sake.mozillaupdates[.]us
- gyzu.mozillaupdates[.]us
- chuki.mozillaupdates[.]us
- zen.mozillaupdates[.]us
- ud01.microsoftupdate[.]in
- ud02.microsoftupdate[.]in
- ud03.microsoftupdate[.]in
- ud04.microsoftupdate[.]in
Otras versiones de GravityRAT
lolomycin&Co
En una de las antiguas variantes de GravityRAT llamadaWhisper, además de la cadena lolomycin2017, cuya representación en bytes se utilizaba como “sal” en el cifrado AES del componente lsass.exe, en el componente whisper.exe también encontraba la cadena lolomycin&Co como contraseña para descomprimir los archivos ZIP descargados, que contenían la carga útil:
Gracias a esta cadena, encontramos versiones más nuevas de GravityRAT en las aplicaciones [.]net:
- WeShare
- TrustX
- Click2Chat
- Bollywood
Nuevas versiones de GravityRAT
Todos los dominios que se describen a continuación están ocultos detrás de Cloudflare para dificultar encuéntrela detección de la IP real.
Las versiones escritas en .NET
- Sharify
- MelodyMate (firmado por “E-Crea Limited” el 05.11.2019)
Versión en Python
GoZap
Otro contenedor de PyInstaller. Cabe destacar que el código indica explícitamente los nombres de la posible carga útil que ya conocemos:
Dependiendo de la carga específica, se selecciona el directorio en el que se la guarda, así como el nombre de la tarea para el Programador de tareas de Windows:
Nombre de la carga útil | Ruta | Nombre de la tarea |
ZW | %APPDATA%\Programs | WinUpdate |
SMTPHost | %APPDATA%\WinUpdates | Disksynchronization |
WCNsvc | %APPDATA%\System | Windows_startup_update |
CSRP | %APPDATA%\Applications | Antivirus_Update |
Windows-Portable-Devices | %APPDATA%\ System Updates | System_Update |
Versiones en el framework Electron
Las siguientes versiones son para Windows y Mac en el framework Electron. La lógica es la misma: el troyano verifica si se lo está ejecutando en una máquina virtual, recopila información sobre la computadora, descarga una carga útil desde el servidor y agrega una tarea programada.
- StrongBox (firmado por “E-Crea Limited” el 20.11.2019)
- TeraSpace (firmado por “E-Crea Limited” el 20.11.2019)
- OrangeVault
- CvStyler (firmado por “E-Crea Limited” el 20.02.2020)
Versiones para Android
La versión SavitaBhabi existe para Windows y Android.
La versión para Windows está escrita en [.]net. La funcionalidad es estándar: el troyano verifica si se lo está ejecutando en una máquina virtual y si la computadora tiene un software de seguridad instalado, envía información sobre la computadora al servidor y recibe comandos. Utiliza el Programador de tareas de Windows para ejecutar la carga útil. La comunicación con el servidor se realiza mediante solicitudes POST que se envían a download.savitabhabi.co[.]in/A5739ED5.php
El segundo archivo descargado del mismo sitio es la aplicación de Android Savitabhabi.apk, que es una tira cómica para adultos que viene con un módulo espía integrado. Esta vez, a diferencia de la versión Travel Mate Pro, los atacantes abordaron la tarea más a fondo y, al parecer, ellos mismos escribieron la aplicación.
Al iniciarse, la app solicita permisos
La funcionalidad maliciosa de esta aplicación para Android es idéntica a la de Travel Mate Pro, y las direcciones del servidor de administración y el código (excepto por detalles menores) también son los mismos:
Lista de clases del troyano
Conclusiones
En 2019, The Times of India publicó un artículo sobre los métodos que los ciberdelincuentes usaron para distribuir GravityRAT en 2015-2018. Se contactaba a las víctimas desde una cuenta falsa de Facebook y se les pedía que instalaran una aplicación maliciosa camuflada como una de mensajería segura para continuar la conversación. Se han identificado unos 100 casos de infección en los departamentos de defensa, la policía y otras organizaciones.
Con cierto grado de seguridad podemos suponer que la campaña actual de GravityRAT utiliza métodos de infección similares: los ciberdelincuentes envían enlaces de apps maliciosas a personas específicas.
El principal cambio observado en la nueva campaña de GravityRAT es que ahora es multiplataforma: junto con las versiones para Windows, existen versiones para Android y Mac OS. Los atacantes también han comenzado a usar firmas digitales para hacer que las aplicaciones parezcan más legítimas.
IOCs
MD5
Travel Mate Pro – df6e86d804af7084c569aa809b2e2134
iV.dll – c92a03ba864ff10b8e1ff7f97dc49f68
enigma.exe – b6af1494766fd8d808753c931381a945
Titanio – 7bd970995a1689b0c0333b54dffb49b6
Wpd.exe – 0c26eb2a6672ec9cd5eb76772542eb72
Taskhostex.exe – 0c103e5d536fbd945d9eddeae4d46c94
WCNsvc.exe – cceca8bca9874569e398d5dc8716123c
SMTPHost.exe – 7bbf0e96c8893805c32aeffaa998ede4
CSRP.exe – e73b4b2138a67008836cb986ba5cee2f
Chat2Hire.exe – 9d48e9bff90ddcae6952b6539724a8a3
AppUpdater.exe – 285e6ae12e1c13df3c5d33be2721f5cd
Xray.exe – 1f484cdf77ac662f982287fba6ed050d
ZW.exe – c39ed8c194ccf63aab1db28a4f4a38b9
RW.exe – 78506a097d96c630b505bd3d8fa92363
TW.exe – 86c865a0f04b1570d8417187c9e23b74
Susurro 31f64aa248e7be0be97a34587ec50f67
Compartimos – e202b3bbb88b1d32dd034e6c307ceb99
TrustX – 9f6c832fd8ee8d8a78b4c8a75dcbf257
Click2Chat – defcd751054227bc2dd3070e368b697d
Bollywood – c0df894f72fd560c94089f17d45c0d88
Sharify – 2b6e5eefc7c14905c5e8371e82648830
MelodyMate – ee06cfa7dfb6d986eef8e07fb1e95015
GoZap – 6689ecf015e036ccf142415dd5e42385
StrongBox — 3033a1206fcabd439b0d93499d0b57da (Windows), f1e79d4c264238ab9ccd4091d1a248c4 (Mac)
TeraSpace — ee3f0db517f0bb30080a042d3482ceee (Windows), 30026aff23b83a69ebfe5b06c3e5e3fd (Mac)
OrangeVault — f8da7aaefce3134970d542b0e4e34f7b (Windows), 574bd60ab492828fada43e88498e8bd2 (Mac)
CvStyler — df1bf7d30a502e6388e2566ada4fe9c8
SavitaBhabi — 092e4e29e784341785c8ed95023fb5ac (Windows), c7b8e65e5d04d5ffbc43ed7639a42a5f (Android)
URLs
daily.windowsupdates[.]eu
nightly.windowsupdates[.]eu
dailybuild.mozillaupdates[.]com
nightlybuild.mozillaupdates[.]com
u01.msoftserver[.]eu
u02.msoftserver[.]eu
u03.msoftserver[.]eu
u04.msoftserver[.]eu
n1.nortonupdates[.]online
n2.nortonupdates[.]online
n3.nortonupdates[.]online
n4.nortonupdates[.]online
sake.mozillaupdates[.]us
gyzu.mozillaupdates[.]us
chuki.mozillaupdates[.]us
zen.mozillaupdates[.]us
ud01.microsoftupdate[.]in
ud02.microsoftupdate[.]in
ud03.microsoftupdate[.]in
ud04.microsoftupdate[.]in
chat2hire[.]net
wesharex[.]net
click2chat[.]org
x-trust[.]net
bollywoods[.]co.in
enigma[.]net.in
titaniumx[.]co.in
sharify[.]co.in
strongbox[.]in
teraspace[.]co.in
gozap[.]co.in
orangevault[.]net
savitabhabi[.]co.in
melodymate[.]co.in
cvstyler[.]co.in
GravityRAT: el regreso del espía