Как удалить вредоносный код с тысячи зараженных файлов

Привет друзья! Сегодня речь пойдет о вирусах и вариантах их лечения. Хочу рассказать свою методику поиска и лечения зараженных файлов на сервере/хостинге.  Столкнулся с такой проблемой несколько месяцев назад, с тех пор выработалась схема поиска и лечения.

вирусов нет

С каждым годом вирусы мутируют и заражают все подряд, вплоть до БД.  Словил вирусню, которая изначально вносила правки только в файлы: footer.php , header.php , function.php .  Со временем вирус мутировал и начал заливать шелы и доры на хостинг. Я что-то там чистил, удалял, но видимо не до конца. В конечном итоге злоумышленникам это не понравилось и они решили прописать свой код в каждый (!) php файл на хостинге.

Можете представить меня, когда я осознал то, что придется либо перезаливать все файлы по новой с бекапов, либо скачивать с инета чистую версию ВП, чистить все файлы темы, делать бекапы, удалять все и перезаливать чистые файлы, либо править все вручную. Перезалил 2 сайта и подварился, ведь надо было еще 5 доменов перезалить:)

Как найти зараженные и вредоносные файлы на сайте

Первый способ известен всем — выкачать файлы с хостинга и проверить их антивирусником.  Но этот метод не идеален, потому что не все антивирусники справятся с данной проблемой и посчитают вирусный код за вредоносный. Лично касперыч порезал мне все выкачанные файлы с хостинга. А разбираться в его настройках нет желания.

Второй способ: Проверка сайта онлайн сервисами. Для проверки отношения ПС к сайту можно использовать сервис http://2ip.ru/site-virus-scaner/  .
Проверить сайт с помощью Dr.Web — http://vms.drweb.com/online/
если погуглить — есть еще множество сервисов.

Третий способ самый интересный. Мы будем использовать скрипт Айболит http://www.revisium.com/ai/  Этот скрипт для меня был просто находкой. Инструкция по эксплуатации есть как на сайте, так и внутри архива при скачивании

Чит-код: Многие хостинги активно используют данный скрипт и/или знают о его существовании. По этому если вам сложно самому  настроить и запустить скрипт — обратитесь в ТП хостинга — вам обязательно помогут:)

 

скрипт айболит

Обработка скриптом может занять прилично времени, по этому следует запастись терпением.

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

screenshotМожно смело просмотреть все зараженные файлы, открыть их и найти вредоносный код. В моем случае было заражено 445 файлов предоносным кодом типа

eval base64_decode(и тут зашифрованый код вида kjlkjgfjrkgl;kj)

Полностью писать не хочу, а то вдруг еще ПС решит, что у меня вредоносный код на странице:)

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

Пожалуй скопирую код сюда в статью для тех, кому религиозные взгляды не позволяют переходить по ссылкам или кому просто лень:)

<?php

//gendalf_grey for webmasters.ru

$virus_text = 'в эти кавычки пишем вредоносный код';
$skip_files = array ('delvir.php');
$del = true;
$dir = getcwd().'/';
$num_infected = 0;
function dir_walk($callback, $dir, $types = null, $recursive = false, $baseDir = '') {
if ($dh = opendir($dir)) {
while (($file = readdir($dh))!== false) {
if ($file === '.' || $file === '..') {
continue;
}
if (is_file($dir . $file)) {
if (is_array($types)) {
if (!in_array(strtolower(pathinfo($dir . $file, PATHINFO_EXTENSION)), $types, true)) {
continue;
}
}
$callback($baseDir, $file);
}elseif($recursive && is_dir($dir . $file)) {
dir_walk($callback, $dir . $file . DIRECTORY_SEPARATOR, $types, $recursive, $baseDir . $file . DIRECTORY_SEPARATOR);
}
}
closedir($dh);
}
}
function del_virus ($fdir, $ffile)
{
$flag = false;
$filename = $fdir.$ffile;
echo $filename;
if (!in_array($ffile, $GLOBALS['skip_files'])){
$handle = fopen($filename, "r");
$fsize = filesize($filename);
if (!$fsize){
$contents = '';
}else{
$contents = fread($handle, $fsize);
}
fclose($handle);
if (strpos($contents, $GLOBALS['virus_text']) !== false) {
if ( $GLOBALS['del'] ) {
$contents = str_replace($GLOBALS['virus_text'], '', $contents);
$handle = fopen($filename, "wb");
fwrite($handle,$contents);
fclose($handle);
echo " - deleted";
}
echo " - infected";
$GLOBALS['num_infected']++;
}
}else{
echo " - skipped";
}
echo "<br/>";
};
dir_walk('del_virus', $dir, array('php','php5','html','htm','shtml'), true, $dir );
echo "Num infected = $num_infected <br/>";
?>

Вместо $virus_text = 'в эти кавычки пишем вредоносный код';  вставляем свой вредоносный код, делаем бекапы сайтов, сохраняем код как delvir.php и заливаем в корень сайта.  Затем вызываем файл вбив в адсерсную строку site.ru/delvir.php

Ждем и скрипт нам выдаст кол-во зараженных файлов которые он нашел и очистил от кода.  На данном блоге он показал мне Num infected = 445  зараженных файлов.

Шаг номер 3 Проверяем проделанную работу. Запускаем повторно айболит и смотрим не осталось ли еще зараженных файлов.

У меня показывает что все чисто:) Бинго сайт очищен от вирусов. И мало того, как только почистил сайт от вирусов в панели ЯВМ появилась вот такая картинка:

блог вернулся в выдачу

Связанны ли эти 2 события — не знаю. Есть еще 1 пациентик с вирусами и отсутствием страниц в выдаче. Проверю на нем:) Почищу сайтик , отпишусь Платонам. Если сайт влетит в выдачу  — будет еще 1 пост:)

Как защитить сервер, хостинг и сайты от взлома

Если вы дуб дубом в этом, как и я — то вариантов не много:)

1) Обратиться к разработчику Айболита — берет 1900 руб за 1 сайт, но по отзывам делает работы больше чем договаривались, любезно разъясняет все «атеншены» и дает рекоммендации на будущее

2) Найти шарящего сисадмина и попросить настоить всю делюгу. Стоимость услуги от 1к руб за сайт.

3) Сменить все логины и пароли. Лично я использую для этого программу KeePass . С помощью ее генерируются случайные логины и пароли из 16 и более символов. Программа хранит все логины и пароли в базе данных, на которую тоже вы устанавливаете пароль.  Ее можно так же заинсталить в ДропБокс и будет доступ со всех устройств к ней:) Делайте бекапы базы с ключами, прогу иногда глючит.

4) Настроить дополнительную http авторизацию перед входом в wp-admin.  Инструкция от fastvps

1) создать файл с названием «.htpasswd» в корне сайта и при помощи сайта www.htaccesstools.com/htpasswd-generator/ сгенерировать его содержание, указав желаемый логин и пароль.

2) для Joomla в файл «.htaccess» в папке /administrator/ добавить следующие строки:

AuthName «Access Denied»
AuthType Basic
AuthUserFile полный_путь_до_корня_сайта/.htpasswd
require valid-user

для WordPress в файл «.htaccess» в корне сайта добавить следующие строки:

<Files wp_login.php>
AuthName «Access Denied»
AuthType Basic
AuthUserFile полный_путь_до_корня_сайта/.htpasswd
require valid-user
</Files>

где «полный_путь_до_корня_сайта» — это абсолютный путь от корня файловой системы.

например, для ISPManager он будет выглядеть так: /var/www/имя_пользователя/data/www/адрес_сайта/.htpasswd

3) проверить работу данной конструкции, попробовав зайти в админ-панель сайта.

5) Использовать плагин Better WP Security.

6) Удалить всех старых и не используемых пользователей. Часто, делая для кодера/редактора/автора  акк на сайте мы забываем удалить их после проделанной работы. Это не гуд, у самого есть доступы к парочке сайтов, на которых был в админке более года назад.

На самом деле этот список можно продолжать и продолжать. Вариантов как защититься множество и всех их писать в 1 статью нет смысла. Портянки никто не читает:)  Если ты дочитал до этого места — оставляй свой комментарий по поводу статьи.

Как удалить вредоносный код с тысячи зараженных файлов: 10 комментариев

  1. Привет! Тоже были проблемы с вирусами/вредоносными кодами, нанимал человека с рейтингом на фрилансе, он почистил, поставил заплатки, вроде все нормально с тех пор. Но сейчас наверное бы не доверил фрилансеру даже с прокачанным профилем, были инциденты… Про Айболит тоже в курсе, но как то не доверял. Спасибо за отзыв!

      1. У них стата странная, могут смело шейвить безпалива. С ними хорошо работать на прямом выкупе:) Появились желающие заплатить дороже за их место.

        1. У меня количество кликов примерно совпадает с Метрикой. У тебя были различия серьезные?

          1. Ну, не всегда все гладко:) Особенно с показами, их может добегать то пары сотен тыс)

  2. Тоже ломали, так же чистил айболитом. Статья четкая и полностью доносит смысл по борьбе с вирусами

  3. Ваши резервные копии инфицированы еще с сентября месяца. Ранее у Вас уже были заявки по этой проблеме. Восстановление даже из самой доступной резервной копии не решит проблемы с заражениями.-ответ техподдержки хостинга.Помогите,пожалуйста!

    1. Для начала запустите айболит и посмотрите отчет — он покажет какие файлы инфицированы. Дальше нужно будет все чистить. Еще можно в каждой папке (если у вас вордпресс) добавить файл .htachess и в нем запретить запуск php файлов для всех. (только в wp-admin не нужно добавлять). В любом случае нужно смотреть и гуглить что лечить:)

  4. Здравствуйте.Подскажите пожалуйста, у меня во многих файлах был вот такой вредоносный код:
    В скрипт лечения я указала eval,но мне кажется,что из этого кода нужно еще полечить isset Правильно ли я рассуждаю?
    И еще по Айболиту вопросов много,потому что официальная инструкция слишком короткая,не могли бы вы пошагово написать как использовали Айболит на своем сайте.Спасибо.

Добавить комментарий для Jimmy Отменить ответ

Ваш адрес email не будет опубликован.