SOC Prime Bias: Medium

31 März 2026 16:57

Elastic Security Labs entdeckt BRUSHWORM und BRUSHLOGGER

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
Elastic Security Labs entdeckt BRUSHWORM und BRUSHLOGGER
shield icon

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

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 über rundll32.exe, eine Ransomware-Payload ablegt und verschlüsselte Daten auf ein USB-Laufwerk schreibt. Um Verdacht zu vermeiden, verwendet der Angreifer zuerst paint.exe , um ein harmlos aussehendes Bild auf dem Wechseldatenträger zu erstellen, und verwendet dann rundll32.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."