Sophos X-Ops está siguiendo una situación en desarrollo relativa a un aparente ataque a la cadena de suministro contra la aplicación 3CX Desktop, posiblemente llevado a cabo por un grupo relacionado con un estado-nación. Esta página ofrece una visión general de la situación, un análisis de la amenaza, información para los cazadores e información sobre la protección de detección.
Actualizaremos esta página a medida que se desarrollen los acontecimientos y los conocimientos, incluida nuestra orientación sobre amenazas y detección.
[Última versión publicada a las 15:30 h PDT del 30 de marzo de 23, en la que se añaden detalles sobre las versiones afectadas, el uso indebido de ffmpeg.dll, la eliminación del repositorio malicioso, la comparación del cargador de shellcode de PE con el utilizado por el grupo de amenazas Lazarus, tres consultas más que los clientes pueden utilizar para determinar su exposición al ataque y varias detecciones adicionales]
Resumen
El software afectado es 3CX, un sistema telefónico PBX basado en software legítimo disponible en Windows, Linux, Android e iOS. El ciberdelincuente de la amenaza ha abusado de la aplicación para añadir un instalador que se comunica con varios servidores de comando y control (C2).
Se trata de una versión firmada digitalmente por el cliente de escritorio del softphone, tanto para Windows como para MacOS, que incluye una carga maliciosa. Según 3CX, su Update 7 para Windows, números de versión 18.12.407 y 18.12.416, y Electron Mac App números de versión 18.11.1213, 18.12.402, 18.12.407 y 18.12.416, están afectados. El evento post-explotación más común que hemos observado hasta la fecha es la presencia de un infostealer dirigido al navegador o navegadores del sistema comprometido. En el momento de redactar este informe, 3CX ha retirado las versiones afectadas de la aplicación para Windows.
Por el momento, las únicas plataformas afectadas confirmadas por nuestros datos de clientes son Windows y MacOS, lo que coincide con la información de 3CX sobre las plataformas afectadas. Según la información de su foro de soporte, se cree que las versiones de Android e iOS del software no están afectadas.
Análisis de la amenaza
El 22 de marzo, los usuarios de 3CX empezaron a hablar de posibles detecciones falsas positivas de 3CXDesktopApp por parte de sus agentes de seguridad de endpoints.
Sophos MDR identificó por primera vez actividad maliciosa dirigida a sus propios clientes y procedente de 3CXDesktopApp el 29 de marzo de 2023. Además, Sophos MDR ha observado que la campaña aprovecha un almacén público de archivos para alojar programas maliciosos codificados. Este repositorio ha estado en uso desde el 8 de diciembre de 2022. Después de que la noticia del compromiso se difundiera ampliamente el 29 de marzo, el repositorio fue retirado.
El ataque gira en torno a un escenario de sideloading de DLL, con un número notable de componentes implicados. Es probable que esto garantizara que los clientes pudieran utilizar el paquete de escritorio 3CX sin notar nada inusual en el paquete afectado. Hemos identificado tres componentes cruciales:
- exe, el cargador limpio
- dll, una DLL con una carga útil cifrada anexa
- dll, el cargador malicioso troyanizado
La Figura 2 presenta una visión de alto nivel del flujo de ataque tal y como funciona en Windows, hay algunas variaciones menores en los pasos posteriores con la versión para MacOS.
El archivo ffmpeg.dll contiene una URL incrustada que recuperaba una carga maliciosa .ico codificada del almacenamiento de archivos de GitHub en https[:]//raw.githubusercontent.com/IconStorages/images/main/ – aunque, de nuevo, una vez que se difundió ampliamente la noticia del compromiso, este repositorio fue retirado.
Vimos varias variaciones del archivo ffmpeg.dll, incluida una que estaba firmada por el propio certificado de 3CX; parecen ser versiones parcheadas maliciosamente del ffmpeg.dll legítimo. En una declaración del jueves, el equipo responsable del código fuente de ffmpeg se esforzó por distanciar su trabajo del compromiso de 3CX.
En un escenario normal de sideloading de DLL, el cargador malicioso (ffmpeg.dll) sustituiría a la dependencia limpia; su única función sería poner en cola la carga útil. Sin embargo, en este caso, ese cargador es totalmente funcional, como lo sería normalmente el producto 3CX, pero con hay una carga útil adicional insertada en la función DllMain. Esto añade volumen, pero puede reduce las sospechas: la aplicación 3CX funciona como se espera, incluso cuando el troyano se dirige a la baliza C2.
Permitir que el software abusado siga funcionando no es distinto de otros casos de sideloading DLL que hemos visto, pero esta campaña es ligeramente distinta incluso de la actual serie de casos de sideloading DLL que hemos visto. En particular, hemos observado que el cargador de código shell PE utilizado es único en nuestra experiencia. Anteriormente, solo lo habíamos visto en incidentes atribuidos al grupo Lazarus; el código de este incidente coincide byte a byte con esas muestras anteriores.
Información de caza
Determinar el impacto con Sophos XDR
- Determinar si los hosts se han comunicado con la infraestructura del actor de la amenaza: Data Lake
La siguiente consulta buscará hosts que se hayan comunicado con las distintas URL conocidas que utiliza esta campaña.
SELECT meta_hostname, sophos_pids, domain, clean_urls, source_ips, destination_ips, timestamps, ingestion_timestamp FROM xdr_data WHERE query_name = 'sophos_urls_windows' AND (LOWER(domain) LIKE '%akamaicontainer[.]com%' OR LOWER(domain) LIKE '%akamaitechcloudservices[.]com%' OR LOWER(domain) LIKE '%azuredeploystore[.]com%' OR LOWER(domain) LIKE '%azureonlinecloud[.]com%' OR LOWER(domain) LIKE '%azureonlinestorage[.]com%' OR LOWER(domain) LIKE '%dunamistrd[.]com%' OR LOWER(domain) LIKE '%glcloudservice[.]com%' OR LOWER(domain) LIKE '%journalide[.]org%' OR LOWER(domain) LIKE '%msedgepackageinfo[.]com%' OR LOWER(domain) LIKE '%msstorageazure[.]com%' OR LOWER(domain) LIKE '%msstorageboxes[.]com%' OR LOWER(domain) LIKE '%officeaddons[.]com%' OR LOWER(domain) LIKE '%officestoragebox[.]com%' OR LOWER(domain) LIKE '%pbxcloudeservices[.]com%' OR LOWER(domain) LIKE '%pbxphonenetwork[.]com%' OR LOWER(domain) LIKE '%pbxsources[.]com%' OR LOWER(domain) LIKE '%qwepoi123098[.]com%' OR LOWER(domain) LIKE '%sbmsa[.]wiki%' OR LOWER(domain) LIKE '%sourceslabs[.]com%' OR LOWER(domain) LIKE '%visualstudiofactory[.]com%' OR LOWER(domain) LIKE '%zacharryblogs[.]com%' OR (LOWER(domain) LIKE '%raw.githubusercontent[.]com%' AND LOWER(clean_urls) LIKE '%/iconstorages/images/main/%'))
- Determinar si los hosts han interactuado con archivos maliciosos
SELECT f.filename, f.directory, ROUND((f.size * 10e-7),2) AS size_MB, h.sha256, f.type,
f.attributes, f.mode,
datetime(f.btime,'unixepoch') AS file_created_time,
datetime(f.atime,'unixepoch') AS file_last_access_time,
datetime(f.mtime,'unixepoch') AS file_last_modified_time,
datetime(f.ctime,'unixepoch') AS file_last_status_change_time,
f.uid, u.username AS file_owner
FROM file f
LEFT JOIN users u ON f.uid = u.uid
LEFT JOIN groups g ON f.gid = g.gid
LEFT JOIN hash h ON f.path = h.path
WHERE f.path like 'c:\users\%\appdata\local\programs\3cxdesktopapp\app\%'
AND (f.filename = 'ffmpeg.dll'
OR f.filename LIKE 'd3dcompiler%.dll'
OR f.filename = 'trololo.dll')
AND (h.sha256 = 'c485674ee63ec8d4e8fde9800788175a8b02d3f9416d0e763360fff7f8eb4e02'
OR h.sha256 = '11be1803e2e307b647a8a7e02d128335c448ff741bf06bf52b332e0bbf423b03'
OR h.sha256 = '7986bbaee8940da11ce089383521ab420c443ab7b15ed42aed91fd31ce833896'
OR h.sha256 = 'aa4e398b3bd8645016d8090ffc77d15f926a8e69258642191deb4e68688ff973')
- Determinar si los hosts están ejecutando las versiones afectadas
SELECT MIN(ingestion_timestamp) AS first_seen, MAX(ingestion_timestamp) AS last_seen, meta_hostname, ARRAY_JOIN(ARRAY_AGG(DISTINCT(meta_hostname)), ', ') AS hosts, ARRAY_JOIN(ARRAY_AGG(sophos_pid),', ') AS spids, LOWER(name) AS name, sha256, company_name, file_description, file_size, file_version, original_filename FROM xdr_data WHERE query_name = 'running_processes_windows_sophos' AND ( LOWER(name) = '3cxdesktopapp.exe' OR LOWER(original_filename) = '3cxdesktopapp.exe' OR LOWER(product_name) ='3cx desktop app') GROUP by meta_hostname, LOWER(name), sha256, company_name, file_description, file_size, file_version, original_filename ORDER BY meta_hostname desc
- Determinar si los hosts se han comunicado con la infraestructura del actor de la amenaza, para MacOS
SELECT
meta_hostname,
date_format(from_unixtime(time), '%Y-%m-%d %H:%i:%s') AS date_time,
ingestion_timestamp
pid,
name,
cmdline,
path,
parent,
gid,
uid,
euid,
egid,
sha1,
sha256
FROM
xdr_data
WHERE
query_name = 'running_processes_osx_events'
AND LOWER(cmdline) LIKE '%sh -c%'
AND LOWER(cmdline) LIKE '%/3cx desktop app/updateagent%'
También recomendamos a los usuarios del software de 3CX que vigilen los canales de comunicación de la empresa: tienen un blog y también un foro de soporte e información. El 30 de marzo, la empresa recomendó a sus clientes que desinstalaran y volvieran a instalar la aplicación, y les sugirió que también utilizaran el cliente PWA basado en navegador de la empresa mientras se solucionaba la situación.
Hemos publicado en nuestro GitHub una lista de IOC para este ataque.
Protección de detección
SophosLabs ha bloqueado los dominios maliciosos y publicado las siguientes detecciones:
Detecciones estáticas:
- Troj/Loader-AF (ffmpeg.dll troyanizado)
- Troj/Mdrop-JTQ (instaladores)
- OSX/Mdrop-JTR (instaladores)
- OSX/Loader-AG (ffmpeg.dll troyanizado)
Detección de reputación:
- Mal/Generic-R / Mal/Generic-S (d3dcompiler con shellcode adjunto)
Detección de memoria:
- Mem/Loader-AH
También hemos bloqueado la lista de dominios C2 conocidos asociados a la amenaza y seguiremos añadiendo más a esa lista en el archivo IOC de nuestro GitHub, como se ha indicado anteriormente. Por último, las dos versiones maliciosas de ffmpeg.dll incluidas en la aplicación 3CX afectada están marcadas por sus hashes como de baja reputación.
SophosLabs está investigando activamente otras posibles detecciones de actividades derivadas de este software. Además, para los clientes de Sophos MDR, el equipo de Ingeniería de Detección de MDR dispone de diversas detecciones de comportamiento que detectarán la actividad de seguimiento.