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

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

вирусов нет

С каждым годом вирусы мутируют и заражают все подряд, вплоть до БД.  Словил вирусню, которая изначально вносила правки только в файлы: 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. Jimmy:

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

  2. zorra:

    Что там с TizerLeads сегодня?

    • zorra:

      Заработали=) Ты убрал их код?

      • admin:

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

        • zorra:

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

          • admin:

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

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

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

    • admin:

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

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

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

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