Как найти куда залили шелл?

Присказка

Вчера смотрел логи сего блога и увидел как некий товарищ упорно долбится к файлу /wp-login.php со скоростью пару запросов в секунду. На лицо подбор паролей или как оно правильно называется Bruteforce.  Ну да ладно думаю, пусть долбится, что поделаешь, разве за всеми уследишь. Пароли я уже давно ставлю длиннющие и рандомные, так что не сильно страшно.

Но сегодня с утра блог почему то не пустил меня по старому паролю! Опа! Неужто подобрал таки? Пароль восстановил и сменил на еще более грозный. Стал смотреть, где да чего. Нет. Все вроде на месте. И тут задумался, а как же узнать куда из множества файлов был залит шелл. Или куда имплантирован.

По логике нужно искать файлы которые были недавно изменены или созданы. Как? Заходить по фтп и пересматривать все поддиректории? Это долго. Решил искать более легкий путь - команду unix. Уверен, что многие читатели данной статьи закрыли ее сразу после того, как увидели это страшное слово - UNIX. Не бойтесь, это будет  не сложнее FTP.

Что делать? Ищем на сервере через SSH протокол.

И так приступаем к поиску шелла прям на сервере. Для этого нужно подключиться к нему по SSH протоколу.  Это вовсе не сложно. Как это сделать я описывал в другой статье - как быстро установить WordPress на сервер. В начале той статьи как раз описывается как и через что подключаться.

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

find ./ -type f -mtime -1

Можете просто скопировать эту команду и вставить ее в SSH клиент комбинацией клавиш Shift + Insert, а затем нажать кнопку Enter.

Здесь find - думаю понятно команда искать.

./ искать в текущей директории и во всех ее поддиректориях. Лучше эту команду запускать из корня, а не из public_html директории. Хотя если нужно прочесать именно определенную директорию, то вместо ./ нужно указать путь от текущей директории до необходимой - ну например так ./www/domain.ru/public_html/ или как там у вас.

-mtime -1 означает искать за последний -1 день. Соответственно -mtime -3 означает искать за три последних дня.

Результат этой команды будет примерно такой

ufind

Смотрим файлы и ищем в них подозрительные. В первую очередь конечно же ищем файлы .php Всяческие шеллы обычно помещают в исполняемые файлы. Однако некоторые сервера настроены так, что php может исполняться и в .jpg файлах. А если правился .htaccess, то в первую очередь нужно смотреть чего там написали.  В общем искать и проверять.

Вариант без SSH и команд Unix

Если мания преследования Вас не оставляет постоянно, а не только когда что то с сайтами случается не то :), то можно в крон записать вот такую строчку и настроить его на запуск раз в сутки.

find ./ -type f -mtime -1 -exec ls -al {} ; | mail -s "Изменения в файлах от `date +%D`" ваш@емэйл.ru

Эта команда будет искать все измененные файлы за последние сутки и слать их на почту в расширенном варианте. Примерно вот так

mail

P/S

Как не странно, но у себя ни чего подозрительного не нашел. Может не успели еще, а может и не ломали вовсе и мне все это приснилось, а с паролем глюк какой был. А может плохо и не там искал ...

Хорошая статья? Полезная? Спорим все равно в закладки не положите :). А потом, если вдруг таки вскроют сайт будете искать эту инфу, но уже перебирая и осмысливая кучу нового контента. Да ладно, чего там, сам такой 🙂

11 комментариев

Add a Comment

Ваш e-mail не будет опубликован.