Как я обнаружил скрытый reverse shell, запущенный от имени www-data (и что я с этим сделал)
Это перевод оригинальной статьи How I Found a Hidden Reverse Shell Running as www-data (And What I Did About It).
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Введение:
Иногда самые опасные угрозы — это не атаки методом перебора или уязвимости нулевого дня. Это тихие, настойчивые точки закрепления, скрывающиеся на виду. Однажды я обнаружил обратную оболочку, незаметно работавший под пользователем www-data на моем веб-сервере Ubuntu. Вот как я ее обнаружил — и какие именно шаги предпринял для ее очистки.
1. Что-то было не так
Я заметил необычно высокий исходящий трафик с веб-сервера, несмотря на небольшое количество посетителей. Загрузка процессора была в норме, но что-то было не так.
2. Я запустил ps aux | grep www-data
ps aux | grep www-datadata
Это выявило следующий процесс:
www-data 1234 0.0 0.1 23456 3456 ? Ss 10:12 0:00 /bin/bash -i
Это ненормально. Пользователь www-data (используемый Apache/Nginx) не должен запускать интерактивные оболочки.
3. Проверил сетевые подключения.
sudo lsof -i -nP | grep ESTABLISHED
bash 1234 www-data 3u IPv4 123456 0t0 TCP 192.168.1.10:4242 -> 103.82.121.45:4444 (ESTABLISHED)1234 www-data 3u IPv4 123456 0t0 TCP 192.168.1.10:4242 -> 103.82.121.45:4444 (ESTABLISHED)
Это показало обратное соединение с внешним IP-адресом через порт 4444 — распространённую тактику злоумышленников.
4. Отследил процесс до корня веб-сайта
ls -la /var/www/html
Я обнаружил подозрительный файл: shell.php. Это была веб-оболочка, запущенная через уязвимый плагин.
5. Устранил последствия
Я выполнил следующие действия:
sudo kill -9 1234kill -9 1234
sudo rm /var/www/html/shell.phprm /var/www/html/shell.php
- Сменил все API-ключи и учётные данные, хранившиеся на сервере.
- Запустил сканеры руткитов:
sudo chkrootkit sudo rkhunter --check- Изменил все пароли пользователей веб-сервиса.
6. Усилил защиту веб-сервера.
- Отключил выполнение PHP в каталогах
/uploadsи других папках с правами на запись. - Установил
fail2banи ограничил количество попыток входа. - Ввел строгие правила доступа:
chown -R root:root /var/www chmod -R 755 /var/www
7. Настроил оповещения об изменениях файлов с помощью auditd.
sudo apt install auditd sudo auditctl -w /var/www -p wa -k webroot_changesvar/www -p wa -k webroot_changes
Это ведёт журнал любых несанкционированных изменений файлов в вашем веб-каталоге.
Заключение:
Это был не просто урок по обнаружению — это был тревожный звонок. Даже самая маленькая лазейка в вашей веб-системе может дать злоумышленнику постоянный доступ. Если бы я не начал разбираться с этим необычным поведением, этот shell мог бы оставаться активным в течение нескольких недель.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.