December 28, 2025

Как я обнаружил скрытый 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. Устранил последствия

Я выполнил следующие действия:

  • Завершил процесс reverse shell:
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, где будет еще больше полезной информации.