Phantom 3.5 – malware voleur d’identifiants livré via un faux installateur Adobe
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
Détections
Chaînes PowerShell Suspectes (via powershell)
Afficher
Utilisation Possible de Timeout pour Retarder l’Exécution (via cmdline)
Afficher
Exécution inhabituelle du changement de page de code (via cmdline)
Afficher
Points de persistance possibles [ASEPs – Hive Software/NTUSER] (via registry_event)
Afficher
IOCs (HashMd5) à détecter : Analyse Initiale & Forensique de Phantom 3.5
Afficher
Injection de processus Phantom 3.5 via Aspnet_compiler.exe [Création de processus Windows]
Afficher
Exécution de script PowerShell avec attribut caché et chaînes encodées en Base64 [PowerShell Windows]
Afficher
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 exploitentAspnet_compiler.exe, un binaire Windows de confiance, pour charger l’assemblage géré malveillant via l’argumentInvoke-ManagedAssemblyargument. 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.-
Préparer l’assemblage géré malveillant (
phantom_payload.dll) sur l’hôte cible. -
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 -
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