Статья рассчитана на вебмастера или продвинутого пользователя. Подробное руководство «для чайников» (со скриншотами) будет опубликовано немного позднее. Здесь представлен общий алгоритм и личный опыт очистки. Итак, приступим к поиску и удалению вирусов.
Подготовка
- Начинать очистку всегда нужно с компьютера администратора сайта. 80-85% заражений происходят по причине кражи паролей (FTP или от панели управления сайтом). Лучше это делать не только тем антивирусом, но и каким-либо вторым, т.к. заведомо мог пропустить вирус.
- Вторым шагом скачиваем все файлы сайта к себе на компьютер, обязательно сохраняем резервную копию и проверяем рабочую копию антивирусом. Лучше использовать для этих целей Avast или Nod32. Они на порядок лучше определяют web-вирусы. DrWeb и антивирус Касперского нередко пропускают простые вставки сторонних скриптов.
- После проверки и получения списка заражённых файлов в отчёте приступаем к очистке:
Очистка от вируса
- В первую очередь проверяем нет ли в отчёте вирусов типа phpshell, webshell, hacktool, trojan и т.п. Это как правило php файлы, через которые взломщик получает полный доступ к файлам сайта. Их нужно сразу удалить и из рабочей копии, и с FTP папки сайта. После чего сменить все пароли (ftp, баз данных mysql, пароли от административной части сайта и пароль от административного email ящика, указанного в настройках сайта, если такой имеется). Таких вирусов может и не быть на сайте. Если их нет, пароли менять всё-равно нужно.
- Далее нужно удалить вирусы, прикреплённые к основным файлам сайта. Это оставшиеся найденные антивирусом файлы. Для этого Вам потребуется любой текстовый редактор, который позволяет производить поиск и замену в файлах с использованием регулярных выражений. Я использую PhpED. Можно скачать полнофункциональную ознакомительную 30-ти дневную версию на официальном сайте. Как правило, оставшиеся вирусы прикрепляются либо вначале файла, либо в конце. Часто заражают только файл index.php в корневой папке сайта. Тогда достаточно просто удалить код вируса из index.php и шаг 3 можно пропустить. Если же файлов много, переходим к следующему шагу.
- Проанализируйте заражённые файлы. Вирусный код будет везде либо одинаковым, либо похожим. Если код одинаковый, с помощью выбранного ранее редактора заменяем его на пустую строку во всех файлах сайта, потенциально подверженных заражению (*.php;*.php4;*.php5;*.inc;*.class;*.js;*.html;*.htm;*.css;*.htc;). Если строки вируса немного видоизменяются в файлах, но имеют общую структуру, нужно производить поиск по регулярным выражениям. Самый простой вариант, когда начало и конец строки с вирусом одинаковы. Тогда регулярное выражение примет вид:
начало_вируса.*конец_вируса
Лучше перед заменой произвести просто поиск и проверить, не попали ли в список найденных «здоровые» файлы. Если нет, производим замену.
- Конечно не исключено, что антивирус не найдёт всех заражённых файлов. Для поиска не известных вирусов в своей работе мы используем и ряд своих сигнатур основанных также на регулярных выражениях, но требующих дополнительного анализа при их использовании. Этот аспект мы рассмотрим в отдельной статье. Здесь можно можно привести пример пары наиболее общих выражений (пункты 5 и 6).
- На всякий случай ищем скрытые iframe:
<s*iframe[^<>]*srcs*=s*('|"|)s*http://[^<>]*(width|height)[^<>]*=('|"|)(1|0|2|3|4|5)('|"|)[^d<>]*(width|height)[^<>]*=('|"|)(1|0|2|3|4|5)('|"|)[^d<>]*>s*<s*/s*iframes*>
Анализируем найденное, и что не Вами добавлено, удаляем. Данную регулярку есть смысл поискать и в sql дампе базы данных.
- Используя мультистроковый поиск проверяем .htaccess файлы на предмет соответствия такому регулярному выражению:
.*(HTTP_USER_AGENT|REFERER).* .*(Rewrite|Redirect).*http(|s)://
Это позволит выявить нестандартные перенаправления на сторонние сайты, которые выполняются только при выполнении каких-либо условий. Например, перенаправляются только посетители, пришедшие на сайт из поисковых систем. Такое перенаправление владелец сайта может долго не замечать, т.к. он чаще набирает адрес своего сайта в адресной строке.
- После проделанных операций ищем все изменённые Вами файлы и заменяем ими файлы на FTP. Для этого удобно использовать, например, поиск в total commander. Ищем все файлы изменённые за время работы над скачанной копией, выводим на панель, упаковываем в архив, распаковываем полученный архив в отдельной папке, переходим по полученному внутри этой папке дереву директорий в корневую папку сайта, копируем из неё всё (с заменой файлов) в корневую папку этого же сайта на FTP.
После очистки сайта конечно желательно проанализировать логи веб-сервера, чтобы разобраться в причине заражения. Но это не всегда представляется возможным. Нередко логи дня заражения уже удалены или сайт заразили, украв FTP пароли (тогда анализ логов ничего не даст). Достаточно и обязательно нужно выполнить несколько основных пунктов, которые снизят риск повторного заражения до минимума.
Автор: Oleg_Yozhik
Оригинал статьи на хабре:
http://habrahabr.ru/post/149619/
А первичная версия вот здесь:
http://сайт-антивирус.рф/page/lechenie_sajta_ot_virusov
Также полезно прочесть вот эту статью:
http://сайт-антивирус.рф/page/zashhita-sajta-ot-virusov
Её владелец сайта выкинул из текста