Pull to refresh

Детектор сайтов, заражающих компьютеры посетителей с помощью вредоносных Java-апплетов

Reading time3 min
Views7.8K
Как мы уже рассказывали на VolgaCTF2012, сейчас более чем в 2/3 случаев опасные сайты заражают компьютеры пользователей, загружая в браузер вредоносные Java-апплеты. Такое заражение может происходить при регулярном обновлении браузера, в некоторых случаях – даже если используется ОС не от Microsoft. Если на компьютере нет виртуальной машина Java, заражённый сайт «заботливо» предложит установить её версию с уязвимостью, после чего повторно атакует компьютер пользователя.Чтобы обнаруживать сайты, использующие этот способ заражения, Яндекс запустил специальный поведенческий анализатор вредоносного кода для Java-приложений. Он позволяет детектировать обфусцированный вредоносный код, который использует самые популярные на сегодняшний день уязвимости JRE. В результате с начала февраля было обнаружено более четырех тысяч зараженных сайтов, суммарная посещаемость которых до заражения достигала 1,5 млн. пользователей в сутки.

Одним из наиболее актуальных способов распространения вредоносного кода на сегодняшний день являются Java-эксплойты, которые встречаются в любом эксплойт-паке. Такая популярность обусловлена несколькими факторами:

  • использование Oracle Java более чем на 3 миллиардах компьютеров;
  • кроссплатформенность эксплойтов;
  • относительная простота эксплуатации уязвимостей;
  • в большинстве случаев Java-плагин включен в браузере.


Java-эксплойты обрели широкую популярность у злоумышленников из-за большого количества логических уязвимостей в Java. Такие уязвимости позволяют выполнить произвольный код незаметно для пользователя, потому что их использование обычно не сопровождается падением процессов браузера или виртуальной машины Java. С 2010 года злоумышленники использовали для заражения уязвимости CVE-2010–0806, CVE-2010–4452, CVE-2011–3544, CVE-2012-0500 и CVE-2012-4681, а с самого начала 2013 года стали активно использовать новую уязвимость СVE-2013-0433.


Рассмотрим СVE-2013-0433. Суть этой уязвимости заключается в том, что при помощи уязвимого метода com.sun.jmx.mbeanserver.MBeanInstantiator.findClass можно получить ссылку на класс из любого пакета по имени класса. Однако конструктор класса MBeanInstantiator является приватным и не может быть вызван напрямую. Нужная ссылка на объект класса MBeanInstantiator содержится в экземпляре класса com.sun.jmx.mbeanserver.JmxMBeanServer и может быть получена при помощи метода getMBeanInstantiator.Класс JmxMBeanServer имеет публичный конструктор. Таким образом чтобы повысить свои привилегии, достаточно выполнить:
javax.management.MBeanServer ms =
com.sun.jmx.mbeanserver.JmxMBeanServer.newMBeanServer("any", null, null, true);
com.sun.jmx.mbeanserver.MBeanInstantiator mi =
((com.sun.jmx.mbeanserver.JmxMBeanServer)ms).getMBeanInstantiator();
Class clazz = mi.findClass("some.restricted.class.here", (ClassLoader)null);


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



После посещения страницы происходит цепочка редиректов:


Посмотреть на Яндекс.Фотках

В итоге пользователь перенаправляется на страницу с эксплойтами:


Посмотреть на Яндекс.Фотках

При наличии уязвимой версии Java, вредоносный апплет 887.jar повышает свои привилегии в системе, загружает и запускает вредоносную программу. По данным сервиса VT на 12.02.2013, рассмотренный вредоносный апплет детектируют 5 антивирусов из 40, а устанавливаемое с его помощью вредоносное ПО не детектирует ни один антивирус из 40. Злоумышленники почти всегда обфусцируют или шифруют вредоносный код внутри Java-апплетов, что позволяет им обходить сигнатурные методы детектирования. Так, рассматриваемый образец после декомпиляции имеет вид:


Посмотреть на Яндекс.Фотках

Все строковые константы, встречающиеся в данном апплете, обфусцированы, имена переменных и классов изменены на случайные. В апплете эксплуатируется описанная уязвимость СVE-2013-0433:


Посмотреть на Яндекс.Фотках

Чтобы избежать заражения, мы рекомендуем: 
  • использовать актуальные версии ПО, обязательно обновлять Java и другие плагины;
  • отключить в браузере запуск Java-апплетов по умолчанию, и подтверждать их запуск только для доверенных сайтов;
  • использовать обычные антивирусы и следить за регулярностью обновления антивирусных баз.

Команда Безопасного Поиска Яндекса
Tags:
Hubs:
+4
Comments2

Articles