SOC Prime Bias: Médio

28 Abr 2026 18:45

Crypto Drainers como uma Ameaça Convergente: Insights sobre Ecossistemas de Ataque Híbridos Emergentes

Author Photo
SOC Prime Team linkedin icon Seguir
Crypto Drainers como uma Ameaça Convergente: Insights sobre Ecossistemas de Ataque Híbridos Emergentes
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O relatório explica como a infraestrutura de crimes cibernéticos estabelecida está cada vez mais convergindo com operações de drenagem de criptomoedas, dando origem a ecossistemas de ataque híbridos que colocam em risco ativos do Web2 e Web3. Os agentes de ameaça confiam em páginas de phishing sofisticadas com temas de ferramentas de IA ou serviços financeiros para convencer as vítimas a conectar suas carteiras, autorizar transações de tokens e transferir fundos sem saber através de várias blockchains. Dois exemplos destacados, StepDrainer e EtherRAT, demonstram como esse modelo abrange tanto a drenagem de carteiras baseadas em navegador quanto o malware em Windows com funcionalidade ciente da blockchain. Como resultado, a ameaça agora se estende bem além dos usuários nativos de criptomoedas e atinge mais profundamente os ambientes empresariais convencionais.

Investigação

Os pesquisadores examinaram a operação StepDrainer como um serviço de malware, incluindo sua infraestrutura de encenação em PHP e JavaScript e seu uso do Web3Modal para exibir prompts convincentes de conexão de carteiras. Eles também analisaram o malware EtherRAT para Windows, que era entregue através de um instalador TFTP trojanizado, mantinha permanência através de uma chave de registro Run e comunicava-se com endpoints RPC de Ethereum e Solana. Durante a investigação, a equipe extraiu indicadores como domínios maliciosos, chaves de registro e artefatos de linha de comando vinculados a ambos os caminhos de ataque.

Mitigação

As organizações devem bloquear o acesso a domínios maliciosos conhecidos, exigir autenticação multifator para extensões de carteiras sempre que possível e monitorar os sistemas em busca de entradas suspeitas no registro Run e processos inesperados do Node.js. As equipes de segurança também devem inspecionar o tráfego para serviços RPC de blockchain pública em busca de comportamentos anômalos e revisar regularmente as extensões do navegador para sinais de adulteração ou abuso.

Resposta

Se esta atividade for detectada, isole imediatamente o host afetado, remova a entrada maliciosa no registro Run, termine os processos não autorizados do Node.js e revogue todas as aprovações de tokens concedidas pelas carteiras impactadas. Os investigadores devem então realizar uma análise forense para identificar quaisquer cargas adicionais ou mecanismos de persistência e atualizar listas de permissão ou bloqueio para evitar mais comunicação com a infraestrutura de comando e controle identificada.

graph TB %% Class Definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes u2013 Techniques initial_access[“<b>Técnica</b> – <b>T1204.001 Execução pelo usuário: Link malicioso</b><br/><b>Descrição</b>: As vítimas clicam em um link criado que executa conteúdo malicioso.”] class initial_access technique delivery_html_smuggling[“<b>Técnica</b> – <b>T1027.006 Arquivos ou informações ofuscados: HTML Smuggling</b><br/><b>Descrição</b>: JavaScript malicioso é entregue através de uma página web que oculta a carga útil em HTML.”] class delivery_html_smuggling technique delivery_compile_after[“<b>Técnica</b> – <b>T1027.004 Arquivos ou informações ofuscados: Compilação após entrega</b><br/><b>Descrição</b>: A carga útil é montada no host após a entrega inicial.”] class delivery_compile_after technique delivery_embedded_payloads[“<b>Técnica</b> – <b>T1027.009 Arquivos ou informações ofuscados: Cargas úteis incorporadas</b><br/><b>Descrição</b>: A carga útil está oculta dentro de outro arquivo como JavaScript.”] class delivery_embedded_payloads technique delivery_deobfuscate[“<b>Técnica</b> – <b>T1140 Desofuscar/decodificar arquivos ou informações</b><br/><b>Descrição</b>: Dados Base64 são decodificados no navegador antes da execução.”] class delivery_deobfuscate technique persistence_run_key[“<b>Técnica</b> – <b>T1127.002 Execução proxy de utilitários confiáveis de desenvolvedor: ClickOnce</b><br/><b>Descrição</b>: O instalador cria uma chave Runu2011key para iniciar node.exe malicioso.”] class persistence_run_key technique persistence_appcert[“<b>Técnica</b> – <b>T1546.009 Execução acionada por evento: DLLs AppCert</b><br/><b>Descrição</b>: DLLs assinadas com certificado confiável são carregadas para persistência.”] class persistence_appcert technique recon_hardware[“<b>Técnica</b> – <b>T1592.001 Coleta de informações do host da vítima: Hardware</b><br/><b>Descrição</b>: O malware consulta detalhes de hardware do sistema comprometido.”] class recon_hardware technique recon_firmware[“<b>Técnica</b> – <b>T1592.003 Coleta de informações do host da vítima: Firmware</b><br/><b>Descrição</b>: O malware coleta versão de firmware e informações da BIOS.”] class recon_firmware technique c2_web_protocols[“<b>Técnica</b> – <b>T1071.001 Protocolo de camada de aplicação: Protocolos web</b><br/><b>Descrição</b>: Usa tráfego web padrão (HTTP/HTTPS) para comando e controle.”] class c2_web_protocols technique c2_bidirectional[“<b>Técnica</b> – <b>T1102.002 Serviço web: Comunicação bidirecional</b><br/><b>Descrição</b>: Permite comunicação bidirecional entre implante e servidor.”] class c2_bidirectional technique c2_oneway[“<b>Técnica</b> – <b>T1102.003 Serviço web: Comunicação unidirecional</b><br/><b>Descrição</b>: Envia dados ao servidor sem esperar resposta.”] class c2_oneway technique c2_encrypted[“<b>Técnica</b> – <b>T1573 Canal criptografado</b><br/><b>Descrição</b>: O tráfego C2 é criptografado para evitar detecção.”] class c2_encrypted technique c2_data_encoding[“<b>Técnica</b> – <b>T1132 Codificação de dados</b><br/><b>Descrição</b>: Os dados são codificados (por exemplo, base64) antes da transmissão.”] class c2_data_encoding technique c2_config_repo[“<b>Técnica</b> – <b>T1602 Dados de repositório de configuração</b><br/><b>Descrição</b>: Os dados de configuração são recuperados de repositórios em cadeia.”] class c2_config_repo technique asset_drain[“<b>Técnica</b> – <b>T1204.002 Execução pelo usuário: Aprovação de tokens</b><br/><b>Descrição</b>: A vítima aprova permissões de tokens via Web3Modal injetado, permitindo transferência de ativos.”] class asset_drain technique %% Nodes u2013 Tools / Processes tool_malicious_link[“<b>Ferramenta</b> – <b>Nome</b>: Link de phishing malicioso<br/><b>Descrição</b>: URL criada que carrega o portal falso de negociação.”] class tool_malicious_link tool tool_js_payload[“<b>Ferramenta</b> – <b>Nome</b>: Carga útil JavaScript ofuscada<br/><b>Descrição</b>: Código codificado em base64 executado no navegador.”] class tool_js_payload tool process_installer[“<b>Processo</b> – <b>Nome</b>: Instalador do Windows<br/><b>Descrição</b>: Solta Runu2011key e node.exe.”] class process_installer process tool_node_exe[“<b>Ferramenta</b> – <b>Nome</b>: node.exe<br/><b>Descrição</b>: Executa JavaScript malicioso após persistência.”] class tool_node_exe tool tool_web3modal[“<b>Ferramenta</b> – <b>Nome</b>: Interface Web3Modal<br/><b>Descrição</b>: UI injetada que solicita ao usuário aprovação de transferências de tokens.”] class tool_web3modal tool %% Operators (optional) op_and((“AND”)) class op_and operator %% Connections u2013 Attack Flow initial_access –>|leads_to| delivery_html_smuggling delivery_html_smuggling –>|uses| tool_malicious_link delivery_html_smuggling –>|uses| tool_js_payload delivery_html_smuggling –>|enables| delivery_compile_after delivery_compile_after –>|enables| delivery_embedded_payloads delivery_embedded_payloads –>|triggers| delivery_deobfuscate delivery_deobfuscate –>|creates| process_installer process_installer –>|drops| persistence_run_key process_installer –>|may_use| persistence_appcert persistence_run_key –>|executes| tool_node_exe persistence_app_cert –>|loads| tool_node_exe tool_node_exe –>|collects| recon_hardware tool_node_exe –>|collects| recon_firmware recon_hardware –>|feeds| c2_web_protocols recon_firmware –>|feeds| c2_web_protocols c2_web_protocols –>|supports| c2_bidirectional c2_web_protocols –>|supports| c2_oneway c2_bidirectional –>|uses| c2_encrypted c2_oneway –>|uses| c2_encrypted c2_encrypted –>|encodes| c2_data_encoding c2_data_encoding –>|stores_config_in| c2_config_repo c2_config_repo –>|provides| asset_drain asset_drain –>|uses| tool_web3modal

Fluxo de Ataque

Execução de Simulação

Pré-requisito: A Verificação Prévia de Telemetria & Base deve ter passado.

  • Narrativa de Ataque & Comandos

    O adversário já colocou um arquivo JavaScript malicioso (payload.js) no alvo. Para alcançar persistência, eles usam o instalado node.exe binário para iniciar conhost.exe em modo headless, que então carrega a carga útil JavaScript. Esta técnica evita janelas de console visíveis e se mistura ao uso normal node uso.

    1. Coloque a carga útil maliciosa (payload.js) em um local temporário.
    2. Execute node.exe com um comando que cria conhost.exe --headless apontando para a carga útil.
    3. Crie uma tarefa agendada que executa o mesmo comando na inicialização do sistema, fornecendo persistência.
  • Script de Teste de Regressão

    # Simulação de Persistência EtherRAT – PowerShell
    # -------------------------------------------------
    # 1. Prepare a carga útil JavaScript maliciosa
    $payloadPath = "$env:TEMPpayload.js"
    @"
    // JS malicioso minimalista – na realidade isso carregaria o implante EtherRAT
    const { exec } = require('child_process');
    exec('calc.exe'); // Exemplo de efeito colateral
    "@ | Set-Content -Encoding UTF8 $payloadPath
    
    # 2. Localize node.exe (assuma que está no PATH)
    $node = (Get-Command node.exe).Source
    if (-not $node) {
        Write-Error "node.exe não encontrado no PATH."
        exit 1
    }
    
    # 3. Construa a linha de comando conhost
    $conhostCmd = "C:WindowsSystem32conhost.exe --headless `"$payloadPath`""
    
    # 4. Execute via node.exe (isso cria o relacionamento pai-filho)
    $script = "require('child_process').exec(`"$conhostCmd`")"
    & $node -e $script
    
    # 5. OPCIONAL: Crie tarefa agendada para persistência
    $taskName = "SystemUpdate"
    $action = New-ScheduledTaskAction -Execute $node -Argument "-e `"$script`""
    $trigger = New-ScheduledTaskTrigger -AtLogOn
    Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -RunLevel Highest -Force
  • Comandos de Limpeza

    # Remover tarefa agendada
    Unregister-ScheduledTask -TaskName "SystemUpdate" -Confirm:$false
    
    # Excluir carga útil
    Remove-Item -Path "$env:TEMPpayload.js" -Force
    
    # Pare quaisquer processos conhost remanescentes gerados pelo teste
    Get-Process conhost -ErrorAction SilentlyContinue | Where-Object {
        $_.Path -eq 'C:WindowsSystem32conhost.exe' -and $_.CommandLine -match '--headless'
    } | Stop-Process -Force