В середине апреля мы обнаружили два новых SWF эксплойта, при детальном анализе которых выяснилось, что они не используют ни одну из известных нам уязвимостей. Мы послали эти эксплойты в Adobe и через несколько дней получили подтверждение – эксплойты эксплуатируют 0-day уязвимость, которой был присвоен номер CVE-2014-0515. Уязвимость находится в компоненте Pixel Bender, предназначенном для обработки видео и изображений.
Сампл первого эксплойта мы получили 14 апреля, а второго 16 апреля. Срабатывание на первый эксплойт мы зафиксировали в KSN 9 апреля, когда он задетектировался общей эвристической сигнатурой. Затем множество срабатываний было отмечено 14 и 16 апреля. Таким образом, с помощью эвристик нам удалось задетектировать неизвестную ранее угрозу.
По данным KSN, на зараженном сайте эксплойты лежали под именами movie.swf и include.swf. Оба эксплойта различаются только шелл-кодами. Стоит отметить, что второй обнаруженный эксплойт (include.swf) уже не детектировался первоначальной эвристической сигнатурой, поскольку содержал уникальный шелл-код.
Каждый эксплойт представляет собой незапакованное Flash видео. Action Script код внутри не обфусцирован и не зашифрован.
Как это обычно бывает в подобных эксплойтах, вначале выполняется HeapSpray подготовка динамической памяти для эксплуатации уязвимости. Причём в эксплойтах есть проверка версии операционной системы если обнаружена Windows 8, то применяется слегка модифицированный байт-код компонента Pixel Bender.
Фрагмент уязвимого кода Pixel Bender (красным прямоугольником выделены данные, изменяющийся в зависимости от системы)
Фрагмент декомпилированного кода эксплойта
Затем происходит непосредственно эксплуатация уязвимости. А именно изменяется один из указателей таблицы методов/виртуальных функций.
Любопытно, что в обоих эксплойтах присутствуют по два шелл-кода. Первый шелл-код одинаковый в обоих эксплойтах. Он достаточно короткий и подготавливает память для успешной работы второго шелл-кода.
Фрагмент первого шелл-кода при отладке из WinDBG
Вначале текущая память помечается доступной на чтение, исполнение и запись с помощью API-функции VirtualProtect, а затем с помощью VirtualAlloc выделяется дополнительная память. В эту память копируется второй шелл-код и на него передаётся управление. Вызовы API-функций и передача управления на второй шелл-код отмечены на скриншоте красными прямоугольниками.
Вторые шелл-коды у эксплойтов значительно отличаются.
У обнаруженного первым эксплойта (movie.swf) шелл-код типичный он выполняет поиск системных библиотек в памяти, а затем скачивает и запускает полезную нагрузку. К сожалению, на время нашего исследования ссылка оказалась неактивной.
Фрагмент второго шелл-кода эксплойта movie.swf, выполняющего загрузку и запуск полезной нагрузки
В другом эксплойте include.swf второй шелл-код оказался необычным. Он получает базовый адрес библиотеки flash10p.ocx, проводит в ней поиск определённых фрагментов и взаимодействует с плагином ‘ciscompeaddin5x0’- Cisco MeetingPlace Express Add-In версии 5×0. Этот плагин используется для совместного просмотра участниками веб-конференции документов/изображений на мониторе докладчика. Стоит отметить, что если на компьютере отсутствует хотя бы одна из этих программ (Adobe Flash Player ActiveX и Cisco MPE) нужной версии, экплойт не отработает.
Фрагмент второго шелл-кода эксплойта include.swf
Судя по всему, часть информации для эксплойта include.swf передаётся извне. По данным KSN referrer перехода на include.swf указывал на другой SWF файл stream.swf. В то же время referrer первого эксплойта movie.swf указывал на index.php, лежащий в той же папке, что и эксплойты (см. ниже). Нам не удалось точно установить полезную нагрузку эксплойта include.swf, так как не хватало данных, передаваемых с лендинга и/или другим эксплойтом.
Мы уверены, что все эти ухищрения были сделаны для того, чтобы выполнять вредоносную активность только у весьма определённой группы пользователей максимально незаметно для защитных средств. Мы предполагаем, что вышеупомянутый плагин Cisco может использоваться как для скачивания/исполнения полезной нагрузки, так и для прямого шпионажа за компьютером жертвы.
Оба найденных нами эксплойта распространялись с сайта, расположенного на http://jpic.gov.sy. Этот сайт был запущен в 2011 году Министерством юстиции Сирии и представляет собой онлайн-форму для отправки жалоб граждан на нарушение правопорядка. Мы полагаем, что целью атаки были сирийские диссиденты, выступающие против правительства.
Сайт уже был взломан в сентябре 2013 года, о чем сообщил предположительно сам хакер в своем твиттере.
Ссылка на эксплойты выглядит следующим образом: http://jpic.gov.sy/css/images/_css/***********. Когда мы заходили на сайт, обращений к папке «_css» не было. Мы предполагаем, что злоумышленники создали папку, имя которой, скорее всего, не выглядит подозрительно для администратора ресурса, и загрузили туда эксплойты. Вероятно, жертв перенаправляли на эксплойты с помощью фрейма или скрипта, расположенного на сайте. На 24 апреля число срабатываний наших продуктов на эти эксплойты превысило 30. Срабатывания зафиксированы у 7 уникальных пользователей, и все они из Сирии, что неудивительно, учитывая специфику сайта. Любопытно, что все атакованные пользователи ходили на заражённый сайт с помощью Mozilla Firefox разных версий.
Вероятно, атака была тщательно спланированной, и за ней стоят профессионалы достаточно высокого уровня. Об этом свидетельствует использование профессионально написанных 0-day эксплойтов, которыми был заражен единственный ресурс.
Кроме того, если первый эксплойт вполне стандартный и может заразить практически любой незащищенный компьютер, то второй эксплойт (include.swf) корректно отработает только у тех пользователей, у которых установлены Adobe Flash Player 10 ActiveX и Cisco MeetingPlace Express Add-In. В качестве вектора атаки был выбран компонент Flash Player Pixel Bender, который уже не поддерживается Adobe. Вирусописатели рассчитывали на то, что уязвимость в таком компоненте не будет найдена разработчиками, и это позволит эксплойтам дольше оставаться «рабочими». Все это говорит о том, что злоумышленники ориентировались не на массового пользователя.
Новая 0-day уязвимость во Flash Player (CVE-2014-0515) используется в атаках типа watering hole