О детектировании атак типа drive-by download и новых векторах распространения вредоносного ПО через Flash-баннеры

Хабы: Информационная безопасность

Сегодня мы хотим рассказать вам о новом виде drive-by download атаки с помощью Flash-баннеров, и о том, как с ним бороться. Такая атака позволяет злоумышленникам распространять вирусы через сайт, не взламывая его. Вредоносное ПО распространяется через рекламные Flash-баннеры, с помощью которых веб-мастера хотят монетизировать свой сайт. При этом они сами могут не подозревать, что установленный на веб-странице баннер сделал их портал частью сети распространения вирусов.

Вредоносный код
Выполнение вредоносного JavaScript-кода, например, в контексте веб-браузера, возможно благодаря принадлежащего классу ExternalInterface методу call(), который появился в версии ActionScript 3.0. Процесс выполнения JavaScript-кода в контексте веб-браузеров, поддерживающих возможность работы с ActiveX, реализуется через компонент ActiveX для Shockwave Flash. А для веб-браузеров без такой возможности используется плагин для Shockwave Flash. Компонент ActiveX или плагин разбирает байткод переданного ему на обработку Flash-файла и формирует JavaScript-код, который будет выполнен в контексте веб-браузера, если во Flash-файле присутствует такой функционал. После того как JavaScript-код сформирован, происходит его дальнейшая передача на обработку через функции JavaScript, заранее заложенные в компоненте ActiveX или плагине для Shockwave Flash. На рисунке 1 показан список таких функций.

image

Рис.1 – JavaScript-функции, с использованием которых происходит формирование и дальнейшее выполнение кода, переданного в ExcternalInterface.call()

Ниже показан безвредный JavaScript-код тестового Flash-баннера, сформированный для выполнения в контексте веб-браузера компонентом ActiveX или плагином для Shockwave Flash.


Посмотреть на Яндекс.Фотках

Рис.2 – JavaScript-код переданного в ExcternalInterface.call() тестового Flash-баннера, который сформирован компонентом ActiveX или плагином для Shockwave Flash


Посмотреть на Яндекс.Фотках

Рис.3 – Результат выполнения ExcternalInterface.call() из тестового Flash-баннера

На рисунке 3 показано окно плагина FireBug для браузера Firefox с результатом отображения тестового Flash-баннера и вызовом заготовленного JavaScript-кода, не совершающего вредоносных действий. Таким образом, используя метод call() принадлежащий классу ExternalInterface, можно вызвать любую функцию на языке JavaScript. Это позволяет злоумышленникам выполнять вредоносные действия.


Посмотреть на Яндекс.Фотках

Рис.4 – Вызов ExcternalInterface.call() из Flash-баннера для использования на HTML-странице внешнего JavaScript-сценария


Посмотреть на Яндекс.Фотках

Рис.5 – Вызов ExcternalInterface.call() из Flash-баннера для похищения сессионных данных с использованием JavaScript

Есть ряд ограничений для успешного выполнения JavaScript-кода из Flash-баннера, которые применимы к среде выполнения Flash-файла и описаны на официальной странице справочника для функции fscommand() из пакета flash.system и применимы для ExcternalInterface.call(). Такие ограничения применяются в зависимости от внешних параметров. А именно, если свойство allowScriptAccess имеет значение:

• sameDomain (по умолчанию) — работа со сценариями разрешена только для SWF-файлов, находящихся в том же домене, что и web-страница;
• always — SWF может обращаться к HTML-странице, в которую он встроен, даже если он находится на другом домене;
• never — SWF-файл не может обращаться ни к каким HTML-страницам.

Cистема выявления вредоносного контента на веб-страницах, разработанная Яндексом, впервые обнаружила использование данного метода выполнения вредоносного JavaScript-кода в декабре 2010 года.

Читать дальше →

© Habrahabr.ru