Vadokrist: análisis de este malware bancario que apunta a Brasil | WeLiveSecurity

Vadokrist: análisis de este malware bancario que apunta a Brasil

Otro artículo de nuestra serie ocasional sobre troyanos bancarios de América Latina en el que analizamos a Vadokrist, un malware bancario que apunta a Brasil y que comparte muchas funcionalidades con otros troyanos como Amavaldo, Casbaneiro, Grandoreiro y Mekotio.

Otro artículo de nuestra serie ocasional sobre troyanos bancarios de América Latina en el que analizamos a Vadokrist, un malware bancario que apunta a Brasil y que comparte muchas funcionalidades con otros troyanos como Amavaldo, Casbaneiro, Grandoreiro y Mekotio.

Vadokrist es un troyano bancario que ESET ha estado rastreando desde 2018 y que está activo casi exclusivamente en Brasil. En este artículo que forma parte de nuestra serie sobre Troyanos Bancarios de América Latina, examinamos sus principales características y algunas conexiones con otras familias de troyanos bancarios latinoamericanos.

Vadokrist comparte varias funcionalidades importantes con otras de las familias de troyanos bancarios que hemos descrito anteriormente como parte de la serie, como Amavaldo, Casbaneiro, Grandoreiro y Mekotio. Recientemente publicamos un whitepaper en el que documentamos solo las similitudes presentes entre troyanos bancarios de América Latina, mientras que en esta serie de artículos nos centramos más en el análisis técnico de una familia a la vez.

Características de Vadokrist

Vadokrist está escrito en Delphi. Una de las características más notables es la cantidad inusualmente grande de código en los binarios que no es utilizado. Después de un análisis más detenido, creemos que se trata de una estrategia para evadir la detección y disuadir o ralentizar el análisis. Pudimos vincular parte del código a proyectos existentes de Delphi, como QuickReport.

Vadokrist almacena strings dentro de tablas de strings. Solía ​​contener una implementación de una tabla de strings idéntica a Casbaneiro (observe la Figura 1); sin embargo, algunas versiones recientes de este troyano bancario cambiaron al uso de múltiples tablas de strings, cada una con un propósito diferente (lista de blancos de ataque, configuración general, nombres de comandos de backdoor, etc.).

Figura 1. Implementación de la tabla de strings en anteriores binarios de Vadokrist

Cuando se ejecutan por primera vez, la gran mayoría de los troyanos bancarios de América Latina recopilan información de la máquina de la víctima (generalmente el nombre de la computadora y la versión del sistema operativo Windows). Sin embargo, la única información que recopila Vadokrist es el nombre de usuario de la víctima y, a diferencia de la mayoría de los otros troyanos bancarios latinoamericanos que lo hacen en el momento de la instalación, lo hace solo después de iniciar un ataque a una institución financiera apuntada.

Para garantizar la persistencia, Vadokrist utiliza una Run key o crea un archivo LNK en la carpeta de inicio.

Sus capacidades de backdoor son las típicas de este tipo de malware, pudiendo manipular el mouse y simular pulsaciones de teclado, registrar pulsaciones del teclado, tomar capturas de pantalla y reiniciar la máquina. También puede impedir el acceso a algunos sitios web, lo que hace de una manera bastante torpe al terminar el proceso del navegador cuando la víctima intenta visitar dichos sitios web. Creemos que esta técnica se utiliza para evitar que las víctimas accedan a sus cuentas bancarias en línea una vez que los atacantes las han comprometido, ayudándolos a mantener el control.

Criptografía

La mayoría de los binarios de Vadokrist implementan un algoritmo criptográfico que hemos visto en otros troyanos bancarios latinoamericanos (Amavaldo y Casbaneiro) que hemos denominado TripleKey. Vadokrist usa este algoritmo para proteger sus strings y, ocasionalmente, también los payloads y las configuraciones remotas (profundizaremos en este tema más adelante). Para mayor claridad, hemos implementado el algoritmo en Python, como se ve en la Figura 2.

Figura 2. Esquema de cifrado TripleKey utilizado por Vadokrist para proteger strings, payloads y configuraciones remotas

Además de eso, hemos visto a Vadokrist usando RC4 en algunos de sus binarios recientes y, en el pasado, también TwoFish. Esto es bastante raro entre los troyanos bancarios latinoamericanos, ya que la mayoría de ellos nunca utilizan algoritmos criptográficos conocidos.

Distribución

“MSI overload”

Los correos de spam recientes que distribuyen Vadokrist contienen dos archivos ZIP anidados que contienen dos archivos: un instalador MSI y un archivo CAB. Si una víctima ejecuta el instalador MSI, localiza el archivo CAB y extrae su contenido (un loader MSI) en el disco. Luego ejecuta un archivo JavaScript embebido que agrega una entrada de Run key, asegurándose de que el loader MSI se ejecute al iniciar el sistema. Finalmente, el script reinicia la máquina. Al iniciarse, el loader MSI ejecuta una DLL incorporada: el troyano bancario Vadokrist. Todo el proceso se ilustra en la Figura 3. Observe que no existe un downloader; el troyano bancario se distribuye directamente a través de estos correos electrónicos no deseados.

Figura 3. Cadena de ejecución utilizada recientemente por Vadokrist

Vale la pena mencionar el archivo JavaScript debido a su ofuscación. Aprovecha cómo funciona el operador de coma (,) en JavaScript y abusa de él para reducir en gran medida la legibilidad y posiblemente para omitir la emulación. Ofusca condiciones utilizando el operador lógico AND (&&) de una manera similar. Vea un ejemplo en la Figura 4.

Figura 4. Instalador de JavaScript utilizado por Vadokrist. La parte inferior muestra el script con operadores transformados para una mejor legibilidad.

Técnicas de distribución y ejecución más antiguas

Observamos que Vadokrist, al igual que la mayoría de los otros troyanos bancarios latinoamericanos, utiliza varias implementaciones de la cadena de distribución típica. No los cubriremos todos, pero vale la pena mencionar dos. Hemos visto a Vadokrist compartir un downloader en Delphi con Grandoreiro y una cadena de distribución completa con Mekotio; más específicamente, la que está marcada como Cadena 1 en nuestro artículo acerca de Mekotio.

Vadokrist ocasionalmente se apoya en la carga lateral de DLL con un injector específico para descifrar y ejecutar el troyano bancario. Este injector es idéntico al utilizado por Amavaldo e implementa el antes mencionado algoritmo TripleKey para el descifrado de datos.

Configuración remota

Vadokrist utiliza configuración remota tanto en downloaders como en el propio troyano bancario, generalmente alojado en servicios de almacenamiento público como GitHub.

El archivo de configuración generalmente está cifrado, ya sea por TripleKey o por RC4. En la Figura 5 se puede observar que en ambos casos los datos se pueden descifrar sin ningún conocimiento adicional; en el caso del método TripleKey, pudimos extraer las tres claves del final de la string, y en el caso de RC4, pudimos derivar la clave de la contraseña. En el caso de la última, los datos cifrados son además codificados en base64.

El delimitador también cambia de vez en cuando. Hasta ahora, hemos visto tres caracteres diferentes utilizados: “|”, “!” y “/”.

Figura 5. Archivos de configuración remota cifrados usados ​​por Vadokrist

Ahora que sabemos cómo descifrar el archivo de configuración, examinemos su contenido. En el caso del troyano bancario, el resultado es fácil de entender, ya que es la dirección IP de un servidor de C&C. Para los downloaders, el formato es un poco más complejo, como se ilustra en la Figura 6.

Figura 6. Diferentes formatos de configuración remota utilizados por los downloaders de Vadokrist

Para simplificar, reconocemos una configuración con un ID opcional y seis campos:

  • [obligatorio] La URL desde la que se descarga el troyano bancario
  • [opcional] Carpeta especial (primera parte de la ruta de instalación)
  • [opcional] Indicador de instalación (descrita a continuación)
  • [opcional] Ruta (segunda parte de la ruta de instalación)
  • [opcional] Nombre de archivo (tercera y última parte de la ruta de instalación)
  • [obligatorio] URL de notificación

Dos de estos campos pueden requerir una explicación más detallada. Si el indicador de instalación se establece en “T”, se utilizarán las tres partes de la ruta de instalación; de lo contrario, se ignorará la primera. Lo único que se envía a la URL de notificación es si se está ejecutando una aplicación Core.exe –una comprobación similar a la que realizan otros troyanos bancarios latinoamericanos que intentan detectar la presencia del software antifraude Warsaw GAS Tecnologia.

Puede ver que la primera variante usa todos los campos, la segunda no usa el ID y la tercera solo usa los dos campos obligatorios de URL. El uso de delimitadores aquí es un poco más complejo, ya que un delimitador se usa para separar diferentes entradas y otro diferente para separar campos de una entrada. Además, puede ver que los delimitadores también cambian aquí.

El dinámico cambio de formato del archivo de configuración indica que Vadokrist está en desarrollo activo y continuo.

Conclusión

En esta publicación analizamos Vadokrist, un troyano bancario de América Latina que se centra en Brasil. Hemos demostrado que tiene las características típicas de los troyano bancario de América Latina: está escrito en Delphi, cuenta con funcionalidad de backdoor y se dirige a instituciones financieras. Su principal desviación de la implementación típica es que no recopila información sobre las víctimas justo después de comprometer con éxito sus máquinas.

Hemos cubierto sus esquemas de cifrado, métodos de distribución y ejecución y formatos de configuración remota. Vadokrist parece estar conectado con Amavaldo, Casbaneiro, Grandoreiro y Mekotio, otros de los troyanos bancarios latinoamericanos que hemos analizado en otros artículos que forman parte de nuestra serie.

Por cualquier consulta, escríbanos a threatintel@eset.com. Los Indicadores de Compromiso también se pueden encontrar en nuestro repositorio de GitHub.

Indicadores de Compromiso (IoCs)

Hashes

Campaña “MSI overload”

SHA-1DescriptionESET detection name
D8C6DDACC42645DF0F760489C5A4C3AA686998A1MSI installerJS/TrojanDownloader.Banload.ABD
01ECACF490F303891118893242F5600EF9154184MSI loaderWin32/Spy.Vadokrist.T
F81A58C11AF26BDAFAC1EB2DD1D468C5A80F8F28Vadokrist banking trojanWin32/Spy.Vadokrist.T

Otro

SHA-1DescriptionESET detection name
8D7E133530E4CCECE9CD4FD8C544E0913D26FE4BVadokrist banking trojanWin32/Spy.Vadokrist.AF
AD4289E61642A4A724C9F44356540DF76A35B741Vadokrist banking trojanWin32/Spy.Vadokrist.T
BD71A9D09F7E445BE5ACDF412657C8CFCE0F717DVadokrist banking trojanWin32/Spy.Vadokrist.AD
06C0A039DEDBEF4B9013F8A35AACD7F33CD47524Downloader (MSI/JS)JS/TrojanDownloader.Banload.AAO
FADA4C27B78DDE798F1E917F82226B983C5B74D8Downloader (Delphi)Win32/Spy.Vadokrist.Y
525FCAA13E3867B58E442B4B1B612664AFB5A5C0Injector shared with AmavaldoWin32/Spy.Amavaldo.L

Servidores C&C recientes

  • 104.41.26[.]216
  • 104.41.41[.]216
  • 104.41.47[.]53
  • 191.232.212[.]242
  • 191.232.243[.]100
  • 191.235.78[.]249
  • 191.237.255[.]155
  • 191.239.244[.]141
  • 191.239.245[.]87
  • 191.239.255[.]102

Técnicas de MITRE ATT&CK

Nota: esta tabla fue creada utilizando la versión 8 del framework de MITRE ATT&CK.

TacticIDNameDescription
Resource DevelopmentT1583.001Acquire Infrastructure: DomainsVadokrist registers its own domains to be used as C&C servers.
T1587.001Develop Capabilities: MalwareVadokrist is operated by the same group that develops it.
Initial AccessT1566.001Phishing: Spearphishing AttachmentVadokrist is distributed as a spam attachment.
ExecutionT1059.001Command and Scripting Interpreter: PowerShellVadokrist uses PowerShell in some distribution chains.
T1059.005Command and Scripting Interpreter: Visual BasicVadokrist uses VBScript in some distribution chains.
T1059.007Command and Scripting Interpreter: JavaScript/JScriptVadokrist uses JavaScript in its recent distribution chains.
T1204.002User Execution: Malicious FileVadokrist relies on the user to execute the malicious binary.
PersistenceT1547.001Boot or Logon Autostart Execution: Registry Run Keys / Startup FolderVadokrist ensures persistence via Run key or LNK file in the startup folder.
Defense EvasionT1140Deobfuscate/Decode Files or InformationVadokrist is often distributed encrypted and encrypts its remote configuration.
T1574.002Hijack Execution Flow: DLL Side-LoadingVadokrist is sometimes executed by this technique.
T1036.005Masquerading: Match Legitimate Name or LocationVadokrist masquerades as legitimate software.
T1218.007Signed Binary Proxy Execution: MsiexecVadokrist uses the MSI format for execution.
Credential AccessT1056.001Input Capture: KeyloggingVadokrist can capture keystrokes.
DiscoveryT1010Application Window DiscoveryVadokrist looks for bank-related windows based on their names.
T1057Process DiscoveryVadokrist tries to discover anti-fraud software by process name.
T1082System Information DiscoveryVadokrist discovers victim’s username.
T1113Screen CaptureVadokrist can take screenshots.
Command and ControlT1132.002Data Encoding: Non-Standard EncodingVadokrist communicates via a custom protocol encrypted with the TripleKey algorithm.
ExfiltrationT1041Exfiltration Over C2 ChannelVadokrist exfiltrates data via C&C server.

Newsletter

Discusión