SOC Prime Bias: Moyen

18 Déc 2025 21:42

Phantom 3.5 – malware voleur d’identifiants livré via un faux installateur Adobe

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Phantom 3.5 – malware voleur d’identifiants livré via un faux installateur Adobe
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Phantom 3.5 est un malware voleur d’identifiants distribué via un faux installateur Adobe. Une fois exécuté, l’installateur déploie un script PowerShell qui télécharge une DLL .NET obscurcie (BLACKHAWK.dll) et injecte la charge finale dans Aspnet_compiler.exe pour s’exécuter sous un processus au contexte de confiance.

Enquête

Les chercheurs ont déclenché l’installateur faux dans un bac à sable et capturé l’emplacement du téléchargeur (positivepay-messages.com/file/floor.ps1). Ils ont décodé le script protégé par Base64/RC4, identifié la DLL .NET récupérée, et confirmé l’injection dans Aspnet_compiler.exe en utilisant des outils tels que hollows_hunter et ProcDump. L’analyse indique que la DLL inclut des mesures anti-analyse, des techniques de Heaven’s Gate, et de multiples canaux d’exfiltration, comprenant SMTP, FTP, Telegram, et Discord.

Atténuation

Restreindre ou bloquer l’exécution de scripts PowerShell non signés, prévenir le chargement de DLL non fiables, et surveiller la création anormale de processus Aspnet_compiler.exe. Appliquer le filtrage d’URL pour refuser l’accès au domaine malveillant et à ses chemins. S’assurer que les contrôles des points de terminaison peuvent détecter les schémas d’injection de processus et les comportements courants des voleurs d’identifiants.

Réponse

Déclencher des alertes sur les connexions sortantes vers positivepay-messages.com, les artefacts de mémoire ou de module liés à BLACKHAWK.dll, et les preuves d’injection de code dans Aspnet_compiler.exe. Mettre en quarantaine l’hôte affecté, acquérir des images mémoire, et effectuer un triage complet forensique pour éradiquer la DLL malveillante et les charges associées.

« graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef process fill:#c2f0c2 classDef malware fill:#f9d5e5 %% Nodes u2013 Initial Access and Execution action_user_execution[« <b>Action</b> – <b>T1204.002 User Execution</b>: La victime exécute un faux « installateur Adobe 11.7.7 » qui semble légitime. »] class action_user_execution action tech_masquerade[« <b>Technique</b> – <b>T1036.008 Masquerading</b>: Le fichier installateur est renommé et camouflé pour ressembler à un installateur Adobe. »] class tech_masquerade technique tool_powershell[« <b>Tool</b> – <b>Nom</b>: PowerShell<br/><b>Description</b>: Utilisé pour télécharger et exécuter un script malveillant avec la fenêtre masquée et en contournant la politique d’exécution. »] class tool_powershell tool %% Nodes u2013 Obfuscation and Decoding tech_deobfuscate[« <b>Technique</b> – <b>T1140 Déobfuscation/Décodage de fichiers</b>: La charge utile Base64-RC4 est décodée et déchiffrée avant l’exécution. »] class tech_deobfuscate technique tech_obfuscate[« <b>Technique</b> – <b>T1027 Fichiers obfusqués</b>: Les scripts malveillants sont fortement obfusqués pour échapper à l’analyse statique. »] class tech_obfuscate technique %% Nodes u2013 Process Injection and Reflective Loading tech_process_injection[« <b>Technique</b> – <b>T1055 Injection de processus</b>: BLACKHAWK.dll est injecté dans Aspnet_compiler.exe pour exécuter la charge utile. »] class tech_process_injection technique process_aspnet_compiler[« <b>Processus</b> – <b>Nom</b>: Aspnet_compiler.exe »] class process_aspnet_compiler process tech_reflective_load[« <b>Technique</b> – <b>T1620 Chargement de code réflexif</b>: L’assembly .NET est chargé en mémoire à l’aide de System.Reflection.Assembly::Load. »] class tech_reflective_load technique %% Nodes u2013 Defense Evasion tech_sandbox_evasion[« <b>Technique</b> – <b>T1497.002 Évasion de sandbox par virtualisation</b>: Vérifie les noms d’utilisateur et les variables d’environnement pour détecter les machines d’analyse. »] class tech_sandbox_evasion technique %% Nodes u2013 Persistence tech_active_setup[« <b>Technique</b> – <b>T1547.014 Persistence via Active Setup</b>: Crée une clé de registre Run via Active Setup pour l’exécution automatique à la connexion. »] class tech_active_setup technique %% Nodes u2013 Credential Access and Collection tech_keylogging[« <b>Technique</b> – <b>T1056.001 Keylogging</b>: Capture les frappes de l’utilisateur. »] class tech_keylogging technique tech_browser_cred[« <b>Technique</b> – <b>T1555.003 Accès aux identifiants de navigateur</b>: Vole les clés principales, les mots de passe, les cookies et les données de portefeuille des navigateurs Web. »] class tech_browser_cred technique tech_clipboard[« <b>Technique</b> – <b>T1115 Données du presse-papiers</b>: Collecte les données du presse-papiers du système. »] class tech_clipboard technique tech_screen_capture[« <b>Technique</b> – <b>T1113 Capture d’écran</b>: Prend des captures d’écran à des intervalles d’une seconde. »] class tech_screen_capture technique tech_video_capture[« <b>Technique</b> – <b>T1125 Capture vidéo</b>: Enregistre une vidéo de l’écran de l’utilisateur. »] class tech_video_capture technique %% Nodes u2013 Exfiltration tech_smtp_ftp[« <b>Technique</b> – <b>T1048 Exfiltration par protocole alternatif</b>: Envoie les données volées par email SMTP et transferts FTP. »] class tech_smtp_ftp technique tech_telegram_discord[« <b>Technique</b> – <b>T1567 Exfiltration par service web</b>: Transfère des données via les APIs Telegram et Discord. »] class tech_telegram_discord technique %% Nodes u2013 Command and Control tech_web_service[« <b>Technique</b> – <b>T1102.002 Service web bidirectionnel C2</b>: Utilise Telegram et Discord comme canaux de communication bidirectionnels pour la commande et le contrôle. »] class tech_web_service technique %% Connections u2013 Flow of Attack action_user_execution u002du002d>|conduit à| tech_masquerade tech_masquerade u002du002d>|conduit à| tool_powershell tool_powershell u002du002d>|exécute| tech_deobfuscate tech_deobfuscate u002du002d>|soutient| tech_obfuscate tech_obfuscate u002du002d>|permet| tech_process_injection tech_process_injection u002du002d>|cible| process_aspnet_compiler process_aspnet_compiler u002du002d>|charge| tech_reflective_load tech_reflective_load u002du002d>|facilite| tech_sandbox_evasion tech_sandbox_evasion u002du002d>|permet| tech_active_setup tech_active_setup u002du002d>|permet| tech_keylogging tech_keylogging u002du002d>|collecte| tech_browser_cred tech_browser_cred u002du002d>|ajoute à| tech_clipboard tech_clipboard u002du002d>|ajoute à| tech_screen_capture tech_screen_capture u002du002d>|ajoute à| tech_video_capture tech_video_capture u002du002d>|alimente| tech_smtp_ftp tech_video_capture u002du002d>|alimente| tech_telegram_discord tech_smtp_ftp u002du002d>|exfiltre via| tech_web_service tech_telegram_discord u002du002d>|exfiltre via| tech_web_service %% Styling class action_user_execution action class tech_masquerade,tech_deobfuscate,tech_obfuscate,tech_process_injection,tech_reflective_load,tech_sandbox_evasion,tech_active_setup,tech_keylogging,tech_browser_cred,tech_clipboard,tech_screen_capture,tech_video_capture,tech_smtp_ftp,tech_telegram_discord,tech_web_service technique class tool_powershell tool class process_aspnet_compiler process « 

Flux d’Attaque

Exécution de Simulation

Condition préalable : Le contrôle préliminaire de la télémétrie et de la référence doit être réussi.

Raison d’être : 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 directement refléter les TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.

  • Récit et Commandes de l’Attaque :
    L’adversaire a obtenu la charge utile Phantom 3.5 et souhaite l’exécuter en mémoire pour échapper aux défenses basées sur le disque. Ils exploitent Aspnet_compiler.exe, un binaire Windows de confiance, pour charger l’assemblage géré malveillant via l’argument Invoke-ManagedAssembly argument. Cela amène le processus du compilateur à se lancer et à injecter la charge utile dans l’espace de processus actuel, et à persister en créant une tâche planifiée qui exécute à plusieurs reprises la même commande.

    1. Préparer l’assemblage géré malveillant (phantom_payload.dll) sur l’hôte cible.

    2. Exécuter l’injection en utilisant Aspnet_compiler.exe:

       $maliciousDll = "C:Tempphantom_payload.dll"
      $cmd = "`"$env:WINDIRMicrosoft.NETFramework64v4.0.30319Aspnet_compiler.exe`" -p `"$maliciousDll`" -c `Invoke-ManagedAssembly`"
      Start-Process -FilePath $cmd -WindowStyle Hidden
    3. Créer une persistance (optionnel) en enregistrant une tâche planifiée qui relance la même commande toutes les heures.

  • Script de test de régression : Le script ci-dessous reproduit les étapes ci-dessus de manière autonome et répétable.

    <#
    .SYNOPSIS
        Simule l'injection de processus Phantom 3.5 à l'aide de Aspnet_compiler.exe.
    .DESCRIPTION
        Copie une DLL malveillante factice à un emplacement connu, puis lance Aspnet_compiler.exe
        avec le drapeau `Invoke-ManagedAssembly` pour générer l'événement de création de processus
        exact que la règle de détection surveille.
    #>
    
    # --- Préparation -----------------------------------------------------------
    $dllPath = "$env:TEMPphantom_payload.dll"
    # Créer une petite DLL factice (espace réservé pour la charge réelle)
    Set-Content -Path $dllPath -Value ([byte[]](0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00)) -Encoding Byte
    
    # --- Exécution -------------------------------------------------------------
    $aspnetPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319Aspnet_compiler.exe"
    if (-Not (Test-Path $aspnetPath)) {
        Write-Error "Aspnet_compiler.exe introuvable à l'emplacement attendu."
        exit 1
    }
    
    $arguments = "-p `"$dllPath`" -c `Invoke-ManagedAssembly`"
    Write-Host "Lancement de Aspnet_compiler.exe avec des arguments malveillants..."
    Start-Process -FilePath $aspnetPath -ArgumentList $arguments -WindowStyle Hidden -PassThru
    
    # --- Persistance optionnelle ----------------------------------------------------
    # Enregistrer une tâche planifiée qui répète l'injection chaque heure
    $taskName = "PhantomInject"
    $action = New-ScheduledTaskAction -Execute $aspnetPath -Argument $arguments
    $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(5) -RepetitionInterval (New-TimeSpan -Hours 1) -RepetitionDuration ([TimeSpan]::MaxValue)
    Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -RunLevel Highest -Force
    
    Write-Host "Simulation terminée. Vérifiez le SIEM pour l'alerte générée."
  • Commandes de Nettoyage : Supprimer la DLL factice, la tâche planifiée, et tout processus restant.

    # Supprimer la DLL factice
    Remove-Item -Path "$env:TEMPphantom_payload.dll" -Force -ErrorAction SilentlyContinue
    
    # Désenregistrer la tâche planifiée
    Unregister-ScheduledTask -TaskName "PhantomInject" -Confirm:$false -ErrorAction SilentlyContinue
    
    # Arrêter tout processus Aspnet_compiler.exe persistant lancé par le test
    Get-Process -Name "Aspnet_compiler" -ErrorAction SilentlyContinue | Stop-Process -Force