Исследователи продолжают восхищаться сложностью трояна 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 так долго мог скрываться от обнаружения даже на компьютерах с антивирусным ПО и файрволами.