Диаграмма взаимосвязей в исходном коде основного модуля Flame
Диаграмма взаимосвязей в исходном коде основного модуля Flame

Специалисты McAfee и «Лаборатории Касперского» провели предварительный анализ основного модуля шпионской программы Flame, которая уже удостоилась звания самой сложной в истории. Напомним, что эта программа содержит около 20 мегабайт исходного кода в большом количестве специализированных модулей. При первоначальной инсталляции на компьютер устанавливается только шесть компонентов размером 6 МБ, в том числе базовый модуль mssecmgr.ocx.

Анализ McAfee даёт понять, с проблемой какой сложности столкнулись сейчас вирусные аналитики. После декомпиляции базовый модуль содержит около 650 000 строк обфусцированного кода на языке программирования C, при этом имеются индикаторы, что декомпиляция не даёт точного результата, и на самом деле размер программы составляет около 750 000 строк кода. И это всего лишь один из многочисленных модулей. Его сложность показана на диаграмме взаимосвязей внутри программы, которая опубликована вверху (кликабельна).

Модуль содержит 4400+ вызовов к строкам деобфускатора. Высокий уровень обфускации используется, чтобы усложнить анализ программы и снизить риск повторного использования кода третьими лицами.

Внутри основного модуля находится код всех необходимых библиотек: SSH, ZLib, веб-сервер и т.д. Обнаружено более двух десятков криптографических функций Blowfish, MD5/MD4 и др.

Flame оснащён продвинутыми функциями для шпионажа: парсинг файловой системы, парсинг ZIP-файлов, разбор многочисленных форматов файлов, в том числе PDF, Word, Excel и др., продвинутый способ для скрытной отправки собранной информации на удалённый сервер: это делается путём запуска дополнительных сущностей Internet Explorer, в которые внедряется код, так что запуск IE не вызывает подозрений у антивируса и файрвола.

Ещё одна интересная деталь — подробное исследование мобильных устройств, которым занимается модуль Beetlejuice. Он ищет Bluetooth-устройства и скачивает оттуда список контактов, в том числе список контактов в социальных сетях. То же самое делается на локальном компьютере.

Вот список некоторых модулей и функций Flame.

AUTORUN_INFECTOR – занимается инфицированием через AutoRun
BOOST – создаёт список «интересных» файлов после анализа файловой системы, по заданной маске
WEASEL – создаёт список директорий на компьютере
JIMMY – поддержка парсинга файлов
TELEMETRY – связь с управляющим сервером
SUICIDE – процедура самоуничтожения
EUPHORIA – различные эксплойты
BEETLEJUICE – интерфейс и управление устройствами Bluetooth
BUNNY – пока непонятно
DBQUERY – пока непонятно
GADGET – пока непонятно
PLATYPUS – пока непонятно
CLAN – модуль Lua, возможно, связанный с эксплойтами удаленных целей
CRUISE – разбор доменов NT
DRILLER – пока непонятно
AUDITION – прекращение процессов, работа с антивирусами
SECURITY – идентификация программ, которые могут помешать работе Flame (антивирусы, файрволы)
GATOR – коммуникации с управляющим сервером
LIMBO – создаёт бэкдор-аккаунты на других машинах в домене с именем пользователя HelpAssistant
FROG – модуль заражения других компьютеров с использованием аккаунта HelpAssistant
MICROBE – запись аудио
SNACK – прослушивает сетевые интерфейсы, сохраняет пакеты NBNS в лог
MUNCH – HTTP-сервер, реагирующий на запросы “/view.php” и “/wpad.dat”
VIPER – модуль для скриншотов
HEADACHE – пока непонятно

Это неполный список, который будет дополнен в будущем, по мере более подробного анализа исходных кодов. Очевидно, что анализ продолжится ещё долго и станет темой не одной конференции.



Оставить мнение