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 Talos, Trend 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.
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.
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.
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.
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.
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 |
EACore.dll |
Win32/Agent.VJO |
YK0130 reverse shell. |
E7B6164B6EC7B7552C93713403507B53 |
SearchApp.exe |
Python/Agent.AGT |
WavyExfiller. |
3F81D1E70D9EE39C83B582AC3BCC1CDF |
OneDrive.exe |
Win32/Agent.VKV |
OneDoor. |
DAFAD19900FFF383C2790E017C958A1E |
dropbox.exe |
Python/Agent.AQN |
PyInstaller DropFlop. |
24E12B8B1255DF4E6619ED1A6AE1C75B |
Update.exe |
Python/Agent.AJJ |
BingoShell. |
451EE465675E674CEBE3C42ED41356AE |
oneDrive.exe |
Python/Agent.AGP |
WavyExfiller PixelDrain variant. |
E6AB24B826C034A6D9E152673B911592 |
MsOcrRes.orp |
Win32/Agent.AFWW |
TONESHELL type B. |
6655C5686B9B0292CF5121FC6346341B |
avk.dll |
Win32/Agent.VJQ |
TONESHELL variant. |
B15BA83681C4D2C2716602615288B7E6 |
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. |