Внедрение кода в объекты Flash

Внедрение кода в объекты Flash

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

www.gnucitizen.org
перевод: Владимир Куксенок

Файлы Flash могут быть достаточно легко заражены злонамеренным кодом, который может принести значительные проблемы вашей сети. Концепция не нова. Фактически с появлением Macromedia Flash, разработчики получили возможность корректировать чужие SWF файлы, а также использовать более устойчивую, основанную на компонентах, среду разработки. Однако с ростом популярности Flash приложений, были найдены способы инфицирования SWF объектов и использования Flash в качестве транспортного механизма для различных типов злонамеренного ПО.

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

Для решения задач этой статьи я нашел несколько бесплатных утилит, работающих из командной строки, которые можно использовать для создания новых злонамеренных объектов Flash, а также для анализа уже существующих. Это следующие утилиты:

  • Mtasc – отличная утилита для компиляции ActionScript
  • Flare – замечательная небольшая утилита для декомпилирования SWF файлов (получения кода ActionScript)
  • Swfmill - конвертер SWF в XML и обратно
  • Swftools – набор разных полезных утилит

Опыты будут вестись над видеоклипом “The Corruptibles”, весьма интересной и неплохо сделанной анимацией, отлично подходящей для наших целей.

Mtasc, Swtools и частично Swfmill используются для создания Flash троянов, а Flare и опять же Swfmill очень хорошо подходят для их анализа. Не останавливаясь на анализе злонамеренных объектов Flash, вернемся к принципам инфицирования SWF файлов.

Вначале нужно разобраться с некоторыми вещами, необходимыми для понимания всего процесса. Так как SWF файлы ограничены возможностями проигрывателя Flash, атакующий ограничен кодом JavaScript или Flash ActionScript. В большинстве случаев применяется их комбинация. Несмотря на ограничения, JavaScript и ActionScript хорошо подходят для организации web атак.

Для начала нам нужно создать тело будущего трояна. Им может быть что-то вроде этого:

class Backdoor {
function Backdoor() {
}

static function main(mc) {
getURL("javascript:alert('hello from backdoor')");
}
}

Как видите, приведенный код описывает класс, содержащий статический метод main и конструктор класса. В этом скрипте наличие класса не принципиально, но так как мы собираемся компилировать его в SWF файл с помощью Mtasc, это налагает определенные правила на стиль и синтаксис.

Чтобы скомпилировать код трояна в SWF, нужно выполнить следующую команду:

c:\Mtasc\mtasc.exe -swf backdoor.swf -main -header 500:365:24 backdoor.as

Опишем наиболее важные используемые флаги. Флаг ‘-main’ говорит Mtasc, что присутствует статический метод main. Флаг ‘-header’ в качестве параметра принимает параметры видеоклипа. Приведенная команда создает видеоклип размером 500 на 365, с частотой обновления 24 кадра в секунду. Эти параметры могут быть получены из SWF файла, в который планируется внедрение трояна, с помощью Swfmill или Swftools.

Само же внедрение трояна производится с помощью swfcombine следующим образом:

c:\Swftools\swfcombine.exe -o The_Corruptibles_backdoored.swf -T backdoor.swf The_Corruptibles.swf

Эта команда создает новый видеоклип с именем The_Corruptibles_backdoored.swf, связывающий backdoor.swf с The_Corruptibles.swf.

Несмотря на то, что описанный механизм инфицирования очень прост, он достаточно надежен. Могут ли атакующие использовать его для проникновения в вашу корпоративную сеть? Учитывая тот факт, что методы атаки с помощью JavaScript и ActionScript разработаны с учетом того, что браузеры очень доверчивы, могу сказать, что атакующие имеют неплохие шансы нанести серьезный урон.

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

Ваша приватность умирает красиво, но мы можем спасти её.

Присоединяйтесь к нам!