BlueDelta (APT28) Hameçonnage de Crédentiels via Hébergement Gratuit & Ngrok
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
BlueDelta, un groupe affilié au GRU également connu sous les noms de APT28/Fancy Bear, a mené plusieurs campagnes de collecte de données d’identification entre février et septembre 2025. Les campagnes utilisaient des services d’hébergement et de tunneling gratuits pour héberger des pages de connexion Outlook, Google et Sophos VPN contrefaites et exfiltrer les informations d’identification capturées. Les appâts comprenaient des documents PDF légitimes et un langage spécifique à la région pour accroître la crédibilité. L’opération ciblait des entités du secteur de l’énergie, de la recherche nucléaire, du gouvernement et du milieu académique en Turquie, en Macédoine du Nord et en Ouzbékistan.
Enquête
Insikt Group de Recorded Future a collecté plus d’une douzaine de pages de phishing hébergées sur des services tels que Webhook.site, InfinityFree, Byet Internet Services et ngrok. Le JavaScript sur les pages capturait les noms d’utilisateur, les mots de passe et les identifiants des victimes, envoyait des signaux aux webhooks contrôlés par les attaquants, puis redirigeait les victimes vers des portails authentiques. Plusieurs variantes réutilisaient du code et modifiaient les noms de variables pour simplifier le déploiement. L’infrastructure était de courte durée et utilisait des raccourcisseurs de lien comme ShortURL.at.
Atténuation
Bloquez les domaines connus d’hébergement gratuit et de tunneling, surveillez le trafic sortant vers les services de webhook, et appliquez l’authentification multifacteur sur tous les comptes accessibles depuis l’extérieur. Éduquez les utilisateurs sur les pages de phishing qui imitent OWA, Google et les portails VPN, en particulier lorsque des appâts PDF sont attachés. Implémentez un filtrage réseau pour les URL malveillantes connues et appliquez des contrôles de sécurité des e-mails pour détecter les liens PDF suspects.
Réponse
Alertez les analystes SOC lorsque des POST HTTP vers des points de terminaison de webhooks connus sont observés et lorsque des pages de collecte de données d’identification sont chargées. Mettez en quarantaine la page malveillante, isolez les comptes utilisateurs affectés, forcez une réinitialisation des mots de passe et examinez les journaux pour détecter des mouvements latéraux. Effectuez une chasse aux menaces pour d’autres pages utilisant la même infrastructure et mettez à jour les listes de blocage en conséquence.
« graph TB %% Class Definitions classDef action fill:#99ccff classDef service fill:#ffcc99 classDef tool fill:#cccccc %% Nodes u2013 Reconnaissance recon_info[« <b>Action</b> – <b>T1591 Gather Victim Org Information</b>: Collecter des adresses e-mail publiques et des détails sur les organisations des chercheurs ciblés. »] class recon_info action recon_roles[« <b>Action</b> – <b>T1591.004 Identify Roles</b>: Déterminer les fonctions professionnelles spécifiques telles que les analystes énergétiques, les chercheurs de groupes de réflexion et le personnel de sécurité. »] class recon_roles action %% Nodes u2013 Resource Development resource_dev[« <b>Action</b> – <b>T1583.006 Acquire Infrastructure Web Services</b>: Enregistrer des domaines jetables et utiliser des services d’hébergement/tunneling gratuits (Webhook.site, InfinityFree, Byet, ngrok, shorturl.at). »] class resource_dev service %% Nodes u2013 Phishing phishing[« <b>Action</b> – <b>T1566.001 Spearphishing Attachment</b>: Envoyer un e-mail conçu contenant un lien malveillant raccourci qui redirige à travers plusieurs URL. »] class phishing action %% Nodes u2013 Obfuscation html_smuggling[« <b>Action</b> – <b>T1027.006 HTML Smuggling</b>: La première redirection sert un HTML qui intègre brièvement un appât PDF légitime via un metau2011refresh. »] class html_smuggling action %% Nodes u2013 Credential Harvesting credential_forge[« <b>Action</b> – <b>T1606 Forge Web Credentials / T1056.003 Web Portal Capture</b>: Les pages de connexion contrefaites (OWA, Google, Sophos VPN) capturent les informations d’identification avec JavaScript. »] class credential_forge tool %% Nodes u2013 Input Capture Beacon web_capture_beacon[« <b>Action</b> – <b>T1056.003 Web Portal Capture</b>: JavaScript envoie un signal de page ouverte et les informations d’identification saisies au webhook de l’attaquant. »] class web_capture_beacon tool %% Nodes u2013 Exfiltration exfil_webhook[« <b>Action</b> – <b>T1567.004 Exfiltration Over Webhook</b>: POST des données capturées en tant que JSON au webhook contrôlé par l’attaquant (webhook.site, ngroku2011free.app). »] class exfil_webhook service %% Nodes u2013 Command and Control c2_webprotocol[« <b>Action</b> – <b>T1071.001 Application Layer Protocol Web Protocols</b>: Utiliser le trafic web standard pour la communication C2. »] class c2_webprotocol service c2_webservice[« <b>Action</b> – <b>T1102.002 Web Service Bidirectional Communication</b>: Maintenir une communication persistante à double sens via le service de webhook. »] class c2_webservice service %% Nodes u2013 Tunneling protocol_tunnel[« <b>Action</b> – <b>T1572 Protocol Tunneling</b>: Utiliser les tunnels ngrok pour exposer les points de terminaison d’exfiltration locaux à Internet. »] class protocol_tunnel tool %% Nodes u2013 Postu2011Exfiltration Redirection post_redirect[« <b>Action</b> – Redirection Postu2011exfiltration: Après la capture des données, les victimes sont renvoyées au document légitime original ou au portail VPN pour éviter les soupçons. »] class post_redirect action %% Connections u2013 Flow 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 «
Flux d’attaque
Détections
Distribution possible de logiciels malveillants via les points d’extrémité WebsiteHook (via proxy)
Voir
Distribution possible de logiciels malveillants via les points d’extrémité WebsiteHook (via DNS)
Voir
Service de tunneling de port possible (via DNS)
Voir
Infiltration / Exfiltration / C2 de données possible via des services / outils tiers (via proxy)
Voir
IOCs (DestinationIP) pour détecter : Évolution de la collecte d’informations d’identification par BlueDelta lié au GRU
Voir
IOCs (SourceIP) pour détecter : Évolution de la collecte d’informations d’identification par BlueDelta lié au GRU
Voir
Détection des campagnes de collecte d’informations d’identification de BlueDelta via Webhook Site [Serveur web]
Voir
Exécution de la simulation
Prérequis : Le contrôle préalable de télémétrie et de base doit avoir réussi.
Justification : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTP identifiés et viser à générer exactement la télémétrie attendue par la logique de détection. Des exemples abstraits ou non liés entraîneront un mauvais diagnostic.
-
Narrative et commandes de l’attaque :
- Livraison initiale de phishing : Un attaquant envoie un e-mail de phishing contenant une URL courte qui redirige vers le site malveillant
webhook.sitepage. - Interaction de la victime : La victime clique sur le lien; le navigateur suit la redirection et envoie une requête HTTP GET demande vers
https://webhook.site/e8ae3bbd-ab02-46b7-b84c-f5f4baa5d7c7. - Page de capture des informations d’identification : La page héberge un JavaScript qui vole les informations d’identification saisies et les envoie en POST à la même URL de webhook, mais le proxy n’enregistre que la requête GET initiale, ce qui est suffisant pour déclencher la règle.
- Pour le test, nous émulons la victime en utilisant
Invoke-WebRequestde PowerShell pour demander exactement l’URL malveillante, reproduisant la même entrée de journal proxy.
- Livraison initiale de phishing : Un attaquant envoie un e-mail de phishing contenant une URL courte qui redirige vers le site malveillant
-
Script de test de régression :
# ------------------------------------------------- # Simulation d'accès au site Webhook de 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 "Demande d'URL malveillante : $url" Invoke-WebRequest -Uri $url -UseBasicParsing -Method GET -TimeoutSec 10 | Out-Null Write-Host "✅ Demande envoyée." } catch { Write-Warning "La demande à $url a échoué : $_" } } -
Commandes de nettoyage :
# Vider le cache du proxy (le cas échéant) pour éviter les entrées résiduelles net stop "Squid Service" net start "Squid Service" # Supprimer tous les fichiers temporaires créés par le script (aucun dans ce cas) Write-Host "Nettoyage terminé."