NullReceiver Avança EtherHiding com Transferências de Cripto em Branco
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Atores de ameaça vinculados à DPRK estão usando um novo método de resolução de C2 baseado em blockchain conhecido como NullReceiver. A técnica embute endereços IP de C2 nos bytes de endereços de destinatários de transferências de Ethereum de valor zero, tornando a detecção mais difícil do que com o EtherHiding tradicional. O malware associado é distribuído através de pacotes npm trojanizados.
Investigação
Pesquisadores investigaram a atividade por meio de análise estática de tarballs npm publicados e exame somente leitura de transações controladas por atacantes na blockchain pública. A análise identificou dois pacotes npm maliciosos, bianira-ui and fluid-type-ui, que usam NullReceiver para resolver a infraestrutura de comando e controle.
Mitigação
Os defensores devem monitorar a atividade na blockchain associada a carteiras Ethereum controladas por invasores conhecidos e inspecionar endereços de destinatários usados em transferências de valor zero. As organizações também devem fortalecer os controles da cadeia de suprimentos de software para dependências npm para evitar a instalação de pacotes trojanizados.
Resposta
Se for detectada atividade de NullReceiver, ambientes afetados do Node.js devem ser isolados imediatamente. Investigadores devem identificar a fonte do pacote npm malicioso e bloquear os endereços IP de C2 associados e endereços de carteiras Ethereum em ambas as camadas de rede e aplicação.
Fluxo de Ataque
Detecções
Possível Tentativa de Abuso do Ethereum Publicnode Como Canal C2 (via dns_query)
Proof of Value
IOCs (SourceIP) para detectar: Transferências Criptográficas em Branco do NullReceiver Resolvem os Desafios do EtherHiding
Proof of Value
IOCs (DestinationIP) para detectar: Transferências Criptográficas em Branco do NullReceiver Resolvem os Desafios do EtherHiding
Proof of Value
Estabelecimento de Conexão HTTP/HTTPS NullReceiver [Conexão de Rede do Windows]
Proof of Value
Detecção da Técnica de Comando-e-Controle Baseada em Blockchain do NullReceiver [Criação de Processo no Linux]
Proof of Value
Execução da Simulação
Pré-requisito: O Check de Pré-vôo de Telemetria & Base Line deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e têm como objetivo gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão ao erro de diagnóstico.
-
Narrativa & Comandos do Ataque: O adversário busca estabelecer um canal de C2 furtivo que evite o blacklisting baseado em IP tradicional. Para isso, eles implantam um pacote npm malicioso que utiliza a técnica “NullReceiver”. O script inicializa variáveis globais usando sintaxe específica ofuscada (
global.i = "A10-npm3!", global.r = require) e imediatamente se conecta aohttps://1rpc.io/ethponto de extremidade. Isso permite que o malware leia o campo “recipient” de uma transação específica do Ethereum, que contém o endereço IP codificado do servidor C2 real. Este método usa a infraestrutura legítima do blockchain para ocultar a intenção maliciosa. -
Script de Teste de Regressão:
#!/bin/bash # Script de simulação para detecção da técnica de C2 NullReceiver # Crie um script node malicioso que imite os padrões específicos na regra de detecção cat << 'EOF' > malicious_npm_payload.js // Imita os padrões exatos definidos na regra Sigma global.i = "A10-npm3!"; global.r = require; const https = require('https'); // O malware se conecta a um ponto de extremidade RPC específico para buscar instruções const url = 'https://1rpc.io/eth'; console.log("[!] Iniciando busca de C2 baseada em blockchain..."); https.get(url, (res) => { console.log("[!] Conexão bem-sucedida. Analisando estado do blockchain..."); res.on('data', (d) => { // Em um ataque real, isso analisaria o campo 'recipient' para o IP C2 console.log("[!] Instrução recebida via técnica NullReceiver."); }); }).on('error', (e) => { console.error(`[X] Conexão falhou: ${e.message}`); }); EOF # Execute o script malicioso usando node echo "[*] Executando simulação maliciosa..." node malicious_npm_payload.js # Limpe o arquivo do script rm malicious_npm_payload.js -
Comandos de Limpeza:
# Remova quaisquer artefatos criados durante a simulação rm -f malicious_npm_payload.js