Desde el laboratorio de ESET Latinoamérica analizamos una campaña de espionaje dirigida principalmente a Colombia que tuvo una actividad importante hasta fines de marzo de 2022. La misma intentaba distribuir el malware njRAT, un popular troyano de acceso remoto (RAT, por sus siglas en inglés) y lograr persistir en el equipo comprometido sin ser detectado el mayor tiempo posible. Este código malicioso descargado permite a los atacantes controlar el equipo infectado de manera remota y realizar acciones como enviar y recibir archivos, registrar las pulsaciones del teclado, hacer capturas de pantalla, tomar imágenes con la cámara y registrar audio, entre muchas otras.

Si bien la campaña involucró a otros países de América Latina en porcentajes muy pequeños, la mayor parte de las detecciones se registraron en Colombia. Las principales víctimas fueron empresas de distintas industrias, organizaciones sin fines de lucro, y entidades gubernamentales.

La campaña fue llamada “Operación Discordia” por los investigadores de ESET. Esto se debe al uso que hicieron de la plataforma Discord los atacantes para alojar y descargar malware en los equipos comprometidos. Esta plataforma comenzó siendo para gamers, pero poco a poco fue creciendo y los cibercriminales también comenzaron a adoptarla para alojar malware y realizar otro tipo de acciones maliciosas.

El método para lograr acceso inicial y comenzar la cadena de infección hasta descargar njRAT comenzaba con correos de phishing que simulaban ser comunicaciones oficiales del Sistema Penal Oral Acusatorio (SPOA) de Colombia. Estos correos incluían como adjuntos archivos comprimidos que estaban protegidos con una contraseña de cuatro números.

Si bien no tenemos un ejemplo de estos correos de phishing, los nombres de algunos de estos archivos comprimidos adjuntos nos dan una idea del contexto del mensaje. Algunos ejemplos:

  • “Notificación fiscal a su nombre Agradecemos pronta confirmación de recibido sumado a ello diligenciar el formulario dentro del adjunto.bz2”
  • “6solicito a usted inscriba la nota marginal correspondiente en el original registro civil de nacimiento de las partes interesadas CLAVE DE ARCHIVO 0903.R19”
  • “Requerimiento fiscal aquí encontrará copia de la denuncia presentada en su contra NUNC SPOA.bz2”

Por otra parte, los nombres de los archivos que contiene el archivo comprimido descargado, que pueden ser dos o más archivos, también dan algunas pistas. Como se observa en la imagen a continuación, se trata de archivos con la extensión .vbs. Estos archivos son scripts desarrollados en el lenguaje de programación Visual Basic.

Ejemplo de los archivos con la extensión .vbs que contiene uno de los archivos comprimidos que se enviaron como adjunto en los correos de phishing.

Dos métodos de infección diferentes

Los operadores detrás de esta campaña utilizaron dos mecanismos de infección diferentes, pero ambos intentan descargar njRAT en la instancia final.

Diagrama general la cadena de infección en Operación Discordia que distribuye njRAT

Primer método

Los archivos adjuntos tenían una extensión .bz2 y contenían scripts maliciosos desarrollados en Visual Basic, que al ser ejecutados descargan un script en PowerShell que está alojado en Discord y que a su vez descarga de la misma plataforma otros módulos que son los que terminan descargando njRAT en el equipo.

En la siguiente imagen se observa un ejemplo del código malicioso dentro de estos scripts en PowerShell:

Ejemplo de un código malicioso contenido en el script de Visual Basic

Una vez que se descarga el nuevo código malicioso, desarrollado en PowerShell, lo primero que hace es cargar una DLL en memoria que se encarga de descomprimir y ejecutar otra DLL que también se encuentra dentro del código malicioso descargado.

Lógica del código malicioso PowerShell encargada de cargar y ejecutar las DLL en memoria.

Uno de los archivos descargados antes del payload final de njRAT es esta última DLL que modifica el método AmsiScanBuffer contenido en la librería amsi.dll oficial del sistema operativo Windows, el cual se encarga de analizar y detectar contenido malicioso que pueda ser cargado en memoria a través de distintos actores, por ejemplo, PowerShell, Visual Basic, entre otros. De esta manera los actores de amenazas detrás de esta campaña evadir esta medida de seguridad implementada por Windows. Nuestras soluciones de seguridad detectan este tipo de actividad con el nombre de detección MSIL/Agent.UHC. Luego de este proceso, el script malicioso en PowerShell descarga desde Discord el troyano njRAT.

Lógica de la DLL encargada de modificar el método AmsiScanBuffer.

Segundo método

En algunos casos se detectó un método de infección diferente que también comienza con un script en Visual Basic que descarga de Discord otro script en PowerShell que lo que hace verificar si existe la ruta HKCU:\software\wow6432node\Microsoft\WindowsUpdate en los registros de Windows. Si la ruta existe, almacena un código malicioso cifrado en AES.

Código malicioso almacenado en los registros de Windows.

Finalizada la manipulación de los registros de Windows, el código procede a crear 3 archivos enumerados a continuación:

  • C:\Users\NOMBRE_USUARIO\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Login1.VBS
  • C:\Users\NOMBRE_USUARIO\AppData\Roaming\SystemLogin.bat
  • C:\Users\Public\myScript.ps1

El contenido de estos tres archivos estaba cifrado en base64 dentro de este código malicioso.

Lógica utilizada para la creación del archivo malicioso Login1.VBS.

Finalizada la creación de estos archivos, invoca y ejecuta el archivo Login1.VBS, que va a ejecutar el archivo llamado SystemLogin.bat, que ejecuta el archivo myScript.ps1 que realiza las siguientes acciones maliciosas.

Por un lado, carga una DLL en memoria que contiene la lógica del algoritmo de cifrado AES.

Por otro lado, busca en los registros de Windows el contenido guardado en la ruta HKCU:\software\wow6432node\Microsoft\WindowsUpdate.

Luego, invoca la DLL cargada anteriormente, pasándole el contenido alojado en el registro de Windows más la clave de descifrado: 12365478965821478523.

Una vez que el contenido fue descifrado, el mismo va a ser almacenado en una variable llamada $SNORLAX para luego ser invocado y ejecutado.

Invocación a la DLL que descifra el contenido en AES y se almacena el resultado en la variable $SNORLAX.

El contenido descifrado es otro script malicioso desarrollado en PowerShell que realiza las siguientes acciones:

  • Contiene en una variable llamada $YAMAHA que posee el código malicioso njRAT.
  • Carga una DLL en memoria que contiene un código cifrado.
    • El código cifrado es otra DLL que inyecta el payload njRAT en un binario legitimo del Framework .NET. El método para invocar esta lógica se llama HERCULES.
  • Obtiene la ruta donde se encuentra el binario exe legitimo del Framework .NET.
  • Invoca el método HERCULES pasándole por parámetros la ruta del binario exe y el contenido de la variable $YAMAHA, el cual es convertido a una lista de bytes antes de ser enviado.
    • Este método va a inyectar y ejecutar el payload njRAT sobre el proceso legitimo exe.

Lógica del código malicioso en PowerShell que carga la DLL maliciosa en memoria.

Lógica del método HERCULES encargado de inyectar y ejecutar njRAT en el binario legitimo del FrameWork .NET

Conclusión

Operación Discordia es una campaña enfocada principalmente en Colombia. Esto puede verse por las temáticas utilizadas en los nombres de los archivos comprimidos que dan ciertos indicios de cómo podrían ser los correos electrónicos que los distribuyen, y también por la cantidad de detecciones que se registraron en Colombia en los sistemas de ESET.

Por otro lado, vemos que estos cibercriminales hacen un mal uso de la plataforma Discord al utilizarla para alojar y distribuir los códigos maliciosos de esta campaña. Si bien no es la primera vez que cibercriminales utilizan Discord, sí es un rasgo característico de la infraestructura utilizada para esta campaña.

A su vez, si prestamos atención a las diferentes imágenes podremos observar que muchos de los nombres empleados para las variables están en español. Y si a esto le sumamos las temáticas empleadas en los archivos comprimidos, es posible que los actores maliciosos detrás de esta campaña sean de habla hispana.

Por último, gran parte de los archivos utilizados en esta campaña no persisten en la máquina víctima, sino que se ejecutan en la memoria, excepto aquellos archivos mencionados en el método dos o aquellos archivos que persisten por decisión de los cibercriminales durante la ejecución del código malicioso njRAT.

Mas allá de que esto es una característica del funcionamiento de esta campaña, es importante destacar que el hecho de ejecutar códigos maliciosos en memoria sin buscar establecer persistencia brinda, no solo la posibilidad de dejar menos rastros sobre la máquina de una víctima, sino que también es una técnica utilizada para evadir alguna solución de seguridad que no tenga un buen componente para detectar actividades maliciosas que se ejecuten sobre la memoria de la máquina de la víctima.

Recomendaciones para evitar ser víctima

Las principales recomendaciones para evitar ser víctimas de este tipo de campañas es tener especial cuidado con los correos electrónicos que llegan a la bandeja de entrada. Es importante estar atentos a la dirección de correo del remitente, el contenido del mensaje, si es un corre inesperado y si tiene sentido el mensaje. En caso de que existan motivos para dudar, no hacer clic en ningún enlace ni descargar los posibles archivos adjuntos. Muchas veces los atacantes ocultan el verdadero formato de un archivo cambiando el nombre para que parezca una extensión diferente. Por último, instala una solución de seguridad confiable que filtre estas amenazas apenas llegan a nuestra cuenta de correo.


Lecturas recomendadas:
 


Indicadores de Compromiso (IoC)

Hashes, sitios web y C&C

Hashes de muestras analizadas:

SHA-1 Nombre de detección de ESET
E04A994AD1CDAB5A909D5C025D28A8BDD764AAD0 PowerShell/TrojanDownloader.Agent.CEX
F452C85ADBA79CE68D5955FB179B792235B47D3E PowerShell/TrojanDownloader.Agent.CEX
CF6BEE622EFB09720C9BA38D7661E7E35FFF7F07 PowerShell/TrojanDownloader.Agent.CEX
5E0A7DD712C69FB7DAEB6E42C29B4D483BDDEF68 PowerShell/TrojanDownloader.Agent.CEX
0592B6A6F398EB317B278D24432A7176EF2C6DC0 PowerShell/TrojanDownloader.Agent.CEX
BAF536516E0249F9EB1B23E5B37AFE1E05DAD720 PowerShell/TrojanDownloader.Agent.CEX
F0E598DFC618568A2BB258EC39E84FD4C6DA9C46 PowerShell/TrojanDownloader.Agent.CEX
2F3FE7AB8A6157F2492F9B94AC85104623F12F6C PowerShell/TrojanDownloader.Agent.CEX
38E2AE47D58FCD075B8BDEB9D0DBAE75EE22AC4E PowerShell/TrojanDownloader.Agent.CEX
6A359A508A97881DC236D3D9E78765D1A8AD9060 PowerShell/TrojanDownloader.Agent.ETD
709BD2951E521C851CF98430010948B16DBE20EB MSIL/Agent.UHC
FA68F3D849AD854CF9ED6E3AB33C68F20CB1214A MSIL/Agent.UHC
9395CD1C3C6C38F4985B7A070459CD03ED7D3F83 MSIL/Agent.UHC
BD227B5CF04D71F82F1664D7F748180D8155C0FA MSIL/Bladabindi.AZ
F8976E0D9BC65E3E404E9FF7E82FDE0D0451D525 MSIL/Bladabindi.AZ
746EC063931FCB7E7111C1C650304B067AAAE83D MSIL/Bladabindi.AZ
82F3960589526CB80A21B62073D8743DF1A97D34 MSIL/Bladabindi.AZ
90DA8CBCC82629CA28062EB473206480CFBC52EF MSIL/Bladabindi.AZ

 

URLs obtenidas en las muestras analizadas:

  • https[:]//cdn.discordapp.com/attachments/918515082747580479/948954775150547054/Payload.pdf
  • https[:]//cdn.discordapp.com/attachments/918515082747580479/947858970335383662/Payload.pdf
  • https[:]//cdn.discordapp.com/attachments/951118432865222708/951128412687319080/Payload.pdf
  • https[:]//cdn.discordapp.com/attachments/918515082747580479/950434183292022854/Payload.pdf
  • https[:]//cdn.discordapp.com/attachments/946400181849575435/946401938587676693/Windows.pdf
  • https[:]//cdn.discordapp.com/attachments/918515082747580479/948955522353221632/envio3base64.txt
  • https[:]//cdn.discordapp.com/attachments/918515082747580479/948954548989476864/envio3base64.txt
  • https[:]//cdn.discordapp.com/attachments/918515082747580479/950434056905056326/envio7base64.txt
  • https[:]//cdn.discordapp.com/attachments/951118432865222708/951128269024010240/envio9base64.txt
  • https[:]//cdn.discordapp.com/attachments/918515082747580479/947858814462492712/marzo1base64.txt
  • https[:]//cdn.discordapp.com/attachments/951118432865222708/951130360459186217/envio9.txt
  • https[:]//cdn.discordapp.com/attachments/918515082747580479/950435214121906258/envio7m.txt
  • https[:]//cdn.discordapp.com/attachments/946400181849575435/946401853036445706/24febok.txt
  • https[:]//cdn.discordapp.com/attachments/915984435772538954/920747033000808478/Main.png
  • https[:]//cdn.discordapp.com/attachments/915984435772538954/920746989799473202/WindowsUpdate.pdb

Dominios e IP detectadas en las muestras analizadas:

  • wins24feb.duckdns[.]org
  • marzo1.duckdns[.]org
  • env2022.duckdns[.]org
  • yursos.duckdns[.]org
  • 2022env.duckdns[.]org
  • 186.112.198[.]62
  • 179.13.5[.]158
  • 46.246.86[.]7
  • 46.246.4[.]12
  • 46.246.84[.]23
  • 46.246.14[.]22

Técnicas de MITRE ATT&CK

Esta tabla fue creada utilizando la versión 10 del framework de MITRE ATT&CK.

Táctica Técnica (ID) Nombre
Initial Access T1566.001 Phishing: Spearphishing Attachment
Execution T1059.001 Command and Scripting Interpreter: PowerShell
T1059.003 Command and Scripting Interpreter: Windows Command Shell
T1059.005 Command and Scripting Interpreter: Visual Basic
T1204.002 User Execution: Malicious File
T1106 Native API
Persistence T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder
Defense Evasion T1140 Deobfuscate/Decode Files or Information
T1112 Modify Registry
T1027 Obfuscated Files or Information
T1055 Process Injection
T1562.004 Impair Defenses: Disable or Modify System Firewall
T1070 Indicator Removal on Host
Command and Control T1071.001 Application Layer Protocol: Web Protocols
T1132.001 Data Encoding: Standard Encoding
T1568.001 Dynamic Resolution: Fast Flux DNS
T1105 Ingress Tool Transfer
T1571 Non-Standard Port
Discovery T1010 Application Window Discovery
T1057 Process Discovery
T1083 File and Directory Discovery
T1012 Query Registry
T1033 System Owner/User Discovery
T1082 System Information Discovery
Credential Access T1555.003 Credentials from Password Stores: Credentials from Web Browsers
Collection T1005 Data from Local System
T1056.001 Input Capture Keylogging
T1113 Screen Capture
T1125 Video Capture
Exfiltration T1041 Exfiltration Over C2 Channel