Исследователи «Лаборатории Касперского» опять обратились за помощью к сообществу, столкнувшись с непосильной задачей. Напомним, в прошлый раз они просили помочь определить, на каком языке программирования написан фреймворк Duqu. Люди помогли советом — и правильный ответ в итоге нашли.
Теперь перед специалистами возникла задача посложнее — троян Gauss, предположительно созданный государственными спецслужбами. Эта программа по сложности почти не уступает Flame и относится к тому же классу вредоносного программного обеспечения. По некоторым признакам можно предположить, что Gauss и Flame созданы близкими командами программистами, которые в процессе работы делились друг с другом результатами труда.
Gauss способен заражать компьютеры некоей конкретной конфигурации, очевидно, это инструмент узкотаргетированной атаки. Расшифровав ключ, который генерируется на основе конфигурации компьютера, можно будет понять, против кого конкретно был разработано оружие. См. подробный анализ Gauss.
Сообщение на сайте «Лаборатории Касперского»:
Quote
Анализ вредоносной программы Gauss, проведенный экспертами «Лаборатории Касперского», позволил получить информацию о ее основном функционале, характеристиках, архитектуре, модулях, способах связи с командными серверами, а также статистику заражений. Однако ряд вопросов, касающихся в основном зашифрованного содержимого Gauss, все еще остается без ответа.
Зашифрованный функционал троянца содержится в специальных модулях, отвечающих за кражу информации и хранение ее на USB-накопителе, и позволяет злоумышленникам атаковать только те системы, которые имеют определенный набор установленных программ. После того, как зараженная флэшка подключается к уязвимому компьютеру, вредоносная программа активируется и пытается расшифровать содержимое с помощью специального ключа. Ключ же составляется на основании данных о специфической конфигурации системы инфицированного компьютера. Так, например, он включает название папки в разделе Program Files, первая буква которой написана символом из расширенного набора, например на арабском или иврите. Если конфигурация соответствует «эталонной», ключ отдает команду на расшифровку и исполнение содержимого.
«На сегодняшний день вопросы о предназначении и функционале зашифрованного модуля остаются без ответа. Использование криптографических методов и меры, которые предприняли авторы зашифрованного модуля для того, чтобы он как можно дольше оставался незамеченным, говорят о высоком уровне целей злоумышленников, – говорит Александр Гостев, главный антивирусный эксперт «Лаборатории Касперского». – Особое внимание стоит уделить размеру зашифрованного модуля. Он достаточно велик для того, чтобы содержать в себе код, который может быть использован для кибершпионажа и по размерам сравним с кодом модификации SCADA-систем в черве Stuxnet. Расшифровка содержимого позволит лучше понять как источник этой угрозы, так и ее цели».
«Лаборатория Касперского» призывает всех тех, кто интересуется криптографией, реверс-инжинирингом и математикой, и хочет принять участие в расшифровке ключей, связаться с экспертами по адресу theflame@kaspersky.com .
Как Flame осуществляет инъекцию кода в процессы Windows
Исследователи продолжают восхищаться сложностью трояна 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 так долго мог скрываться от обнаружения даже на компьютерах с антивирусным ПО и файрволами. http://www.xakep.ru/