Как прячут эксплойт-паки во Flash-объекте

Одной из важнейших составляющих любой вредоносной атаки является ее незаметность как для систем защиты, так и для жертвы. Основную роль в осуществлении скрытой атаки играют эксплойты к уязвимостям в ПО, с помощью которых можно незаметно загрузить на компьютер жертвы вредоносный код. Эксплойты, как правило, распространяются в эксплойт-паках, которые представляют собой плагин-детект (определяет, какое ПО и каких версий установлено у пользователя) и набор из нескольких эксплойтов, один из которых выдается пользователю в случае обнаружения подходящей уязвимости.

Не так давно мы обнаружили новый способ скрыть атаку с использованием эксплойтов — злоумышленники упаковали эксплойт-пак во Flash-файл.

Загрузка эксплойтов Стандартный способ осуществления drive-by атаки — размещение на веб-странице ссылки на страницу с эксплойт-паком (лендинг), подгружающим пользователю нужный эксплойт. С точки зрения защитного ПО данная схема демаскирует все компоненты эксплойт-пака, поскольку они просто подгружаются на странице, в результате эксплойты и сам плагин-детект присутствуют в трафике. Чтобы атака осталась незамеченной, злоумышленникам приходится отдельно маскировать все компоненты.

Новый нестандартный подход с использованием Flash-упаковки определенно является более эффективным для злоумышленников. Стандартная лендинг-страница отсутствует. Пользователь по ссылке попадает на страницу с упакованным Flash-объектом, который является эксплойт-паком, и файлом конфигурации в виде картинки. Упакованный Flash-файл с эксплойт-паком загружается на страницу в браузере с правами доступа к странице на чтение и модификацию, то есть может дописывать на страницу эксплойты, которые впоследствии будут исполняться.

Разберем как это работает на конкретном примере эксплойт-пака Neutrino.

Вот как выглядит упакованный Flash-объект:

Flash-exploit_1

Упакованный Flash-объект (эксплойт-пак)

И вот как он выглядит без обфускации

Flash-exploit_2

Flash-объект (эксплойт-пак) без обфускации

Упаковка должна защитить вредоносный объект от детекта. Автоматически большинством распространенных деобфускаторов такой Flash-объект не вскрывается. Например, SWF Decompiler подвисает и выдает ошибку.

Flash-exploit_3Flash-exploit_4

Последствия применения одного из стандартных деобфускаторов к Flash-объекту эксплойт-пака Neutrino

При этом Flash-объект записывается на страницу в браузере пользователя с параметром allowscriptaccess = «always», позволяющим модифицировать страницу, даже если сам объект подгружен с другого домена. С одной стороны, не очень безопасно давать Flash доступ на модификацию страницы, так как назначение Flash-объектов зачастую не требует таких возможностей, и это наводит на подозрение. В то же время это вполне легальная опция, и очень много Flash-контента грузится именно так. Благодаря этой опции вредоносный Flash-объект из своих бинарных данных просто дописывает на страницу эксплойты.

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

Содержимое Flash-объекта Посмотрим, что содержит в себе изучаемый Flash-объект и что он пишет на веб-страницу. После распаковки мы видим шесть вложенных бинарных объектов. Эти бинарные объекты закодированы RC4, а некоторые еще и сжаты стандартным алгоритмом deflate.

Flash-exploit_5

Закодированные бинарные объекты внутри Flash-объекта

Вот как расшифровывается и отдается один из объектов:

Flash-exploit_6

Код расшифровки и вставки эксплойта на страницу

Остальные объекты раскрываются аналогично.

Перечислим бинарные объекты, содержащиеся во Flash-паке:

Эксплойт к уязвимости CVE-2013–2551 в Internet Explorer Flash-exploit_7

Эксплойт к уязвимости CVE-2013–2551

Вредоносная .dll, которая входит и в другие версии эксплойт-пака Neutrino (о ней будет рассказано ниже). Два эксплойта к уязвимости CVE-2014–6332 в обработчике vbs IE: Flash-exploit_8Flash-exploit_9

Эксплойты к уязвимости CVE-2014–6332

Эксплойт к уязвимости 2014–0569 в Adobe Flash Flash-exploit_10

Эксплойт к уязвимости 2014–0569

Эксплойт к уязвимости CVE-2014–0515 в Adobe Flash Flash-exploit_11

Эксплойт к уязвимости CVE-2014–0515

Кстати, плагин-детекта для эксплойтов к Adobe Flash в данном эксплойт-паке нет, версия Adobe Flash проверяется средствами ActionScript. Версии Adobe Flash, подходящие для атаки с использованием эксплойтов, прописаны в коде Flash-пака:

Flash-exploit_13

В последних модификациях внесены изменения во Flash-пак, в том числе, добавлен еще один эксплойт к уязвимости CVE-2015–0536 в Adobe Flash.

Конфигурационный файл Посмотрим на одну интересную функцию во Flash-паке.

Напомним, что вместе с Flash-объектом на странице лендинга размещена картинка (конфигурационный файл).

Flash-exploit_12

Картинка, вставленная на страницу

Специальная функция считывает эту картинку со страницы лендинга, раскодирует ее Base64 и RC4 и получает конфигурационный файл.

Flash-exploit_20

Функция получения конфигурационного файла

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

Flash-exploit_14

Расшифрованный из картинки конфигурационный файл

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

Получение нагрузки Шелкод одного из эксплойто в— код vbs с бинарным кодом в строке, который выполняется в результате эксплуатации уязвимости CVE-2014–6332 в обработчике vbs IE. В результате в папку »%temp%/System32/ загружается файл shell32.dll.

Путь и имя загруженного файла похожи на адрес и имя стандартных библиотек Windows. Это позволяет, применив стандартную технику dll hijacking, не использовать функции run, start, open и т.д. и таким образом скрыть от антивируса запуск вредоносной .dll.

Flash-exploit_15

Использование dll hijacking shell32.dll

Эксплойт меняет переменную окружения sysdir и пытается подгрузить System.ShellApplication — тем самым стартует вредоносная .dll.

Запущенная .dll — это дропер, который загружает на компьютер жертвы и запускает скрипт «p.js».

Flash-exploit_16

Основная часть кода shell32.dll

Flash-exploit_17

Запускаемый скрипт p.js

Этот скрипт и является загрузчиком целевого вредоносного файла.

Распространение Версия Flash-пака, описанная в данной статье, появилась в конце 2014 года и активно распространялась в течение первого квартала 2015 года. Появились и новые модификации Flash-пака, однако принцип их работы остался прежним.

Только в марте 2015 года мы зафиксировали атаки Flash-пака Neutrino на компьютерах 60451 пользователей. В среднем каждый день атаке подвергались около 2 тысяч пользователей, а в отдельные дни число потенциальных жертв увеличивалось до 5–6 тысяч.

Flash-exploit_18

Количество уникальных пользователей, атакованных Flash-паком Neutrino

Преимущественно этот эксплойт-пак используется в атаках на пользователей в США и Канаде.

Flash-exploit_19

География атак Flash-пака Neutrino (март 2015)

Заключение Относительно новая техника распространения эксплойтов с использованием Flash-пака для злоумышленников оказалась довольно удачной. Стандартные свойства Flash позволяют им упаковать эксплойт-пак во Flash-объект и скрыть его обфускатором. А возможность Flash задавать параметры доступа к странице позволяет записать эксплойты на страницу в браузере пользователя. При этом в трафике и подгружаемой странице компонентов эксплойт-пака нет.

Несмотря на то, что вирусописатели постоянно обновляют эксплойт-пак и модифицируют код вредоносной Flash, чтобы сбить детектирование, «Лаборатория Касперского» вовремя реагирует на эти угрозы. Помимо стандартных методов защиты, наши продукты используют специальный компонент «Защита от эксплойтов» (AEP), который детектирует данную угрозу с помощью поведенческого анализа.

«Лаборатория Касперского» детектирует данный Flash-пак как HEUR: Exploit.Script.Blocker, HEUR: Exploit.SWF.Generic.

Полный текст статьи читайте на Лаборатория Касперского