Détecter Nimbus Manticore et leurs chaînes d’infection par sideloading
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Nimbus Manticore, également suivi sous le nom UNC1549, a mené une campagne de phishing ciblée utilisant de faux portails de recrutement pour livrer une chaîne de logiciels malveillants .NET à plusieurs étapes. L’attaque a abusé des composants légitimes de Microsoft Visual Studio avec un détournement d’AppDomain pour charger une DLL personnalisée, qui a ensuite déployé une DLL de second stade et créé une persistance via une tâche planifiée. L’infrastructure de commande et de contrôle était hébergée sur des domaines basés sur Azure. La campagne ciblait principalement les organisations aérospatiales et de défense au Moyen-Orient et en Europe.
Enquête
Les chercheurs ont reconstruit toute la chaîne d’infection, en commençant par l’appât de LinkedIn et en continuant par l’archive ZIP, le fichier setup.exe.config altéré et le stager chiffré. Leur analyse a révélé l’utilisation abusive d’un ServiceHub.VSDetouredHost.exe renommé, le TOTPGuard.dll chargeur, un en-tête PE chiffré en AES, et une tâche planifiée déclenchée par la connexion nommée BackupCheck. Les indicateurs réseau ont également pointé vers plusieurs domaines hébergés sur Azure utilisés pour les communications de commande et de contrôle.
Atténuation
Les organisations devraient former leurs employés à détecter l’ingénierie sociale basée sur le recrutement, bloquer ou surveiller de près les domaines nouvellement enregistrés, et appliquer des contrôles AppLocker ou équivalents sur les répertoires accessibles en écriture. Les défenseurs devraient également surveiller les tâches planifiées nommées BackupCheck ou les exécutions utilisant l’argument doit . Il est également recommandé de surveiller les comportements de détournement d’AppDomain dans les applications .NET et le trafic suspect vers les domaines de commande et de contrôle hébergés sur Azure.
Réponse
Si une activité liée est détectée, isolez le point terminal affecté, collectez les binaires malveillants et la définition de la tâche planifiée, et bloquez les domaines Azure associés ainsi que le faux portail de recrutement. Les enquêteurs devraient effectuer un examen forensic du dossier AppData2FAGuard , supprimer la tâche de persistance, et chasser une activité similaire sur d’autres systèmes en utilisant les mêmes signatures YARA. La logique de détection devrait ensuite être mise à jour avec les nouveaux indicateurs identifiés.
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ccffcc classDef process fill:#ffdddd %% Nodes action_phishing[« <b>Action</b> – <b>T1566.002 Lien de spearphishing</b><br/>Les victimes reçoivent des messages LinkedIn se faisant passer pour un recruteur et contenant un lien malveillant vers un faux portail de recrutement. »] class action_phishing action action_delivery[« <b>Action</b> – Distribution via ZIP malveillant<br/>Le faux portail fournit un fichier ZIP contenant un binaire Microsoft déguisé et des fichiers cachés. »] class action_delivery action file_malicious_zip[« <b>Fichier</b> – <b>Nom</b>: payload.zip<br/><b>Contient</b>: setup.exe et des fichiers cachés supplémentaires »] class file_malicious_zip file file_setup_exe[« <b>Fichier</b> – <b>Nom</b>: setup.exe (renommé ServiceHub.VSDetouredHost.exe)<br/><b>Signature</b>: signature Microsoft valide »] class file_setup_exe file action_execution_proxy[« <b>Action</b> – <b>T1218 Exécution via proxy de binaires système</b><br/>Utilise un binaire Microsoft signé comme proxy pour exécuter du code malveillant. »] class action_execution_proxy action action_masquerade[« <b>Action</b> – <b>T1036.001 Déguisement de signature de code</b><br/>Renomme un binaire signé légitime pour paraître inoffensif et contourner la détection. »] class action_masquerade action action_hijack_path[« <b>Action</b> – <b>T1574.008 Détournement de l’ordre de recherche</b><br/>Le fichier setup.exe.config modifie l’ordre de recherche pour charger des composants contrôlés par l’attaquant. »] class action_hijack_path action action_hijack_appdomain[« <b>Action</b> – <b>T1574.014 Détournement AppDomainManager</b><br/>Force le runtime .NET à charger TOTPGuard.dll via la configuration AppDomainManager. »] class action_hijack_appdomain action file_totpguard[« <b>Fichier</b> – <b>Nom</b>: TOTPGuard.dll<br/><b>Rôle</b>: Fournit une fonction 2FA personnalisée utilisée par le payload malveillant. »] class file_totpguard file action_ide_extension[« <b>Action</b> – <b>T1176.002 Abus d’extensions IDE</b><br/>Exploite le composant hôte de Visual Studio pour exécuter le payload. »] class action_ide_extension action action_persistence[« <b>Action</b> – <b>T1037.001 Tâche planifiée</b><br/>Crée une tâche planifiée “BackupCheck” exécutée à la connexion utilisateur. »] class action_persistence action action_env_keying[« <b>Action</b> – <b>T1480.001 Clé environnementale</b><br/>Déploie un payload chiffré AES avec exécution conditionnelle basée sur un en-tête MZ chiffré. »] class action_env_keying action action_virtual_instance[« <b>Action</b> – <b>T1564.006 Exécution d’instance virtuelle</b><br/>Intègre une interface 2FA légitime pour masquer l’activité malveillante. »] class action_virtual_instance action %% Connections action_phishing –>|livre| action_delivery action_delivery –>|fournit| file_malicious_zip file_malicious_zip –>|contient| file_setup_exe file_setup_exe –>|utilisé pour| action_execution_proxy action_execution_proxy –>|combiné avec| action_masquerade action_masquerade –>|active| action_hijack_path action_hijack_path –>|mène à| action_hijack_appdomain action_hijack_appdomain –>|charge| file_totpguard file_totpguard –>|active| action_ide_extension action_ide_extension –>|soutient| action_persistence action_persistence –>|établit| action_env_keying action_env_keying –>|facilite| action_virtual_instance
Flux d’attaque
Détections
Domaine Azurewebsites possible contacté par un processus inhabituel (via dns_query)
Voir
Tâche planifiée suspecte (via audit)
Voir
IOCs (HashSha256) pour détecter : Détection de Nimbus Manticore et de leurs chaînes d’infection par sideloading
Voir
IOCs (SourceIP) pour détecter : Détection de Nimbus Manticore et de leurs chaînes d’infection par sideloading
Voir
IOCs (DestinationIP) pour détecter : Détection de Nimbus Manticore et de leurs chaînes d’infection par sideloading
Voir
Détection de la communication C2 de Nimbus Manticore via Domaines Azure [Connexion Réseau Windows]
Voir
Détection de la chaîne d’infection par sideloading de Nimbus Manticore [Création de Processus Windows]
Voir
Exécution de Simulation
Condition préalable : Le contrôle de pré-vol de télémétrie et de ligne de base doit avoir été validé.
Justification : Cette section détaille l’exécution précise de la technique d’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.
-
Narration & Commandes de l’Attaque :
Un attaquant a obtenu une copie du binaire légitime Visual Studiosetup.exe, l’a renommé ensetup.exe(en gardant le nom inchangé pour éviter la suspicion), et l’a placé dans un répertoire accessible en écriture. Ils créent une DLL malveillante nomméeTOTPGuard.dllqui contient la charge utile. Pour détourner l’AppDomain, ils insèrent la chaîneAppDomainInjectiondans l’argument de chemin PDB. L’attaquant lance ensuite l’exécutable avec la ligne de commande suivante :C:Tempsetup.exe /install /doit /dll "C:TempTOTPGuard.dll" /pdb "C:TempAppDomainInjection.pdb"Cette invocation exacte satisfait les trois conditions
CommandLine|containsdans la règle Sigma, provoquant ainsi le déclenchement de la règle sur l’événement ProcessCreate. -
Script de Test de Régression :
# ------------------------------------------------- # Script de régression pour déclencher la détection Nimbus Manticore # ------------------------------------------------- $exePath = "C:Tempsetup.exe" $dllPath = "C:TempTOTPGuard.dll" $pdbPath = "C:TempAppDomainInjection.pdb" # Assurez-vous que les fichiers existent (créez des placeholders fictifs pour le test) New-Item -ItemType File -Path $exePath -Force | Out-Null New-Item -ItemType File -Path $dllPath -Force | Out-Null New-Item -ItemType File -Path $pdbPath -Force | Out-Null # Construire la ligne de commande malveillante $arguments = @( "/install" "/doit" "/dll `"$dllPath`"" "/pdb `"$pdbPath`"" ) -join " " Write-Host "Lancement du setup.exe malveillant avec arguments :" Write-Host $arguments # Exécuter le processus (s'arrêtera immédiatement car l'exe fictif ne fait rien) Start-Process -FilePath $exePath -ArgumentList $arguments -PassThru | Out-Null -
Commandes de Nettoyage :
# ------------------------------------------------- # Nettoyage des artefacts créés pour le test de régression # ------------------------------------------------- $paths = @( "C:Tempsetup.exe", "C:TempTOTPGuard.dll", "C:TempAppDomainInjection.pdb" ) foreach ($p in $paths) { if (Test-Path $p) { Remove-Item -Path $p -Force Write-Host "Removed $p" } }