В самый разгар подготовки к новогодним праздникам злые хакеры решили выпустить в интернет эксплойт для новоиспеченной уязвимости CVE-2012-4792, которая затрагивает 32-битные браузеры Internet Explorer 6-8 во всех линейках Windows от Windows XP до Windows 7.
В злодеянии подозревают китайских хакеров, якобы совершивших атаку на сайт совета по международным отношениям. Подробности можно почитать вот здесь.
Нам удалось заполучить ссылку на работающий эксплойт и провести детальный анализ его работы.
Сначала пользователь попадает на страницу exploit.html. Рассмотрим ее подробнее.
Скрипт проверяет версию браузера, наличие Flash плагина и текущий системный язык. Если браузер не является IE8, или в системе не установлено Flash-плагина, или системный язык не является китайским (материковым и тайваньским), английским, японским или русским, то скрипт прекращает свою работу (это в случае с нашим семплом, но в интернете могут быть варианты с другими, более мягкими требованиями). Далее скрипт загружает с помощью XMLHttpRequest файл под названием xsainfo.jpg, и если файл был успешно скачан, то осуществляются последние проверки атакуемой системы на пригодность: эксплойту для работы нужна либо Windows XP, либо Windows 7. Причем в случае с Windows 7 также необходимо, чтобы присутствовал либо пакет Office 2007/2010, либо версия Java Runtime Environment 1.6. Этот софт необходим эксплойту для обхода DEP и ASLR, о чем будет сказано ниже. Если эти требования выполнены, то на страницу вставляется флеш-ролик today.swf и айфрейм news.html.
Вот фрагмент загружаемой картинки — по виду несложно догадаться, что это зашифрованный PE-файл.
Флеш-ролик выполняет роль ‘заполнителя’ памяти: он размещает в памяти процесса Internet Explorer множество копий шеллкода стандартным HeapSpray методом.
После того как память оказывается заполнена, управление передается на скрипт страницы news.html. Этот скрипт, снова используя XMLHttpRequest, загружает, расшифровывает и исполняет содержимое файла robots.txt, в котором как раз содержится эксплойт для Internet Explorer. Мы протестировали работоспособность эксплойта под IE8 в Windows XP и Windows 7, и в обоих случаях управление было успешно передано на шеллкод.
Теперь о шеллкоде.
На нашей тестовой машине была установлена система Windows 7 SP1 с новейшей версией Java и офисным пакетом MS Office 2010. Передача управления на шеллкод в Windows 7 сильно осложняется тем, что у всех приложений принудительно включен DEP, позволяющий выполнять код только на тех участках памяти, которые были явно отмечены как исполняемые. Для того чтобы обойти DEP, авторы эксплойтов применяют технику, известную как ROP (Return Oriented Programming), когда эксплойт ‘заимствует’ небольшие куски кода по заранее известным адресам из исполняемых областей памяти. Для противодействия ROP была введена технология ASLR, которая гарантирует отсутствие заранее известных адресов с кусочками кода и которая также повсеместно используется в Windows 7. Проблема состоит лишь в том, что для того чтобы ASLR работал, программу надо скомпилировать с поддержкой данной технологии, а это делают не все. К примеру, авторам этого эксплойта было известно, что в составе JRE версии 1.6 присутствует библиотека msvcr71.dll без поддержки данной технологии, а в Office 2010 — библиотека hxds.dll с тем же недостатком. JRE у нас на машине была самой новой, и поэтому ROP-‘гаджеты’ эксплойт заимствовал от hxds.dll.
Инициализирующая часть шеллкода не представляет собой ничего особенного — обычное вычисление базового адреса kernel32.dll и последующее заполнение своей ‘таблицы импортов’:
Однако мы отметили одну важную деталь: когда зловред перебирает загруженные модули, он ищет не только kernel32.dll, но также еще prloader.dll, входящий в состав KIS, и ccVrTrst.dll, который, видимо, тоже является частью какого-то антивирусного продукта. Если шеллкод обнаруживает загруженные антивирусные модули, то он прекращает работу, не совершив ничего вредоносного. Боится.
Если же антивирусных модулей не было и инициализация прошла успешно, шеллкод копирует из кеша Internet Explorer загруженную ранее ‘картинку’ и расшифровывает, получая на выходе вредоносный DLL файл, который сохраняется в C:UsersAppDataLocalTempLowflowertep.jpg и на который впоследствии передается управление через LoadLibraryA.
HTML-файлы эксплойта детектируются Kaspersky Internet Security как HEUR:Trojan.Script.Generic, а сама полезная нагрузка — расшифрованная картинка — как Backdoor.Win32.Gulpix.a.
На момент написания статьи Microsoft еще не выпустила обновления для Internet Explorer 8, но они опубликовали инструкцию, с помощью которой можно предотвратить использование этой уязвимости на своем компьютере http://support.microsoft.com/kb/2794220. Помимо инструкций для индивидуальных пользователей, там также присутствуют советы администраторам корпоративных сетей, позволяющие массово устранить уязвимость на всех подвластных им компьютерах.
Обновление 2013-01-15:
Microsoft выпустила обновление для IE 6-8, устраняющее данную уязвимость. Все обновляемся!
Новогодний 0-day