Apenas algumas semanas após o ataque à cadeia de suprimentos direcionado ao software Able Desktop, outro ataque semelhante ocorreu ao site da Autoridade de Certificação do Governo do Vietnã (VGCA, sigla em inglês): ca.gov.vn. Os atacantes modificaram dois dos instaladores do software disponíveis para download no site e adicionaram um backdoor para comprometer os usuários do aplicativo legítimo.
Pesquisadores da ESET descobriram esse novo ataque à cadeia de suprimentos no início de dezembro de 2020 e notificaram a organização comprometida e o VNCERT. Acreditamos que o site não forneceu instaladores de software comprometidos até o final de agosto de 2020 e, além disso, os dados de telemetria da ESET não indicam que os instaladores comprometidos tenham sido distribuídos em qualquer outro lugar. A Autoridade de Certificação do Governo do Vietnã confirmou que estava ciente do ataque antes de nossa notificação e que alertou o incidente aos usuários que baixaram o software trojanizado.
Ataque à cadeia de suprimentos no Vietnã
No Vietnã, as assinaturas digitais são muito comuns, pois os documentos assinados digitalmente têm a mesma validade que as assinaturas de próprio punho. De acordo com o Decreto nº 130/2018, os certificados criptográficos utilizados para assinar documentos devem ser concedidos por um dos fornecedores de certificados autorizados que incluem a VGCA, que faz parte do Comitê de Criptografia do Governo. Essa comissão, por sua vez, depende do Ministério da Informação e Comunicação.
Além de emitir certificados, a VGCA desenvolve e distribui um kit de ferramentas de assinatura digital, que é usado pelo governo vietnamita e provavelmente por empresas privadas para assinar documentos digitais. O comprometimento de um site de autoridade de certificação é uma boa oportunidade para grupos APT, uma vez que os visitantes provavelmente terão um alto nível de confiança em uma organização estadual responsável por assinaturas digitais.
Conforme mostrado na Figura 1, parece que esses programas são implantados nas agências do Partido e do Estado.
De acordo com a telemetria da ESET, o site ca.gov.vn foi comprometido entre 23 de julho e 16 de agosto de 2020. Dois dos instaladores disponíveis para download, o gca01-client-v2-x32-8.3.msi e o gca01-client-v2-x64-8.3.msi, foram modificados para incluir um malware conhecido como PhantomNet ou SManager que recentemente foi analisado pela NTT Security. Conseguimos confirmar que esses instaladores foram baixados do site ca.gov.vn por meio do protocolo HTTPS, portanto, acreditamos que possa ser um ataque man-in-the-middle. Confira as URLs que apontam para instaladores maliciosos:
- 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
Assim como é possível ver na Figura 2, essa informação também pode ser confirmada pelos dados do VirusTotal.
Os instaladores trojanizados não estão devidamente assinados, mas notamos que os instaladores GCA limpos também estão assinados incorretamente (a assinatura digital do objeto não foi verificada). Tanto o MSIs oficial quanto o trojanizado usam um certificado atribuído a empresa Safenet.
A Figura 3 é um resumo do ataque à cadeia de suprimentos. Para ser atacado, o usuário teria que baixar e executar manualmente o software comprometido hospedado no site oficial.
Depois de baixado e executado, o instalador inicia o programa GCA original e o arquivo malicioso. O arquivo malicioso é gravado em C:\Program Files\VGCA\Authentication\SAC\x32\eToken.exe. Ao também instalar o programa legítimo, os atacantes garantem que esse comprometimento não seja facilmente percebido pelos usuários finais.
O arquivo malicioso é um dropper simples que extrai um arquivo de gabinete do Windows (.cab) chamado 7z.cab e que contém o backdoor.
Se o dropper for executado como administrador, o backdoor é gravado em C:\Windows\apppatch\netapi32.dll e, para garantir a persistência, o dropper registra a DLL maliciosa como um serviço.
Se executado como um usuário regular, o backdoor é gravado em %TEMP%\Wmedia\<GetTickCount> e para garantir a persistência, o dropper cria uma tarefa agendada que chama a exportação Entery da DLL maliciosa. É interessante notar que a exportação do Entery também foi vista nas versões do TManger usadas pelo TA428, conforme detalhado pela NTT Security.
PhantomNet
O backdoor foi denominado Smanager_ssl.DLL por seus desenvolvedores, mas usamos PhantomNet, pois esse era o nome do projeto usado em uma versão mais antiga desse backdoor. Esta versão mais recente foi compilada em 26 de abril de 2020, quase dois meses antes do ataque à cadeia de suprimentos. Além do Vietnã, vimos vítimas nas Filipinas, mas infelizmente não descobrimos o mecanismo de entrega nesses casos.
Esse backdoor é bastante simples e a maioria dos recursos maliciosos provavelmente são implantados por meio de plug-ins adicionais. Ele pode recuperar a configuração de proxy da vítima e usá-la para entrar em contato com o servidor de comando e controle (C&C). Isso mostra que os alvos provavelmente funcionem em uma rede corporativa.
O PhantomNet usa o protocolo HTTPS para se comunicar com seus servidores C&C hardcodeados: vgca.homeunix[.]org e office365.blogdns[.]com. Para prevenir um ataque man-in-the-middle, o PhantomNet implementa o pinning de certificado, usando funções da biblioteca SSPI. O certificado é baixado durante a primeira conexão com o servidor C&C e, em seguida, armazenado no armazenamento de certificados do Windows.
Além do uso de provedores de DNS dinâmicos, é interessante observar que o nome do primeiro subdomínio, vgca, foi escolhido para imitar o nome da Autoridade de Certificação do Governo do Vietnã.
Os atacantes podem controlar o implante usando estes cinco comandos:
ID do comando
Descrição
0x00110020
Obtém as informações da vítima (nome do computador, nome do host, nome de usuário, versão do sistema operacional, privilégios do usuário (admin ou não) e o endereço IP público consultando ipinfo.io).
0x00110030
Chama a exportação DeletePluginObject de todos os plug-ins instalados.
0x00110040
Gerencia os plug-ins (instalar, remover, atualizar). Os plug-ins têm a seguinte exportação (incluindo o erro de digitação no primeiro): GetPluginInfomation, GetRegisterCode, GetPluginObject, DeletePluginObject.
0x00110070
Define um valor de um determinado campo na estrutura principal do backdoor.
0x547CBA78
Gera e define uma senha usando as funções SSPI. O propósito final é desconhecido.
No VirusTotal, encontramos um plug-in que corresponde às exportações acima. É uma compilação em debug que se denomina como SnowballS de acordo com seu caminho PDB e outros caminhos de debug:
- E:\WorkCode\AD_Attacker\Server\EXE_DEBUG\SnowballS.pdb
- e:\workcode\ad_attacker\server\plugins\plugins\snowballs\cdomainquery.cpp
Uma análise inicial e superficial sugere que essa ferramenta pode ser usada para movimento lateral, pois incorpora Invoke-Mimikatz. Ela também pode coletar informações sobre a máquina da vítima e contas de usuário. Isso mostra que o PhantomNet pode receber plug-ins adicionais e complexos que provavelmente são implantados apenas em máquinas de interesse particular para os operadores do malware.
No caso do ataque no Vietnã, não conseguimos recuperar dados sobre a atividade pós-comprometimento e, portanto, não temos visibilidade do objetivo final dos atacantes.
Conclusão
Com o comprometimento do Able Desktop, o ataque ao WIZVERA VeraPort por Lazarus e o recente ataque à cadeia de suprimentos no Orien do SolarWinds, vemos que os ataques à cadeia de suprimentos são um vetor de comprometimento bastante comum para grupos de espionagem cibernética. Neste caso específico, eles comprometeram o site de uma autoridade de certificação vietnamita, na qual os usuários provavelmente têm um alto nível de confiança.
Os ataques à cadeia de suprimentos são normalmente difíceis de encontrar, já que o código malicioso geralmente fica oculto entre muitos códigos legítimos, tornando o seu reconhecimento bem mais difícil.
Em caso de dúvidas, entre em contato conosco pelo e-mail fearintel@eset.com. Os indicadores de comprometimento também podem ser encontrados em nosso repositório do GitHub.
Indicadores de Comprometimento (IoCs)
Arquivos
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 tabela foi construída usando a versão 8 do framework do MITER 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. |