Durante los primeros meses de 2022 detectamos una campaña que apunaba principalmente a organizaciones de Colombia y que intentaba distribuir el troyano de acceso remoto njRAT para obtener información sensible de los equipo comprometidos.
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.
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.
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:
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.
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.
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:softwarewow6432nodeMicrosoftWindowsUpdate en los registros de Windows. Si la ruta existe, almacena un código malicioso cifrado en AES.
Finalizada la manipulación de los registros de Windows, el código procede a crear 3 archivos enumerados a continuación:
- C:UsersNOMBRE_USUARIOAppDataRoamingMicrosoftWindowsStart MenuProgramsStartupLogin1.VBS
- C:UsersNOMBRE_USUARIOAppDataRoamingSystemLogin.bat
- C:UsersPublicmyScript.ps1
El contenido de estos tres archivos estaba cifrado en base64 dentro de este código malicioso.
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:softwarewow6432nodeMicrosoftWindowsUpdate.
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.
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.
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.
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:
- duckdns[.]org
- duckdns[.]org
- duckdns[.]org
- duckdns[.]org
- duckdns[.]org
- 112.198[.]62
- 13.5[.]158
- 246.86[.]7
- 246.4[.]12
- 246.84[.]23
- 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 |
Fuente info
Autor: Editor