Чистим сервер после взлома

09 Apr 2015 | Автор: anchous |

Арендую 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

libsshкак видим установлен libssh2 необходимый для работы скрипта брута

lastсмотрим кто логинился в систему и видим интересную ситуацию – лог коннектов sshd видит заход рута в 2 и 4 утра 8.04 (я на сервере не появлялся недели две), тогда как last не видит никого как раз с последней даты моего захода.

Опять же если напрямую обратиться к бинарному логу из которого берет инфу last, то нет каких либо данных о коннекте:
wtmp# 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

VN:F [1.9.21_1169]
Rating: 7.0/10 (6 votes cast)
VN:F [1.9.21_1169]
Rating: +1 (from 1 vote)
Чистим сервер после взлома, 7.0 out of 10 based on 6 ratings

Теги: , , ,

Отзывов: 2 на «Чистим сервер после взлома»

  1. Автор: Fess на 14 Aug 2015

    Спасибо, познавательно все расписано! Через дырявую версию WP получается проникли?

    [Reply]

    anchous Reply:

    через дырку в теме… я уже не помню точно что именно в этом случае было, но вариантов собственно не много бывает: либо удаленная библиотека, типо js – хакеры перехватывают домен и меняют код на свой; либо новая дырка пхп какая нить, которая не прикрыта в старых разработках, либо изначально дырявый шаблон.

    [Reply]

    VN:F [1.9.21_1169]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.21_1169]
    Rating: 0 (from 0 votes)

Ваш отзыв