SOC Prime Bias: Moyen

18 Dec 2025 18:42 UTC

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 Suivre
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.

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