Одной из важнейших составляющих любой вредоносной атаки является ее незаметность как для систем защиты, так и для жертвы. Основную роль в осуществлении скрытой атаки играют эксплойты к уязвимостям в ПО, с помощью которых можно незаметно загрузить на компьютер жертвы вредоносный код. Эксплойты, как правило, распространяются в эксплойт-паках, которые представляют собой плагин-детект (определяет, какое ПО и каких версий установлено у пользователя) и набор из нескольких эксплойтов, один из которых выдается пользователю в случае обнаружения подходящей уязвимости.
Не так давно мы обнаружили новый способ скрыть атаку с использованием эксплойтов – злоумышленники упаковали эксплойт-пак во Flash-файл.
Загрузка эксплойтов
Стандартный способ осуществления drive-by атаки – размещение на веб-странице ссылки на страницу с эксплойт-паком (лендинг), подгружающим пользователю нужный эксплойт. С точки зрения защитного ПО данная схема демаскирует все компоненты эксплойт-пака, поскольку они просто подгружаются на странице, в результате эксплойты и сам плагин-детект присутствуют в трафике. Чтобы атака осталась незамеченной, злоумышленникам приходится отдельно маскировать все компоненты.
Новый нестандартный подход с использованием Flash-упаковки определенно является более эффективным для злоумышленников. Стандартная лендинг-страница отсутствует. Пользователь по ссылке попадает на страницу с упакованным Flash-объектом, который является эксплойт-паком, и файлом конфигурации в виде картинки. Упакованный Flash-файл с эксплойт-паком загружается на страницу в браузере с правами доступа к странице на чтение и модификацию, то есть может дописывать на страницу эксплойты, которые впоследствии будут исполняться.
Разберем как это работает на конкретном примере эксплойт-пака Neutrino.
Вот как выглядит упакованный Flash-объект:
Упакованный Flash-объект (эксплойт-пак)
И вот как он выглядит без обфускации
Flash-объект (эксплойт-пак) без обфускации
Упаковка должна защитить вредоносный объект от детекта. Автоматически большинством распространенных деобфускаторов такой Flash-объект не вскрывается. Например, SWF Decompiler подвисает и выдает ошибку.
Последствия применения одного из стандартных деобфускаторов к Flash-объекту эксплойт-пака Neutrino
При этом Flash-объект записывается на страницу в браузере пользователя с параметром allowscriptaccess = «always», позволяющим модифицировать страницу, даже если сам объект подгружен с другого домена. С одной стороны, не очень безопасно давать Flash доступ на модификацию страницы, так как назначение Flash-объектов зачастую не требует таких возможностей, и это наводит на подозрение. В то же время это вполне легальная опция, и очень много Flash-контента грузится именно так. Благодаря этой опции вредоносный Flash-объект из своих бинарных данных просто дописывает на страницу эксплойты.
Таким образом, вредоносного контента нет ни в трафике, ни на странице, передаваемой браузеру. Все скрыто за хорошим упаковщиком, а эксплойты появляются по ходу обработки страницы браузером.
Содержимое Flash-объекта
Посмотрим, что содержит в себе изучаемый Flash-объект и что он пишет на веб-страницу. После распаковки мы видим шесть вложенных бинарных объектов. Эти бинарные объекты закодированы RC4, а некоторые еще и сжаты стандартным алгоритмом deflate.
Закодированные бинарные объекты внутри Flash-объекта
Вот как расшифровывается и отдается один из объектов:
Код расшифровки и вставки эксплойта на страницу
Остальные объекты раскрываются аналогично.
Перечислим бинарные объекты, содержащиеся во Flash-паке:
- Эксплойт к уязвимости CVE-2013-2551 в Internet Explorer
- Вредоносная .dll, которая входит и в другие версии эксплойт-пака Neutrino (о ней будет рассказано ниже).
- Два эксплойта к уязвимости CVE-2014-6332 в обработчике vbs IE:
- Эксплойт к уязвимости 2014-0569 в Adobe Flash
- Эксплойт к уязвимости CVE-2014-0515 в Adobe Flash
Эксплойт к уязвимости CVE-2013-2551
Эксплойты к уязвимости CVE-2014-6332
Эксплойт к уязвимости 2014-0569
Эксплойт к уязвимости CVE-2014-0515
Кстати, плагин-детекта для эксплойтов к Adobe Flash в данном эксплойт-паке нет, версия Adobe Flash проверяется средствами ActionScript. Версии Adobe Flash, подходящие для атаки с использованием эксплойтов, прописаны в коде Flash-пака:
В последних модификациях внесены изменения во Flash-пак, в том числе, добавлен еще один эксплойт к уязвимости CVE-2015-0536 в Adobe Flash.
Конфигурационный файл
Посмотрим на одну интересную функцию во Flash-паке.
Напомним, что вместе с Flash-объектом на странице лендинга размещена картинка (конфигурационный файл).
Картинка, вставленная на страницу
Специальная функция считывает эту картинку со страницы лендинга, раскодирует ее Base64 и RC4 и получает конфигурационный файл.
Функция получения конфигурационного файла
Конфигурационный файл содержит ключи и идентификаторы рассмотренных выше эксплойтов, которые можно загружать пользователю. Наличие файла конфигурации позволяет злоумышленникам работать гибко: они могут, не меняя самого эксполойт-пака, задавать параметры его работы, оптимальные в определенный период времени. Например, указывать приоритетные эксплойты или хранить отдельно ключи для расшифровки объектов в паке.
Расшифрованный из картинки конфигурационный файл
Впрочем, в последующих модификациях Flash-пака файл конфигурации выполнен уже не в виде отдельной картинки, а содержится в самом эксплойт-паке.
Получение нагрузки
Шелкод одного из эксплойто в— код vbs с бинарным кодом в строке, который выполняется в результате эксплуатации уязвимости CVE-2014-6332 в обработчике vbs IE. В результате в папку «%temp%/System32/ загружается файл shell32.dll.
Путь и имя загруженного файла похожи на адрес и имя стандартных библиотек Windows. Это позволяет, применив стандартную технику dll hijacking, не использовать функции run, start, open и т.д. и таким образом скрыть от антивируса запуск вредоносной .dll.
Использование dll hijacking shell32.dll
Эксплойт меняет переменную окружения sysdir и пытается подгрузить System.ShellApplication – тем самым стартует вредоносная .dll.
Запущенная .dll – это дропер, который загружает на компьютер жертвы и запускает скрипт «p.js».
Основная часть кода shell32.dll
Запускаемый скрипт p.js
Этот скрипт и является загрузчиком целевого вредоносного файла.
Распространение
Версия Flash-пака, описанная в данной статье, появилась в конце 2014 года и активно распространялась в течение первого квартала 2015 года. Появились и новые модификации Flash-пака, однако принцип их работы остался прежним.
Только в марте 2015 года мы зафиксировали атаки Flash-пака Neutrino на компьютерах 60451 пользователей. В среднем каждый день атаке подвергались около 2 тысяч пользователей, а в отдельные дни число потенциальных жертв увеличивалось до 5-6 тысяч.
Количество уникальных пользователей, атакованных Flash-паком Neutrino
Преимущественно этот эксплойт-пак используется в атаках на пользователей в США и Канаде.
Заключение
Относительно новая техника распространения эксплойтов с использованием Flash-пака для злоумышленников оказалась довольно удачной. Стандартные свойства Flash позволяют им упаковать эксплойт-пак во Flash-объект и скрыть его обфускатором. А возможность Flash задавать параметры доступа к странице позволяет записать эксплойты на страницу в браузере пользователя. При этом в трафике и подгружаемой странице компонентов эксплойт-пака нет.
Несмотря на то, что вирусописатели постоянно обновляют эксплойт-пак и модифицируют код вредоносной Flash, чтобы сбить детектирование, «Лаборатория Касперского» вовремя реагирует на эти угрозы. Помимо стандартных методов защиты, наши продукты используют специальный компонент «Защита от эксплойтов» (AEP), который детектирует данную угрозу с помощью поведенческого анализа.
«Лаборатория Касперского» детектирует данный Flash-пак как HEUR:Exploit.Script.Blocker, HEUR:Exploit.SWF.Generic.
Как прячут эксплойт-паки во Flash-объекте
Алексей
Красивая статья. Красиво написано. Но не хватает самого главного — как защититься от этой напасти обычному пользователю??? Где хоть какая-нибудь инструкция?
Виктор
Согласен с Алексеем. Все расписано гладко и красиво. Проверил свой комп, антивирус нашел 11 уязвимых программ и 2 уязвимости операционной программы. Прочитал эту публикацию и что дальше? Я не программист и не хакер, я простой пользователь.Где ваши рекомендации что делать дальше? Удалить все это, но я не знаю как это отразится на работоспособности программ и системы. Сидеть изучать.., на это уйдет уйма времени, которое необходимо мне для работы ради которой я приобрел это достижение человечества. Хотелось бы чтобы Касперский кроме статистики, которая кроме общей информации нам ничего не дает, предлагал бы и полезную практическую помощь в этих проблемах.
E.K.
Да какой тут совет можно дать? Обновляйте ПО как можно чаще — большинство дырок уже закрыты. Для эксплуатация оставшегося меньшинства нужен запуск зловреда — не запускайте незнакомые экзешники, не открывайте странные документы.
землянин
А я вот наоборот, хочу заразиться, но ничего не получается. Наверное иммунитет выработался.