Чистим сервер после взлома
09 Apr 2015 | Автор: dd |Арендую VPS KVM на штатовском хостинге AmeriNOC уже года три- все было прекрасно и замечательно. За все время работы, когда я уже усиленно долбился с бурстом и писал матерные тикеты в саппорт; было всего пара проблем, которые очень и весьма оперативно решались.
И тут как гром среди ясного неба- утром вижу в почте “привет семье, сервак засуспендили за Malicious Activity”. Все бы ничего, но до этого не было никаких писем о том, что идет какая то активность. И главное что саппорт ушел в глобальный мороз, т.к какую то вменяемую инфу по проблеме дали часов через 12, а сервер вернули в положение ONLINE еще через 3-4 часа.
За это время я уже успел выкатать критические сервисы на облаках DO и тупо ждал когда мне включат мою сателлитную сетку. Со слов саппорта с моего сервера шел ssh брутфорс серверов находящихся в сети AmeriNOC.
Откровенно говоря я в это не очень поверил и решил, что это гон, т.к у меня несколько раз подобные темы были с различными хостингами, когда мне суспендили сервера за какую то активность, которая потом не подтверждалась, т.ч после включения все тупо работало дальше.
Но для очистки души, решил все таки посмотреть какие то следы. Ну и искать решил по мотивам текстовых файлов для брута, без которых понятно что пакет не может работать. И как оказалось, не зря.
# find / -name *.txt -ctime -1
/var/wm/libssh2/go2/72.txt
/var/wm/libssh2/go2/bios.txt
/var/wm/libssh2/go2/216.txt
/var/wm/libssh2/go2/users.txt
/var/wm/libssh2/go2/vuln.txt
/var/wm/libssh2/go2/73.txt
/var/wm/libssh2/go2/testver.txt
/var/wm/libssh2/go2/pass.txt
/var/wm/libssh2/go2/73vuln.txt
/var/cache/yum/i386/6/base/mirrorlist.txt
/var/cache/yum/i386/6/extras/mirrorlist.txt
/var/cache/yum/i386/6/timedhosts.txt
/var/cache/yum/i386/6/updates/mirrorlist.txt
как видим установлен libssh2 необходимый для работы скрипта брута
смотрим кто логинился в систему и видим интересную ситуацию – лог коннектов sshd видит заход рута в 2 и 4 утра 8.04 (я на сервере не появлялся недели две), тогда как last не видит никого как раз с последней даты моего захода.
Опять же если напрямую обратиться к бинарному логу из которого берет инфу last, то нет каких либо данных о коннекте:
# utmpdump /var/log/wtmp | grep ‘Wed Apr 08′
Теоретически хакеры могли подтереть за собой хвосты после того как зарутили хост, т.ч пытаемся найти точки входа.
Для начала просканил машину с помощью RootKitHunter:
# sudo rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
# yum -y install rkhunter
# rkhunter –update
# rkhunter –propupd
# rkhunter -c
после сканирования смотрим, что нашел хантер:
# grep Warning /var/log/rkhunter.log
и видим что одни фальс-позитивы на системные папки и скрипты
Затем ставим Сhkrootkit
# yum install chkrootkit
# chkrootkit
Он нашел одну дырку
Checking `bindshell’… INFECTED (PORTS: 465)
но у меня на серваке сидит почтарь который как раз слушает SSL на 465 порту, т.ч тоже пусто. Для пущей уверенности проверяем что это:
# netstat -pan | grep ‘:465′
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 1085/exim
tcp 0 0 :::465 :::* LISTEN 1085/exim
# ps -F -p 1085
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
mail 1085 1 0 2744 1144 0 Apr08 ? 00:00:00 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
Переходим к поиску мальвар, троянов и вирей:
# wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
# tar -xzvf maldetect-current.tar.gz
# cd maldetect-1.4.2
# ./install.sh
чекаем конфиг сканера /usr/local/maldetect/conf.maldet обновляем базу, версию сканера и запускаем сканирование
# maldet -u
# maldet -d
# maldet –scan-all
понятно, что сканирование будет происходит весьма и очень долго, после чего выводится инфа о том как смотреть отчет:
# maldet –report 040915-0221.12877
там то я как раз обнаружил 3 срабатывания на {CAV}PHP.Shell-51:
{CAV}PHP.Shell-51 : /home/hacknet/domains/bad-site/public_html/wp-content/themes/itheme2/functions.php
{CAV}PHP.Shell-51 : /home/hacknet/domains/bad-site/public_html/wp-content/themes/itheme2/footer.php
{CAV}PHP.Shell-51 : /home/hacknet/domains/bad-site/public_html/wp-content/themes/itheme2/header.php
пытаемся очистить сами сканером
# maldet -n, –clean 040915-0221.12877
если сканер нашел что то подозрительное, то можем отправить разрабам файло:
# maldet -c /file-path/file.php
теперь ставим антивирь, но предварительно надо накатить zlibs без которых почему то clamd не хотел ставиться:
# yum -y install zlib-devel
# yum -y install clamd
# freshclam
и скармливаем кламаву данные файлы:
# clamscan /home/hacknet/domains/bad-site/public_html/wp-content/themes/itheme2/functions.php
Можно еще до кучи пройти российским сканером Ай-Болит: качаем и распаковываем
# wget http://www.revisium.com/ai/index.php?q=507941843150108121328235903220224
# mv index.php\?q\=507941843150108121328235903220224 ai-bolit.zip
# unzip ai-bolit.zip
прописываем пароль для веб-доступа в файле ai-bolit/ai-bolit.php
define(‘PASS’, ‘put_any_strong_password_here’);
и включаем эксперт мод
define(‘AI_EXPERT’, 0);
после чего копируем файлы в корень сайта и запускаем чекалку через
http://site.ru/ai-bolit.php?p=PASSWORD
Разобравшись с путями проникновения заразы и уязвимостями, можно уже спокойно вытирать все брутфорсные дела и дополнительные библиотеки:
# rm -Rf /var/wm
Автор:Fess на 14 Aug 2015
Спасибо, познавательно все расписано! Через дырявую версию WP получается проникли?
[Reply]
anchous Reply:
August 16th, 2015 at 3:05 pm
через дырку в теме… я уже не помню точно что именно в этом случае было, но вариантов собственно не много бывает: либо удаленная библиотека, типо js – хакеры перехватывают домен и меняют код на свой; либо новая дырка пхп какая нить, которая не прикрыта в старых разработках, либо изначально дырявый шаблон.
[Reply]