Investigadores de ESET descubrieron una nueva campaña del grupo de APT Lazarus llamada Operación DreamJob dirigida a usuarios de Linux. Operación DreamJob es el nombre de una serie de campañas en las que el grupo utiliza técnicas de ingeniería social para comprometer a sus objetivos mediante falsas ofertas de trabajo que utiliza como anzuelo. En este caso, hemos sido capaces de reconstruir toda la cadena, desde el archivo ZIP que entrega una oferta de trabajo falsa de HSBC como señuelo, hasta el payload final: el backdoor de Linux SimplexTea distribuido a través de una cuenta de almacenamiento en la nube de OpenDrive. Hasta donde sabemos, esta es la primera referencia pública a este importante actor de amenazas alineado con Corea del Norte utilizando malware para Linux como parte de esta operación.
Además, este descubrimiento nos ayudó a confirmar con un alto nivel de confianza que el reciente ataque a la cadena de suministro de 3CX fue en realidad llevado a cabo por el grupo Lazarus, un vínculo que se sospechaba desde el principio y que varios investigadores de seguridad han demostrado desde entonces. En esta publicación corroboramos estos hallazgos y proporcionamos pruebas adicionales que demuestran la conexión entre Lazarus y el ataque a la cadena de suministro de 3CX.
El ataque de cadena de suministro que afectó a 3CX
3CX es un desarrollador y distribuidor de software VoIP que ofrece servicios de sistema telefónico a muchas organizaciones a nivel internacional. Según su sitio web, 3CX tiene más de 600,000 clientes y 12,000,000 de usuarios en varios sectores, incluyendo el aeroespacial, la salud y el de la hospitalidad. 3CX proporciona software de cliente para utilizar sus sistemas a través de un navegador web, aplicación móvil o una aplicación de escritorio. A fines de marzo de 2023, se descubrió que la aplicación de escritorio tanto para Windows como para macOS contenía código malicioso que permitía a un grupo de atacantes descargar y ejecutar código arbitrario en todas las máquinas donde se instaló la aplicación. Rápidamente, se determinó que este código malicioso no fue agregado por 3CX, sino que 3CX fue comprometido y que su software fue utilizado en un ataque de cadena de suministro impulsado por actores de amenazas externos para distribuir malware adicional a clientes específicos de 3CX.
Este incidente de seguridad ha sido noticia en los últimos días. Inicialmente reportado el 29 de marzo de 2023 en un hilo de Reddit por un ingeniero de CrowdStrike, seguido por un informe oficial de CrowdStrike en el que se afirmaba con un alto grado de confianza que LABIRINTH CHOLLIMA, el nombre en clave que utiliza la compañía para referirse a Lazarus, estaba detrás del ataque (pero omitiendo cualquier evidencia que respalde la afirmación). Debido a la gravedad del incidente, múltiples compañías de seguridad comenzaron a contribuir con sus respectivos resúmenes de los eventos, como Sophos, Check Point, Broadcom, Trend Micro y más.
Además, la parte del ataque que afectó a los sistemas que ejecutan macOS fue cubierta en detalle en un hilo de Twitter y en una publicación realizada por Patrick Wardle.
Cronología de los hechos
La cronología muestra que los perpetradores planearon los ataques mucho antes de la ejecución. Tan temprano como diciembre de 2022. Esto sugiere que ya tenían un pie dentro de la red de 3CX desde finales del año pasado.
Mientras que la aplicación troyanizada de 3CX para macOS muestra que fue firmada a finales de enero, no fue hasta el 14 de febrero de 2023 que vimos la aplicación maliciosa en nuestra telemetría. No está claro si la actualización maliciosa para macOS se distribuyó antes de esa fecha.
Aunque la telemetría de ESET muestra la existencia del payload de segunda etapa para macOS tan pronto como febrero, no teníamos una muestra ni metadatos que nos alertaran sobre su malicia. Incluimos esta información para ayudar a quienes trabajan en seguridad para determinar cuánto tiempo atrás los sistemas podrían haber sido comprometidos.
Varios días antes de que se revelara públicamente el ataque, se subió a VirusTotal una muestra de un misterioso downloader para Linux. Este downloader descarga un nuevo payload malicioso de Lazarus para Linux y más adelante en esta publicación explicamos su relación con el ataque.
Atribución a Lazarus del ataque de cadena de suministro a 3CX
Lo que se ha publicado hasta el momento
Hay un dominio que tiene un papel significativo en nuestra atribución: journalide[.]org. Se menciona en algunos de los informes de otros proveedores mencionados anteriormente, pero su presencia nunca se explica. Curiosamente, los artículos de SentinelOne y ObjectiveSee no mencionan este dominio. Tampoco lo hace una publicación de Volexity, que incluso se abstuvo de proporcionar atribución, indicando "Volexity actualmente no puede relacionar la actividad divulgada con ningún actor de amenazas". Sus analistas fueron de los primeros en investigar el ataque en profundidad y crearon una herramienta para extraer una lista de servidores de C&C a partir de iconos cifrados en GitHub. Esta herramienta es útil, ya que los atacantes no embebieron los servidores C&C directamente en las etapas intermedias, sino que utilizaron GitHub como dead-drop resolver. Las etapas intermedias son downloaders para Windows y macOS que denominamos IconicLoaders, y los payloads que obtienen como IconicStealer y UpdateAgent, respectivamente.
El 30 de marzo, Joe Desimone, un investigador de seguridad de Elastic Security, fue uno de los primeros en proporcionar, a través de un hilo de Twitter, pistas sustanciales que señalan que los ataques a 3CX probablemente están relacionados con el grupo Lazarus. Desimone observó que un fragmento de código de shellcode agregado al payload desde d3dcompiler_47.dll es similar a fragmentos en el loader de AppleJeus atribuidos a Lazarus por CISA en abril de 2021.
El 31 de marzo se informó que 3CX había contratado a Mandiant para proporcionar servicios de respuesta a incidentes relacionados con el ataque de cadena de suministro.
El 3 de abril, Kaspersky, a través de su telemetría, mostró una relación directa entre las víctimas del ataque de cadena de suministro a 3CX y el despliegue de un backdoor denominado Gopuram, y señalo cómo los elementos en común payloads con el mismo nombre: guard64.dll. Los datos de Kaspersky muestran que Gopuram está conectado a Lazarus porque coexistieron en máquinas víctimas junto con AppleJeus, un malware que ya fue atribuido a Lazarus. Tanto Gopuram como AppleJeus se observaron en ataques contra una compañía de criptomonedas.
Luego, el 11 de abril, el CISO de 3CX resumió las conclusiones de un informe intermedio elaborado por Mandiant en una publicación. Según ese informe, dos muestras de malware para Windows, un loader de shellcode llamado TAXHAUL y un downloader complejo llamado COLDCAT, estuvieron involucrados en el compromiso de 3CX. No se proporcionaron hashes, pero la regla YARA de Mandiant, llamada TAXHAUL, también se activa en otras muestras que ya se encuentran en VirusTotal:
- SHA-1: 2ACC6F1D4656978F4D503929B8C804530D7E7CF6 (ualapi.dll),
- SHA-1: DCEF83D8EE080B54DC54759C59F955E73D67AA65 (wlbsctrl.dll)
Los nombres de archivo, pero no los MD5, de estas muestras coinciden con los del artículo de Kaspersky. Sin embargo, 3CX afirma explícitamente que COLDCAT difiere de Gopuram.
La siguiente sección contiene una descripción técnica del nuevo payload malicioso de Lazarus para Linux que analizamos recientemente, y una explicación de cómo nos ayudó a fortalecer esta conexión entre Lazarus y el ataque a 3CX.
Operación DreamJob con un payload para Linux
La Operación DreamJob del grupo Lazarus involucra el acercamiento a sus objetivos a través de LinkedIn y tentarlos con ofertas de trabajo dirigidas a líderes de ciertas industrias. El nombre fue acuñado por ClearSky en un artículo publicado en agosto de 2020. Ese artículo describe una campaña de ciberespionaje de Lazarus dirigida a empresas de defensa y aeroespaciales. La actividad se superpone con lo que ESET denominó Operación In(ter)ception, que fue el análisis de una serie de ataques con fines de ciberespionaje que han estado en curso desde al menos septiembre de 2019 y que apuntan a empresas aeroespaciales, militares y de defensa y en los cuales se utilizan herramientas maliciosas específicas, inicialmente solo para Windows. Durante julio y agosto de 2022, encontramos dos instancias de Operación In(ter)ception que apuntaban a macOS. Se subió una muestra de malware a VirusTotal desde Brasil, y otro ataque apuntó a un usuario de las soluciones de ESET en Argentina. Hace unas semanas, se encontró en VirusTotal un payload nativo para Linux junto con un documento utilizado como señuelo en formato PDF y que utiliza el nombre de HSBC. Esto completa la capacidad de Lazarus de poder comprometer todos los principales sistemas operativos de escritorio.
El 20 de marzo, un usuario en el país de Georgia cargó a VirusTotal un archivo ZIP llamado HSBC job offer.pdf.zip. Teniendo en cuenta otras campañas de Lazarus en las que utilizó falsas ofertas de trabajo, es probable que este payload se haya distribuido a través de spearphishing o mensajes directos en LinkedIn. El archivo contiene un solo archivo: un binario nativo de Intel de 64 bits escrito en Go y llamado HSBC job offer․pdf que en español se traduce como “HSBC oferta de trabajo.pdf”.
Curiosamente, la extensión del archivo no es .pdf. Esto se debe a que el carácter de punto en el nombre de archivo es un líder de punto representado por el carácter Unicode U+2024. El uso del carácter de líder de punto en el nombre de archivo probablemente fue un intento de engañar al administrador de archivos para que trate al archivo como un ejecutable en lugar de un PDF. Esto podría hacer que el archivo se ejecute cuando se hace doble clic en él en lugar de abrirlo con un visor de PDF. Al ejecutarlo, se muestra al usuario un documento PDF falso utilizando xdg-open, que abrirá el documento utilizando el lector de PDF de preferencia del usuario (ver figura 3). Decidimos llamar a este downloader ELF OdicLoader, ya que tiene un rol similar a los IconicLoaders en otras plataformas y el payload se obtiene de OpenDrive.
OdicLoader droppea un documento PDF falso que abre utilizando el visor de PDF predeterminado del sistema (ver figura 2), y luego descarga un backdoor de segunda etapa desde el servicio en la nube de OpenDrive. El archivo descargado se almacena en~/.config/guiconfigd (SHA-1: 0CA1723AFE261CD85B05C9EF424FC50290DCE7DF). Llamamos a este backdoor de segunda etapa SimplexTea.
Como último paso de su ejecución, OdicLoader modifica ~/.bash_profile, y de esta manera se inicia SimplexTea con Bash y su salida se mutea (~/.config/guiconfigd >/dev/null 2>&1).
SimplexTea es un backdoor para Linux escrito en C++. Como se destaca en la Tabla 1, los nombres de sus clases son muy similares a los nombres de las funciones encontradas en una muestra, con el nombre de archivo "sysnetd", enviada a VirusTotal desde Rumania (SHA-1: F6760FB1F8B019AF2304EA6410001B63A1809F1D). Debido a las similitudes en los nombres de las clases y las funciones entre SimplexTea y sysnetd, creemos que SimplexTea es una versión actualizada, reescrita de C a C++.
Tabla 1. Comparación de los nombres de los símbolos originales de dos backdoors para Linux que se cargaron a VirusTotal.
guiconfigd |
sysnetd |
---|---|
CMsgCmd::Start(void) | MSG_Cmd |
CMsgSecureDel::Start(void) | MSG_Del |
CMsgDir::Start(void) | MSG_Dir |
CMsgDown::Start(void) | MSG_Down |
CMsgExit::Start(void) | MSG_Exit |
CMsgReadConfig::Start(void) | MSG_ReadConfig |
CMsgRun::Start(void) | MSG_Run |
CMsgSetPath::Start(void) | MSG_SetPath |
CMsgSleep::Start(void) | MSG_Sleep |
CMsgTest::Start(void) | MSG_Test |
CMsgUp::Start(void) | MSG_Up |
CMsgWriteConfig::Start(void) | MSG_WriteConfig |
MSG_GetComInfo | |
CMsgHibernate::Start(void) | |
CMsgKeepCon::Start(void) | |
CMsgZipDown::Start(void) | |
CMsgZip::StartZip(void *) | |
CMsgZip::Start(void) | |
CHttpWrapper::RecvData(uchar *&,uint *,uint,signed char) | |
RecvMsg | |
CHttpWrapper::SendMsg(_MSG_STRUCT *) | SendMsg |
CHttpWrapper::SendData(uchar *,uint,uint) | |
CHttpWrapper::SendMsg(uint,uint,uchar *,uint,uint) | |
CHttpWrapper::SendLoginData(uchar *,uint,uchar *&,uint *) |
¿Cómo está relacionado sysnetd con Lazarus? La siguiente sección muestra similitudes con el backdoor para Windows de Lazarus llamado BADCALL.
BADCALL para Linux
Atribuimos sysnetd a Lazarus debido a sus similitudes con los siguientes dos archivos (y creemos que sysnetd es una variante para Linux del backdoor para Windows de Lazarus llamado BADCALL):
- P2P_DLL.dll (SHA-1: 65122E5129FC74D6B5EBAFCC3376ABAE0145BC14), muestra similitudes de código con sysnetd en la forma de los dominios utilizados como fachada para una conexión TLS falsa (ver Figura 4). CISA lo atribuyó a Lazarus en diciembre de 2017. A partir de septiembre de 2019, CISA comenzó a llamar a las versiones más nuevas de este malware BADCALL (SHA-1: D288766FA268BC2534F85FD06A5D52264E646C47).
- prtspool (SHA-1: 58B0516D28BD7218B1908FB266B8FE7582E22A5F) muestra similitudes de código con sysnetd (ver Figura 5). Fue atribuido a Lazarus por CISA en febrero de 2021. También se observa que SIMPLESEA, un backdoor para macOS descubierto durante la respuesta al incidente de 3CX, implementa el cifrado de flujo A5/1.
Esta versión para Linux del backdoor BADCALL, sysnetd, carga su configuración desde un archivo llamado /tmp/vgauthsvclog. Dado que los operadores de Lazarus han disfrazado previamente sus payloads, el uso de este nombre, que es utilizado por el servicio de autenticación de invitados de VMware, sugiere que el sistema objetivo puede ser una máquina virtual VMware de Linux. Es interesante destacar que la clave XOR en este caso es la misma que la utilizada en SIMPLESEA de la investigación de 3CX.
Al observar los tres enteros de 32 bits, 0xC2B45678, 0x90ABCDEF y 0xFE268455 de la Figura 5, que representan una clave para una implementación personalizada del cifrado A5/1, nos dimos cuenta de que el mismo algoritmo y las claves idénticas se utilizaron en un malware para Windows que se remonta a finales de 2014 y que estuvo involucrado en uno de los casos más notorios de Lazarus: el ciber-sabotaje a Sony Pictures Entertainment (SHA-1: 1C66E67A8531E3FF1C64AE57E6EDFDE7BEF2352D).
Puntos adicionales para la atribución
Para resumir lo que hemos mencionado hasta ahora, atribuimos el ataque a la cadena de suministro de 3CX al grupo Lazarus con un alto nivel de confianza. Esto se basa en los siguientes factores:
- Malware (el conjunto de intrusiones):
- El IconicLoader (samcli.dll) utiliza el mismo tipo de cifrado fuerte - AES-GCM - que SimplexTea (cuya atribución a Lazarus se estableció a través de la similitud con BALLCALL para Linux); solo difieren las claves e inicialización de vectores.
- Basado en los encabezados PE Rich, tanto IconicLoader (samcli.dll) como IconicStealer (sechost.dll) son proyectos de un tamaño similar y compilados en el mismo entorno de Visual Studio que los ejecutables iertutil.dll (SHA-1: 5B03294B72C0CAA5FB20E7817002C600645EB475) e iertutil.dll (SHA-1: 7491BD61ED15298CE5EE5FFD01C8C82A2CDB40EC) reportados en las campañas de criptomonedas de Lazarus por Volexity y Microsoft. Incluimos a continuación la regla YARA RichHeaders_Lazarus_NukeSped_IconicPayloads_3CX_Q12023, que notifica todas estas muestras, y ningún archivo malicioso o limpio no relacionado, como se probó en las bases de datos actuales de ESET y las muestras cargadas recientemente a VirusTotal.
- El payload de SimplexTea carga su configuración de una manera muy similar al malware SIMPLESEA según la respuesta oficial sobre el incidente a 3CX. La clave XOR difiere (0x5E vs. 0x7E), pero la configuración tiene el mismo nombre: apdl.cf (ver Figura 8).
- Infraestructura:
- Hay una infraestructura de red compartida con SimplexTea, ya que utiliza https://journalide[.]org/djour.php como su C&C, cuyo dominio se informó en los resultados oficiales proporcionados por la respuesta al incidente a 3CX realizada por Mandiant.
Conclusión
El ataque a la cadena de suministro de 3CX ha llamado mucho la atención de la comunidad de seguridad desde su divulgación el 29 de marzo. El software comprometido, desplegado en varias infraestructuras de TI, permite la descarga y ejecución de cualquier tipo de payload, por lo tanto el impacto de un ataque de estas características puede ser devastador. Desafortunadamente, ningún proveedor de software está expuesto a ser comprometido y distribuir inadvertidamente versiones troyanizadas de sus aplicaciones.
La sigilosa naturaleza de un ataque de cadena de suministro hace que este método de distribución de malware sea muy atractivo desde la perspectiva del atacante. Lazarus ya ha utilizado esta técnica en el pasado. Por ejemplo, en una campaña dirigida a usuarios del software WIZVERA VeraPort en Corea del Sur en 2020. Las similitudes con otras piezas de malware conocidas y que forman parte del conjunto de herramientas que utiliza Lazarus, además de las técnicas típicas del grupo, sugieren fuertemente que el reciente compromiso de 3CX es también obra de Lazarus.
También es interesante destacar que Lazarus puede producir y utilizar malware para atacar a los principales sistemas operativos de escritorio: Windows, macOS y Linux. Ambos sistemas Windows y macOS fueron atacados durante el incidente de 3CX a través del versiones troyanizadas del software VoIP de 3CX para ambos sistemas operativos que permitían a los atacantes obtener payloads arbitrarias. En el caso de 3CX, existen versiones de malware de segundo nivel para Windows y macOS. Este artículo demuestra la existencia de un backdoor para Linux que se corresponde con el malware SIMPLESEA para macOS visto en el incidente de 3CX. Nombramos este componente de Linux como SimplexTea y mostramos que forma parte de Operation DreamJob, la campaña insignia de Lazarus que se caracteriza por utilizar ofertas de trabajo para atraer y comprometer a víctimas desprevenidas.
Por cualquier consulta sobre la investigación publicada en WeLiveSecurity, por favor contáctenos a threatintel@eset.com.
IoCs
Archivos
SHA-1 | Filename | ESET detection name | Description |
---|---|---|---|
0CA1723AFE261CD85B05C9EF424FC50290DCE7DF | guiconfigd | Linux/NukeSped.E | |
3A63477A078CE10E53DFB5639E35D74F93CEFA81 | HSBC_job_offer․pdf | Linux/NukeSped.E | OdicLoader, a 64-bit downloader for Linux, written in Go. |
9D8BADE2030C93D0A010AA57B90915EB7D99EC82 | HSBC_job_offer.pdf.zip | Linux/NukeSped.E | A ZIP archive with a Linux payload, from VirusTotal. |
F6760FB1F8B019AF2304EA6410001B63A1809F1D | sysnetd | Linux/NukeSped.G | BADCALL for Linux. |
Red
IP address | Domain | Hosting provider | First seen | Details |
---|---|---|---|---|
23.254.211[.]230 | N/A | Hostwinds LLC. | N/A | C&C server for BADCALL for Linux |
38.108.185[.]79 38.108.185[.]115 |
od[.]lk | Cogent Communications | Remote OpenDrive storage containing SimplexTea (/d/NTJfMzg4MDE1NzJf/vxmedia) | |
172.93.201[.]88 | journalide[.]org | Nexeon Technologies, Inc. | C&C server for SimplexTea (/djour.php) |
Técnicas de MITRE ATT&CK
Tactic | ID | Name | Description |
---|---|---|---|
Reconnaissance | T1593.001 | Search Open Websites/Domains: Social Media | Lazarus attackers probably approached a target with a fake HSBC-themed job offer that would fit the target’s interest. This has been done mostly via LinkedIn in the past. |
Resource Development | T1584.001 | Acquire Infrastructure: Domains | Unlike many previous cases of compromised C&Cs used in Operation DreamJob, Lazarus operators registered their own domain for the Linux target. |
T1587.001 | Develop Capabilities: Malware | Custom tools from the attack are very likely developed by the attackers. | |
T1585.003 | Establish Accounts: Cloud Accounts | The attackers hosted the final stage on the cloud service OpenDrive. | |
T1608.001 | Stage Capabilities: Upload Malware | The attackers hosted the final stage on the cloud service OpenDrive. | |
Execution | T1204.002 | User Execution: Malicious File | OdicLoader masquerades as a PDF file in order to fool the target. |
Initial Access | T1566.002 | Phishing: Spearphishing Link | The target likely received a link to third-party remote storage with a malicious ZIP archive, which was later submitted to VirusTotal. |
Persistence | T1546.004 | Event Triggered Execution: Unix Shell Configuration Modification | OdicLoader modifies the victim’s Bash profile, so SimplexTea is launched each time Bash is stared and its output is muted. |
Defense Evasion | T1134.002 | Access Token Manipulation: Create Process with Token | SimplexTea can create a new process, if instructed by its C&C server. |
T1140 | Deobfuscate/Decode Files or Information | SimplexTea stores its configuration in an encrypted apdl.cf. | |
T1027.009 | Obfuscated Files or Information: Embedded Payloads | The droppers of all malicious chains contain an embedded data array with an additional stage. | |
T1562.003 | Impair Defenses: Impair Command History Logging | OdicLoader modifies the victim’s Bash profile, so the output and error messages from SimplexTea are muted. SimplexTea executes new processes with the same technique. | |
T1070.004 | Indicator Removal: File Deletion | SimplexTea has the ability to delete files securely. | |
T1497.003 | Virtualization/Sandbox Evasion: Time Based Evasion | SimplexTea implements multiple custom sleep delays in its execution. | |
Discovery | T1083 | File and Directory Discovery | SimplexTea can list the directory content together with their names, sizes, and timestamps (mimicking the ls -la command). |
Command and Control | T1071.001 | Application Layer Protocol: Web Protocols | SimplexTea can use HTTP and HTTPS for communication with its C&C server, using a statically linked Curl library. |
T1573.001 | Encrypted Channel: Symmetric Cryptography | SimplexTea encrypts C&C traffic using the AES-GCM algorithm. | |
T1132.001 | Data Encoding: Standard Encoding | SimplexTea encodes C&C traffic using base64. | |
T1090 | Proxy | SimplexTea can utilize a proxy for communications. | |
Exfiltration | T1041 | Exfiltration Over C2 Channel | SimplexTea can exfiltrate data as ZIP archives to its C&C server. |
Apéndice
Esta regla YARA notifica el cluster que contiene tanto IconicLoader como IconicStealer, así como también los payloads desplegados en las camáñas apuntando a criptomonedas que tuvieron lugar en diciembre de 2022.
/*
The following rule will only work with YARA version >= 3.11.0
*/
import "pe"
rule RichHeaders_Lazarus_NukeSped_IconicPayloads_3CX_Q12023
{
meta:
description = " Rich Headers-based rule covering the IconicLoader and IconicStealer from the 3CX supply chain incident, and also payloads from the cryptocurrency campaigns from 2022-12"
author = "ESET Research"
date = "2023-03-31"
hash = "3B88CDA62CDD918B62EF5AA8C5A73A46F176D18B"
hash = "CAD1120D91B812ACAFEF7175F949DD1B09C6C21A"
hash = "5B03294B72C0CAA5FB20E7817002C600645EB475"
hash = "7491BD61ED15298CE5EE5FFD01C8C82A2CDB40EC"
condition:
pe.rich_signature.toolid(259, 30818) == 9 and
pe.rich_signature.toolid(256, 31329) == 1 and
pe.rich_signature.toolid(261, 30818) >= 30 and pe.rich_signature.toolid(261, 30818) <= 38 and
pe.rich_signature.toolid(261, 29395) >= 134 and pe.rich_signature.toolid(261, 29395) <= 164 and
pe.rich_signature.toolid(257, 29395) >= 6 and pe.rich_signature.toolid(257, 29395) <= 14
}