Phishing de Credenciais BlueDelta (APT28) via Hospedagem Gratuita e Ngrok
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
BlueDelta, um grupo afiliado ao GRU também conhecido como APT28/Fancy Bear, conduziu várias campanhas de coleta de credenciais entre fevereiro e setembro de 2025. As campanhas usaram serviços gratuitos de hospedagem e tunelamento para hospedar páginas de login falsificadas do Outlook, Google e VPN Sophos e exfiltrar credenciais capturadas. As iscas incluíram documentos PDF legítimos e linguagem específica da região para aumentar a credibilidade. A operação teve como alvo entidades de energia, pesquisa nuclear, governamentais e acadêmicas na Turquia, Macedônia do Norte e Uzbequistão.
Investigação
O Insikt Group da Recorded Future coletou mais de uma dúzia de páginas de phishing hospedadas em serviços como Webhook.site, InfinityFree, Byet Internet Services e ngrok. O JavaScript nas páginas capturava nomes de usuário, senhas e identificadores das vítimas, enviava sinais para webhooks controlados por atacantes e, em seguida, redirecionava as vítimas para portais autênticos. Múltiplas variantes reutilizaram código e modificaram nomes de variáveis para simplificar a implantação. A infraestrutura era de curta duração e utilizava encurtadores de links como ShortURL.at.
Mitigação
Bloquear domínios conhecidos de hospedagem gratuita e tunelamento, monitorar tráfego de saída para serviços de webhook e reforçar MFA em todas as contas expostas externamente. Educar os usuários sobre páginas de phishing que imitam portais OWA, Google e VPN, especialmente quando iscas em PDF estão anexadas. Implementar filtragem de rede para URLs maliciosos conhecidos e aplicar controles de segurança de e-mail para detectar links suspeitos em PDF.
Resposta
Alerta os analistas do SOC quando forem observados POSTs HTTP para endpoints de webhook conhecidos e quando forem carregadas páginas de coleta de credenciais. Quarentenar a página maliciosa, isolar contas de usuários afetadas, forçar redefinições de senhas e revisar logs para movimentos laterais. Conduzir uma caçada a ameaças por outras páginas usando a mesma infraestrutura e atualizar listas de bloqueio conforme necessário.
“graph TB %% Definições de Classes classDef action fill:#99ccff classDef service fill:#ffcc99 classDef tool fill:#cccccc %% Nós u2013 Reconhecimento recon_info[“<b>Ação</b> – <b>T1591 Reunir Informações sobre a Organização da Vítima</b>: Coletar endereços de e-mail públicos e detalhes da organização de pesquisadores-alvo.”] class recon_info action recon_roles[“<b>Ação</b> – <b>T1591.004 Identificar Funções</b>: Determinar funções de trabalho específicas, como analistas de energia, estudiosos de think-tanks e equipe de segurança.”] class recon_roles action %% Nós u2013 Desenvolvimento de Recursos resource_dev[“<b>Ação</b> – <b>T1583.006 Adquirir Serviços Web de Infraestrutura</b>: Registrar domínios descartáveis e usar serviços gratuitos de hospedagem/tunelamento (Webhook.site, InfinityFree, Byet, ngrok, shorturl.at).”] class resource_dev service %% Nós u2013 Phishing phishing[“<b>Ação</b> – <b>T1566.001 Anexo de Spearphishing</b>: Enviar e-mail elaborado contendo link malicioso encurtado que redireciona por várias URLs.”] class phishing action %% Nós u2013 Ofuscação html_smuggling[“<b>Ação</b> – <b>T1027.006 HTML Smuggling</b>: O primeiro redirecionamento serve um HTML que, brevemente, incorpora uma isca de PDF legítima via metau2011refresh.”] class html_smuggling action %% Nós u2013 Coleta de Credenciais credential_forge[“<b>Ação</b> – <b>T1606 Forjar Credenciais Web / T1056.003 Captura de Portal Web</b>: Páginas de login falsificadas (OWA, Google, Sophos VPN) capturam credenciais com JavaScript.”] class credential_forge tool %% Nós u2013 Captura de Entrada Beacon web_capture_beacon[“<b>Ação</b> – <b>T1056.003 Captura de Portal Web</b>: O JavaScript envia um sinal de página aberta e credenciais inseridas para o webhook do atacante.”] class web_capture_beacon tool %% Nós u2013 Exfiltração exfil_webhook[“<b>Ação</b> – <b>T1567.004 Exfiltração via Webhook</b>: POST dados capturados como JSON para o webhook controlado pelo atacante (webhook.site, ngroku2011free.app).”] class exfil_webhook service %% Nós u2013 Comando e Controle c2_webprotocol[“<b>Ação</b> – <b>T1071.001 Protocolos de Camada de Aplicação Protocolo Web</b>: Usar tráfego web padrão para comunicação C2.”] class c2_webprotocol service c2_webservice[“<b>Ação</b> – <b>T1102.002 Serviço Web de Comunicação Bidirecional</b>: Manter canal bidirecional persistente via o serviço de webhook.”] class c2_webservice service %% Nós u2013 Tunelamento protocol_tunnel[“<b>Ação</b> – <b>T1572 Tunelamento de Protocolo</b>: Aproveitar túneis ngrok para expor endpoints de exfiltração local para a internet.”] class protocol_tunnel tool %% Nós u2013 Redirecionamento Pós-Exfiltração post_redirect[“<b>Ação</b> – Redirecionamento Pós-Exfiltração: Após a captura de dados, as vítimas são enviadas para o documento legítimo original ou portal VPN para evitar suspeitas.”] class post_redirect action %% Conexões u2013 Fluxo recon_info u002du002d>|leads_to| recon_roles recon_roles u002du002d>|leads_to| resource_dev resource_dev u002du002d>|enables| phishing phishing u002du002d>|triggers| html_smuggling html_smuggling u002du002d>|delivers| credential_forge credential_forge u002du002d>|captures| web_capture_beacon web_capture_beacon u002du002d>|sends_to| exfil_webhook exfil_webhook u002du002d>|supports| c2_webprotocol c2_webprotocol u002du002d>|uses| c2_webservice c2_webservice u002du002d>|relies_on| protocol_tunnel protocol_tunnel u002du002d>|facilitates| post_redirect “
Fluxo de Ataque
Detecções
Possível Distribuição de Malware via Endpoints WebsiteHook (via proxy)
Ver
Possível Distribuição de Malware via Endpoints WebsiteHook (via dns)
Ver
Possível Serviço de Tunelamento de Portas (via dns)
Ver
Possível Infiltração/Exfiltração de Dados/C2 via Serviços/Ferramentas de Terceiros (via proxy)
Ver
IOCs (DestinationIP) para detectar: GRU-Linked BlueDelta Evolui Coleta de Credenciais
Ver
IOCs (SourceIP) para detectar: GRU-Linked BlueDelta Evolui Coleta de Credenciais
Ver
Detecção das Campanhas de Coleta de Credenciais da BlueDelta via Site de Webhook [Servidor Web]
Ver
Execução de Simulação
Pré-requisito: O Cheque de Pré-Voo de Telemetria & Baseline deve ter sido aprovado.
Racional: 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 narrativas DEVEM refletir diretamente os TTPs identificados e visar gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a erros de diagnóstico.
-
Narrativa de Ataque & Comandos:
- Entrega inicial de phishing: Um atacante envia um e-mail de phishing contendo um URL curto que redireciona para o malicioso
webhook.sitepágina. - Interação da vítima: A vítima clica no link; o navegador segue o redirecionamento e emite um HTTP GET solicitação para
https://webhook.site/e8ae3bbd-ab02-46b7-b84c-f5f4baa5d7c7. - Página de captura de credenciais: A página hospeda JavaScript que rouba as credenciais inseridas e as POSTs de volta para a mesma URL de webhook, mas o proxy apenas registra a solicitação GET inicial, o que é suficiente para acionar a regra.
- Para o teste, emulamos a vítima usando o
Invoke-WebRequestdo PowerShell para solicitar o URL malicioso exato, reproduzindo a mesma entrada de log no proxy.
- Entrega inicial de phishing: Um atacante envia um e-mail de phishing contendo um URL curto que redireciona para o malicioso
-
Script de Teste de Regressão:
# ------------------------------------------------- # Simulação de Acesso ao Site de Webhook BlueDelta (TC-20260109-9X3BZ) # ------------------------------------------------- $maliciousUrls = @( "https://webhook.site/e8ae3bbd-ab02-46b7-b84c-f5f4baa5d7c7", "https://webhook.site/3791f8c0-1308-4c5b-9c82-0dc416aeb9c4" ) foreach ($url in $maliciousUrls) { try { Write-Host "Solicitando URL malicioso: $url" Invoke-WebRequest -Uri $url -UseBasicParsing -Method GET -TimeoutSec 10 | Out-Null Write-Host "✅ Solicitação enviada." } catch { Write-Warning "Solicitação para $url falhou: $_" } } -
Comandos de Limpeza:
# Limpar cache de proxy (se aplicável) para evitar entradas residuais net stop "Squid Service" net start "Squid Service" # Remover quaisquer arquivos temporários criados pelo script (nenhum neste caso) Write-Host "Limpeza concluída."