Voltar
Inteligência do adversário
Tabela de conteúdo

Sumário executivo

O TRIAD da CloudSEK descobriu uma campanha da Silver Fox APT visando a Índia com iscas de phishing com tema de imposto de renda. A isca é visualmente idêntica às descobertas por outros fornecedores, no entanto, essa campanha não foi atribuída a um agente de ameaça específico antes deste relatório. A precisão da atribuição é fundamental para a inteligência de ameaças; ela permite que os defensores prevejam o comportamento do adversário e implementem contramedidas específicas. A atribuição incorreta de fontes confiáveis se propaga por meio de feeds de ameaças e sistemas de detecção, fazendo com que as organizações se concentrem na ameaça errada enquanto o adversário real opera sem ser detectado. Atribuir essa campanha ao SideWinder APT (alinhado à Índia) contradiz a vitimologia básica e cria confusão sistêmica. O uso de nosso relatório visa destacar a sofisticada cadeia de mortes do grupo chinês APT e explica a lógica por trás da atribuição do CloudSEK.

Kill Chain

Vetor de acesso inicial

E-mail malicioso

Encontramos um e-mail interessante enviado da Índia com apenas um anexo chamado “TOPSOE India Private Limited”. O pdf parecia um documento oficial do Departamento de Imposto de Renda. Ao clicar no pdf, “ggwk [.] cc” se abre no navegador e um arquivo zip chamado “tax affairs.exe” é baixado.

Engodo em PDF

Análise técnica

Etapa 1: Tax Affairs.zip

Detecte-o facilmente

Usando a análise estática, vemos que o arquivo PE fornecido é um binário GUI de 32 bits. Mais importante ainda, o arquivo é identificado como um instalador do sistema Nullsoft Scriptable Install (NSIS). Os instaladores do NSIS incorporam seu script de instalação, cargas compactadas etc. dentro do próprio binário e podemos prosseguir para analisá-lo como uma carga útil de teste conduzida pelo instalador.

Instalador do NSIS

O instalador do NSIS começa resolvendo um diretório temporário gravável usando getTempPathA.
Se a operação falhar, ela retornará para C:\Windows\Temp, garantindo a confiabilidade da execução. Depois que um local válido é identificado, o instalador cria um diretório de trabalho específico do NSIS (~nsu.tmp) e muda o diretório para ele.

Arquivos descartados

Após a análise, descobrimos que apenas 2 arquivos são úteis para nós, Thunder.exe e libexpat.dll. Thunder.exe é um executável legítimo, assinado digitalmente desenvolvido pela Xunlei (), comumente distribuído como parte do ecossistema do gerenciador de downloads Thunder. Nessa cadeia de infecção, o binário em si não é malicioso, mas é usado como um host sequestrador de DLL. Quando executado a partir do diretório temporário do instalador, o Thunder.exe carrega libexpat.dll de seu caminho local devido à ordem de pesquisa de DLL padrão. Podemos confirmar isso em x64dbg.

Carregamento de DLL

Etapa - 2: libexpat.dll

O libexpat.dll descartado faz não exportar nenhuma função significativa e é nunca invocado explicitamente por Thunder.exe.A dll depende da funcionalidade do carregador do Windows e chama o DllMain. Esse retorno de chamada é invocado incondicionalmente, independentemente de a DLL exportar alguma função ou ser usada ativamente pelo processo hospedeiro.

Vamos dar uma olhada no funcionamento da DLL.

Técnicas anti-depuração

A função principal começa com muitas técnicas anti-depuração e sandbox. A DLL executa a enumeração de processos e verifica a lista de processos em busca de ferramentas comuns de análise e sandbox. Além disso, a DLL consulta os recursos do sistema, verificando se os requisitos mínimos estão satisfeitos ou não. Além disso, se detectar algum ambiente de sandbox, ele encerrará o malware.

Descriptografia de carga útil

Depois que a DLL conclui suas verificações anti-análise, ela entra na lógica de execução principal. Primeiro, ele desativa o serviço Windows Update (wuauserv) e depois carrega uma carga criptografada do disco. A carga útil é resolvida dinamicamente e carrega o arquivo box.ini do diretório temporário. O arquivo é totalmente lido na memória, descriptografado usando constantes criptográficas incorporadas e posteriormente executado como shellcode.

Box.ini
Injeção de processo

O shellcode é executado usando uma técnica clássica chamada Injeção de Processo. A rotina começa com a verificação da presença de explorer.exe, que posteriormente é usado como o processo de destino. O binário é lançado em estado suspenso e o malware recupera o contexto inicial do thread. Além disso, ele aloca memória executável dentro do processo remoto via VirtualAlloceX e grava a carga via WriteProcessMemory.

A função LogStatus implementa um mecanismo de registro interno usado em toda a DLL para registrar o progresso da execução e os estados de erro. A função formata uma mensagem de log com registro de data e hora, anexa-a a um arquivo local (C:\data.db) e aplica uma ofuscação personalizada leve antes de gravá-la no disco.

Etapa - 3: DonutLoader

Carga útil criptografada na memória

A carga injetada pode ser despejada conectando um depurador ao processo vazio explorer.exe e monitorando a região de memória alocada via VirtualAlloceX. Depois que a carga útil é gravada usando WriteProcessMemory e a execução é redirecionada, a região alocada pode ser despejada diretamente da memória, gerando a carga útil do próximo estágio para análise.

Carga útil descriptografada

Examinando a carga descriptografada, descobrimos que a carga final é uma Código de shell gerado por donuts. Nessa configuração, o Donut é usado para agrupar uma carga gerenciada em código de shell bruto, permitindo que ela seja executada inteiramente da memória sem tocar no disco.

Carregador de rosquinhas

Podemos despejar a carga útil do Donut usando ferramentas como sem dúvida ou decodificador de rosquinhas .

Etapa - 4: Valley RAT

Depois que o carregador Donut injeta com sucesso a carga final no processo vazio do explorer.exe, o Valley RAT inicializa seu sofisticado subsistema de gerenciamento de configuração. Ele começa definindo procedimentos anti-análise e, em seguida, invoca uma função sub_405E40 () para inicializar sua configuração e, posteriormente, criar um thread para comunicação C2.

Configuração C2

A função implementa um mecanismo de carregamento de dois estágios. Ele extrai 22 parâmetros de configuração distintos por meio de uma função de análise.

Estágio 1

Infraestrutura de comando e controle (9 parâmetros):

  • p1:, p2:, p3: - Endereços de servidor C2 de três camadas (correlaciona-se com b [.] yuxuanow [.] top identificado na análise de rede)
  • o1:, o2:, o3: - Números de porta correspondentes para cada camada C2
  • t1:, t2:, t3: - Sinalizadores do tipo de conexão (1 = HTTP/HTTPS, 0 = soquete TCP bruto)

Parâmetros operacionais (5 parâmetros):

  • dd: - Atraso inicial de sono (segundos) antes do primeiro contato com C2
  • cl: - Intervalo de retorno de chamada (segundos) entre as tentativas de sinalização
  • bb: - Identificador de versão Build/bot (observado: 1.0)
  • bz: - Endereço C2 de backup
  • fz: - Parâmetro desconhecido

Sinalizadores de recursos (8 parâmetros booleanos):

  • l: - Keylogger (1 = ativado, 0 = desativado)
  • sh: - Acesso remoto ao shell (1 = ativado, 0 = desativado)
  • cama: - Modo backdoor completo (1 = ativado, 0 = desativado)
  • dl: - Capacidade de transferência/download de arquivos
  • jp:, sx:, bh:, ll: - Alternadores de recursos adicionais

Etapa 2

Depois de carregar a configuração incorporada, o Valley RAT consulta o registro do Windows para obter a infraestrutura C2 atualizada:

Persistência

Se o valor do registro existir e exceder 10 bytes, Valley RAT substitui completamente sua configuração incorporada e, em seguida, analisa novamente somente os parâmetros C2 críticos (p1 a t3). Isso permite que os operadores da Silver Fox enviem endereços C2 atualizados sem implantar novos binários ou recuperar a execução do código.

Depois que a configuração for carregada. O Valley RAT gera seu thread de carga útil (StartAddress) que implementa um loop de comunicação C2 de 3 níveis.

Comunicação C2

O loop de comunicação implementa o failover de várias camadas alternando entre servidores C2 primários (p1) e secundários (p2), mudando para terciários (p3) após 200 falhas. Ele suporta protocolos HTTP/HTTPS e TCP bruto, usa intervalos de sinalização configuráveis (cl:) para reduzir a detecção e atrasa a conexão inicial (dd:) para evitar sandboxes.

Após uma conexão bem-sucedida, o Valley RAT envia um farol “pronto” (ID de comando: 4), ativa o keylogging se configurado (kl: flag) e aguarda os comandos C2. Essa arquitetura é mapeada para a infraestrutura descoberta: b [.] yuxuanow [.] top (103.20.195 [.] 147) como shellcode primário C2, com camadas secundárias/terciárias girando em domínios como itdd [.] club, gov-a [.] work e xzghjec [.] com.

O Valley RAT implementa uma arquitetura modular de plug-ins que permite a extensão dinâmica da capacidade por meio da persistência baseada em registro. O malware armazena os plug-ins baixados em HKCU\ Console\ 0\ d33f351a4aeea5e608853d1a56661059, um nome de valor de registro consistente com a impressão digital estabelecida do Valley RAT, seguindo a convenção de nomenclatura de hash MD5 observada em várias campanhas do Valley RAT. O gerenciador de plug-ins opera em dois modos: ele recebe módulos do servidor C2, aloca memória executável com permissões PAGE_EXECUTE_READWRITE e persiste a configuração de 2628 bytes mais o código de carga útil no registro como dados REG_BINARY ou recupera plug-ins armazenados anteriormente do registro, os valida com base em uma assinatura codificada e gera threads de execução.

Cada plug-in inclui um protetor mágico de bytes (0xC9) para evitar a execução dupla. Essa arquitetura permite que os operadores da Silver Fox implantem recursos especializados, como keylogging avançado, coleta de credenciais ou módulos de movimentação lateral sob demanda em sistemas comprometidos, com persistência automática nas reinicializações por meio do armazenamento do registro.

Injeção de Tracerpt

Depois de baixar os plug-ins do servidor C2, o Valley RAT os injeta no tracerpt.exe, um utilitário legítimo assinado da Microsoft, usando o mesmo processo de esvaziamento. O malware cria o processo em um estado suspenso, injeta o código do plugin em sua memória e redireciona a execução para a carga maliciosa. Antes da injeção, ele corrige o plug-in com a mesma configuração de 4768 bytes contendo endereços C2 e sinalizadores de recursos analisados anteriormente.

Girando

Vamos começar com o C2 incorporado no documento isca “ggwk [.] cc”.

O C2 tem 2 títulos diferentes ao longo do tempo, todos eles alinhados com a isca de phishing com tema de imposto de renda, ambos do mesmo ASN. No entanto, há um denominador comum: o favicon.

Nós encontrado Mais de 10 domínios que compartilham o mesmo favicon. Se observarmos os títulos das respostas http, podemos ver que todos os títulos têm como tema imposto de renda. Os resultados podem ser validados em relação à VT para descobrir amostras adicionais desta campanha. Consulte a seção IOCs abaixo.

Modelo de diamante

Impacto

  • Alto risco de comprometimento não detectado a longo prazo: Plugins residentes no registro e sinalização retardada permitem que o RAT sobreviva às reinicializações enquanto permanece com baixo ruído.
  • Evolução dinâmica da ameaça após a infecção: Os atacantes podem atualizar os recursos (registro de chaves, roubo de credenciais, movimentação lateral) sem retomar o acesso inicial ou reimplantar o malware.
  • O bloqueio baseado em infraestrutura é frágil: O failover C2 em camadas e a troca de protocolo reduzem a eficácia do bloqueio estático de IP/domínio.
  • Visibilidade reduzida para resposta a incidentes: A execução na memória combinada com a persistência baseada em registro complica a reconstrução do cronograma e a erradicação do malware.
  • Risco elevado de segurança de dados: A entrega de módulos sob demanda permite a coleta de credenciais e a vigilância direcionadas, adaptadas ao papel e ao valor da vítima.

Recomendações

  • Monitore o abuso do registro como uma camada de persistência:
    Alerta sobre blobs REG_BINARY executáveis e valores anômalos em caminhos não padrão, como HKCU\ Console\ *, especialmente aqueles escritos por processos do usuário.
  • Detecte a lógica C2 de várias camadas, não apenas domínios:
    Crie detecções para conexões de saída que exigem muitas tentativas, troca de protocolo (HTTP ↔ TCP bruto), primeiro sinalizador atrasado e falhas repetidas seguidas de comportamento alternativo.
  • Anomalias de permissão de memória do instrumento:
    Alerta sobre processos que alocam memória PAGE_EXECUTE_READWRITE seguida pela criação de threads, especialmente dentro do explorer.exe.
  • Procure padrões de carregamento de DLL binários assinados e locais:
    Correlacione a execução de binários assinados de diretórios temporários com carregamentos de DLL não assinados e criação imediata de threads secundários.
  • Trate a ativação do recurso RAT como um sinal de alerta: Monitore a ativação repentina de APIs de keylogging, comportamento interativo do shell ou operações de transferência de arquivos em processos de longa execução e anteriormente silenciosos.

Apêndice

IOCs

Indicator Type Indicator Comments
Sha256 Hash 77ea62ff74a66f61a511eb6b6edac20be9822fa9cc1e7354a8cd6379c7b9d2d2 Stage 1
Sha256 Hash fa388a6cdd28ad5dd83acd674483828251f21cbefaa801e839ba39af24a6ac19 Stage 2
Sha256 Hash f74017b406e993bea5212615febe23198b09ecd73ab79411a9f6571ba1f94cfa Stage 3
Sha256 Hash 068e49e734c2c7be4fb3f01a40bb8beb2d5f4677872fabbced7741245a7ea97c Stage 4
Domain ggwk[.]cc Embedded Domain Within Decoy Attachment
Domain b[.]yuxuanow[.]top Shellcode C2
IP 45.207.231[.]94 Resolution from ggwk[.]cc
IP 103.20.195[.]147 Resolution from b[.]yuxuanow[.]top

Infraestrutura Silver Fox encontrada após a rotação

Indicator Type Indicator IP Address
Domain itdd[.]club 45.207.231[.]107
Domain xzghjec[.]com 8.217.9[.]165
Domain gov-a[.]work 160.124.9[.]103
Domain gov-a[.]fit 160.124.9[.]103
Domain gvo-b[.]club 160.124.9[.]103
Domain gov-c[.]club 160.124.9[.]103
Domain gov-a[.]club 160.124.9[.]103
Domain govk[.]club 160.124.9[.]103
Domain dingtalki[.]cn 47.239.225[.]43
Domain hhiioo[.]cn 43.100.22[.]158
Domain kkyui[.]club 43.100.22[.]158
Domain hhimm[.]work 43.100.22[.]158
Domain swjc2025bjkb[.]cn 43.100.123[.]207
Domain 2025swmm[.]cn 43.100.123[.]207
Domain hhiioo[.]work 43.100.63[.]145

Mapeamento MITRE

ATT&CK Tactic Technique ID Technique Name Evidence from Report
Initial Access T1566.001 Phishing: Spearphishing Attachment Income-tax themed PDF delivered via email
Initial Access T1204.002 User Execution: Malicious File User opens PDF leading to payload download
Execution T1059 Command and Scripting Interpreter NSIS installer-driven execution logic
Execution T1106 Native API Use of GetTempPathA, VirtualAllocEx, WriteProcessMemory
Execution T1129 Shared Modules Signed Thunder.exe loads malicious DLL
Execution T1620 Reflective Code Loading Donut-generated shellcode executed entirely from memory
Persistence T1547.001 Registry Run Keys / Startup Folder Registry-stored plugins persist across reboots
Persistence T1112 Modify Registry Configuration and plugins stored as REG_BINARY values
Defense Evasion T1574.001 DLL Search Order Hijacking Malicious libexpat.dll loaded from writable directory
Defense Evasion T1218 Signed Binary Proxy Execution Abuse of digitally signed third-party binary
Defense Evasion T1027 Obfuscated Files or Information Encrypted payload (box.ini) decrypted at runtime
Defense Evasion T1497 Virtualization/Sandbox Evasion Anti-debugging, resource checks, sandbox detection
Defense Evasion T1562.001 Disable or Modify Tools Stops Windows Update service (wuauserv)
Discovery T1057 Process Discovery Enumerates processes to detect analysis tools
Discovery T1082 System Information Discovery System resource and environment checks
Command and Control T1071.001 Web Protocols HTTP/HTTPS C2 communication
Command and Control T1095 Non-Application Layer Protocol Raw TCP socket C2 supported via t* flags
Command and Control T1105 Ingress Tool Transfer Plugins and modules delivered from C2
Command and Control T1573 Encrypted Channel Encrypted configuration and payloads
Command and Control T1008 Fallback Channels Three-tier C2 with failover after connection failures
Command and Control T1041 Exfiltration Over C2 Channel Keylogging and command responses sent over C2
Collection T1056.001 Input Capture: Keylogging Keylogger enabled via kl feature flag
Impact T1489 Service Stop Windows Update service disabled

Referências

Prajwal Awasthi
Prajwal is a Malware Analyst at Cloudsek, specializing in reverse engineering and threat intelligence. He focuses on uncovering new threats through malware research, with a background in Offensive Security and Windows Internals.
Koushik Pal
Threat Researcher at CloudSEK, specializing in digital forensics, incident response, and adversary hunting to uncover attacker motives, methods, and operations.

Blogs relacionados