SOC Prime Bias: Kritisch

18 Jun 2026 14:32 UTC

ESET-Forschung: Fischhändler-Arsenal aufgerüstet: SprySOCKS für Windows

Author Photo
SOC Prime Team linkedin icon Folgen
ESET-Forschung: Fischhändler-Arsenal aufgerüstet: SprySOCKS für Windows
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

ESET-Forscher haben zwei neue Windows-Varianten des SprySOCKS-Backdoors entdeckt, genannt WIN_DRV und WIN_PLUS, die mit der Bedrohungsgruppe FishMonger verbunden sind. Die WIN_DRV-Version verwendet einen Kernel-Treiber, um verbesserte Tarnung zu erreichen, einschließlich der Fähigkeit, Netzwerkverbindungen, Prozesse und Dateien zu verbergen. Beide Varianten unterstützen mehrere Kommunikationsprotokolle und bieten eine breite Palette von Befehlen für die Systemsteuerung und den Datendiebstahl.

Untersuchung

Die Untersuchung stützte sich auf Malware-Beispiele, die über VirusTotal und ESET-Telemetrie entdeckt wurden, und deckte Aktivitäten von 2023 bis 2024 auf. Forscher analysierten die gesamten Ausführungsketten, einschließlich DLL-Sideloading, Kernel-Treiber-Laden über DriverLoader und RawWNPF, und Prozessinjektion mittels Doppelgänging-Techniken. Die Studie deckte auch Befehls- und Steuerungskommunikationsmuster sowie festcodierte Verschlüsselungsschlüssel auf, die in mehreren Komponenten gemeinsam genutzt werden.

Minderung

Organisationen sollten Priorität auf die Behebung von anfälligen Internetanwendungen legen, um das Risiko einer anfänglichen Kompromittierung über N-Day-Schwachstellen zu verringern. Eine starke Erzwingung der Treibersignatur und die Überwachung unbefugter Kernel-Treiber-Installationen sind entscheidend. Verteidiger sollten auch verdächtige geplante Aufgaben, Änderungen in der Registrierung unter Image File Execution Options und ungewöhnliche Druckprozessorregistrierungen überwachen.

Reaktion

Wenn diese Bedrohungen erkannt werden, sollten die betroffenen Systeme sofort isoliert werden, um weitere seitliche Bewegungen oder Datendiebstahl zu stoppen. Ermittler sollten eine detaillierte forensische Überprüfung durchführen, um den ursprünglichen Eindringungsvektor und das gesamte Ausmaß der Kompromittierung festzustellen, mit besonderem Augenmerk auf die Kernel-Ebene Beständigkeit. Netzwerkprotokolle sollten auch auf Kommunikation mit bekannten Command-and-Control-Infrastrukturen überprüft werden, während Systemänderungen wie neue Dienste oder geänderte Registrierungsschlüssel überprüft werden sollten.

graph TB %% Klassendefinitionen classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef defense fill:#ffcc99 %% Initialer Zugriff action_exploit[„<b>Aktion</b> – <b>T1190 Exploit Public-Facing Application</b><br/>Beschreibung: Ausnutzung von N-Day-Schwachstellen<br/>auf öffentlich erreichbaren Servern für den Erstzugriff.“] class action_exploit action %% Varianten-Verzweigung op_variant((„AND“)) class op_variant tool %% WIN_DRV Variantenpfad action_win_drv_persist[„<b>Aktion</b> – <b>T1546.012 Event Triggered Execution: IFEO</b><br/>Beschreibung: Registrierung eines bösartigen Debuggers für vds.exe<br/>Werkzeug: klelam00007.bat Skript“] class action_win_drv_persist action action_win_drv_dll[„<b>Aktion</b> – <b>T1574.001 Hijack Execution Flow: DLL</b><br/>Beschreibung: DLL-Side-Loading mit einer legitim signierten ausführbaren Datei<br/>Werkzeug: ApphostRegistrationVerifier.exe lädt tpsvcloc.dll“] class action_win_drv_dll action malware_loader[„<b>Malware</b>: Loader<br/>Beschreibung: Verwendet Process Doppelgänging<br/>für die Code-Injektion.“] class malware_loader malware action_reflective[„<b>Aktion</b> – <b>T1620 Reflective Code Loading</b><br/>Beschreibung: Injiziert den SprySOCKS-Backdoor-Shellcode<br/>mittels Process Doppelgänging.“] class action_reflective action process_svchost[„<b>Prozess</b>: svchost.exe<br/>Beschreibung: Zielprozess für<br/>Shellcode-Injektion.“] class process_svchost process malware_sprysocks[„<b>Malware</b>: SprySOCKS Backdoor<br/>Beschreibung: Hält C2-Kommunikation aufrecht<br/>und führt Datensammlung durch.“] class malware_sprysocks malware tool_driver_loader[„<b>Werkzeug</b>: DriverLoader<br/>Beschreibung: Installiert einen<br/>Kernel-Level-Treiber.“] class tool_driver_loader tool malware_rootkit[„<b>Malware</b>: RawWNPF Kernel Driver<br/>Beschreibung: Fungiert als Rootkit (T1014)<br/>zum Verbergen von Prozessen, Dateien und Registrierungsschlüsseln.“] class malware_rootkit malware action_port_knocking[„<b>Aktion</b> – <b>T1205.001 Traffic Signaling: Port Knocking</b><br/>Beschreibung: Umleitung speziell erstellter TCP-Verbindungen<br/>über die Windows Filtering Platform.“] class action_port_knocking action %% WIN_PLUS Variantenpfad action_win_plus_persist[„<b>Aktion</b> – <b>T1547.012 Boot or Logon Autostart Execution: Print Processors</b><br/>Beschreibung: Installation von VSPMsg.dll als<br/>Print Processor für Persistenz.“] class action_win_plus_persist action %% Nachausführung und Sammlung action_keylogging[„<b>Aktion</b> – <b>T1056.001 Input Capture: Keylogging</b><br/>Beschreibung: Erfassung von Tastatureingaben,<br/>Zwischenablagedaten und Fenstertiteln.“] class action_keylogging action action_c2[„<b>Aktion</b> – <b>T1132.001 Command and Control: Protocol</b><br/>Beschreibung: Kommunikation über TCP, UDP und WebSocket<br/>mit AES-128-Verschlüsselung.“] class action_c2 action action_defense_impair[„<b>Aktion</b> – <b>T1562.004 Defense Impairment: Disable or Modify Tools</b><br/>Beschreibung: Änderung der Windows-Firewall-Regeln<br/>mit netsh.exe zur Freigabe von Datenverkehr.“] class action_defense_impair action %% Verbindungen action_exploit –>|führt_zu| op_variant %% WIN_DRV Ablauf op_variant –>|Variantenpfad| action_win_drv_persist action_win_drv_persist –>|führt_zu| action_win_drv_dll action_win_drv_dll –>|lädt| malware_loader malware_loader –>|führt_aus| action_reflective action_reflective –>|injiziert_in| process_svchost process_svchost –>|führt_aus| malware_sprysocks malware_sprysocks –>|stellt_bereit| tool_driver_loader tool_driver_loader –>|bildet_ab| malware_rootkit malware_rootkit –>|ermöglicht| action_port_knocking %% WIN_PLUS Ablauf op_variant –>|Variantenpfad| action_win_plus_persist action_win_plus_persist –>|verwendet| action_reflective %% Gemeinsame Nachausführung malware_sprysocks –>|führt_durch| action_keylogging malware_sprysocks –>|kommuniziert_über| action_c2 malware_sprysocks –>|führt_aus| action_defense_impair %% Logische Verbindung action_defense_impair –>|ermöglicht| action_c2

Angriffsfluss

## Simulation Ausführung

Voraussetzung: Der Telemetrie- und Basislinien-Pre-Flight-Check muss bestanden sein.

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

  • Angreifernarrativ & Befehle: Der Angreifer hat erfolgreich den SprySOCKS-Backdoor auf einem kompromittierten Windows-Host bereitgestellt. Um einen Befehls- und Kontrollkanal zu etablieren, öffnet die Malware einen lausenden Socket auf Port 53781. Damit die Kommunikation von ihrem benutzerdefinierten C2-Server erkannt wird, injiziert die Malware den magischen Hex-Wert 0xACACBCBC in die initialen Handshake-Pakete. Dies ahmt das spezifische Protokollverhalten der FishMonger-Gruppe nach, um eine zuverlässige Kommunikation durch abgefangenen oder umgelenkten Verkehr zu ermöglichen.

  • Regressionstest-Skript:

    # Simulationsskript: SprySOCKS Netzwerkartefakt-Generierung
    # Dieses Skript ahmt das Netzwerkverhalten des SprySOCKS-Backdoors nach.
    
    $TargetPort = 53781
    $MagicValue = [byte[]] @(0xAC, 0xAC, 0xBC, 0xBC)
    $Listener = [System.Net.Sockets.TcpListener]$TargetPort
    
    try {
        Write-Host "[+] Starte Listener auf Port $TargetPort..." -ForegroundColor Cyan
        $Listener.Start()
        $Client = $Listener.AcceptTcpClient()
        $Stream = $Client.GetStream()
    
        Write-Host "[+] Verbindung hergestellt. Sende magischen Wert $MagicValue..." -ForegroundColor Yellow
        # Einfügen des magischen Werts in den Stream, um 'selection1'-Logik auszulösen
        $Stream.Write($MagicValue, 0, $MagicValue.Length)
    
        Start-Sleep -Seconds 5
    }
    catch {
        Write-Error "[-] Simulation fehlgeschlagen: $($_.Exception.Message)"
    }
    finally {
        Write-Host "[+] Bereinigen von Verbindungen..." -ForegroundColor Cyan
        $Stream.Close()
        $Client.Close()
        $Listener.Stop()
    }
  • Bereinigungskommandos:

    # Stellen Sie sicher, dass keine schädlichen Listener aktiv bleiben
    Get-NetTCPConnection -LocalPort 53781 -ErrorAction SilentlyContinue | Remove-NetTCPConnection
    Write-Host "[+] Bereinigung abgeschlossen." -ForegroundColor Green