Beginner WEB-developer Blog of WEB-design. Most development in Kohana. Writing the components and modules for Joomla!

20Ноя/120

Вирус на сайте? Что делать? Борьба с eval строчками во всех файлах *.php

Не более как месяц назад сайт моего партнера взломали, стояла Joomla 1.5. В каждом файле php на сервере появились строчки типа eval(base64_decode(«...»));.

Мне этот сайт достался в уже готовом виде и информации на нем было достаточно, чтобы просто взять и отказаться от Joomla или каких-либо установленных компонентов. Упомяну также, что эта ситуация застала меня в отпуске и времени на исправление было мало, а интернет только через 3G модем. Долго искал в Google как избавиться на всегда, но ничего толкового не нашел. Решил пойти проверенным путем.

  • Скопировал сайт на комп (FTP).
  • Сделал дамп базы.
  • На компе во всех файлах сайта заменил вредоносный код на пустоту "".
  • Проверил встречается ли в базе вредоносный код (нет не встречался, но вполне возможно у вас будет)
  • Залил чистые файлы сайта обратно на хост.
  • Все хорошо, все круто и работает как раньше.
  • Ну плюс к тому еще перенес потом сайт к себе на хостинг и поменял все возможные пароли.

В итоге был доволен собой и спокойно дальше отдыхал.

Прошло пару недель и вот однажды мне говорят, что мой сайт в поиске не открывается. Вот так раз думаю я (опять не разумные пользователи не умеют набирать в адресной строке), но нет и правда при переходе из поисковой выдачи, происходит редирект на рекламный сайт (не мой). Тут до меня доходит, что ситуация повторяется, кроме того проверив другие сайты на том же хостинге, понимаю, что и они заражены.

Ну ладно, повторяю процедуру очищения, меняю пароли и опять забываю - на неделю. И опять ....

В конце концов мне надоела, такая ситуация я понял, что каждую неделю чистить файлы от вируса и каждый день не по разу мониторить состояние сайта не эффективно. Поэтому решил следующее:

  • Сделать так, чтобы при изменение основных файлов сайта (т.е. если размер файла index.php поменялся) отсылать SMS мне на номер.
  • Ну и автоматически при обнаружении вируса сливать чистые дампы файлов на сайт (дампы создать заранее и положить в них только папки, которые не меняются)

SMS рассылку организовал через сервис littlesms.ru.

 

<?php
	if(filesize($_SERVER['DOCUMENT_ROOT'].'/index.php')!=2072 AND !file_exists($_SERVER['DOCUMENT_ROOT'].'/temp_sms')){
		require_once 'LittleSMS.class.php5';

		$api = new LittleSMS('APIлоин', 'APIПароль', true);

		// запрос баланса
		echo 'Мой баланс: ' . $api->userBalance(), PHP_EOL;

		// отправка СМС
		echo 'Отправка смс: ' . $api->messageSend('номер', 'Произошел взлом belschool.ru'), PHP_EOL;

		// ответ предыдущего запроса
		$response = $api->getResponse();
		
		// запрос статуса сообщения
		$result = $api->messageStatus($response['messages_id']);

		foreach ($result as $message_id =! $status) {
			echo sprintf('Статус сообщения %s: %s', $message_id, $status), PHP_EOL;
		}
		if ($response['status'] == 'success'){
			file_put_contents('temp_sms','Temp_SMS');
		}
	}	
?>

Положил файл в корень и поставил у него расширение на php5. Ну и соответственно поставил, чтобы CRON запускал его раз в минуту. В случае обнаружения изменений отсылается SMS на указанный номер и создается файл temp_sms (Сделано для того, чтобы информирование было один раз при обнаружении.)

Теперь, если меня взломают, то я хотя бы буду сразу об этом знать.

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

Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Нет обратных ссылок на эту запись.