Статья Историческая вирусология: как срывалась ядерная программа Ирана - повествование о самом сложном вирусе-ассасине - Flame: история, хронология, анализ

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

Историческая вирусология: как срывалась ядерная программа Ирана - повествование о самом сложном вирусе-ассасине - Flame: история, хронология, анализ

Спустя несколько дней Хан пришел в себя и начал осматриваться, как оказалось мир в который он был призван ничем особо не отличался от настоящего, только вот на календаре был 2012 год, что на 12 лет позже по мировой хронологии Хана. Сразу же после призыва какая-то девушка рассказала ему, что он в качестве героя из другого мира должен спасти от краха этот. И дело было совсем не в том, что появился какой-то демон-злодей, а в обычной эпидемии компьютерных вирусов, которая привела к полному отказу всех устройств по всему Ирану.

Как оказывается, герой сегодняшней статьи всегда мечтал стать программистом, ну если отбросить вот это желание параллельного мира, и на данный момент вполне себе мог работать, типа как этот мужчина:

AD_4nXdOaV5rhWs3Iawvmn37t7888tZ4-R_FeV_O4w9_XJOlJsfhPOLqDnCqbdu93aIAmgGCbVlYKZx8J1t_A-DG3AdJL9Wksa2ucMO7Z-puvdwcB3w6VeC8QmZHI8eJ7WrI6JdBjeKarqdTDGL3uRYcf4i0Bg


Хан не особо хотел заниматься этим всем, но раз уж выбора не предоставлялось, то он решил поскорее разобраться с этим. Но сперва немного предыстории.

Сегодняшний наш исследуемый очень даже ничего, его анализ и историю хотелось мне давно уже очень описать, но так уж вышло, что постоянно отвлекало что-то более известное. Рад представить вашему вниманию - Flame. Настоящий ассасин в мире вредоносов современности, так как он на протяжении 6 лет оставался незамеченным и замешан в распространении очень многих зловредов, помимо себя.

На деле он являлся обычным очень скрытным трояном, который представлял множество возможностей, но о них немного позже. В мае 2012 года Лаборатория Касперского обнаружила этого Флейма, назвав его самым сложным и одним из самых опасных троянский приложений 21-го века. По правде, тот же Стукснет, о котором тоже пойдёт речь, был проще, хотя его код уже превышает 20 мегабайт.
По официальным подсчетам он заразил не больше 5000 устройств под управлением виндоус XP и 7, но раз его обнаружить было настолько трудно, что этого не сделали за 6 лет, ну сами понимаете. Ладно, долой автора, сидит графоманит.

Стало быть, нашему герою из параллельного мира быстренько пояснили за уже известную хронологию вируса, который сам-то является мультифункциональным, но безвредным до тех пор, пока не начнет устанавливать более опасные прототипы. Как оказалось именно из-за этого вся иранская сфера ИТ развалилась буквально за день.

И если уж кратенько пересказывать хронологию, то она очень запутана, давайте разбираться вместе:

3 декабря 2006 года - предположительное начало разработки этого трояна, здесь не точно, ибо до сих пор неизвестно, так как он являлся правительственной программой США по уничтожению ядерной подготовки Ирана.

Весна, 2009 год - некоторые компоненты этого шпионского ПО попадают на Вирустотал, естественно занесены в базы.

Март 2010 года - официальное появление вируса на мировой площадке, в этот период он просто распространяется, не предпринимая никаких действий, в основном в странах ближнего востока.

Апрель 2010 года - появление вирусa Wiper, который подчистую уничтожает жесткий диск, пока что его время ещё не пришло, но после официального заявления о Флэйме, его заменит этот представитель. Сперва он активно будет атаковать Иран в 2012 году, а после переключится на Северную Корею в 2013. Что общего? Ядерные программы.

17 июля 2010 года - начинает распространять червя StuxNet, хотя тот и сам справлялся, отправной точкой его эры стал именно Флэйм.

С лета 2010 года до мая 2012 - активно шпионит на пользу США, ворует данные, уничтожает их и так далее.

28 мая 2012 года - официальное заявление о существовании такого шпионского ПО, как Flame. Обнаружили его случайно, Роэль Шувенберг, старший научный сотрудник по компьютерной безопасности, который вообще был занят анализом вируса Wiper. Кстати последний имеет несколько десятков тысяч похожих строк кода и может считаться полноценной второй версией, только с намного большим разрушительным потенциалом.

Июнь 2012 года - Washington Post со ссылкой на неназванных западных чиновников сообщила о том, что шпион Flame разрабатывался совместно специалистами США и Израиля для получения информации, которая могла бы быть полезна в срыве иранской ядерной программы.

17 сентября 2012 года - Лаборатория Касперского опубликовала отчет о том, что вирус-шпион Флэйм появился ещё в далеком 2006 году ну и несколько десятков тысяч слов информации о нем.

После сентября вирус прекращает свою деятельность, уступая место другим. Вроде и не сложно, а все это систематизировать было трудновато. И здесь вроде как разобрались, поехали дальше. Основными странами, которые пострадали от деятельности этого шпиона были: Иран, Израиль, Судан, Сирия, Ливан и Египет.

Сам вирус представляет собой нечто модульное, при том каждый компонент способен работать как и вместе с остальными, так и отдельно, также поражает его командная система и сервера управления, которая позволяет провести незамедлительное обновление, но о этом чуть позже. Сейчас о его базовых возможностях, которые известные на данный момент:
  1. Он свободно может сканировать сетевые ресурсы.
  2. Проводить копирование информации из зараженной машины на командный сервер.
  3. Способен обнаружить все компоненты безопасности устройства, на котором работает.
  4. Полностью передает мультимедию: передает изображение из монитора, делает скриншоты, передает звук из микрофона.
  5. Способен записывать свои компоненты в PE заголовки и шифровать те.
  6. Использует известные уязвимости, такие как уязвимости диспетчера очереди печати, lnk .
  7. Постоянно передается по локальной сети, о способах распространения поговорим дальше, а так же есть вариант заражения через USB-накопитель.
  8. На свое усмотрение, способен собирать новые модули из уже существующих, или адаптировать те под определенный спектр задач.
  9. Использует SQLite для хранения ворованной информации.
  10. Связь с сервером осуществляется посредством SSH, что нельзя назвать прям уж шибко безопасным.
  11. Способен работать во всех современных системах того времени, ну о этом я уже говорил.
  12. Внедряется в файл winlog.exe, с помощью которого запускается при перезагрузках. Основные сервисные компоненты идут в Интернат Обозреватель, ой IE просто.

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

Продолжаем рассказ о вредоносе

Ну и некоторые особенности: полностью декомпилированный код имеет около 800 тысяч строк. Вдумайтесь. А самое смешное, что такой казалось бы огромный вирус, не способен анализировать ZIP архивы. Да и шифрование у него не на высоте, на те года он уже использовал обычный XOR, но с поправкой в виде ключа (0хАЕ). К слову, вот вам гифка его распространения по миру:

AD_4nXfbfGBe2goX-4bOqP1vctfoGWfSoCdkKzXy32OrvtqajMlX0dQNLwr4Jel_C2oNLoDrzgss-W-USLSCMNAbPuYK9ctAt0JV1UOpGr3D3dEb8LqfJJjn8KZcWEbWK92Bc1AuSLsB-eSZfqDR2cK1uLPDMUY


Итак, а теперь кратенько по его анализу пробежимся. Как вы уже поняли сам вирус представляет из себя некое подобие пакета, состоящего из множества модулей. В его состав входят такие библиотеки, которые позволяют сжимать код, как: , zlib, libbz2, ppmd. И для манипуляциями баз данных - sqlite3. А также поддержка LUA и отдельная виртуальная машина.

Нет четкого языка, на котором он написан.

В первую очередь он использует Lua - это легко поддающийся расширению и интеграции с кодом, написанным на языке C. Для многих компонентов Flame логика верхнего уровня написана на Lua — при этом подпрограммы и библиотеки, непосредственно реализующие заражение, компилируются с C++. Такая вот путаница.

AD_4nXf4rELjf_oHVGXmLWQkqin55EVUmh_hgXc1xUcS8J6hUryVhyZNFdDUmD66MZ-4gH5-UbvetsngVoe0y76Z_EzrvG4PS9pgBJUuOVeU64OTscZghXWolNEEtAP7X7XOBXL0-b_knDH-5Q3ZShtc2dBFyOY


Сразу же после его запуска на целевой машине, он создает в рандомном месте файл DEB93D.tmp, который содержит его основную конфигурацию. С вероятностью в 70% будут созданы несколько копий такого файла, а в 30% случаев лишь один. Затем он заносит себя в реестр по пути:

HKLM_SYSTEM\CurrentControlSet\Control\Lsa\ Authentication Packages

И опять срабатывает вероятность 30 на 70, но уже касательно названия. Это может быть или mssecmgr.ocx, или authpack.ocx.

Ну и на этом как бы все, дальнейшие его действия зависят от поступающих команд, давайте теперь разберемся немного в его модулях.

MSSECMGR.OCX - это основной модуль шпиона, у которой есть две вариации - большая, которая как раз таки и весит те 6 мегабайт и маленькая в 900 КБ. Последний не имеет в себе дополнений, потому сразу же после установки соединяется к одному из C&C-серверов и пытается загрузить оттуда и установить оставшиеся компоненты.


Первичное внедрение зараженного файла запускается одним из вариантов извне: либо через инструменты WMI, с использованием MOF-файла, если задействован эксплойт к уязвимости MS10-061, или с использованием BAT-файла.

Затем он обновляет реестр Виндоус и начинает разархивацию всех дополнительных модуей,, которые присутствуют в зашифрованном и сжатом ресурсном разделе под названием «146» и выполняет их установку. 146 — это словарь, содержащий параметры конфигурации для mssecmgr и других модулей, сами модули (DLL-файлы) и параметры, которые нужно передать этим модулям, чтобы их корректно загрузить.

После завершения установки mssecmgr, вирус загружает доступные модули и запускает несколько потоков выполнения, которые устанавливают канал связи с C&C-серверами и хостом Lua-интерпретатора. Затем сам функционал делится на несколько десятков блоков, которые проще не описывать, а просто закинуть несколько скринов:

AD_4nXeBZxCJHoJYCBZY3kWSzvytR5CKMfjM0PdF6IzC4N1sCJuK5w-b3HGZEsSqYxYguCz7DUiFxrO4RtxD4LQ-EHqKQxXXuM94EnVXPrSM3YZNEWTuOg_nHGGMLu7_8qOKpvx7-kARw-X1BsmZhXiEH5ZKuw
AD_4nXegknuofJxx1IionnUIYT1EaTdbsc8EQUekBoagt2gOKUdbErfsrwC70dlIa5oODNLqamGt0tfmwI7uZBNYjIxH9cNQscepblMb1bPFK2WVhoRfhCjXeDHEkZe30LxbAZDjhZP5IAh2XmkcZIIe63yzWA

Все модули устанавливаются по пути - %windir%system32:

1
2
3
4
5
6
7
mssecmgr.ocx
advnetcfg.ocx
msglu32.ocx
nteps32.ocx
soapr32.ocx
ccalc32.sys
boot32drv.sys

В этом же каталоге создается множество журналов со следующими именами:

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

Ну, а теперь немного о способах распространения данного вредоноса. Он использует несколько базовых методологий, но наиболее результативной оказалось использование службы Microsoft Windows Update. Этот метод реализован в модулях SNACK, MUNCH и GADGET, входящих в состав базовых у Flame.

Давайте немного разберем именно этот метод, назвать его, наверное, более точно можно словосочетанием подмена NBNS, то есть протокола НетБиос, отвечающего за работу в сети.

Первый модуль SNACK создает сетевой RAW-сокет для всех сетевых интерфейсов, в результате он попросту перехватывает всех исходящие и входящие пакеты. Но его целью есть именно пакет NBNS, посылаемые другими машинами, которые ищут в локальной сети компьютеры с определенными именами. При получении такого пакета он записывается в зашифрованный файл («%windir%temp~DEB93D.tmp») и передается на дальнейшую обработку.
Когда имя в запросе NBNS имеет структуру «wpad*» или «MSHOME-F3BE293C», модуль SMACK отвечает отправкой IP-адреса компьютера, на котором он установлен.
Wpad – это Web Proxy Auto-Discovery Protocol — метод, используемый клиентами для определения места расположения конфигурационного файла с использованием технологий DHCP и/или DNS, в нашем же случае используемое для автоматического обнаружения прокси-сервера. Отвечая на запросы «wpad» собственным IP-адресом, модуль SNACK объявляет зараженную машину прокси-сервером в локальной сети.
Далее уже начинается работа второй части, отвечающей за распространения - Munch. , выполняющего функции HTTP-сервера. Модуль запускается, только если переменная MUNCH.SHOULD_RUN установлена в значение «True» и не выполняются никакие программы, способные оповестить жертву о заражении. Там даже специальный файл есть, который называется “Bad Programms”.
При запуске модуля MUNCH он считывает буфер из переменной MUNCH.WPAD_DATA, заменяет шаблон «%%DEFAULT%%» IP-адресом наилучшего подходящего сетевого интерфейса и ожидает HTTP-запросов.

Буфер MUNCH.WPAD_DATA – это фактически WPAD-файл, запрашиваемый сетевыми клиентами, в которых включено автоматическое обнаружение прокси-сервера. Код в файле WPAD сопоставляет MD5-хеш имени хоста, с которым соединяется клиент, с собственным списком и, если значение хеша найдено в списке, предлагает себя в качестве HTTP прокси-сервера.

Таким образом, когда компьютер, на котором настроено автоматическое определение прокси-сервера, пытается установить соединение с одним из серверов Windows Update, он получает от модуля SNACK IP-адрес зараженной машины, а затем получает IP-адрес той же машины в качестве прокси-сервера из файла wpad.dat, выданного модулем MUNCH. С этого момента все запросы в службу Windows Update проходят через сервер, поднятый модулем MUNCH…

А если здесь остались, кто ещё помнит те славные времена и хочет продолжения.. Отпишитесь в комментариях, я его организую.
 
  • Нравится
Реакции: larchik
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!