A equipe de pesquisa da ESET observou várias campanhas direcionadas a órgãos governamentais na Tailândia desde 2023. Esses ataques utilizam versões atualizadas de componentes previamente atribuídos ao grupo de ameaças persistentes avançadas (APT) Mustang Panda, alinhado à China, além de um novo conjunto de ferramentas que se aproveitam de serviços como Pastebin, Dropbox, OneDrive e GitHub para executar comandos em máquinas comprometidas e filtrar documentos confidenciais.

Com base em nossas análises, decidimos monitorar esse conjunto de atividades como sendo obra de um grupo de cibercriminosos independente. A recorrência da cadeia "[Bb]ectrl" no código das ferramentas utilizadas pelo grupo nos levou a batizá-lo de "CeranaKeeper", uma combinação das palavras "beekeeper" (apicultor, em português) e Apis cerana, uma espécie de abelha asiática.

CeranaKeeper abusa de servicios en la nube y de intercambio de archivos populares y legítimos, como Dropbox y OneDrive, para implementar backdoors y herramientas de extracción personalizadas.

Pontos principais deste post:

  • A equipe de pesquisa da ESET descobriu um novo grupo de cibercriminosos alinhado à China, o CeranaKeeper, direcionado a órgãos governamentais na Tailândia. Algumas de suas ferramentas foram anteriormente atribuídas por outros pesquisadores ao Mustang Panda.
  • O grupo atualiza constantemente seu backdoor para evitar detecção e diversifica seus métodos para facilitar a extração massiva de dados.
  • CeranaKeeper se aproveita de serviços de armazenamento em nuvem populares e legítimos, como Dropbox e OneDrive, para implantar backdoors e ferramentas de extração personalizadas.
  • O grupo utiliza as funções de solicitação de pull e comentários de problemas no GitHub para criar um shell reverso furtivo, aproveitando o GitHub, uma popular plataforma on-line de compartilhamento e colaboração de código, como servidor de C&C.

CeranaKeeper está ativo pelo menos desde o início de 2022, com foco principal em órgãos governamentais de países asiáticos como Tailândia, Mianmar, Filipinas, Japão e Taiwan; acreditamos que esteja alinhado com os interesses da China. Destaca-se pela incessante busca por dados, na qual seus atacantes utilizam uma ampla gama de ferramentas para extrair o máximo de informações possível das redes comprometidas. Na operação que analisamos, o grupo transformou as máquinas comprometidas em servidores de atualização, desenvolveu uma técnica inovadora usando as funções de solicitação de pull e comentários de problemas do GitHub para criar um shell reverso sigiloso, e implantou componentes de coleta de uso único ao capturar árvores inteiras de arquivos.

Apresentamos brevemente o CeranaKeeper no Relatório de Atividade APT da ESET, que abrangeu o quarto trimestre de 2023 até o primeiro trimestre de 2024 e foi publicado em maio de 2024. Neste post, descrevemos essas ferramentas personalizadas, até então não documentadas, utilizadas pelo CeranaKeeper, e compartilhamos mais descobertas sobre as operações desse grupo cibercriminoso.

Algumas de nossas descobertas sobre o CeranaKeeper e o incidente na Tailândia foram apresentados na conferência Virus Bulletin em 2 de outubro de 2024 e no nosso white paper, que pode ser lido na íntegra aqui. Ainda este mês, o Virus Bulletin também publicará nosso white paper sobre o tema em seu site.

Atribuição

Embora algumas atividades do CeranaKeeper tenham sido anteriormente atribuídas ao grupo Mustang Panda (também conhecido como Earth Preta ou Stately Taurus) por empresas como TalosTrend Micro a Unidade 42 da Palo Alto Networks, decidimos rastrear esse conjunto de atividades como obra do CeranaKeeper. Acreditamos que o CeranaKeeper utiliza um conjunto de ferramentas documentado publicamente, chamado "bespoke stagers" (ou TONESHELL), e depende amplamente da técnica de side-loading, além de empregar uma sequência específica de comandos para exfiltrar arquivos de redes comprometidas. Consideramos ainda que o uso de iscas políticas e componentes PlugX seja responsabilidade do Mustang Panda. Apesar de algumas semelhanças nas atividades dos dois grupos (como objetivos similares com side-loading e formato de arquivo), observamos claras diferenças organizacionais e técnicas entre eles, incluindo distinções nas ferramentas utilizadas, na infraestrutura, nas práticas operacionais e nas campanhas. Também identificamos diferenças na maneira como ambos realizam tarefas semelhantes.

Em suas operações, o CeranaKeeper utiliza componentes conhecidos como TONEINS, TONESHELL e PUBLOAD, exclusivos do grupo. O grupo se destaca por sua criatividade e adaptabilidade nos ataques, como o uso de versões renovadas desses componentes e o desenvolvimento de novas ferramentas que exploram serviços como Pastebin, Dropbox, OneDrive e GitHub. Detalhamos essas ferramentas na seção "Conjunto de ferramentas de apoio à exfiltração em massa".

Além disso, o grupo deixou alguns metadados em seu código, que nos forneceram informações sobre seu processo de desenvolvimento, consolidando ainda mais nossa separação entre os dois grupos e nossa atribuição ao CeranaKeeper. É possível que ambos os grupos dependam de uma mesma terceira parte, como um fornecedor de ferramentas usadas na fase de implantação, algo comum entre grupos alinhados com a China, ou que exista algum nível de compartilhamento de informações entre eles, o que explicaria as conexões observadas. Em nossa opinião, essa é uma explicação mais provável do que a de um único grupo de cibercriminosos mantendo dois conjuntos completamente separados de ferramentas, infraestrutura, práticas operacionais e campanhas.

Equipamentos comprometidos na mesma rede

Ainda não foram identificados os vetores de comprometimento que o CeranaKeeper utilizou no caso que analisamos. Quando o grupo conseguiu se infiltrar na rede de um orgão governamental tailandesa, em meados de 2023, uma máquina comprometida realizou ataques de força bruta contra um servidor controlador de domínio da rede local.

Após obter acesso privilegiado, os atacantes instalaram a backdoor TONESHELL, implementaram uma ferramenta para despejo de credenciais e utilizaram um driver legítimo da Avast, juntamente com um aplicativo personalizado, para desativar os produtos de segurança da máquina. A partir desse servidor comprometido, usaram um console de administração remota para implantar e executar seu backdoor em outros computadores da rede. Além disso, o CeranaKeeper transformou o servidor comprometido em um servidor de atualizações, armazenando atualizações da TONESHELL nele.

O grupo também distribuiu um novo script BAT pela rede, expandindo seu alcance para outras máquinas no mesmo domínio, explorando o controlador de domínio para obter privilégios de administrador de domínio. Isso permitiu ao CeranaKeeper avançar para a próxima fase de sua operação, atingindo seu objetivo final: a coleta massiva de dados.

Conjunto de ferramentas para a exfiltração massiva

Após implantar sua backdoor TONESHELL e realizar alguns movimentos laterais, parece que os atacantes encontraram e selecionaram alguns computadores comprometidos que despertaram interesse suficiente para implantar ferramentas personalizadas previamente não documentadas. Essas ferramentas de suporte foram utilizadas não apenas para facilitar a exfiltração de documentos para serviços de armazenamento públicos, mas também para atuar como portas dos fundos alternativas. O backdoor e as ferramentas de exfiltração que descrevemos foram implantadas exclusivamente em máquinas muito específicas.

WavyExfiller: Um uploader em Python que explora Dropbox e PixelDrain

O primeiro de uma série de componentes desconhecidos que descobrimos em junho de 2023 é o WavyExfiller, um pacote em Python empacotado em um executável por meio do PyInstaller e uma implementação direta em Python do método de exfiltração descrito pela Unidade 42. Chamamos esse componente de WavyExfiller devido à extensão .wav de um arquivo local que contém máscaras de busca para identificar e compactar documentos prontos para exportação. O executável incluído no PyInstaller é chamado SearchApp.exe (SHA-256: E7B6164B6EC7B7552C93713403507B531F625A8C64D36B60D660D66E82646696).

O módulo possui três funções principais: recuperar um token criptografado do Dropbox a partir de uma página do Pastebin (um serviço on-line para armazenar e compartilhar dados em texto simples), criar arquivos protegidos por senha de documentos encontrados nos diretórios dos usuários e enviar esses arquivos para o Dropbox.

Em outubro de 2023, observamos uma variante (SHA-256: 451EE465675E674CEBE3C42ED41356AE2C972703E1DC7800A187426A6B34EFDC) armazenada sob o nome oneDrive.exe. Apesar do nome, essa versão utiliza o serviço de compartilhamento de arquivos PixelDrain para filtrar os arquivos comprimidos. Assim como o SearchApp.exe mencionado anteriormente, essa variante verifica a unidade C, que normalmente contém o sistema operacional, os programas instalados e os documentos dos usuários locais. Além disso, o oneDrive.exe tenta coletar arquivos das unidades atribuídas, caso existam, que vão da letra D à letra N (exceto a L), como ilustrado na figura 1, o que pode representar dispositivos de armazenamento externos conectados, como USB e discos rígidos, unidades de rede em um ambiente de escritório ou unidades virtuais criadas por um software específico. Isso demonstra que o CeranaKeeper aumentou seu nível de avareza e tentou acessar outras fontes de informação potenciais ou conhecidas. No entanto, não está claro se a operação de exfiltração teve sucesso, já que a verificação dos arquivos carregados no PixelDrain não é possível por meio da API exposta.

Figura 1. Percorrendo e coletando arquivos de uma lista de unidades.

DropboxFlop: Um backdoor Python que se aproveita do Dropbox

Em outubro de 2023, mais ou menos ao mesmo tempo em que encontramos a variante do PixelDrain, descobrimos um novo executável incluído no PyInstaller com hash SHA-256 DAFAD19900FFF383C2790E017C958A1E92E84F7BB159A2A7136923B715A4C94F. Parece que o CeranaKeeper o criou com base em um projeto disponível publicamente chamado Dropflop, que é um shell reverso com capacidades de upload e download. O arquivo Python compilado é chamado dropboxflop.pyc. O backdoor recupera um token criptografado do Dropbox e depende dos arquivos presentes no repositório remoto do Dropbox para executar comandos na máquina. Ele cria uma pasta única localmente e gera um "pulso" atualizando o arquivo remoto chamado lasttime a cada 15 segundos. Além disso, procura por um arquivo chamado tasks que, se encontrado, é baixado e analisado como um arquivo JSON. Há dois tipos de tarefas implementadas: execução de comandos e upload de arquivos. Uma vez concluídas, a backdoor envia os resultados atualizando o conteúdo do arquivo de saída.

OneDoor: Um backdoor C++ que se aproveita do OneDrive

Poucos dias depois de implantar o backdoor Python DropboxFlop, o CeranaKeeper voltou com um backdoor C/C++ estáticamente vinculado que explora o OneDrive, a qual denominamos OneDoor. A amostra (SHA-256: 3F81D1E70D9EE39C83B582AC3BCC1CDFE038F5DA31331CDBCD4FF1A2D15BB7C8) é chamada de OneDrive.exe. O arquivo imita o executável legítimo da Microsoft, como mostrado na visualização de propriedades da Figura 2.

Figura 2. Propriedades do arquivo OneDoor.

O OneDoor se comporta de maneira semelhante ao backdoor DropboxFlop, mas utiliza a API REST do OneDrive da API Graph da Microsoft para receber comandos e filtrar arquivos.

O OneDoor cria um arquivo de log e tenta acessar um arquivo chamado config.ini. Se não estiver presente, o OneDoor utiliza um buffer codificado. O arquivo ou buffer começa com uma chave e um vetor de inicialização, que são usados para descriptografar o restante dos dados usando AES-128 em modo CBC. O texto em claro contém uma URL, que o malware utiliza em uma solicitação HTTP GET. A resposta contém um token do OneDrive, que é usado em solicitações posteriores ao Microsoft OneDrive.

O OneDoor também recupera o ID de uma pasta chamada approot, que é utilizada para armazenar dados do aplicativo.

De forma semelhante ao arquivo config.ini, o malware tenta acessar um arquivo chamado errors.log. Se o arquivo não existir, utiliza um buffer codificado. O conteúdo do arquivo ou buffer é descriptografado; os dados em texto claro contêm uma chave pública RSA de 1024 bits. Um par chave-IV é gerado, criptografado com RSA e carregado na pasta approot remota. Este par é utilizado para criptografar e descriptografar os dados.

Por fim, o malware recupera listas de arquivos de duas pastas localizadas no OneDrive, E e F. Um thread é iniciado para cada lista, que baixa e descriptografa os arquivos. Os arquivos armazenados na pasta E contêm comandos que devem ser executados, enquanto os armazenados na pasta F contêm uma lista de arquivos que devem ser carregados. Os resultados dessas operações são criptografados e armazenados em uma terceira pasta do OneDrive, D. Em seguida, os arquivos originais são excluídos do OneDrive.

BingoShell: Um backdoor Python que explora o GitHub

Observamos o último espécime do conjunto de ferramentas de exfiltração do grupo em fevereiro de 2024 e o denominamos BingoShell por causa da cadeia bingo# utilizada no título de um pull request (PR) do GitHub que ele cria. A amostra analisada (SHA-256: 24E12B8B1255DF4E6619ED1A6AE1C75B17341EEF7418450E661B74B144570017) é um arquivo chamado Update.exe, que utiliza um logotipo do Microsoft Office como ícone, conforme mostrado na figura 3. De acordo com sua marca de tempo de compilação PE, aparentemente foi criado no final de janeiro de 2024.

Figura 3. O backdoor BingoShell imita o aplicativo Microsoft Office.

BingoShell é um backdoor escrito em Python que utiliza o GitHub para controlar máquinas comprometidas. Uma vez executado, ele usa um token codificado para acessar um repositório privado do GitHub. De acordo com o commit inicial da branch principal, o repositório foi provavelmente criado em 24 de janeiro de 2024. BingoShell cria uma nova branch no repositório e o correspondente pull request. O backdoor lê os comentários no PR recém-criado para receber comandos a serem executados na máquina comprometida, como ilustrado na Figura 4.

Figura 4. Código recuperando comandos armazenados nos comentários da incidência.

Isso demonstra uma nova técnica encoberta para aproveitar o GitHub como servidor de comando e controle (C&C), mostrando a sofisticação dos atacantes, que se limparam depois, fechando pull requests e removendo comentários do repositório.

Cada nova branch criada pelo BingoShell no repositório privado do GitHub deve representar um acesso a uma máquina comprometida. Como descobrimos 25 pull requests fechados (mostrados na Figura 5), pudemos deduzir que CeranaKeeper tinha acesso, através do BingoShell, a 25 máquinas comprometidas.

Figura 5. Enumeração de pull requests fechados.

Conclusão

CeranaKeeper, grupo cibercriminoso por trás dos ataques ao governo tailandês, parece especialmente implacável, pois o conjunto de ferramentas e técnicas que o grupo utiliza continua evoluindo rapidamente. Os operadores escrevem e reescrevem seu conjunto de ferramentas conforme as necessidades de suas operações e reagem com bastante rapidez para continuar evitando a detecção. O objetivo deste grupo é colher o máximo de arquivos possível e, para isso, desenvolvem componentes específicos. CeranaKeeper utiliza a nuvem e serviços de compartilhamento de arquivos para a exfiltração e provavelmente se baseia no fato de que o tráfego para esses serviços populares na maioria das vezes pareceria legítimo, tornando mais difícil seu bloqueio quando identificado.

Ao longo de nossa pesquisa, pudemos estabelecer fortes conexões entre os conjuntos de ferramentas previamente documentados e os novos, e um grupo comum. A revisão das táticas, técnicas e procedimentos (TTP), do código e das discrepâncias de infraestrutura nos leva a acreditar que é necessário rastrear CeranaKeeper e MustangPanda como duas entidades separadas. No entanto, ambos os grupos alinhados com a China podem estar compartilhando informações e um subconjunto de ferramentas por um interesse comum ou por meio do mesmo terceiro.

A campanha seletiva que investigamos nos forneceu informações sobre as operações do CeranaKeeper e é provável que futuras campanhas nos revelem mais, já que a busca por dados sensíveis por parte do grupo continua.

Para uma análise mais detalhada das ferramentas implantadas pelo CeranaKeeper, você pode acessar o relatório completo da equipe de pesquisa da ESET aqui.

IoCs

Você pode encontrar uma lista completa de indicadores de comprometimento (IoCs) e amostras em nosso repositório no GitHub.

Arquivos

SHA-256

Filename

Detection

Description

B25C79BA507A256C9CA12A9BD34DEF6A
33F9C087578C03D083D7863C708ECA21

EACore.dll

Win32/Agent.VJO

YK0130 reverse shell.

E7B6164B6EC7B7552C93713403507B53
1F625A8C64D36B60D660D66E82646696

SearchApp.exe

Python/Agent.AGT

WavyExfiller.

3F81D1E70D9EE39C83B582AC3BCC1CDF
E038F5DA31331CDBCD4FF1A2D15BB7C8

OneDrive.exe

Win32/Agent.VKV

OneDoor.

DAFAD19900FFF383C2790E017C958A1E
92E84F7BB159A2A7136923B715A4C94F

dropbox.exe

Python/Agent.AQN

PyInstaller DropFlop.

24E12B8B1255DF4E6619ED1A6AE1C75B
17341EEF7418450E661B74B144570017

Update.exe

Python/Agent.AJJ

BingoShell.

451EE465675E674CEBE3C42ED41356AE
2C972703E1DC7800A187426A6B34EFDC

oneDrive.exe

Python/Agent.AGP

WavyExfiller PixelDrain variant.

E6AB24B826C034A6D9E152673B911592
01577A3A9D626776F95222F01B7C21DB

MsOcrRes.orp

Win32/Agent.AFWW

TONESHELL type B.

6655C5686B9B0292CF5121FC6346341B
B888704B421A85A15011456A9A2C192A

avk.dll

Win32/Agent.VJQ

TONESHELL variant.

B15BA83681C4D2C2716602615288B7E6
4A1D4A9F4805779CEBDF5E6C2399AFB5

TurboActivate.dll

Win32/Agent.AFWX

TONESHELL loader.

Rede

IP  Domain  Hosting provider  First seen  Details 
104.21.81[.]233 
172.67.165[.]197 
www.toptipvideo[.]com  CLOUDFLARENET (AS13335)  2023‑08‑14  C&C server for the YK0130 reverse shell. 
103.245.165[.]237  dljmp2p[.]com 
inly5sf[.]com 
Bangmod Enterprise administrator (AS58955)  2023‑04‑21  C&C servers for TONESHELL variants. 
103.27.202[.]185  www.dl6yfsl[.]com  Bangmod Enterprise administrator (AS58955)  2023‑08‑10  C&C server for TONEINS variant. 
103.27.202[.]185  www.uvfr4ep[.]com  Bangmod Enterprise administrator (AS58955)  2023‑09‑22  C&C server for TONEINS variant. 

Técnicas ATT&CK do MITRE

Esta tabela foi elaborada utilizando a versão 15 do framework MITRE ATT&CK.

Tactic  ID  Name  Description 
Resource Development  T1583.001  Acquire Infrastructure: Domains  CeranaKeeper acquired domains for some of its C&C servers. 
T1583.003  Acquire Infrastructure: Virtual Private Server  CeranaKeeper acquired access to a VPS to serve as a C&C server. 
T1587.001  Develop Capabilities: Malware  CeranaKeeper develops its own components. 
T1585.003  Establish Accounts: Cloud Accounts  CeranaKeeper acquired cloud accounts for exfiltration purposes. 
Execution  T1072  Software Deployment Tools  CeranaKeeper abuses the ESET Remote Administration console to perform lateral movement. 
Persistence  T1547.001  Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder  The YK0130 reverse shell establishes persistence via the registry Run key. 
T1574.002  Hijack Execution Flow: DLL Side-Loading  Most components come as side-loaded libraries along with the legitimate program. 
Defense Evasion  T1140  Deobfuscate/Decode Files or Information  Configuration files used by the OneDrive backdoor are encrypted. 
T1036.005  Masquerading: Match Legitimate Name or Location  CeranaKeeper uses legitimate library names to blend in. 
Collection  T1560.001  Archive Collected Data: Archive via Utility  WavyExfiller uses WinRAR to compress collected data. 
T1005  Data from Local System  WavyExfiller collects data from the local drive (C:). 
T1039  Data from Network Shared Drive  WavyExfiller collects data from network shares. 
T1074.001  Data Staged: Local Data Staging  Collected data is archived in a special folder before being uploaded. 
Command and Control  T1071.001  Application Layer Protocol: Web Protocols  The different backdoors communicate using HTTP/S. 
T1132.002  Data Encoding: Non-Standard Encoding  The network protocol used by the YK0130 reverse shell employs custom, XOR-based encoding. 
T1573.001  Encrypted Channel: Symmetric Cryptography  AES-128 mode CBC is used by the OneDrive backdoor to encrypt network communication. 
T1573.002  Encrypted Channel: Asymmetric Cryptography  The generated key and IV for the OneDrive backdoor are encrypted via RSA. 
T1090.001  Proxy: Internal Proxy  One of the variants of the YK0130 reverse shell implements a reverse proxy. 
T1102.002  Web Service: Bidirectional Communication  OneDrive and Dropbox are used as C&C servers. 
Exfiltration  T1567.002  Exfiltration Over Web Service: Exfiltration to Cloud Storage  Collected data are exfiltrated via cloud services.