PHP вебшелли з керуванням через кукі: Непомітна торгівля на Linux хостах
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Зловмисники використовують HTTP cookie як прихований «активаційний ключ» для PHP веб-шелів на серверах Linux. Ці вставки залишаються неактивними, поки не отримають специфічне значення cookie, після чого декодують та виконують надані зловмисником завантаження. Цей підхід допомагає зменшити явні індикатори в рутинних логах, дозволяючи стійке віддалене виконання коду. Типові підтримуючі методи включають багатошарове шифрування, самовідновлення на базі cron і використання стандартних серверних утиліт.
Дослідження
Дослідники переглянули декілька зламаних облікових записів хостингу і виявили PHP-завантажувачі, які відновлюють функціональність лише з Base64-encoded блобів при наявності тригерної cookie. Стійкість підтримувалася через cron-задачі, створені за допомогою панелей управління хостингом (таких як cPanel), які періодично відновлюють веб-шел, якщо його видалено. Виконання зазвичай відбувалося через php-fpm та інші веб-воркери, які запускали shell-інтерпретатори та отримували додаткові завантаження для розширення доступу.
Пом’якшення
Вимагайте багатофакторної автентифікації для панелей управління хостингом та шляхів адміністративного доступу. Обмежте процеси веб-сервера так, щоб вони не могли запускати shell або викликати загальні сценарії стадіювання, такі як base64, curl або wget. Ретельно моніторьте створення та зміну cron, здійснюйте оповіщення про неочікувані записи або зміни файлів у веб-директоріях. Додаткове зміцнення включає обмеження доступу до jail shell та ввімкнення захисту в реальному часі для Linux серверів.
Відповідь
При виявленні ізолюйте хост, вимкніть та видаліть шкідливі cron-записи, видаліть підозрілі PHP-артефакти та змініть облікові дані для постраждалих хостингових облікових записів. Збережіть та перегляньте докази, включаючи значення тригерної cookie та пов’язані командні рядки, а потім застосуйте засоби зміцнення, щоб запобігти повторному розгортанню і повторному зламу.
"graph TB %% Визначення Класів classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef builtin fill:#cccccc %% Вузли Дій step1_initial_access["<b>Техніка</b> – T1190 Експлуатація Публічної Додатки<br/><b>Опис</b>: Уразливість у публічній додатці використовується для завантаження шкідливого файла PHP та отримання початкового плацдарму."] class step1_initial_access action step2_persistence_webshell["<b>Техніка</b> – T1505.003 Серверний Програмний Компонент: Веб-шелл<br/><b>Опис</b>: Завантажений файл PHP діє як веб-шелл, забезпечуючи стійкий віддалений доступ."] class step2_persistence_webshell action step3_def_evasion_obfuscation["<b>Техніка</b> – T1027.008 Обфусковані Файли або Інформація: Стрипінг Авангарду<br/><b>Опис</b>: Код завантажувача запакований і видалений для приховування його справжньої функціональності."] class step3_def_evasion_obfuscation action step3b_def_evasion_api["<b>Техніка</b> – T1027.007 Динамічне АПІ Розв’язання<br/><b>Опис</b>: Імена функцій реконструюються в режимі реального часу, щоб уникнути статичного виявлення."] class step3b_def_evasion_api action step4_decode["<b>Техніка</b> – T1140 Деобфускація/Декодування Файлів або Інформації<br/><b>Опис</b>: Баби Base64 декодуються на сервері для відтворення шкідливого завантаження."] class step4_decode action step5_unix_shell["<b>Техніка</b> – T1059.004 Командний та Сценарний Інтерпретатор: Unix Shell<br/><b>Опис</b>: Веб-шелл запускає /bin/sh або bash для виконання команд, наданих зловмисником."] class step5_unix_shell action step6_cookie_cred["<b>Техніка</b> – Доступ до Облікових Даних через Cookie<br/><b>Опис</b>: Виконання залежить від специфічних значень $_COOKIE, що дозволяє зловмиснику контролювати, коли код запускається."] class step6_cookie_cred action step7_permission_mod["<b>Техніка</b> – T1222.002 Зміна Дозволів на Файли та Директорії Linux і Mac<br/><b>Опис</b>: Створені файли PHP мають дозволені режими, щоб залишатися виконуваними і стійкими до видалення."] class step7_permission_mod action step8_ingress_transfer["<b>Техніка</b> – T1105 Ввіз Інструменту<br/><b>Опис</b>: curl або wget завантажують додаткові інструменти або другосторонні завантаження у корінь вебу."] class step8_ingress_transfer action step9_persistence_cron["<b>Техніка</b> – T1053.003 Заплановане Завдання/Робота: Cron<br/><b>Опис</b>: Cron-задача на рівні користувача періодично відтворює обфускований завантажувач, забезпечуючи самовідновлювальний плацдарм."] class step9_persistence_cron action step10_def_evasion_cont["<b>Техніка</b> – Продовжувана Обфускація та Обмежена Видимість<br/><b>Опис</b>: Шкідлива активність приховується за звичайним веб-трафіком і активується лише на правильному cookie, зменшуючи докази у логах."] class step10_def_evasion_cont action %% Вузли Інструменту / Процесу tool_php["<b>Інструмент</b> – Інтерпретатор PHP"] class tool_php tool tool_curl_wget["<b>Інструмент</b> – curl / wget"] class tool_curl_wget tool tool_cron["<b>Інструмент</b> – Планувальник Cron"] class tool_cron tool process_apache["<b>Процес</b> – apache2 / php-fpm"] class process_apache process %% З’єднання step1_initial_access –>|призводить до| step2_persistence_webshell step2_persistence_webshell –>|дозволяє| step3_def_evasion_obfuscation step3_def_evasion_obfuscation –>|використовує| step3b_def_evasion_api step3b_def_evasion_api –>|готує| step4_decode step4_decode –>|виконує| step5_unix_shell step5_unix_shell –>|перевіряє| step6_cookie_cred step6_cookie_cred –>|встановлює| step7_permission_mod step7_permission_mod –>|завантажує через| tool_curl_wget tool_curl_wget –>|зберігає завантаження для| step8_ingress_transfer step8_ingress_transfer –>|активує| step9_persistence_cron step9_persistence_cron –>|посилює| step10_def_evasion_cont step10_def_evasion_cont –>|працює в межах| process_apache process_apache –>|запускає| tool_php "
Потік Атаки
Виявлення
Підозрілий Shell через Веб-Сервер [Linux] (через process_creation)
Переглянути
Файл Cron було створено (через file_event)
Переглянути
Можливі маніпуляції зі строками, закодованими в Base64 (через cmdline)
Переглянути
Виявлення Активності PHP Вебшелу Керованого через Cookie [Вебсервер]
Переглянути
Виявлення Виконання Вебшелу Керованого через Cookie на Linux Сервери [Linux File Event]
Переглянути
Виявлення Виконання Вебшелу Керованого через Cookie [Linux Process Creation]
Переглянути
Виконання Симуляції
Вимога: Телеметрія та Перевірка Базового запуску повинна пройти.
Підстава: Цей розділ описує точне виконання техніки супротивника (TTP), призначеної для активації правила виявлення. Команди та наратив МУТЬ безпосередньо відображати TTPs і прагнути до генерації тієї самої телеметрії, яку очікує логіка виявлення. Абстрактні або несвоєчасні приклади можуть призвести до помилкового діагнозу.
-
Опис Атаки & Команди:
Зловмисник, який вже скомпрометував веб-сервер, отримує шкідливий PHP-вебшел (malicioзnus.php). Для активації зловмисник робить HTTP-запит, який підставляє спеціально сформовану cookie. PHP-обробник веб-сервера інтерпретує cookie і запускає процес Bash, який виконує файл вебшела. Для тестування ми симулюємо той самий ефект локально, вручну викликаючи Bash з командним рядком, що містить «.php». Це створює точну телеметрію, яку моніторить правило Sigma (shell інтерпретатор + «.php» у командному рядку).- Створіть dummy PHP вебшел (без шкідливого коду, лише безпечний
phpinfo()для видимості). - Виконайте вебшел через Bash, вбудувавши
.phpім’я файлу в командний рядок. - Перевірте, чи відображається подія створення процесу в аудиторських логах із очікуваними полями.
- Створіть dummy PHP вебшел (без шкідливого коду, лише безпечний
-
Сценарій Регресійного Тестування:
#!/usr/bin/env bash set -euo pipefail # 1. Розгорніть безпечний PHP файл (симуляція вебшела) WEBROOT="/tmp/webshell_test" mkdir -p "$WEBROOT" cat > "$WEBROOT/malicious.php" <<'EOF' <?php // Симульований вебшел – безпечний завантажувач echo "Вебшел виконано о " . date('c') . "n"; ?> EOF # 2. Активація через інтерпретатор Bash (командний рядок містить ".php") echo "[*] Виконання вебшела через Bash для створення телеметрії виявлення..." /bin/bash -c "php $WEBROOT/malicious.php" # 3. Затримка на кілька секунд, щоб дати auditd час для запису логів sleep 2 echo "[*] Симуляція завершена. Перегляньте SIEM для відповідності на:" echo " process.name in (bash, sh, dash, jailshell) AND process.command_line contains '.php'" -
Команди очищення:
#!/usr/bin/env bash set -euo pipefail WEBROOT="/tmp/webshell_test" echo "[*] Видалення тестової директорії вебшела..." rm -rf "$WEBROOT" echo "[*] Очищення завершено."