Stuxnet, Flame и Duqu использовали GPL-код
Stuxnet, Flame и Duqu — три самые известные программы, предположительно созданные спецслужбами в качестве «кибеоружия» против других стран. Программа Stuxnet успешно вывела из строя 80% иранских центрифуг по обогащению урана, а шпионская программа Flame несколько лет скрытно работала на иранских компьютерах, установившись как обновление Windows.
На прошлой неделе предположения об американском заказе подтвердились: выяснилось, что президент Обама лично следил за внедрением вируса Stuxnet на иранские компьютеры. Насчёт Flame и Duqu прямых доказательств пока нет. Но вряд ли приходится сомневаться, что эти программы тоже созданы по заказу американцев.
Самое интересное, что во всех трёх программах использовалась библиотека LZO, которая распространяется строго под лицензией GNU GPL.
В программе Flame, кроме LZO, используются и другие проекты Open Source:
putty — лицензия MIT
libbz2 — лицензия типа BSD
zlib — своя лицензия
SQLite — общественное достояние
Lua — лицензия MIT
Как известно, GNU GPL требует распространения с двоичными файлами исходного кода программы или письменного обязательства его предоставить. Именно так и распространяется библиотека LZO. Условия GPL требуют также, что пользователи всех производных программ должны получать такие же права. То есть все производные программы, использующие код GPL, должны распространяться с открытыми исходными кодами или с обязательством их предоставить.
Очевидно, Stuxnet, Flame и Duqu нарушат лицензию GPL, если авторы этих программ не предоставят свои исходные коды.
Проблема сейчас очень актуальна, потому что лучшие специалисты нескольких антивирусных компаний активно работают над реверс-инжинирингом Flame. Учитывая объём программы (20 мегабайт, сотни тысяч строк кода), это очень непростая задача. Что там говорить, если анализ Duqu продолжается не первый год и ещё далёк от завершения: специалистам «Лаборатории Касперского» только при помощи сообщества недавно удалось понять, на каком языке программирования написан фреймворк.
Венгерская компания CrySyS, которая первой обнаружила Flame, тоже до сих пор работает над анализом Duqu. Она опубликовала обращение к авторам программы Duqu выслать исходные коды на адрес [email protected]. Они обязаны сделать это по условиям лицензии, пусть даже анонимно.
Конечно, это скорее шутка. Но кто знает, может быть Фонд электронных рубежей или кто-нибудь другой, кто занимается судебной защитой проектов GPL, когда-нибудь подаст жалобу на американское правительство за нарушение авторского права.
- Информационная безопасность
- Open source
Flame: что известно на данный момент
Вы уже слышали про Flame? Присаживайтесь поудобнее, сейчас мы предоставим вам все подробности.
Вирусы Duqu и Stuxnet повысили градус кибервойны на Ближнем Востоке, однако недавно мы обнаружили, пожалуй, самое изощренное кибероружие на сегодняшний день. Червь Flame, созданный для кибершпионажа, попал в поле зрения экспертов «Лаборатории Касперского» при проведении исследования по запросу Международного союза электросвязи (МСЭ), обратившегося к нам за содействием в поиске неизвестной вредоносной программы, которая удаляла конфиденциальные данные с компьютеров, расположенных в странах Ближнего Востока. В процессе поиска этой программы, получившей название Wiper, мы обнаружили новый образец вредоносного ПО, который был назван Worm.Win32.Flame.
Семь стран, подвергшихся наибольшему количеству атак
Хотя Flame имеет иной функционал, чем печально известные образцы кибероружия Duqu и Stuxnet, все эти вредоносные программы имеют много общего: географию атак, узкую целевую направленность в сочетании с использованием специфических уязвимостей в ПО. Это ставит Flame в один ряд с «кибернетическим супероружием», развертываемым на Ближнем Востоке неизвестными злоумышленниками. Без сомнения, Flame является одной из самых сложных киберугроз за всю историю их существования. Программа имеет большой размер и невероятно сложную структуру. Она заставляет переосмыслить такие понятия, как «кибервойна» и «кибершпионаж».
Подробную информацию об этой изощренной угрозе читайте в посте на www.securelist.ru, а здесь мы приведем ключевое описание зловреда.
Что именно представляет собой Flame? Червь? Бэкдор? Каков его функционал?
Flame представляет собой весьма хитрый набор инструментов для проведения атак, значительно превосходящий по сложности Duqu. Это троянская программа — бэкдор, имеющая также черты, свойственные червям и позволяющие ей распространяться по локальной сети и через съемные носители при получении соответствующего приказа от ее хозяина.
Исходная точка входа Flame неизвестна — мы подозреваем, что первоначальное заражение происходит путем целевых атак, однако найти исходный вектор атаки нам пока не удалось. Подозреваем, что используется уязвимость MS10-033, однако в данный момент подтвердить это мы не можем.
После заражения системы Flame приступает к выполнению сложного набора операций, в том числе к анализу сетевого трафика, созданию снимков экрана, аудиозаписи разговоров, перехвату клавиатурных нажатий и т.д. Все эти данные доступны операторам через командные серверы Flame.
В дальнейшем операторы могут принять решение о загрузке на зараженные компьютеры дополнительных модулей, расширяющих функционал Flame. Всего имеется около 20 модулей, назначение большинства которых мы в данный момент изучаем.
Насколько сложен Flame?
Прежде всего, Flame — это огромный пакет, состоящий из программных модулей, общий размер которых при полном развертывании составляет почти 20 МБ. Вследствие этого анализ данной вредоносной программы представляет огромную сложность. Причина столь большого размера Flame в том, что в него входит множество разных библиотек, в том числе для сжатия кода (zlib, libbz2, ppmd) и манипуляции базами данных (sqlite3), а также виртуальная машина Lua.
Lua — это скриптовый язык, т.е. язык программирования, легко поддающийся расширению и интеграции с кодом, написанным на языке C. Для многих компонентов Flame логика верхнего уровня написана на Lua — при этом подпрограммы и библиотеки, непосредственно реализующие заражение, компилируются с C++.
По сравнению с общим объемом кода часть, написанная на Lua, относительно невелика. По нашей оценке, объем разработки на Lua составляет более 3000 строк кода. Для среднего разработчика на создание и отладку такого объема кода требуется около месяца.
Рис. 1 — декомпилированный код Flame на языке LUA
Кроме того, вредоносная программа использует для внутренних нужд локальные базы данных с вложенными SQL-запросами, применяет несколько методов шифрования, различные алгоритмы сжатия, создает скрипты с помощью Windows Management Instrumentation, использует пакетные скрипты и т.д.
Запуск и отладка вредоносного ПО — нетривиальная задача, поскольку вредоносная программа представляет собой не обычный исполняемый файл, а несколько DLL-библиотек, загружаемых при запуске операционной системы.
В целом можно констатировать, что Flame — одна из наиболее сложных угроз, обнаруженных на сегодняшний день.
Ключевые эксперты ЛК немедленно посвятили себя анализу программы, и хоть на полный разбор уйдут месяцы, кое-какие данные уже доступны в статье по ссылке.
Здесь же мы можем предложить вам метод быстрой «ручной» проверки вашей системы на наличие заражения Flame:
1. Выполните поиск файла ~DEB93D.tmp. Его присутствие в системе означает, что компьютер заражен или был заражен Flame.
2. Проверьте ключ реестра HKLM_SYSTEM\CurrentControlSet\Control\Lsa\ Authentication Packages. Если вы найдете в нем mssecmgr.ocx или authpack.ocx, значит, ваш компьютер заражен Flame.
3. Проверьте наличие следующих папок. Если они есть — вы заражены.
C:\Program Files\Common Files\Microsoft Shared\MSSecurityMgr
C:\Program Files\Common Files\Microsoft Shared\MSAudio
C:\Program Files\Common Files\Microsoft Shared\MSAuthCtrl
C:\Program Files\Common Files\Microsoft Shared\MSAPackages
C:\Program Files\Common Files\Microsoft Shared\MSSndMix
4. Запустите поиск по остальным именам файлов, данным выше. Они все уникальны, и их наличие будет означать весьма высокую вероятность зараженности вашего компьютера Flame.
Берегите себя! И следите за новостями…
- Блог компании «Лаборатория Касперского»
- Информационная безопасность
Как Flame осуществляет инъекцию кода в процессы Windows
Рекомендуем почитать:
Xakep #292. Flipper Zero
- Содержание выпуска
- Подписка на «Хакер» -60%
Исследователи продолжают восхищаться сложностью трояна Flame (Flamer, Skywiper). Прошло несколько месяцев с момента его обнаружения, но анализ кода продолжается до сих пор. Очередную порцию аналитики вчера опубликовала польская компания CERT Polska, их отчёт посвящён методам внедрения кода Flame в процессы Windows.
Исследователи отмечают, что инъекция кода в процессы и треды считается традиционной техникой работы вирусов, но Flame — это особый случай, потому что здесь данный метод доведён до совершенства. Перенос кода между процессами происходит на протяжении всего цикла жизнедеятельности трояна, начиная от инсталляции, и заканчивая самоуничтожением. «Flame использует эту технику для переноса и копирования своих элементов в разные части операционной системы жертвы с потрясающей ловкостью», — пишут исследователи.
Они рассказывают, как после заражения через эксплойт уязвимости MS10-061 код Flame запускается программой rundll32.exe, после чего внедряется в services.exe, а оттуда — в разные компоненты Windows, в том числе в процесс explorer.exe. В дальнейшем фрагменты кода из разных процессов начинают синхронизировать свои действия: код в explorer.exe ждёт команды от services.exe, после чего создаёт процесс iexplore.exe. В дальнейшем коммуникация между services.exe и iexplore.exe продолжается через именованный канал, причём его имя может генерироваться из случайных символов и отличаться между разными инсталляциями. Тред из services.exe записывает указания в именованный канал, а процесс iexplore.exe получает и исполняет их.
Все эти сложности с коммуникациями между тремя процессами необходимы для того, чтобы затруднить обнаружение трояна. Если explorer.exe пытается выйти в интернет (например, как это сделано в SpyEye), то это неизбежно вызовет подозрение у файрвола и антивирусной программы. В модульной системе Flame в интернет выходит только процесс iexplorer.exe, что не вызывает никаких подозрений. Запуск iexplorer.exe через explorer.exe тоже является естественной процедурой, ведь пользователи Windows именно так запускают браузер. Вот почему Flame использует explorer.exe в качестве прокси.
Добавить к этому поддельные сертификаты Windows Update — и складывается полная картина, почему Flame так долго мог скрываться от обнаружения даже на компьютерах с антивирусным ПО и файрволами.
При подготовке материала использовались источники:
https://habr.com/ru/articles/145581/
https://habr.com/ru/companies/kaspersky/articles/144967/
https://xakep.ru/2012/08/14/59152/