SOC Prime Bias: Mittel

04 Dez. 2025 17:37

ValleyRAT-Malware zielt auf Arbeitssuchende ab und missbraucht Foxit DLL-Sideloading

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
ValleyRAT-Malware zielt auf Arbeitssuchende ab und missbraucht Foxit DLL-Sideloading
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Der ValleyRAT Remote-Access-Trojaner wird über E-Mail-Anhänge verteilt, die auf Arbeitssuchende und HR-Mitarbeiter abzielen. Gegner bündeln eine manipulierte Foxit PDF Reader-Executable und verlassen sich auf DLL-Side-Loading, um eine bösartige msimg32.dll auszulösen. Die Nutzlast entpackt eine versteckte Python-Laufzeitumgebung, ruft ein Base64-codiertes Skript von einem C2-Server ab und richtet Persistenz durch einen Autorun-Registrierungswert ein, während sie Browserdaten abzapft.

Untersuchung

Forscher analysierten das bösartige Archiv und fanden eine umbenannte FoxitPDFReader.exe, die eine bösartige msimg32.dll durch die standardmäßige Windows DLL-Suchreihenfolge lädt. Ein Batch-Skript entpackt dann einen eingebetteten Python-Interpreter (umbenannt in zvchost.exe) und führt ein Base64-codiertes Loader-Skript aus, das von einer bösartigen IP-Adresse abgerufen wird. Netzwerkanalyse enthüllte ein selbstsigniertes Zertifikat mit einem zufälligen CN und einem einzigartigen JA3-Fingerprint, der für C2-Verkehr verwendet wird. Persistenz wird durch Erstellen eines Autorun-Registry-Keys aufrechterhalten.

Abschwächung

Empfohlene Abwehrmaßnahmen umfassen rigoroses Scannen von E-Mail-Anhängen und das Blockieren von ausführbaren Dateien, die als PDF-Dateien getarnt sind. Anwendung-Whitelisting anwenden, um unbefugtes DLL-Side-Loading und die Ausführung von nicht vertrauenswürdigen Binärdateien zu verhindern. Überwachen Sie die Erstellung von Autorun-Registry-Einträgen und blockieren Sie bekannte C2-IP-Adressen. Halten Sie die Signaturen des Endpunktschutzes auf dem neuesten Stand und bieten Sie gezielte Sicherheitsaufklärungsschulungen an, die sich auf Phishing mit Arbeitssuchenden-Themen konzentrieren.

Reaktion

Generieren Sie Warnungen, wenn FoxitPDFReader.exe oder msimg32.dll von ungewöhnlichen Orten ausgeführt werden, insbesondere von Pfaden mit tiefen Unterstrichmustern. Korrelieren Sie Prozessaktivitäten von zvchost.exe mit dem -c-Parameter und Base64-Command-Payloads. Erkennen Sie ausgehende Verbindungen zu 196.251.86.145 (und zugehöriger Infrastruktur) und überprüfen Sie TLS-Sitzungen auf das unverwechselbare selbstsignierte Zertifikat. Untersuchen Sie Registrierungsänderungen unter HKCUSoftwareMicrosoftWindowsCurrentVersionRun auf nicht autorisierte Autorun-Einträge.

mermaid graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 %% Node Definitions action_phishing[„<b>Aktion</b> – <b>T1566.001 Phishing: Spearphishing-Anhang</b><br />Opfer erhält ein bösartiges Zip-Archiv mit einer getarnten FoxitPDFReader.exe.“] class action_phishing action file_archive[„<b>Werkzeug</b> – Bösartiges Archiv<br />Komprimierte Datei Overview_of_Work_Expectations.zip übermittelt die Nutzlast.“] class file_archive tool exe_foxit[„<b>Werkzeug</b> – FoxitPDFReader.exe (umbenannt)<br />Wird ausgeführt, nachdem der Benutzer das Archiv öffnet.“] class exe_foxit tool dll_msimg32[„<b>Werkzeug</b> – msimg32.dll (bösartig)<br />Im selben Verzeichnis platziert, um DLL-Side-Loading zu erreichen.“] class dll_msimg32 tool exec_hijack[„<b>Aktion</b> – T1574.008 Hijack Execution Flow<br />Suchreihenfolge-Hijacking lädt die bösartige DLL.“] class exec_hijack action script_bat[„<b>Werkzeug</b> – document.bat<br />Batch-Skript, das von der hijacked-Executable gestartet wird.“] class script_bat tool docx_7zip[„<b>Werkzeug</b> – document.docx (7-zip-Archiv)<br />Enthält eine eingebettete Python-Umgebung.“““ class docx_7zip tool exe_zvchost[„<b>Werkzeug</b> – zvchost.exe (umbenannt python.exe)<br />Führt ein Base64-codiertes Loader-Skript aus.“] class exe_zvchost tool payload_base64[„<b>Werkzeug</b> – Base64-Nutzlast<br />Decodiert und stellt die endgültige bösartige Komponente bereit.“] class payload_base64 tool registry_run_key[„<b>Werkzeug</b> – Registry Run-Schlüssel<br />Unter Active Setup erstellt, um Persistenz zu erreichen.“] class registry_run_key tool persistence_active_setup[„<b>Aktion</b> – T1547.014 Boot oder Logon Autostart-Ausführung: Active Setup<br />Stellt sicher, dass die Nutzlast bei jedem Anmelden ausgeführt wird.“] class persistence_active_setup action defense_obfuscation[„<b>Aktion</b> – T1027 Verschleierte Dateien oder Informationen<br />Dateien, die in tiefen Unterstrichverzeichnissen versteckt und in Base64 kodiert sind.“] class defense_obfuscation action credential_browser[„<b>Aktion</b> – T1555.003 Anmeldeinformationen aus Web-Browsern<br />ValleyRAT extrahiert gespeicherte Benutzernamen, Passwörter und Cookies.“] class credential_browser action malware_valleyrat[„<b>Malware</b> – ValleyRAT<br />Remote-Zugriffstool, das einen TLS C&C-Kanal öffnet.“] class malware_valleyrat malware c2_server[„<b>Werkzeug</b> – C2-Server 196.251.86.145<br />Erhält verschlüsselten Verkehr vom RAT.“] class c2_server tool malware_component[„<b>Malware</b> – Zusätzliche Komponente<br />Heruntergeladene Binärdateien, die auf dem Opferhost ausgeführt werden.“] class malware_component malware %% Connections Showing Flow action_phishing u002du002d>|liefert| file_archive file_archive u002du002d>|enthält| exe_foxit exe_foxit u002du002d>|lädt| dll_msimg32 dll_msimg32 u002du002d>|ermöglicht| exec_hijack exec_hijack u002du002d>|löst aus| script_bat script_bat u002du002d>|extrahiert| docx_7zip docx_7zip u002du002d>|bietet an| exe_zvchost exe_zvchost u002du002d>|führt aus| payload_base64 payload_base64 u002du002d>|erstellt| registry_run_key registry_run_key u002du002d>|sichert| persistence_active_setup payload_base64 u002du002d>|führt durch| defense_obfuscation payload_base64 u002du002d>|stiehlt| credential_browser credential_browser u002du002d>|versorgt| malware_valleyrat malware_valleyrat u002du002d>|etabliert| c2_server malware_valleyrat u002du002d>|lädt herunter| malware_component

Angriffsablauf

Simulationserführung

Voraussetzung: Der Telemetry & Baseline Pre-flight Check muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der gegnerischen Technik (TTP), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und Erzählung MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, genau die Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht zusammenhängende Beispiele führen zu Fehldiagnosen.

  • Angriffserzählung & Befehle:

    1. Erste Kompromittierung: Das Opfer öffnet ein bösartiges, rekrutierungsthemenbezogenes PDF, das per E-Mail ausgeliefert wurde. Das PDF enthält JavaScript (T1059.006), das eine bösartige DLL (valley.dll) im selben Verzeichnis wie die PDF-Reader-Executable ablegt.

    2. DLL-Side-Loading: Der Angreifer nutzt die Fähigkeit des Foxit Readers, Hilfs-DLLs zu laden. Durch Platzieren vonvalley.dll neben einer umbenannten Foxit-Executable (zvchost.exe) lädt Foxit beim Start unbeabsichtigt die bösartige DLL und führt ValleyRAT aus.

    3. Trigger der Prozesserstellung: Die umbenannte Executable (zvchost.exe) wird gestartet und erzeugt ein Prozesserstellungsereignis, bei dem der Bildpfad mitzvchost.exe endet. Dies entspricht der Sigma-RegelImage|endswith Bedingung und führt zu einem Alarm.

  • Regression-Testskript: Das folgende PowerShell-Skript reproduziert die obigen Schritte in einer kontrollierten Laborumgebung.

    # ------------------------------------------------------------
    # Regressionsskript für ValleyRAT Side-Loading-Erkennungstest
    # ------------------------------------------------------------
    
    # 1. Temporäres Arbeitsverzeichnis einrichten
    $workDir = "$env:TEMPValleyRAT_Test"
    New-Item -Path $workDir -ItemType Directory -Force | Out-Null
    
    # 2. Eine legitime Foxit Reader-Executable kopieren (Simulation des PDF-Readers)
    $foxitSrc = "C:Program FilesFoxit SoftwareFoxit ReaderFoxitReader.exe"
    $foxitRenamed = Join-Path $workDir "zvchost.exe"
    Copy-Item -Path $foxitSrc -Destination $foxitRenamed -Force
    
    # 3. Eine Dummy-bösartige DLL erstellen (in der Realität wäre dies die ValleyRAT-Nutzlast)
    $dllPath = Join-Path $workDir "valley.dll"
    Set-Content -Path $dllPath -Value ([byte[]](0x4D,0x5A)) -Encoding Byte  # Minimaler MZ-Header
    
    # 4. Die umbenannte Foxit-Executable starten (dies löst das DLL-Side-Loading aus)
    Write-Host "[*] Umbenannte Foxit-Executable wird gestartet, um Side-Loading auszulösen..."
    $proc = Start-Process -FilePath $foxitRenamed -PassThru -WindowStyle Hidden
    
    # 5. Kurz warten, um sicherzustellen, dass die Prozesserstellung protokolliert wird
    Start-Sleep -Seconds 5
    
    # 6. Prozessinformationen zur Überprüfung ausgeben
    Write-Host "Prozess-ID: $($proc.Id)"
    Write-Host "Ausführungspfad: $($proc.Path)"
    
    # 7. Aufräumen (optional – siehe separaten Aufräumabschnitt)
    # Remove-Item -Recurse -Force $workDir
  • Aufräumbefehle: Nach dem Test ausführen, um Artefakte zu entfernen und verbleibende Side-Loaded-DLLs zu vermeiden.

    # Das Testverzeichnis aufräumen und alle herumirrenden Prozesse beenden
    $workDir = "$env:TEMPValleyRAT_Test"
    
    # Den gestarteten Prozess beenden, wenn er noch läuft
    Get-Process -Name "zvchost" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Die Testartefakte löschen
    Remove-Item -Path $workDir -Recurse -Force -ErrorAction SilentlyContinue
    
    Write-Host "[+] Aufräumen abgeschlossen."