Apenas unas semanas después del ataque de cadena de suministro en el software Able Desktop, se produjo otro ataque similar en el sitio web de la Autoridad de Certificación del Gobierno de Vietnam (VGCA, por sus siglas en inglés): ca.gov.vn. Los atacantes modificaron dos de los instaladores del software disponibles para su descarga en este sitio web y agregaron un backdoor con el objetivo de comprometer a los usuarios de la aplicación legítima.

Los investigadores de ESET descubrieron este nuevo ataque de cadena de suministro a principios de diciembre de 2020 y notificaron a la organización comprometida y al VNCERT. Creemos que el sitio web no ha estado entregando instaladores del software comprometido hasta finales de agosto de 2020 y los datos de telemetría de ESET no indican que los instaladores comprometidos hayan estado siendo distribuidos en otro lugar. La Autoridad de Certificación del Gobierno de Vietnam confirmó que estaban al tanto del ataque previo a nuestra notificación y que informaron a los usuarios que descargaron el software troyanizado.

Ataque de cadena de suministro en Vietnam

En Vietnam, las firmas digitales son muy comunes, ya que los documentos firmados digitalmente tienen la misma validez que los firmados de puño y letra. De acuerdo con el Decreto No. 130/2018, los certificados criptográficos utilizados para firmar documentos deben ser otorgados por uno de los proveedores de certificados autorizados que incluyen a la VGCA, que forma parte del Comité de Cifrado del Gobierno. Ese comité, a su vez, depende del Ministerio de Información y Comunicación.

Además de emitir certificados, la VGCA desarrolla y distribuye un set de herramientas de firma digital, el cual es utilizado por el gobierno vietnamita, y probablemente por empresas privadas, para firmar documentos digitales. El compromiso del sitio web de una autoridad certificadora es una buena oportunidad para los grupos de APT, ya que es muy probable que los visitantes tengan un alto nivel de confianza en una organización estatal responsable de las firmas digitales.

Como se muestra en la Figura 1, parece que estos programas son distribuidos en agencias del Partido y del Estado.

Figura 1. Captura de pantalla de ca.gov.vn

De acuerdo con la telemetría de ESET, ca.gov.vn fue comprometido entre el 23 de julio y el 16 de agosto de 2020. Dos de los instaladores disponibles para su descarga, gca01-client-v2-x32-8.3.msi y gca01- client-v2-x64-8.3.msi, fueron modificados para incluir una pieza de malware conocida como PhantomNet o SManager que recientemente fue analizada por NTT Security. Pudimos confirmar que esos instaladores se descargaron de ca.gov.vn a través del protocolo HTTPS, por lo que creemos que es poco probable que sea un ataque de man-in-the-middle. Las URL que apuntan a instaladores maliciosos fueron:

  • https://ca.gov[.]vn/documents/20182/6768590/gca01-client-v2-x64-8.3.msi
  • https://ca.gov[.]vn/documents/20182/6768590/gca01-client-v2-x32-8.3.msi

Tal como se muestra en la Figura 2, esto también se confirma con datos de VirusTotal.

Figura 2. Captura de pantalla de VirusTotal. Muestra la URL desde la cual se descargó el instalador troyanizado.

Los instaladores troyanizados no están debidamente firmados, pero notamos que los instaladores limpios de GCA también están firmados incorrectamente (la firma digital del objeto no se verificó). Tanto el MSI oficial como el troyanizado utilizan un certificado asignado a la empresa Safenet.

La Figura 3 es un resumen del ataque de cadena de suministro. Para verse comprometido, un usuario tendría que descargar y ejecutar manualmente el software comprometido alojado en el sitio web oficial.

Figura 3. Esquema simplificado del ataque de cadena de suministro.

Una vez descargado y ejecutado, el instalador inicia el programa GCA genuino y el archivo malicioso. El archivo malicioso se escribe en C:\Program Files\VGCA\Authentication\SAC\x32\eToken.exe. Al instalar también el programa legítimo, los atacantes se aseguran de que los usuarios finales no noten fácilmente el compromiso.

Este archivo malicioso es un simple dropper que extrae un archivo contenedor de Windows (.cab) llamado 7z.cab y que contiene el backdoor.

Si el dropper se ejecuta como administrador, el backdoor se escribe en C:\Windows\apppatch\netapi32.dll y, para la persistencia, el dropper registra la DLL maliciosa como un servicio.

Si se ejecuta como un usuario regular, el backdoor se escribe en %TEMP%\Wmedia\<GetTickCount>.tmp y para la persistencia, el dropper crea una tarea programada que llama a la exportación Entery de la DLL maliciosa. Es interesante notar que la exportación de Entery también se vio en las versiones de TManger utilizadas por TA428, como lo detalla NTT Security.

PhantomNet

El backdoor fue nombrado Smanager_ssl.DLL por sus desarrolladores, pero usamos PhantomNet, ya que ese era el nombre del proyecto utilizado en una versión anterior de este backdoor. Esta versión más reciente fue compilada el 26 de abril de 2020, casi dos meses antes del ataque de cadena de suministro. Además de Vietnam, hemos visto víctimas en Filipinas, pero lamentablemente no descubrimos el mecanismo de entrega en esos casos.

Este backdoor es bastante simple y la mayoría de las capacidades maliciosas probablemente se implementen a través de plugins adicionales. Puede recuperar la configuración del proxy de la víctima y usarla para comunicarse con el servidor de comando y control (C&C). Esto muestra que es probable que los objetivos funcionen en una red corporativa.

PhantomNet utiliza el protocolo HTTPS para comunicarse con sus servidores C&C hardcodeados: vgca.homeunix[.]org y office365.blogdns[.]com. Para evitar un ataque man-in-the-middle, PhantomNet implementa la fijación de certificados utilizando funciones de la biblioteca SSPI. El certificado se descarga durante la primera conexión con el servidor de C&C y luego se guarda en el almacenamiento de certificados en Windows.

Además del uso de proveedores de DNS dinámicos, es interesante notar que el nombre del primer subdominio, vgca, fue elegido para imitar el nombre de la Autoridad de Certificación del Gobierno de Vietnam.

Los atacantes pueden controlar el implante mediante estos cinco comandos:

ID del comando Descripción
0x00110020 Obtiene información de la víctima (nombre de la computadora, nombre del host, nombre de usuario, versión del SO, privilegios de usuario (admin o no) y la dirección IP pública mediante consulta a ipinfo.io).
0x00110030 Llama la exportación DeletePluginObject de todos los plugins instalados.
0x00110040 Administración de plugins (instalar, remover, actiualizar). Los plugins tiene la siguiente exportación (incluyendo el error de tipeo en el primero): GetPluginInfomation, GetRegisterCode, GetPluginObject, DeletePluginObject.
0x00110070 Establece un valor de un campo dado en la estructura principal del backdoor.
0x547CBA78 Genera y establece una contraseña usando las funciones de SSPI. El propósito final es desconocido.

En VirusTotal, encontramos un plugin que coincide con las exportaciones anteriores. Es una compilación en debug y se denomina SnowballS de acuerdo con su ruta de PDB y otras rutas de debug:

  • E:\WorkCode\AD_Attacker\Server\EXE_DEBUG\SnowballS.pdb
  • e:\workcode\ad_attacker\server\plugins\plugins\snowballs\cdomainquery.cpp

Un análisis inicial y superficial sugiere que esta herramienta podría usarse para el movimiento lateral, ya que incorpora Invoke-Mimikatz. También puede recopilar información sobre la máquina víctima y las cuentas de usuario. Esto muestra que PhantomNet puede recibir plugins adicionales y complejos que probablemente solo se implementan en máquinas de particular interés para los operadores del malware.

En el caso del ataque en Vietnam, no pudimos recuperar datos sobre la actividad posterior al compromiso y, por lo tanto, no tenemos visibilidad del objetivo final de los atacantes.

Conclusión

Con el compromiso de Able Desktop, el ataque de WIZVERA VeraPort por Lazarus y el reciente ataque de cadena de suministro en Orion de SolarWinds, vemos que los ataques de cadena de suministro son un vector de compromiso bastante común para los grupos de ciberespionaje. En este caso en particular comprometieron el sitio web de una autoridad certificadora vietnamita, en la cual probablemente los usuarios tengan un alto nivel de confianza.

Los ataques a la cadena de suministro suelen ser difíciles de encontrar, ya que el código malicioso generalmente está oculto entre una gran cantidad de código legítimo, lo que dificulta mucho su descubrimiento.

Para cualquier consulta, comuníquese con nosotros a través de threatintel@eset.com. Los indicadores de compromiso también se pueden encontrar en nuestro repositorio de GitHub.

Indicadores de Compromiso (IoCs)

Archivos

SHA-1 ESET detection name Description
5C77A18880CF58DF9FBA102DD8267C3F369DF449 Win32/TrojanDropper.Agent.SJQ Trojanized installer (gca01-client-v2-x64-8.3.msi)
B0E4E9BB6EF8AA7A9FCB9C9E571D8162B1B2443A Win32/TrojanDropper.Agent.SJQ Trojanized installer (gca01-client-v2-x32-8.3.msi)
9522F369AC109B03E6C16511D49D1C5B42E12A44 Win32/TrojanDropper.Agent.SJQ PhantomNet dropper
989334094EC5BA8E0E8F2238CDF34D5C57C283F2 Win32/PhantomNet.B PhantomNet
5DFC07BB6034B4FDA217D96441FB86F5D43B6C62 Win32/PhantomNet.A PhantomNet plugin

Servidores C&C
office365.blogdns[.]com
vgca.homeunix[.]org

Técnicas de MITRE ATT&CK

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

Tactic ID Name Description
Initial Access T1195.002 Supply Chain Compromise: Compromise Software Supply Chain Attackers modified the installer of the GCA01 software that is hosted on ca.gov.vn and added a backdoor to the MSI installer.
Execution T1204.002 User Execution: Malicious File The victim needs to manually execute the trojanized installer.
Persistence T1053.005 Scheduled Task/Job: Scheduled Task If the user doesn’t have admin privileges, PhantomNet persists via a scheduled task.
T1543.003 Create or Modify System Process: Windows Service If the user has admin privileges, PhantomNet persists via a Windows service.
Discovery T1033 System Owner/User Discovery PhantomNet implements a function to retrieve the username.
T1082 System Information Discovery PhantomNet implements a function to retrieve the OS version.
Command and Control T1090.001 Proxy: Internal Proxy PhantomNet can retrieve the proxy configuration of the default browser and use it to connect to the C&C server.
T1071.001 Application Layer Protocol: Web Protocols PhantomNet uses HTTPS.
T1573.002 Encrypted Channel: Asymmetric Cryptography PhantomNet can add a certificate to the Windows store and use it for certificate pinning for its HTTPS communications.