Исследование

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

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

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

Загрузка эксплойтов

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

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

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

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

Flash-exploit_1

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

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

Flash-exploit_2

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

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

Flash-exploit_3
Flash-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_8
    Flash-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-пака для злоумышленников оказалась довольно удачной. Стандартные свойства Flash позволяют им упаковать эксплойт-пак во Flash-объект и скрыть его обфускатором. А возможность Flash задавать параметры доступа к странице позволяет записать эксплойты на страницу в браузере пользователя. При этом в трафике и подгружаемой странице компонентов эксплойт-пака нет.

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

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

  1. Алексей

    Красивая статья. Красиво написано. Но не хватает самого главного — как защититься от этой напасти обычному пользователю??? Где хоть какая-нибудь инструкция?

  2. Виктор

    Согласен с Алексеем. Все расписано гладко и красиво. Проверил свой комп, антивирус нашел 11 уязвимых программ и 2 уязвимости операционной программы. Прочитал эту публикацию и что дальше? Я не программист и не хакер, я простой пользователь.Где ваши рекомендации что делать дальше? Удалить все это, но я не знаю как это отразится на работоспособности программ и системы. Сидеть изучать.., на это уйдет уйма времени, которое необходимо мне для работы ради которой я приобрел это достижение человечества. Хотелось бы чтобы Касперский кроме статистики, которая кроме общей информации нам ничего не дает, предлагал бы и полезную практическую помощь в этих проблемах.

    1. E.K.

      Да какой тут совет можно дать? Обновляйте ПО как можно чаще — большинство дырок уже закрыты. Для эксплуатация оставшегося меньшинства нужен запуск зловреда — не запускайте незнакомые экзешники, не открывайте странные документы.

  3. землянин

    А я вот наоборот, хочу заразиться, но ничего не получается. Наверное иммунитет выработался.

Отчеты

CloudSorcerer: новая APT-угроза, нацеленная на российские государственные организации

«Лаборатория Касперского» обнаружила новую APT-угрозу CloudSorcerer, нацеленную на российские государственные организации и использующую облачные службы в качестве командных серверов аналогично APT CloudWizard.

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике