Recherche sur les menaces par Cato CTRL : Foxveil – Nouveau chargeur de malware utilisant Cloudflare, Discord et Netlify comme infrastructure de mise en scène
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Foxveil est un chargeur de malware nouvellement identifié de première étape, observé pour la première fois en août 2025. Il extrait le shellcode généré par Donut à partir de surfaces d’hébergement « de confiance » — Cloudflare Pages, Netlify, et les pièces jointes Discord — puis l’exécute via des techniques d’injection de processus. Pour la persistance, le chargeur enregistre soit un service Windows soit tente de manipuler les paramètres de Microsoft Defender. Parmi les variantes observées, les principales différences résident dans la source de préparation, l’approche d’injection, et la méthode de persistance.
Enquête
Les chercheurs de Cato ont analysé deux variantes de Foxveil et documenté le flux de bout en bout : récupération du shellcode, injection via Early Bird APC (ou auto-injection directe), et persistance à travers un service nommé AarSvc. Les artefacts déposés ont été observés sous C:WindowsSysWOW64 en utilisant des noms de fichiers masqués pour se fondre avec des composants légitimes. Le chargeur inclut également une logique de mutation de chaîne qui réécrit les termes à haut signal pour réduire les détections statiques. La télémétrie du réseau a montré des connexions à plusieurs domaines Cloudflare et Netlify, avec des récupérations occasionnelles à partir d’URL de pièces jointes Discord.
Atténuation
La plateforme Cato SASE a bloqué le chargeur avant l’exécution de la charge utile en examinant le comportement de téléchargement et les modèles de création de processus suspects. Pour réduire le risque, bloquez les domaines de mise en scène connus et alertez sur les comportements liés à l’injection associés aux techniques de Foxveil. Désactivez l’exécution de scripts non approuvés et renforcez les politiques autour des exclusions de Windows Defender pour limiter les tentatives de persistance. Gardez à jour les règles de liste blanche pour les services cloud légitimes afin de minimiser les faux positifs tout en maintenant la couverture.
Réponse
En cas de détection d’une activité Foxveil, isolez le point de terminaison, terminez le processus malveillant, et retirez tout service enregistré (y compris AarSvc). Effectuez un examen judiciaire de SysWOW64 pour les exécutables déposés et collectez des hachages pour délimiter l’étendue. Pivot sur les journaux réseaux pour les connexions aux domaines de mise en scène identifiés et bloquez-les aux niveaux DNS/proxy. Déployez des détections pour l’injection Early Bird APC et les modèles d’auto-injection dans l’ensemble de la flotte pour identifier d’autres hôtes impactés.
graph TB %% Class Definitions classDef technique fill:#ffcc99 classDef malware fill:#ff9999 classDef tool fill:#99ccff classDef payload fill:#ccccff classDef operator fill:#ff9900 %% Node Definitions initial_execution[« <b>Technique</b> – <b>T1574.005 Détournement du flux d’exécution: Faiblesse des autorisations de fichier de l’installateur exécutable</b><br/>La victime exécute un EXE/DLL malveillant déposant le chargeur Foxveil. »] class initial_execution technique staging_retrieval[« <b>Technique</b> – <b>T1102.001 Service Web: Résolution par Dead Drop</b> et <b>T1102 Service Web</b><br/>Foxveil contacte des Pages Cloudflare, des domaines Netlify ou des liens de pièces jointes Discord contrôlés par l’attaquant pour télécharger le shellcode généré par Donut. »] class staging_retrieval technique in_memory_loading[« <b>Technique</b> – <b>T1620 Chargement de code réflexif</b><br/>Le shellcode téléchargé est chargé directement en mémoire sans toucher le disque. »] class in_memory_loading technique process_injection[« <b>Technique</b> – <b>T1055.002 Injection d’exécutable portable</b> et <b>T1055.001 Injection DLL</b><br/>Foxveil v1 s’injecte via Early-Bird APC dans un nouveau processus svchost.exe ; Foxveil v2 s’auto-injecte. »] class process_injection technique persistence_service[« <b>Technique</b> – <b>T1543 Créer ou modifier un processus système</b><br/>Foxveil v1 enregistre un service Windows (AarSvc) pour la persistance au démarrage. »] class persistence_service technique masquerading[« <b>Technique</b> – <b>T1036.005 Correspondance du nom ou de l’emplacement de la ressource légitime</b><br/>Les binaires déposés nommés sms.exe, sihost.exe, taskhostw.exe, audiodg.exe, real1.exe sont placés dans C:\Windows\SysWOW64. »] class masquerading technique hide_artifacts[« <b>Technique</b> – <b>T1564.012 Exclusions de fichiers/chemins</b><br/>Tente un appel WMI à MSFT_MpPreference pour supprimer une exclusion pour C:\Windows\SysWOW64. »] class hide_artifacts technique obfuscation[« <b>Technique</b> – <b>T1027.014 Code polymorphe</b><br/>La routine de mutation de chaîne en temps réel remplace des chaînes à signal élevé comme « fox », « payload », « meterpreter », « beacon ». »] class obfuscation technique multistage_delivery[« <b>Technique</b> – <b>T1104 Canaux en plusieurs étapes</b><br/>Après l’exécution initiale du shellcode, des exécutables supplémentaires sont téléchargés depuis la même infrastructure de mise en scène (par exemple, potentiel beacon Cobalt Strike). »] class multistage_delivery technique foxveil[« <b>Malware</b> – Chargeur Foxveil<br/>Déposeur initial qui récupère et charge le shellcode. »] class foxveil malware donut_shellcode[« <b>Payload</b> – Shellcode généré par Donut<br/>Contient d’autres capacités malveillantes. »] class donut_shellcode payload cobalt_strike[« <b>Outil</b> – Potentiel beacon Cobalt Strike<br/>Téléchargé dans les étapes ultérieures pour le command‑and‑control. »] class cobalt_strike tool %% Connections initial_execution –>|dépose| foxveil foxveil –>|récupère| staging_retrieval staging_retrieval –>|télécharge| donut_shellcode donut_shellcode –>|charge via| in_memory_loading in_memory_loading –>|exécute| process_injection process_injection –>|active| persistence_service foxveil –>|effectue| masquerading foxveil –>|effectue| hide_artifacts foxveil –>|effectue| obfuscation process_injection –>|conduit à| multistage_delivery multistage_delivery –>|télécharge| cobalt_strike cobalt_strike –>|fournit| persistence_service
Flux d’attaque
Détections
Chaîne de processus système anormale (via création de processus)
Vue
Possibles infiltration/exfiltration de données/C2 via des services/outils tiers (via proxy)
Vue
Processus svchost suspects (via création de processus)
Vue
Modification suspecte des exclusions de Defender via WMIC (via ligne de commande)
Vue
Possibles infiltration/exfiltration de données/C2 via des services/outils tiers (via DNS)
Vue
IOC (HashSha256) à détecter : Recherche Cato CTRLTM Threat : Foxveil – Nouveau chargeur de malware abusant de Cloudflare, Discord, et Netlify comme infrastructure de mise en scène Partie 1
Vue
IOC (HashSha256) à détecter : Recherche Cato CTRLTM Threat : Foxveil – Nouveau chargeur de malware abusant de Cloudflare, Discord, et Netlify comme infrastructure de mise en scène Partie 2
Vue
Détection de l’injection de processus masquée svchost.exe de Foxveil v1 [Création de processus Windows]
Vue
Détection des domaines de mise en scène malveillants de Foxveil [Connexion réseau Windows]
Vue
Exécution de simulation
Prérequis : L’audit de télémétrie et de référentiel doit avoir réussi.
Rationnel : 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 TTPs identifiés et visent à générer la télémétrie exacte attendue par la logique de détection.
-
Narrative d’attaque & Commandes
-
Reconnaissance : L’attaquant a obtenu le domaine de mise en scène Foxveil
syscore.pages.devà partir d’un dump d’identifiants compromis. - Étape 1 – Résolution DNS : En utilisant un outil natif de Windows, l’attaquant résout le domaine de mise en scène pour obtenir l’adresse IP de l’hôte de la charge malveillante. Cette étape reflète le comportement réel du malware et est le déclencheur observable.
- Étape 2 – Récupération de la charge (non exécutée dans le test) : Dans une attaque réelle, l’IP résolue serait utilisée pour télécharger la charge de deuxième étape via HTTP. Pour la validation de détection, seule la résolution DNS est requise.
-
Reconnaissance : L’attaquant a obtenu le domaine de mise en scène Foxveil
-
Script de test de régression
<# Simulez la résolution du domaine de mise en scène de Foxveil. Ce script effectue une requête DNS pour un domaine connu de Foxveil, générant la télémétrie exacte que la règle Sigma surveille. #> # Définir le domaine de mise en scène (choisi dans la liste blanche de la règle) $stagingDomain = "syscore.pages.dev" # Résoudre le domaine – cela génère un événement de requête DNS try { $result = Resolve-DnsName -Name $stagingDomain -Type A -ErrorAction Stop Write-Host "Domaine $stagingDomain résolu en $($result.IPAddress)" } catch { Write-Error "Échec de la résolution DNS : $_" } # Optionnel : pause pour assurer que le pipeline de journal traite l'événement Start-Sleep -Seconds 5 -
Commandes de nettoyage
# Vider le cache DNS pour supprimer l'entrée résolue (prévient les effets de mise en cache sur les tests ultérieurs) ipconfig /flushdns Write-Host "Cache DNS vidé."