Содержание |
Как правило, в код страницы добавляется фрагмент чистого HTML или JavaScript кода, который при выполнении подгружает деструктивный контент с стороннего сайта. Далее этим кодом используются "дыры" в безопасности веб-браузера и ОС (Windows), заботливо оставленные привилегиями административного аккаунта ;-)
Иногда вредоносный код добавляется в серверные скрипты таким образом, что обычный посетитель сайта вообще ничего не увидит (точней, получит страничку в том виде как она и должна быть), но поисковики получат совершенно другую страницу. Кстати, иногда бывает с точностью до наоборот :-)
Некоторые виды "зверьков" попытаюсь собрать на этой страничке.
Например, через Яндекс. Заходим в панель вебмастера, ищем в левой менюшке Безопасность.
Еще один сервис Safebrowsing может подсказать, что именно следует искать. В адресной строке впишите проблемный сайт.
Можно открыть страничку в браузере и в меню "Вид" выбрать соответствующий пункт - откроется смотрелка. Или не откроется - в некоторых случаях браузер может просто "повеситься", а в некоторых просмотр кода запретит Safebrowsing. Это не страшно. Всегда можно скачать страничку wget'ом или curl'ом (тут никсы рулят) и посмотреть полученный код в текстовом редакторе.
При скачивании можно указать Referer параметром -e
$ curl -e http://yandex.ru/ http://my-super-site.ru/
Здесь мы сообщаем, что "пришли" на страничку с Яндекса. Пригодится на тот случай, когда скрипт отдает простому пользователю нормальный контент, а поисковику "левый" (см. выше). Код запрашиваемой странички будет выведен в консоль. Чтобы код сохранить в файл, нужно сделать перенаправление вывода в файл:
$ curl -e http://yandex.ru/ http://my-super-site.ru/ >problem-page.txt
Кратко - дыры в Internet Explorer, которыми активно пользуются вирусы-троянчики. Что такое вирусы и трояны, а так же выяснить количество и характер "дыр" в OS Windows рекомендую самостоятельно (прогуляйтесь на microsoft.com, Google, Wikipedia).
Процесс одновременно и творческий и рутинный. Творческий - потому что имеется много различных видов "левого" кода. Рутинный - потому что придётся просмотреть множество директорий.
Следует заметить, что не имеет смысла делать только половину работы. Допустим, почистили код на сервере, но оставили старый пароль для ftp-доступа - будьте уверены, что бот скоро наведается снова. Или, пароль сменили, но не удалили троянов/вирусню на своем компьютере, не установили заплатки/антивирь - не вопрос, через некоторое время новый пароль будет скомпрометирован.
Это наиболее частая причина.
Во первых, необходимо сменить пароль FTP-доступа. Если имеется несколько ftp-аккаунтов, которые могут иметь доступ к скриптам, то пароли требуется поменять у всех, если только по логам не разберете, каким именно аккаунтом воспользовались. Впрочем, периодическая плановая смена паролей никогда не была плохой идеей. Новые пароли рекомендуется записать в текстовый файл и ни в коем случае не сохранять в проводнике Windows.
Если есть актуальная и не поврежденная резервная копия сайта... хм, их кто то делает? ;-) Если есть резервная копия - просто заливаем её на сервер.
Если копии нет - придётся лечить ручками. Заходим с чистого (без вирусов, с полным комплектом "заплаток") компьютера на сервер по ftp. Смотрим индексный файл (index.php, index.html) на предмет наличия постороннего кода. Если в файле обнаружен посторонний код, смотрим дату изменения (предполагаем, что последнюю "правку" файла выполнил бот) и ищем файлы (во всех директориях) с этой же датой. Удаляем везде лишний код, смотрим в браузере. Так проходим абсолютно все директории, осматривая подозрительные файлы. По окончании лечения очищаем кэш браузера и проверяем чистоту отдаваемого кода ещё раз.
Надо заметить, что могут быть повреждены так же картинки index.jpg, index.gif - их придётся восстановить из резервной копии. Бывают случаи, когда весь файл состоит только из "левого" кода или рабочий код повреждён. В этих случаях вряд ли стоит говорить о лечении путём правки файла.
При наличии shell-доступа к серверу задача существенно упрощается, так как появляется возможность использовать команды grep, find и т.п.