Búsqueda de Ciberamenazas

Todo lo que debes saber del ataque a 3CX

Una versión “troyanizada” del popular software VOIP/PBX es noticia; esto es lo que están haciendo los cazadores y los defensores

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.

El momento del compromiso
Figura 1: El proceso de actualización en el momento en que cae la versión maliciosa

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.

Un diagrama de flujo que muestra la complejidad del ataque
Figura 2: vista de alto nivel del flujo del ataque

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.

Una captura del tuit de ffmpeg, que dice "Ha habido varios informes incorrectos de que FFmpeg ha estado involucrado en la distribución de malware. FFmpeg sólo proporciona el código fuente y éste no se ha visto comprometido. Cualquier "ffmpeg.dll" que se haya visto comprometido es responsabilidad del proveedor. "
Figura 3: cuando ffmpeg entró en Twitter para defender su código

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.

El ataque a la cadena de suministro 3CX experimentado por los desarrolladores y los usuarios finales
Figura 4: lo que experimentaron los desarrolladores y clientes 3CX afectados

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

  1. 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/%'))
  1. 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')
  1. 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
  1. 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.