SOC Prime Bias: Médio

09 Abr 2026 18:30

ClickFix ao MaaS: Dentro de um RAT Modular para Windows e Seu Painel de Controle

Author Photo
SOC Prime Team linkedin icon Seguir
ClickFix ao MaaS: Dentro de um RAT Modular para Windows e Seu Painel de Controle
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O Netskope Threat Labs observou uma campanha ClickFix entregando um RAT personalizado para Windows construído em Node.js via instaladores MSI maliciosos. A carga útil mantém módulos-chave na memória e usa streaming gRPC sobre Tor para C2. Um erro de OPSEC expôs o protocolo do painel de administração, apontando para um modelo de malware-como-serviço com rastreamento de carteira. A persistência é configurada via um valor de execução HKCU em nível de usuário.

Investigação

Os pesquisadores capturaram o MSI, decodificaram o bootstrap em PowerShell e rastrearam o carregamento dinâmico de módulos Node.js. Eles extraíram e descriptografaram o blob de configuração para recuperar um endereço C2 .onion. Um arquivo admin.proto vazado revelou funções MaaS como gerenciamento multi-operador e monitoramento de carteira, e os analistas notaram um watchdog auto-recuperador além do uso de Tor para tráfego anonimizado.

Mitigação

Bloqueie a execução de MSI não assinados de fontes não confiáveis e monitore HKCU…Run para novas entradas suspeitas. Detecte PowerShell que faça download de cargas MSI de domínios como cloud-verificate.com. Alerta sobre conhost.exe ou node.exe lançados com argumentos ocultos e sobre tor.exe surgindo em endpoints que não o exigem.

Resposta

Isole hosts afetados, colete a memória para análise de módulos na memória e remova a persistência do HKCU Run. Revise %LOCALAPPDATA%LogicOptimizer para artefatos de preparação e qualquer atividade agendada de tor.exe, depois bloqueie o endpoint onion e domínios/IPs relacionados. Busque em toda a empresa pelos mesmos artefatos de instalador e cadeias de processos.

graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#cccccc classDef process fill:#ccffcc %% Nodes action_user_exec[“<b>Ação</b> – <b>T1204.001 Execução pelo utilizador: Link malicioso</b><br/>Utilizador clica num link malicioso que inicia PowerShell”] class action_user_exec action process_powershell_cmd[“<b>Processo</b> – <b>T1059.001 PowerShell</b><br/>Comando Base64 descarrega instalador MSI”] class process_powershell_cmd process action_msi_install[“<b>Ação</b> – <b>T1546.016 Pacotes de instalação</b><br/>Instalação MSI silenciosa de Node.js”] class action_msi_install action tool_msiexec[“<b>Ferramenta</b> – <b>Nome</b>: msiexec.exe<br/><b>Técnica</b>: T1218.007 Execução por proxy de binário”] class tool_msiexec tool action_persistence[“<b>Ação</b> – <b>T1037.001 Chave Run</b><br/>Escreve no Run para persistência”] class action_persistence action tool_tor[“<b>Ferramenta</b> – <b>Nome</b>: tor.exe<br/><b>Técnica</b>: T1090.002 Proxy externo”] class tool_tor tool action_tor_proxy[“<b>Ação</b> – <b>T1090.003 Proxy multi-hop</b><br/>Tráfego C2 via Tor SOCKS5”] class action_tor_proxy action action_grpc_comm[“<b>Ação</b> – <b>T1102.002 Serviço web: gRPC</b><br/>Comunicação com C2 .onion”] class action_grpc_comm action action_encrypted_channel[“<b>Ação</b> – <b>T1573 Canal encriptado</b><br/>AES-256-CBC ou XOR”] class action_encrypted_channel action action_collection[“<b>Ação</b> – <b>T1592.* Informação do host</b><br/>Recolha de hardware e rede”] class action_collection action action_archive[“<b>Ação</b> – <b>T1560.003 Arquivo personalizado</b><br/>Encriptação multicamada”] class action_archive action action_config_repo[“<b>Ação</b> – <b>T1602 Configuração</b><br/>Extrai C2 onion e ID”] class action_config_repo action action_dynamic_resolution[“<b>Ação</b> – <b>T1568 Resolução dinâmica</b><br/>Resolve .onion em runtime”] class action_dynamic_resolution action action_ip_discovery[“<b>Ação</b> – <b>T1016.001 Descoberta de IP</b><br/>Obtém IP externo”] class action_ip_discovery action %% Edges action_user_exec –>|triggers| process_powershell_cmd process_powershell_cmd –>|downloads| action_msi_install action_msi_install –>|uses| tool_msiexec action_msi_install –>|enables| action_persistence action_persistence –>|downloads| tool_tor tool_tor –>|enables| action_tor_proxy action_tor_proxy –>|routes| action_grpc_comm action_grpc_comm –>|encrypted via| action_encrypted_channel action_encrypted_channel –>|carries| action_collection action_collection –>|archives| action_archive action_archive –>|stores config in| action_config_repo action_config_repo –>|provides| action_dynamic_resolution action_dynamic_resolution –>|connects to| action_ip_discovery action_collection –>|discovers| action_ip_discovery

Fluxo de Ataque

Execução de Simulação

Pré-requisito: A Verificação Prévia de Telemetria & Base de Referência deve ter sido aprovada.

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 visar a geração da telemetria exata esperada pela lógica de detecção.

  • Narrativa & Comandos do Ataque:

    1. Objetivo: O atacante deseja iniciar uma carga maliciosa Node.js (bootstrap.js) sem levantar suspeitas.
    2. Método: Use um binário assinado do Windows (conhost.exe) como um proxy para lançar node.exe em modo sem cabeça, passando o script bootstrap como um argumento.
    3. Etapas:
      • Soltar um malicioso bootstrap.js em um diretório gravável (por exemplo, %TEMP%).
      • Invoque conhost.exe com a string de argumento exata que a regra está vigiando.
      • O comando é executado sob o contexto do usuário atual, imitando uma reprodução legítima de processo.
    # 1. Soltar bootstrap.js malicioso (conteúdo inofensivo simulado para teste)
    $bootstrapPath = "$env:TEMPbootstrap.js"
    Set-Content -Path $bootstrapPath -Value "// espaço reservado para bootstrap malicioso"
    
    # 2. Execute conhost.exe para iniciar node.exe com as flags requeridas
    $conhost = "$env:windirsystem32conhost.exe"
    $args = '--headless "node.exe" "bootstrap.js"'
    Start-Process -FilePath $conhost -ArgumentList $args -WorkingDirectory $env:TEMP
  • Script de Teste de Regressão:

    # -------------------------------------------------
    # Teste de Regressão: Trigar Conhost → Bootstrap de Nó
    # -------------------------------------------------
    # Certifique-se de que o Sysmon está em execução e registrando eventos ProcessCreate.
    
    # Solte um script bootstrap fictício
    $bootstrap = "$env:TEMPbootstrap.js"
    Set-Content -Path $bootstrap -Value "// conteúdo de teste do bootstrap"
    
    # Defina a linha de comando exata que a regra de detecção procura
    $conhostPath = "$env:windirsystem32conhost.exe"
    $cmdLine = '--headless "node.exe" "bootstrap.js"'
    
    # Inicie conhost com os argumentos que parecem maliciosos
    Start-Process -FilePath $conhostPath -ArgumentList $cmdLine -WorkingDirectory $env:TEMP
    
    Write-Host "Simulação concluída – verifique o SIEM para alerta."
  • Comandos de Limpeza:

    # Pare todos os processos de node ou conhost remanescentes iniciados pelo teste
    Get-Process -Name node, conhost -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Remova o script temporário bootstrap
    Remove-Item -Path "$env:TEMPbootstrap.js" -Force -ErrorAction SilentlyContinue
    
    Write-Host "Limpeza concluída."