À l’intérieur de Vidar 2026 : De l’infection à l’exécution en mémoire
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Le rapport examine comment Vidar a évolué en un cadre d’attaque sans fichier à plusieurs étapes qui combine des chargeurs basés sur Go, VBS, PowerShell et des binaires ‘living-off-the-land’ pour récupérer du contenu malveillant caché à l’intérieur de fichiers JPEG et TXT hébergés sur une adresse IP distante. Les charges utiles intégrées sont extraites, décodées et exécutées directement en mémoire via RegAsm.exe, évitant ainsi la détection basée sur le disque. L’accès initial est fourni via des leurres d’ingénierie sociale tels que de faux dépôts GitHub, des sites WordPress compromis et de fausses pages CAPTCHA. La campagne s’appuie également sur des domaines Microsoft et Cloudflare pour le commandement et contrôle et l’exfiltration de données.
Enquête
Les chercheurs de Point Wild ont retracé la chaîne complète d’infection depuis le dropper initial compilé en Go jusqu’à la charge utile finale Vidar, documentant chaque couche d’obfuscation en cours de route. Leur analyse a mis en avant l’utilisation de marqueurs Base64 personnalisés, de chaînes inversées et de chargement réfléchi d’assemblage .NET pour masquer l’exécution. Les chercheurs ont également décrit comment WScript, PowerShell et RegAsm.exe ont été abusés en tant que proxys d’exécution, permettant au logiciel malveillant de décoder et de lancer une DLL cachée entièrement en mémoire. Le trafic réseau a également confirmé la récupération via HTTP de charges utiles JPEG et TXT mises en scène à partir d’une adresse IP codée en dur.
Atténuation
Les défenseurs devraient se concentrer sur la détection des premières étapes VBS et PowerShell de la chaîne d’infection, y compris l’utilisation suspecte de RegAsm.exe, la récupération de fichiers JPEG ou TXT depuis l’adresse IP malveillante, et les motifs reconnaissables de marqueurs Base64. Bloquer les domaines et adresses IP malveillants connus, surveiller le trafic sortant vers Telegram et appliquer des contrôles d’exécution aux utilitaires LOLBin courants peut aider à réduire l’exposition. La détection basée sur le comportement ajustée pour l’exécution sans fichier et les techniques de chargement en mémoire est également fortement recommandée.
Réponse
Si les indicateurs liés à la chaîne d’infection Vidar sont identifiés, isolez immédiatement l’hôte affecté, terminez les processus suspects tels que WScript, PowerShell et RegAsm.exe, et collectez les images mémoire pour une revue judiciaire. L’adresse IP identifiée et les domaines associés doivent être bloqués, et tous les raccourcis de démarrage ou tâches planifiées utilisés pour la persistance doivent être supprimés. Les équipes de sécurité doivent également mener une revue complète des identifiants exposés, des données de navigateur, des extensions et des portefeuilles de cryptomonnaie.
"graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef builtin fill:#cccccc %% Nodes initial_access["<b>Action</b> – <b>T1204 Exécution Utilisateur</b><br/>Les victimes exécutent des fichiers malveillants depuis de faux dépôts GitHub, de fausses pages CAPTCHA/ClickFix, des sites WordPress compromis et des chaînes de distribution de triche de jeux.<br/><b>Sous-techniques</b>: T1204.001 Lien Malveillant, T1204.002 Fichier Malveillant, T1204.004 Copier-Coller Malveillant"] class initial_access action execution["<b>Action</b> – <b>T1216 Exécution de Script Proxy Système</b><br/>Utilise WScript et PowerShell pour exécuter des scripts"] class execution action appdomain_hijack["<b>Action</b> – <b>T1574.014 Détournement du Flux d’Exécution : AppDomainManager</b><br/>Invoque RegAsm.exe en tant que proxy binaire signé pour charger une assemblée .NET"] class appdomain_hijack action defense_obfusc["<b>Action</b> – <b>T1027 Fichiers ou Informations Obfusqués</b><br/>Code polymorphe, compilation après livraison, passage en contrebande dans HTML, charges utiles intégrées/strippées, chaînes inversées et marqueurs Base64 personnalisés"] class defense_obfusc action reflective_loading["<b>Action</b> – <b>T1620 Chargement de Code Réfléchi</b><br/>Charge la charge utile .NET décodée entièrement en mémoire"] class reflective_loading action process_injection["<b>Action</b> – <b>T1055 Injection de Processus</b><br/>Injecte la charge utile réfléchie dans un processus légitime"] class process_injection action persistence["<b>Action</b> – <b>T1176 Extensions Logiciels</b><br/>Copie un fichier .bat dans le dossier de démarrage pour une persistance de niveau utilisateur"] class persistence action discovery["<b>Action</b> – <b>T1518 Découverte de Logiciels</b> et <b>T1217 Découverte d’Informations sur le Navigateur</b><br/>Énumère les logiciels installés et plus de 200 extensions de navigateur pour les portefeuilles de cryptomonnaie et les gestionnaires de mots de passe"] class discovery action c2["<b>Action</b> – <b>T1071.001 Protocoles Web</b>, <b>T1090.004 Détournement de Domaine</b>, <b>T1102.002 Service Web Bidirectionnel</b>, <b>T1071.004 DNS</b><br/>Utilise un serveur HTTP direct-IP, un domaine Cloudflare-fronted et une infrastructure Telegram pour le commandement et contrôle"] class c2 action masquerade["<b>Action</b> – <b>T1036 Mascarade</b><br/>Les fichiers malveillants sont déguisés en images JPEG légitimes et en transporteurs de texte TXT"] class masquerade action exfiltration["<b>Action</b> – <b>T1041 Exfiltration sur le Canal de Commandement et Contrôle</b><br/>Les données collectées sont envoyées via la page web Telegram et le domaine proxifié par Cloudflare"] class exfiltration action %% Edges showing flow initial_access –>|conduit à| execution execution –>|utilise| appdomain_hijack appdomain_hijack –>|permet| defense_obfusc defense_obfusc –>|permet| reflective_loading reflective_loading –>|permet| process_injection process_injection –>|permet| persistence persistence –>|permet| discovery discovery –>|permet| c2 c2 –>|permet| masquerade masquerade –>|permet| exfiltration "
Flux d’attaque
Détections
Chaînes PowerShell suspectes (via cmdline)
Voir
LOLBAS WScript / CScript (via création de processus)
Voir
Chaînes PowerShell suspectes (via powershell)
Voir
Appeler des méthodes .NET suspectes depuis PowerShell (via powershell)
Voir
Binaire / Scripts soupçonnés à l’emplacement de démarrage automatique (via événement_fichier)
Voir
Possibilité d’abus de Telegram en tant que canal de commandement et contrôle (via requête_dns)
Voir
IOCs (HashMd5) pour détecter : à l’intérieur de Vidar (2026) : De l’infection à l’exécution en mémoire via des charges utiles JPEG et TXT
Voir
IOCs (SourceIP) pour détecter : à l’intérieur de Vidar (2026) : De l’infection à l’exécution en mémoire via des charges utiles JPEG et TXT
Voir
IOCs (DestinationIP) pour détecter : à l’intérieur de Vidar (2026) : De l’infection à l’exécution en mémoire via des charges utiles JPEG et TXT
Voir
Détection de l’exécution sans fichier de Vidar Infostealer via PowerShell et charge utile JPEG [Windows Powershell]
Voir
Exécution multi-étapes de Vidar Infostealer via WScript, PowerShell et RegAsm [Création de processus Windows]
Voir
Exécution de la simulation
Prérequis : Le bilan de télémétrie et de base doit avoir réussi.
Raisonnement : Cette section détaille l’exécution précise de la technique d’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 visent à générer la télémétrie exacte attendue par la logique de détection.
-
Narratif et Commandes de l’Attaque :
- Dropper Initial (WScript) : L’attaquant livre un fichier JScript malveillant (
payload.js) qui est lancé viaWScript.exe. Le script télécharge une charge utile PowerShell encodée en base64 depuis un serveur C2 et l’écrit dans%TEMP%. - Étape PowerShell : La charge utile téléchargée est exécutée avec
-ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden, effectue un chargement DLL réfléchi (T1620) d’une assemblée .NET malveillante (evil.dll) en mémoire, et dépose l’assemblée sur le disque. - Proxy RegAsm : Pour échapper à la détection native PowerShell, l’attaquant invoque
RegAsm.exeen pointant versevil.dllavec le commutateur/codebase, ce qui fait exécuter le point d’entrée malveillant par le chargeur .NET (T1574.014).
La chaîne crée trois événements Sysmon distincts, chacun correspondant au
sélecteur Image|endswithde la règle, déclenchant ainsi l’alerte. - Dropper Initial (WScript) : L’attaquant livre un fichier JScript malveillant (
-
Script de test de régression : Le script ci-dessous reproduit la chaîne ci-dessus d’une manière sécurisée, en bac à sable en utilisant des commandes echo inoffensives et une DLL fictive (un simple fichier texte) pour éviter toute activité malveillante réelle tout en générant les mêmes événements de création de processus.
<# Simulation d'exécution multi-étapes style Vidar - Étape 1 : WScript lance un JScript qui écrit un script PowerShell dans %TEMP% - Étape 2 : PowerShell exécute le script, crée une DLL factice, et lance RegAsm #> # ---------- Étape 1 : WScript ---------- $jsPath = "$env:TEMPstage1.js" $psPayloadPath = "$env:TEMPstage2.ps1" $dummyDllPath = "$env:TEMPevil.dll" # JScript qui écrit une simple charge utile PowerShell sur le disque $jsContent = @" var fso = new ActiveXObject("Scripting.FileSystemObject"); var ts = fso.OpenTextFile("$psPayloadPath", 2, true); ts.WriteLine('Write-Host "[Stage 2] PowerShell executed"'); ts.WriteLine('Set-Content -Path "$dummyDllPath" -Value "This is a dummy DLL"'); ts.WriteLine('Start-Process -FilePath "$env:SystemRootMicrosoft.NETFramework64v4.0.30319RegAsm.exe" -ArgumentList "`"$dummyDllPath`" /codebase" -NoNewWindow'); ts.Close(); "@ Set-Content -Path $jsPath -Value $jsContent -Encoding ASCII # Exécuter le JScript via WScript Write-Host "`n[Stage 1] Lancement de WScript..." & "$env:SystemRootSystem32WScript.exe" $jsPath # ---------- Étape 2 : PowerShell ---------- Write-Host "`n[Stage 2] Exécution de la charge utile PowerShell générée..." & powershell.exe -NoProfile -ExecutionPolicy Bypass -File $psPayloadPath # ---------- Nettoyage ---------- Write-Host "`nNettoyage des fichiers temporaires..." Remove-Item -Path $jsPath, $psPayloadPath, $dummyDllPath -Force -ErrorAction SilentlyContinue -
Commandes de Nettoyage : En plus du nettoyage à la fin du script, exécutez ce qui suit pour s’assurer qu’aucun processus ou fichier résiduel ne reste.
# Terminer de force tous les processus RegAsm ou PowerShell errants engendrés par le test Get-Process -Name regasm, powershell -ErrorAction SilentlyContinue | Stop-Process -Force # Supprimer tous les fichiers résiduels dans %TEMP% qui correspondent au modèle de test Get-ChildItem -Path $env:TEMP -Filter "stage*.*" -File | Remove-Item -Force