Elastic Security Labs entdeckt BRUSHWORM und BRUSHLOGGER
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Elastic Security Labs hat zwei benutzerdefinierte Malware-Familien, BRUSHWORM und BRUSHLOGGER, entdeckt, die gegen eine Finanzinstitution in Südasien eingesetzt wurden. BRUSHWORM ist eine modulare Backdoor, die durch eine geplante Aufgabe persistent bleibt, sich über Wechseldatenträger verbreitet und Dateien über eine Vielzahl von Erweiterungen stiehlt. BRUSHLOGGER ist ein DLL-Side-Loading-Keylogger, der Tastenanschläge zusammen mit dem aktiven Fensterkontext erfasst und die Protokolle in XOR-verschlüsselter Form speichert. Beide Malware-Beispiele scheinen relativ wenig ausgereift zu sein und zeigen Anzeichen für eine laufende Versuch-und-Irrtum-Entwicklung.
Untersuchung
Während der Untersuchung fanden Analysten die Backdoor-Executable paint.exe und die Side-Loaded-Keylogger-DLL libcurl.dll und untersuchten dann deren Persistenzmethoden, Konfigurationslogik, USB-Verbreitungsverhalten und Datenstaging-Verzeichnisse. Ältere Entwicklungsbuilds wie V1.exe, V2.exe und V4.exe wurden ebenfalls auf VirusTotal gefunden, wo sie mit kostenloser dynamischer DNS-Infrastruktur für C2 (Command and Control) in Verbindung gebracht wurden. Der Bericht dokumentiert zudem die geplanten Aufgaben, Mutex und Dateipfad-Konventionen der Malware.
Minderung
Verteidiger sollten die Ausführung unbekannter Binärdateien aus den ProgramData und Public-Pfaden verhindern, die Erstellung geplanter Aufgaben mit den Namen MSGraphics oder MSRecorder überwachen und den Mutex Windows-Updates-KB852654856 erkennen. Organisationen sollten auch das Autorun von Wechseldatenträgern deaktivieren oder einschränken und suspekte Dateinamen im Stil von Lockvögeln überprüfen. Protokollieren und Inspektion des WinHTTP-Datenverkehrs zur identifizierten C2-Domain sollten durchgesetzt werden.
Reaktion
Wenn Aktivitäten von BRUSHWORM oder BRUSHLOGGER festgestellt werden, isolieren Sie den Endpunkt, bewahren Sie die paint.exe- und libcurl.dll-Beispiele auf, erfassen Sie Beweise für geplante Aufgaben und entfernen Sie bösartige Dateien aus allen Benutzer- und öffentlichen Verzeichnissen. Ermittler sollten auch Wechsellaufwerke auf Lock-Binärdateien scannen, den geplanten Exfiltrationsordner löschen, betroffene Anmeldeinformationen zurücksetzen und auf zusätzliche Payload-Retrievals vom C2-Server überwachen.
"graph TB %% Class definitions section classDef technique fill:#cfe2f3 %% Node definitions exec_check["<b>Technik</b> – T1497.002 Virtualisierung/Sandbox-Evasion:<br/>Überprüft Benutzeraktivität, Bildschirmauflösung, Benutzername, Computername, Hypervisor-CPUID-Strings und Mausbewegungen, um die Analyseumgebungen abzubrechen."] class exec_check technique persistence_task["<b>Technik</b> – T1053 Geplante Aufgabe/Job:<br/>Erstellt eine Windows-geplante Aufgabe mit dem Namen MSGraphics, die die Backdoor bei jeder Benutzeranmeldung ausführt."] class persistence_task technique c2_contact["<b>Technik</b> – T1071 Anwendungsprotokoll auf Anwendungsebene:<br/>Die Backdoor kontaktiert ihren C2-Server über HTTPS mithilfe von WinHTTP."] class c2_contact technique encrypted_channel["<b>Technik</b> – T1573 Verschlüsselter Kanal:<br/>Stellt einen verschlüsselten Kanal her, um zusätzliche Module herunterzuladen."] class encrypted_channel technique shared_module["<b>Technik</b> – T1129 Geteilte Module:<br/>Lädt ein DLL-Payload (Recorder.dll) vom C2-Server herunter."] class shared_module technique second_task["<b>Technik</b> – T1053 Geplante Aufgabe/Job:<br/>Erstellt eine zweite geplante Aufgabe, die Recorder.dll über rundll32.exe startet."] class second_task technique dll_side["<b>Technik</b> – T1574.001 DLL-Side-Loading:<br/>Bösartige libcurl.dll wird geladen, um den Ausführungsprozess zu kapern."] class dll_side technique keylogging["<b>Technik</b> – T1056.001 Keylogging:<br/>DllMain installiert einen Low-Level-Tastatur-Hook, um Tastenanschläge, Fenstertitel und Zeitstempel zu erfassen."] class keylogging technique obfuscation["<b>Technik</b> – T1027 Verschleierte Dateien oder Informationen:<br/>Protokolldateien werden XOR-verschlüsselt; Konfigurationsdaten werden im Klartext geschrieben und dann gelöscht."] class obfuscation technique local_staging["<b>Technik</b> – T1074.001 Lokales Daten-Staging:<br/>Gesammelte Dateien werden in C:UsersPublicSysteminfo kopiert und ein Hash-Protokoll wird geführt, um doppelte Exfiltration zu vermeiden."] class local_staging technique usb_propagation["<b>Technik</b> – T1092 Kommunikation über Wechseldatenträger:<br/>Wenn das Internet erreichbar ist, kopiert sich die Malware selbst auf angeschlossene USB-Laufwerke unter Verwendung von Lock-Dateinamen."] class usb_propagation technique usb_data_exfil["<b>Technik</b> – T1025 Daten von Wechseldatenträgern:<br/>Setzt den Dateidiebstahl von den USB-Laufwerken fort."] class usb_data_exfil technique physical_exfil["<b>Technik</b> – T1052.001 Exfiltration über physische Medien:<br/>Wenn kein Internet vorhanden ist, werden gestohlene Dateien auf Wechseldatenträger kopiert, um eine physische Exfiltration durchzuführen."] class physical_exfil technique %% Connections showing flow exec_check –>|löst aus| persistence_task persistence_task –>|führt aus| c2_contact c2_contact –>|stellt her| encrypted_channel c2_contact –>|lädt herunter| shared_module shared_module –>|erstellt| second_task second_task –>|startet| dll_side dll_side –>|lädt| keylogging keylogging –>|erzeugt| obfuscation obfuscation –>|speichert| local_staging local_staging –>|kopiert nach| usb_propagation usb_propagation –>|exfiltriert von| usb_data_exfil local_staging –>|nutzt für| physical_exfil "
Angriffsablauf
Erkennungen
Verdächtige geplante Aufgabe (via Audit)
Ansehen
Verdächtige Ausführung aus dem öffentlichen Benutzerprofil (via Prozess-Erstellung)
Ansehen
DLL an einem ungewöhnlichen Ort abgelegt (via Datei-Ereignis)
Ansehen
Verdächtige Dateien im öffentlichen Benutzerprofil (via Datei-Ereignis)
Ansehen
IOCs (HashSha256) zur Erkennung: Elastic Security Labs enthüllt BRUSHWORM und BRUSHLOGGER
Ansehen
Erkennung von BRUSHWORM-Backdoor-C2-Kommunikation [Windows-Netzwerkverbindung]
Ansehen
Erkennung von Paint.exe und Rundll32.exe-Ausführung [Windows-Prozess-Erstellung]
Ansehen
Simulation der Ausführung
Voraussetzung: Der Telemetrie- & Basisline Pre-Flight Check muss bestanden haben.
Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der Angreifertechnik (TTP), die zur Auslösung der Erkennungsregel entwickelt wurde. Die Befehle und die Erzählung MÜSSEN direkt den identifizierten TTPs entsprechen und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.
-
Angriffs-Narrativ & Befehle:
Ein Angreifer hat eine bösartige DLL (evil.dll) erhalten, die bei Ausführung überrundll32.exe, eine Ransomware-Payload ablegt und verschlüsselte Daten auf ein USB-Laufwerk schreibt. Um Verdacht zu vermeiden, verwendet der Angreifer zuerstpaint.exe, um ein harmlos aussehendes Bild auf dem Wechseldatenträger zu erstellen, und verwendet dannrundll32.exe, um die versteckte bösartige DLL im selben Verzeichnis zu laden. Beide Aktionen erzeugen Prozess-Erstellungsereignisse, die mit der Sigma-Regel übereinstimmen. -
Regressionstest-Skript:
# ------------------------------ # Simulation des Missbrauchs von Paint + Rundll32 # ------------------------------ # 1. Erstellen eines temporären Arbeitsverzeichnisses $workDir = "$env:TEMPPaintRundllSim" New-Item -ItemType Directory -Path $workDir -Force | Out-Null # 2. Kopieren eines legitimen Bildes auf den USB (simuliert durch $workDir) $imagePath = Join-Path $workDir "innocent.png" Invoke-WebRequest -Uri "https://via.placeholder.com/150" -OutFile $imagePath # 3. Starten von Paint zum Öffnen des Bildes (benign usage – still matches rule) Start-Process -FilePath "$env:WINDIRsystem32mspaint.exe" -ArgumentList "`"$imagePath`"" -PassThru | Out-Null # 4. Ablegen einer bösartigen DLL (simuliert; echte Payload wäre verdeckt) $dllPath = Join-Path $workDir "evil.dll" $dllBytes = [byte[]] (0x4D,0x5A,0x90,0x00) # Minimal PE header placeholder [IO.File]::WriteAllBytes($dllPath, $dllBytes) # 5. Ausführen der DLL über Rundll32 (dies ist der bösartige Schritt) Start-Process -FilePath "$env:WINDIRsystem32rundll32.exe" ` -ArgumentList "`"$dllPath`,EntryPoint`"" -PassThru | Out-Null # 6. Pause, um die Aufnahme im SIEM zu ermöglichen Write-Host "Simulation ausgeführt. Warten Sie ~30s, bis die Protokolle im SIEM erscheinen." -
Bereinigungsbefehle:
# Entfernen von temporären Dateien und Prozessen Stop-Process -Name mspaint -ErrorAction SilentlyContinue Stop-Process -Name rundll32 -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPPaintRundllSim" -Recurse -Force Write-Host "Bereinigung abgeschlossen."