Elastic Security Labs scopre BRUSHWORM e BRUSHLOGGER
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
Elastic Security Labs ha scoperto due famiglie di malware personalizzati, BRUSHWORM e BRUSHLOGGER, utilizzati contro un’istituzione finanziaria nel Sud-est asiatico. BRUSHWORM è una backdoor modulare che mantiene la persistenza tramite un’attività pianificata, si diffonde tramite supporti rimovibili e ruba file attraverso un’ampia gamma di estensioni. BRUSHLOGGER è un keylogger DLL caricato lateralmente che cattura i tasti premuti insieme al contesto della finestra attiva e salva i registri in forma crittografata con XOR. Entrambi i campioni di malware sembrano relativamente poco sofisticati e mostrano segni di continuo sviluppo tramite tentativi ed errori.
Indagine
Durante l’indagine, gli analisti hanno recuperato l’eseguibile della backdoor paint.exe e il keylogger DLL caricato lateralmente libcurl.dll, quindi hanno esaminato i loro metodi di persistenza, la logica di configurazione, il comportamento di diffusione tramite USB e le directory di staging dei dati. Su VirusTotal sono state trovate anche versioni di sviluppo più vecchie come V1.exe, V2.exe e V4.exe, dove erano collegate a infrastrutture di DNS dinamici gratuiti per il comando e il controllo. Il report ha inoltre documentato i task pianificati del malware, il mutex e le convenzioni sui percorsi dei file.
Mitigazione
I difensori dovrebbero prevenire l’esecuzione di binari sconosciuti dai percorsi ProgramData e Public, monitorare la creazione di attività pianificate denominate MSGraphics o MSRecorder e rilevare il mutex Windows-Updates-KB852654856. Le organizzazioni dovrebbero anche disabilitare o limitare l’autorun dai media rimovibili e ispezionare i nomi dei file esca sospetti. Il logging e l’ispezione del traffico WinHTTP verso il dominio C2 identificato dovrebbero essere applicati.
Risposta
Se viene rilevata attività di BRUSHWORM o BRUSHLOGGER, isolare l’endpoint, conservare i campioni di paint.exe e libcurl.dll, catturare le prove dell’attività pianificata e rimuovere i file dannosi da tutte le directory utente e pubbliche. Gli investigatori dovrebbero anche esaminare le unità rimovibili per i binari di esca, eliminare la cartella di esfiltrazione in fase di staging, reimpostare le credenziali colpite e monitorare l’eventuale recupero di payload aggiuntivi dal server C2.
"graph TB %% Class definitions section classDef technique fill:#cfe2f3 %% Node definitions exec_check["<b>Tecnica</b> – T1497.002 Evasione di Virtualizzazione/Sandbox:<br/>Controlla l’attività dell’utente, la risoluzione dello schermo, il nome utente, il nome del computer, le stringhe del CPUID dell’hypervisor e i movimenti del mouse per interrompere nei ambienti di analisi."] class exec_check technique persistence_task["<b>Tecnica</b> – T1053 Attività/Job Pianificato:<br/>Crea un’attività pianificata di Windows denominata MSGraphics che esegue la backdoor ad ogni accesso utente."] class persistence_task technique c2_contact["<b>Tecnica</b> – T1071 Protocollo a Livello di Applicazione:<br/>La backdoor contatta il suo server C2 su HTTPS utilizzando WinHTTP."] class c2_contact technique encrypted_channel["<b>Tecnica</b> – T1573 Canale Cifrato:<br/>Stabilisce un canale crittografato per scaricare moduli aggiuntivi."] class encrypted_channel technique shared_module["<b>Tecnica</b> – T1129 Moduli Condivisi:<br/>Scarica un payload DLL (Recorder.dll) dal server C2."] class shared_module technique second_task["<b>Tecnica</b> – T1053 Attività/Job Pianificato:<br/>Crea una seconda attività pianificata che lancia Recorder.dll tramite rundll32.exe."] class second_task technique dll_side["<b>Tecnica</b> – T1574.001 Caricamento Laterale DLL:<br/>Il libcurl.dll dannoso è caricato lateralmente per dirottare il flusso di esecuzione."] class dll_side technique keylogging["<b>Tecnica</b> – T1056.001 Keylogging:<br/>DllMain installa un hook di tastiera a basso livello per catturare sequenze di tasti, titoli delle finestre e timestamp."] class keylogging technique obfuscation["<b>Tecnica</b> – T1027 File o Informazioni Offuscati:<br/>I file di registro sono crittografati con XOR; i dati di configurazione sono scritti in testo chiaro e poi eliminati."] class obfuscation technique local_staging["<b>Tecnica</b> – T1074.001 Staging Dati Locali:<br/>I file raccolti sono copiati in C:UsersPublicSysteminfo e viene mantenuto un log hash per evitare esfiltrazioni duplicate."] class local_staging technique usb_propagation["<b>Tecnica</b> – T1092 Comunicazione Tramite Media Rimovibili:<br/>Quando Internet è raggiungibile, il malware si copia sui drive USB collegati usando nomi di file ad esca."] class usb_propagation technique usb_data_exfil["<b>Tecnica</b> – T1025 Dati da Media Rimovibili:<br/>Continua il furto di file dai drive USB."] class usb_data_exfil technique physical_exfil["<b>Tecnica</b> – T1052.001 Esfiltrazione su Supporto Fisico:<br/>Se non c’è Internet, i file rubati sono copiati su media rimovibili per esfiltrazione fisica."] class physical_exfil technique %% Connections showing flow exec_check –>|triggers| persistence_task persistence_task –>|executes| c2_contact c2_contact –>|establishes| encrypted_channel c2_contact –>|downloads| shared_module shared_module –>|creates| second_task second_task –>|launches| dll_side dll_side –>|loads| keylogging keylogging –>|produces| obfuscation obfuscation –>|stores| local_staging local_staging –>|copies to| usb_propagation usb_propagation –>|exfiltrates from| usb_data_exfil local_staging –>|uses for| physical_exfil "
Flusso d’Attacco
Rilevazioni
Attività Pianificata Sospetta (via audit)
Visualizza
Esecuzione Sospetta da Profilo Utente Pubblico (via process_creation)
Visualizza
Dll rilasciata in posizione non comune (via file_event)
Visualizza
File Sospetti nel Profilo Utente Pubblico (via file_event)
Visualizza
IOC (HashSha256) per rilevare: Elastic Security Labs scopre BRUSHWORM e BRUSHLOGGER
Visualizza
Rilevazione Comunicazione C2 Backdoor BRUSHWORM [Connessione di Rete Windows]
Visualizza
Rilevazione dell’Esecuzione di Paint.exe e Rundll32.exe [Creazione Processo Windows]
Visualizza
Esecuzione di Simulazione
Prerequisito: Il Controllo di Telemetria & Pre-convalida Baseline deve essere superato.
Motivazione: Questa sezione dettaglia l’esatta esecuzione della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO rispecchiare direttamente i TTP identificati e mirare a generare la telemetria esatta prevista dalla logica di rilevamento.
-
Narrazione dell’Attacco & Comandi:
Un attaccante ha ottenuto una DLL dannosa (evil.dll) che, quando eseguita tramiterundll32.exe, rilascia un payload ransomware e scrive dati crittografati su un drive USB. Per evitare sospetti, l’attaccante utilizza primapaint.exeper creare un’immagine dall’aspetto innocuo sul supporto rimovibile, quindi utilizzarundll32.exeper caricare la DLL dannosa nascosta nella stessa directory. Entrambe le azioni generano eventi di creazione di processo che corrispondono alla regola Sigma. -
Script di Test di Regressione:
# ------------------------------ # Simulazione di abuso di Paint + Rundll32 # ------------------------------ # 1. Crea una directory di lavoro temporanea $workDir = "$env:TEMPPaintRundllSim" New-Item -ItemType Directory -Path $workDir -Force | Out-Null # 2. Copia un'immagine legittima su USB (simulata da $workDir) $imagePath = Join-Path $workDir "innocent.png" Invoke-WebRequest -Uri "https://via.placeholder.com/150" -OutFile $imagePath # 3. Avvia Paint per aprire l'immagine (uso benigno – corrisponde comunque alla regola) Start-Process -FilePath "$env:WINDIRsystem32mspaint.exe" -ArgumentList "`"$imagePath`"" -PassThru | Out-Null # 4. Rilascia una DLL dannosa (simulata; il payload reale sarebbe coperto) $dllPath = Join-Path $workDir "evil.dll" $dllBytes = [byte[]] (0x4D,0x5A,0x90,0x00) # Intestazione PE minima di placeholder [IO.File]::WriteAllBytes($dllPath, $dllBytes) # 5. Esegui il DLL tramite Rundll32 (questo è il passaggio dannoso) Start-Process -FilePath "$env:WINDIRsystem32rundll32.exe" ` -ArgumentList "`"$dllPath`,EntryPoint`"" -PassThru | Out-Null # 6. Pausa per consentire l'ingestione SIEM Write-Host "Simulazione eseguita. Attendere ~30s per i log da apparire in SIEM." -
Comandi di Pulizia:
# Rimuovi file e processi temporanei Stop-Process -Name mspaint -ErrorAction SilentlyContinue Stop-Process -Name rundll32 -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPPaintRundllSim" -Recurse -Force Write-Host "Pulizia completata."