Как уже упоминалось в прошлом блогпосте про Flame, его объем кода и функциональность настолько обширны, что их полный анализ займёт несколько месяцев. Мы планируем по мере обнаружения публиковать наиболее важные и интересные подробности, связанные с его функционалом.
В данный момент мы получаем множество запросов о том, как проверить компьютеры на наличие заражения Flame. Естественно, самый простой ответ (для нас) — это посоветовать использовать Анитвирус Касперского или Kaspersky Internet Security. Наши продукты успешно детектируют и удаляют все возможные модификации главного модуля и дополнительных компонентов Flame.
Однако для тех, кто хочет сам провести тщательную проверку, в конце статьи мы даем необходимые рекомендации и советы.
MSSECMGR.OCX
Основной модуль Flame — это DLL-файл под названием mssecmgr.ocx. Мы обнаружили две модификации этого модуля. На большинстве заражённых машин содержалась «большАя» версия — 6 Мбайт, которая содержит в себе и развёртывает дополнительные модули. «Малая» версия весит всего 900 Кбайт и не содержит дополнительных модулей. После установки малый модуль соединяется к одному из C&C-серверов и пытается загрузить оттуда и установить оставшиеся компоненты.
Mssecmgr может по-разному называться на каждой конкретной заражённой машине в зависимости от метода заражения и текущего состояния зловреда (установка, распространение, обновление). Например, wavesup3.drv, ~zff042.ocx, msdclr64.ocx, etc.
Полный анализ модуля mssecmgr будет представлен в одном из последующих блогпостов.
Первичная активация файла запускается одним из способов извне: либо через инструменты WMI, с использованием MOF-файла, если задействован эксплойт к уязвимости MS10-061, либо с использованием BAT-файла:
s1 = new ActiveXObject(«Wscript.Shell»);
s1.Run(«%SYSTEMROOT%system32rundll32.exe msdclr64.ocx,DDEnumCallback»);
(исходный код MOF-файла — svchostevt.mof)
После активации mssecmgr регистрирует себя в реестре Windows:
HKLM_SYSTEMCurrentControlSetControlLsa
Authentication Packages = mssecmgr.ocx [добавляется к существующим записям]
При следующей загрузке системы модуль автоматически загружается операционной системой.
После обновления реестра Windows mssecmgr разархивирует все дополнительные модули, которые присутствуют в зашифрованном и сжатом ресурсном разделе (ресурс «146») и устанавливает их. Ресурс — это словарь, содержащий параметры конфигурации для mssecmgr и других модулей, сами модули (DLL-файлы) и параметры, которые нужно передать этим модулям, чтобы их корректно загрузить, например ключи расшифровки.
Мы анализируем дополнительные модули; в ближайших блогпостах мы опубликуем дополнительную информацию об их функционале.
После завершения установки mssecmgr загружает доступные модули и запускает несколько потоков выполнения, которые устанавливают канал связи с C&C-серверами и хостом Lua-интерпретатора, и выполняет другие функции в зависимости от конфигурации. Функционал модуля делится на разные «блоки», которые имеют разные пространства имен в конфигурационном ресурсе и разные имена в журнале событий, которые широко используются по всему коду.
Ниже приведено краткое описание доступных модулей. Их имена извлечены из бинарного файла и ресурса 146.
Beetlejuice | Bluetooth: составляет список устройств, находящихся вблизи зараженной машины. Может выполнять функцию «радиомаяка» — включает возможность обнаружения компьютера в настройках Bluetooth и шифрует с помощью base64 статус вредоносной программы для его отображения в информации об устройстве. |
Microbe | Записывает аудиосигнал с имеющихся аппаратных источников. Составляет перечень всех устройств мультимедиа, записывает полную информацию о конфигурации устройств, пытается выбрать подходящее устройство для записи звука. |
Infectmedia | Выбирает один из методов заражения внешних устройств, т.е. USB-носителей. Доступные методы: Autorun_infector, Euphoria. |
Autorun_infector | Создает файл autorun.inf, содержащий вредоносное ПО, и запускает его с помощью специально сформированной команды open. Этот же метод использовался Stuxnet, прежде чем был задействован LNK-эксплойт. |
Euphoria | Создает директорию с файлами desktop.ini и target.lnk, взятыми из записей LINK1 и LINK2 ресурса146 (отсутствовали в ресурсном файле). Директория используется как ярлык для запуска Flame. |
Limbo | Создает на других машинах в сетевом домене бэкдор-аккаунты с именем пользователя HelpAssistant, если имеются необходимые права. |
Frog | Заражает другие компьютеры, используя предварительно созданные учетные записи пользователей. Единственная учетная запись, указанная в конфигурационном ресурсе, — HelpAssistant. Этот аккаунт создается атакой Limbo. |
Munch | HTTP-сервер, отвечающий на запросы /view.php и /wpad.dat. |
Snack | Прослушивает сетевые интерфейсы, получает пакеты NBNS и сохраняет их в лог-файле. Имеет опцию, при включении которой стартует только при старте блока Munch. Собранные данные затем используются для распространения вредоносной программы по сети. |
Boot_dll_loader | Конфигурационный раздел, содержащий список всех дополнительных модулей, которые должны быть загружены и запущены. |
Weasel | Создает список папок на зараженном компьютере. |
Boost | Создает список «интересных» файлов по нескольким маскам имен файлов. |
Telemetry | Функции ведения журнала. |
Gator | При появлении доступа в интернет устанавливает соединение с командными серверами, загружает новые модули и выгружает на сервер собранные данные. |
Security | Выявляет программы, которые могут помешать работе Flame, т.е. антивирусы и сетевые экраны. |
Bunny Dbquery Driller Headache Gadget |
Назначение этих модулей на данный момент неизвестно. |
Дополнительные модули устанавливаются в директорию %windir%system32:
1 2 3 4 5 6 7 |
mssecmgr.ocx advnetcfg.ocx msglu32.ocx nteps32.ocx soapr32.ocx ccalc32.sys boot32drv.sys |
Дополнительные модули, загруженные с командных серверов, устанавливаются в ту же папку.
Модули Flame создают множество файлов данных, содержащих подробные журналы выполнения программы, а также собранную информацию: снимки экрана, списки процессов, списки аппаратных ресурсов и т.д.
Эти файлы сохраняются в директории %windir%temp под следующими именами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
~DEB93D.tmp ~8C5FF6C.tmp ~DF05AC8.tmp ~DFD85D3.tmp ~DFL*.tmp ~dra*.tmp ~fghz.tmp ~HLV*.tmp ~KWI988.tmp ~KWI989.tmp ~rei524.tmp ~rei525.tmp ~rf288.tmp ~rft374.tmp ~TFL848.tmp ~TFL849.tmp ~mso2a0.tmp ~mso2a1.tmp ~mso2a2.tmp sstab*.dat |
В директории %windir%system32 могут также присутствовать следующие необязательные файлы:
1 2 3 |
Advpck.dat ntaps.dat Rpcnc.dat |
Кроме того, в папке %windir% может присутствовать следующий файл:
1 |
Ef_trace.log |
Flame хранит свои постоянные данные в файлах различных форматов. Все данные шифруются с применением нескольких алгоритмов и ключей. Некоторые файлы представляют собой базы данных, построенные с помощью встроенной библиотеки SQLite3. Эти базы содержат данные, полученные как в результате кражи, так и в результате распространения программы. Мы представим более подробную информацию об этих файлах в будущих публикациях.
Имена директории, используемые дополнительными компонентами Flame, могут слегка различаться в зависимости от типа установки и конфигурационных опций, содержащихся в ресурсе 146:
1 2 3 4 5 |
C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgr C:Program FilesCommon FilesMicrosoft SharedMSAudio C:Program FilesCommon FilesMicrosoft SharedMSAuthCtrl C:Program FilesCommon FilesMicrosoft SharedMSAPackages C:Program FilesCommon FilesMicrosoft SharedMSSndMix |
Эти директории могут содержать следующие файлы:
lmcache.dat
mscrypt.dat (or wpgfilter.dat)
ntcache.dat
rccache.dat (or audfilter.dat)
ssitable (or audache)
secindex.dat
wavesup3.drv
(a copy of the main module, mssecmgr.ocx, in the MSAudio directory)
Flame может также создавать или загружать файлы со следующими именами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
svchost1ex.mof Svchostevt.mof frog.bat netcfgi.ocx authpack.ocx ~a29.tmp rdcvlt32.exe to961.tmp authcfg.dat Wpab32.bat ctrllist.dat winrt32.ocx winrt32.dll scsec32.exe grb9m2.bat winconf32.ocx watchxb.sys sdclt32.exe scaud32.exe pcldrvx.ocx mssvc32.ocx mssui.drv modevga.com indsvc32.ocx comspol32.ocx comspol32.dll browse32.ocx |
В результате мы можем предложить метод быстрой «ручной» проверки вашей системы на наличие заражения Flame:
- Выполните поиск файла ~DEB93D.tmp. Его присутствие в системе означает, что компьютер заражен или был заражен Flame.
- Проверьте ключ реестра HKLM_SYSTEMCurrentControlSetControlLsa Authentication Packages. Если вы найдете в нем mssecmgr.ocx или authpack.ocx, значит, ваш компьютер заражен Flame.
- Проверьте наличие следующих папок. Если они есть — вы заражены.
12345C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgrC:Program FilesCommon FilesMicrosoft SharedMSAudioC:Program FilesCommon FilesMicrosoft SharedMSAuthCtrlC:Program FilesCommon FilesMicrosoft SharedMSAPackagesC:Program FilesCommon FilesMicrosoft SharedMSSndMix - Запустите поиск по остальным именам файлов, данным выше. Они все уникальны, и их наличие будет означать весьма высокую вероятность зараженности вашего компьютера Flame.
Flame: Bunny, Frog, Munch и BeetleJuice…