Os pesquisadores da ESET fornecem informações sobre como o PlushDaemon realiza ataques do tipo adversary-in-the-middle (AiM), utilizando um implante de rede até então não documentado, que foi denominado EdgeStepper. Esse implante redireciona todas as consultas DNS para um nó de sequestro externo, desviando efetivamente o tráfego da infraestrutura legítima usada para atualizações de software para uma infraestrutura controlada pelo cibercriminoso.

Pontos principais desta publicação:

  • Foi analisado o implante de rede EdgeStepper para entender como os agentes do PlushDaemon comprometem seus alvos.
  • Também foi realizado um estudo sobre LittleDaemon e DaemonicLogistics, dois downloaders que implantam o backdoor SlowStepper, associado ao grupo, em sistemas Windows.

Perfil do PlushDaemon

O PlushDaemon é um grupo cibercriminoso alinhado à China, ativo desde pelo menos 2018, dedicado a operações de espionagem contra indivíduos e instituições na China, Taiwan, Hong Kong, Camboja, Coreia do Sul, Estados Unidos e Nova Zelândia. O grupo utiliza um backdoor personalizado rastreado como SlowStepper, cuja principal técnica de acesso inicial envolve o sequestro de atualizações legítimas, redirecionando o tráfego para servidores controlados pelos atacantes por meio de um implante de rede chamado EdgeStepper. Além disso, o PlushDaemon obtém acesso explorando vulnerabilidades em servidores web e realizou um ataque à cadeia de suprimentos em 2023.

Resumo

Em 2024, durante a investigação das atividades do PlushDaemon (incluindo o comprometimento da cadeia de suprimentos de um serviço de VPN sul-coreano), foi observado que um arquivo ELF enviado ao VirusTotal continha dois subdomínios da infraestrutura do PlushDaemon. Esse arquivo, chamado bioset, estava hospedado anteriormente em um servidor provavelmente comprometido por múltiplos cibercriminosos. No mesmo dia do envio ao VirusTotal, um pesquisador (@James_inthe_box) tuitou sobre um diretório aberto no servidor onde o bioset estava alojado, sugerindo que a amostra foi enviada por um investigador analisando o conteúdo do diretório.​

Chamado internamente de dns_cheat_v2 por seus desenvolvedores, e com nome em código EdgeStepper pela ESET, o bioset é a ferramenta adversary-in-the-middle do PlushDaemon, que encaminha o tráfego DNS de máquinas em uma rede alvo para um nó DNS malicioso. Isso permite que os atacantes redirecionem o tráfego de atualizações de software para um nó sequestrador, que instrui o software legítimo a baixar uma atualização maliciosa.

Vitimologia

A Figura 1 apresenta a distribuição geográfica das vítimas do PlushDaemon comprometidas por meio de atualizações maliciosas desde 2019, conforme a telemetria da ESET.

Figure 1. Geographical distribution of victims
Figura 1. Distribuição geográfica das vítimas.

O PlushDaemon comprometeu indivíduos e organizações localizados nas seguintes regiões:​

  • Estados Unidos (2019);
  • Taiwan (2021, 2024);
  • China (2021-2024), incluindo uma universidade de Pequim e uma empresa taiwanesa que fabrica produtos eletrônicos;
  • Hong Kong (2023);
  • Nova Zelândia (2023);
  • Camboja (2025), incluindo uma empresa do setor automotivo e uma filial de uma empresa japonesa do setor manufatureiro.

Ataque adversary-in-the-middle

Primeiramente, o PlushDaemon compromete um dispositivo de rede (como um roteador) ao qual seu alvo pode se conectar; o comprometimento ocorre provavelmente explorando uma vulnerabilidade no software executado no dispositivo ou por meio de credenciais administrativas fracas e/ou padrão conhecidas, permitindo que os cibercriminosos implantem o EdgeStepper (e possivelmente outras ferramentas).​

O EdgeStepper inicia redirecionando as consultas DNS para um nó DNS malicioso que verifica se o domínio (por exemplo, info.pinyin.sogou.com do Sogou Pinyin) na mensagem de consulta DNS está relacionado a atualizações de software, respondendo, nesse caso, com o endereço IP do nó sequestrador. Alternativamente, alguns servidores atuam tanto como nó DNS quanto como nó sequestrador, respondendo às consultas DNS com seu próprio endereço IP.​

Observe que, como o sequestro das atualizações do software Sogou Pinyin foi estudado em detalhes, ele será usado como exemplo daqui em diante; muitos outros softwares chineses populares têm suas atualizações sequestradas de forma similar pelo PlushDaemon via EdgeStepper.

A Figura 2 ilustra as primeiras etapas do implantação das capacidades do PlushDaemon.​

Figure 2. Illustration of the first stages of the attack
Figura 2. Ilustração das primeiras etapas do ataque

O software de atualização se comunica via HTTP com o nó sequestrador em vez da infraestrutura legítima do Sogou; o nó sequestrador responde com instruções para, por exemplo, baixar um arquivo DLL de http://ime.sogou.com/popup_4.2.0.2246.dll, como mostrado na Figura 3.​

Figure 3. Traffic capture of the update hijacking process
Figura 3. Captura de tráfego do processo de sequestro de atualizações.

O software envia uma requisição HTTP GET para ime.sogou.com para tentar obter a DLL; no entanto, a comunicação é redirecionada novamente para o nó sequestrador, que serve o popup_4.2.0.2246.dll, que na verdade é a DLL do LittleDaemon. O processo é ilustrado na Figura 4.​

Figure 4. Illustration of the final stage of the update hijacking
Figura 4. Ilustração da etapa final do sequestro de atualizações.
Figure 5. Traffic capture of the update hijacking process
Figura 5. Captura de tráfego do processo de sequestro de atualizações.

A Figura 5 mostra o nó sequestrador servindo o LittleDaemon.​

EdgeStepper

De acordo com os símbolos do binário, o EdgeStepper era originalmente chamado dns_cheat_v2. Foi desenvolvido em Go utilizando o framework de código aberto GoFrame, e compilado como um arquivo ELF para processadores MIPS32. É importante notar que é improvável que o EdgeStepper seja o único componente implantado no dispositivo de rede comprometido; infelizmente, não há amostras de outros componentes na cadeia de compromisso.​

O EdgeStepper inicia obtendo e descriptografando os dados de configuração de /etc/bioset.conf. Para a descriptografia, utiliza AES CBC com a chave e o IV sendo a string "I Love Go Frame!", que é usada como IV padrão na implementação da biblioteca GoFrame.​

A configuração descriptografada revela os dados mostrados na Figura 6.

[cheat]
toPort = 1090
host = "ds20221202.dsc.wcsset[.]com"

Figura 6. Configuração descriptografada.  

O significado dos parâmetros é o seguinte:​

  • toPort especifica a porta onde o EdgeStepper escutará.
  • host especifica o domínio que é resolvido para obter o(s) endereço(s) IP do nó DNS para o qual os pacotes de consulta DNS são redirecionados.​

Além disso, há um bloco de configuração (Figura 7) no binário do EdgeStepper que parece não ser referenciado em nenhuma parte do código. O domínio no campo host é test.dsc.wcsset[.]com, que resolve para 47.242.198[.]250; observou-se que esse IP foi fonte de atualizações maliciosas (nó sequestrador) de 2021 a 2022, e ainda resolve para esse endereço atualmente.​

Figure 7. Unused configuration block in EdgeStepper
Figura 7. Bloco de configuração não utilizado no EdgeStepper.

Após carregar sua configuração, o EdgeStepper inicializa o sistema Distribuidor e o sistema Regidor.

Distribuidor

O distribuidor resolve o(s) endereço(s) IP associado(s) ao valor do domínio no campo host da configuração e invoca o sistema Ruler. O fluxo de trabalho do distribuidor é ilustrado na Figura 8.​

Figure 8. EdgeStepper workflow
Figura 8. Fluxo de trabalho do EdgeStepper.

Por meio do sistema Ruler, o distribuidor redireciona o tráfego da porta 53 para a porta 1090, estabelecendo-se como proxy DNS.​

Ao receber uma mensagem DNS de um dispositivo de vítima potencial, verifica se a mensagem é compatível com RFC (provavelmente apenas para confirmar que o pacote é realmente do protocolo DNS).

Em seguida, encaminha o pacote para o nó DNS malicioso.

Por último, retransmite a resposta do nó DNS para o dispositivo.

Regra (Ruler)

O sistema Ruler utiliza o comando iptables para emitir novas regras e removê-las ao final do ataque. Inicialmente, emite uma regra para redirecionar todo o tráfego UDP da porta 53 do dispositivo para a porta especificada por toPort na configuração:​

iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-port <value_from_toPort>

Em seguida, emite um comando para aceitar pacotes nessa porta:

iptables -t filter -I INPUT -p udp --dport <value_from_toPort> -j ACCEPT

Ao terminar, remove as regras com:

iptables -t nat -D PREROUTING *

iptables -t filter -D INPUT -p udp –dport <value_from_toPort> -j ACCEPT

LittleDaemon

O LittleDaemon é a primeira etapa implantada na máquina da vítima por meio de atualizações sequestradas, observado em versões DLL e executáveis PE de 32 bits. Seu objetivo principal é se comunicar com o nó sequestrador para obter o downloader chamado DaemonicLogistics. O LittleDaemon não estabelece persistência.

Primeiramente, verifica se o backdoor SlowStepper está em execução no sistema. Caso contrário, o LittleDaemon baixa o DaemonicLogistics emitindo uma solicitação HTTP GET a um servidor (normalmente o nó sequestrador), descriptografa-o com uma combinação de operações XOR e, em seguida, o executa.​

A solicitação pode ser enviada a dois domínios legítimos (ime.sogou.com or mobads.baidu.com) ou ao endereço IP 119.136.153.0, com o caminho do recurso /update/updateInfo.bzp em todos os casos. No caso dos domínios legítimos, espera-se que o tráfego seja redirecionado ao nó sequestrador pelo EdgeStepper.​

DaemonicLogistics

O DaemonicLogistics é um código independente da posição que o LittleDaemon baixa e executa em memória, com o propósito principal de baixar e implantar o implante SlowStepper.​

Quando o DaemonicLogistics envia uma solicitação ao servidor (normalmente o nó sequestrador), este responde com um código de status HTTP que o DaemonicLogistics interpreta como um comando, executando as ações listadas na Tabela 1.

Tabela 1. Comandos suportados pelo DaemonicLogistics.

Code Action taken
200 Downloads SlowStepper without checking for the presence of a process named 360tray.exe (a component of the 360 Total Security antimalware solution).
205
206
208
203 Downloads a file named plugin.exe and executes it (during our tests, the server did not request downloading this file).
207 Checks for the presence of a process named 360tray.exe and downloads SlowStepper if not present.
202–300 Default to execute command 200. These could be unimplemented commands.

A solicitação HTTP GET inicial é enviada para: ime.sogou.com/update/latest/new_version?tp=2&c=0&s=<OS_ID_number>&mac=<identifier>

O significado dos parâmetros na URL é o seguinte:​

  • Os valores tp e c estão codificados por padrão como 2 e 0, respectivamente.
  • O campo s tem um byte e é um número que identifica a versão do sistema operacional.
  • O campo mac tem seis bytes e é o valor do endereço MAC do adaptador Ethernet ou Wi-Fi da máquina, ou gerado aleatoriamente se não conseguir obter nenhum; o valor é provavelmente usado como identificador pelo servidor.

Durante nossa análise, observamos que o servidor respondia com o código de status 207, ao que DaemonicLogistics reagia com outra solicitação para ime.sogou.com/update/latest/new_version?tp=1&g=15&c=0. Neste caso, a parte da URL tp=1&g=15&c=0 está codificada de forma fixa (hardcoded).

O servidor respondeu com o código de status 202. O DaemonicLogistics prosseguiu fazendo duas solicitações para baixar os arquivos do payload do SlowStepper: primeiro para ime.sogou.com/update/file6.bdat e depois para ime.sogou.com/update/file2.bdat.

Os dados do payload nas primeira e segunda respostas do servidor começavam com um valor mágico:

  • Na resposta à primeira solicitação, o valor mágico em hexadecimal era 50 4B 03 04 0A 1B 2C 3D (PK\3\4\A\1B\2C\3C).

○ O DaemonicLogistics verifica ativamente se os oito primeiros bytes de dados recebidos do servidor coincidem com esse valor mágico. Se for o caso, escreve os dados em %PROGRAMDATA%\Tencent\QQUpdateMgr\UpdateFiles\logo.gif.

  • Na resposta à segunda solicitação, o valor mágico em hexadecimal foi 47 49 46 38 39 61 10 10 (GIF89a\10\10).

○ O DaemonicLogistics não verifica especificamente esse valor mágico: quando a verificação do valor mágico anterior não coincide, processa os dados e os descriptografa por meio de uma combinação de operações XOR. Os dados contêm arquivos que são escritos no disco nas rotas especificadas nos dados descriptografados.

Durante a análise, observou-se que o servidor respondia com o código de status 207, ao qual o DaemonicLogistics respondia com outra solicitação para ime.sogou.com/update/latest/new_version?tp=1&g=15&c=0, onde a parte tp=1&g=15&c=0 está codificada diretamente no código.​

O servidor respondia com o código 202. O DaemonicLogistics prosseguia fazendo duas solicitações para baixar os arquivos do payload do SlowStepper: primeiro para ime.sogou.com/update/file6.bdat e depois para ime.sogou.com/update/file2.bdat.​

Conclusão

Foi analisado o implante de rede EdgeStepper, que habilita as capacidades do PlushDaemon como adversário no meio para sequestrar atualizações de máquinas em uma rede alvo. Também foram analisadas as ferramentas LittleDaemon e DaemonicLogistics, que juntas implantam o implante SlowStepper em máquinas Windows, dando ao PlushDaemon capacidade de comprometer alvos em qualquer parte do mundo.​

Indicadores de Comprometimento

No repositório do GitHub da ESET, encontra-se uma lista completa de indicadores de compromisso (IoCs) e amostras.​

Arquivos

SHA-1 Filename ESET detection name Description
8F569641691ECB3888CD4C11932A5B8E13F04B07 bioset Linux/Agent.AEP EdgeStepper.
06177810D61A69F34091CC9689B813740D4C260F bioset.conf Win32/Rozena.BXX EdgeStepper encrypted configuration.
69974455D8C13C5D57C1EE91E147FF9AED49AEBC popup_4.2.0.2246.dll Win32/Agent.AGXK LittleDaemon.
2857BC730952682D39F426D185769938E839A125 sogou_wubi_15.4.0.2508_0000.exe Win32/Agent.AFDT LittleDaemon.

Rede

IP Domain Hosting provider First seen Details
8.212.132[.]120 ds20221202.dsc.wcsset[.]com Alibaba (US) Technology Co., Ltd. 2024‑07‑12 DNS/Hijacking node.
47.242.198[.]250 test.dsc.wcsset[.]com Alibaba Cloud LLC 2024‑07‑12 DNS/Hijacking node.

Técnicas ATT&CK da MITRE

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

Tactic ID Name Description
Resource Development T1583.001 Acquire Infrastructure: Domains PlushDaemon uses EdgeStepper to redirect traffic to specific subdomains that are part of PlushDaemon’s infrastructure on wcsset[.]com.
T1583.002 Acquire Infrastructure: DNS Server Part of the PlushDaemon infrastructure is used to host its malicious DNS nodes.
T1583.004 Acquire Infrastructure: Server PlushDaemon has acquired servers to host its DNS/hijacking nodes and C&C servers.
T1608.001 Stage Capabilities: Upload Malware PlushDaemon hosts its payloads on DNS/hijacking servers.
Initial Access T1659 Content Injection Hijacking nodes from PlushDaemon process hijacked traffic and reply to legitimate software with instructions to download malware such as LittleDaemon.
Execution T1106 Native API DaemonicLogistics executes the SlowStepper implant using the ShellExecute API.
Defense Evasion T1070.004 Indicator Removal: File Deletion Some variants of LittleDaemon can remove themselves.
T1036.005 Masquerading: Match Legitimate Name or Location DaemonicLogistics creates a subdirectory named Tencent, where it stores its files.
T1036.008 Masquerading: Masquerade File Type DaemonicLogistics and SlowStepper’s loader can decrypt files that masquerade as ZIP and GIF files.
T1027.009 Obfuscated Files or Information: Embedded Payloads Files masquerading as ZIPs and GIF files contain embedded encrypted components.
T1027.013 Obfuscated Files or Information: Encrypted/Encoded File Components of the SlowStepper implant are encrypted on disk.
Discovery T1518.001 Software Discovery: Security Software Discovery DaemonicLogistics checks for the presence of 360tray.exe – a component of 360 Total Security.
T1016 System Network Configuration Discovery DaemonicLogistics attempts to obtain the ethernet or Wi-Fi adapter’s MAC address.
T1057 Process Discovery DaemonicLogistics lists processes.
Command and Control T1071.001 Application Layer Protocol: Web Protocols LittleDaemon and DaemonicLogistics use HTTP to communicate with their server.
T1573 Encrypted Channel LittleDaemon downloads via HTTP the encrypted DaemonicLogistics that downloads via HTTP the encrypted SlowStepper implant.
T1665 Hide Infrastructure LittleDaemon and DaemonicLogistics make downloads by sending HTTP requests to legitimate domains.