«Вирус Франкенштейна» создает себя из фрагментов чужого кода
Создать вируса-монстра ученые решили, чтобы доказать теоретическую возможность конструирования сложных приложений путем направленного сбора и компоновки фрагментов из других приложений. В большой мере эта концепция связана с «возвратно-ориентированным программированием» (ROP – Return Oriented Programming), которое считается одной из самых серьезных угроз в современном мире многопоточных процессоров и проблем с разделением памяти приложений – недавно компания Microsoft выдала несколько крупных призов разработчикам технологий для борьбы с ROP.
Мохан и Хэмлен сумели создать практическое подтверждение прежним теоретическим выводам – их рабочий образец вируса уже умеет создавать вредоносный код из двух базовых алгоритмов, используя только фрагменты вполне легальных приложений. Авторы заверяют, что эти два тестовых алгоритма намного проще, чем полноценный вирус, но они уже содержат базовую логику для распаковки вируса.
Этот шаг однозначно подтверждает, что вирус Франкенштейна уже нельзя считать чисто теоретической угрозой.
Вирус под кодовым названием Frankenstein действует по заранее заданным схемам, определяющим конкретные задачи. Например, процедуру копирования фрагментов данных он собирает из кусочков других программ. Поглощение и сборка этих фрагментов (гаджетов в терминологии авторов) повторяются каждый раз при заражении нового компьютера. В результате вирус каждый раз выглядит по-новому с точки зрения антивируса, хотя выполняет совершенно те же функции.
Исследования техасских ученых частично финансирует ВВС США. Сами авторы отмечают, что их Frankenstein может быть особенно полезен для спецслужб при внедрении во вражеские компьютерные системы с неизвестным типом защиты. Нынешние вирусы уже пытаются мутировать, изменяя свой код случайным образом, но антивирусы все равно опознают в них вредоносные программы. Вирус Frankenstein имеет радикальное отличие от них, потому что весь его код, включая схемы будущих исполняемых файлов, можно замаскировать под части обычного ПО. Всего трех частей такой программы достаточно, чтобы собрать более 100 000 «гаджетов», так что у Франкенштейна есть масса способов для сборки уникального монстра, но для этого нужны схемы. Если схема будет слишком детализированной и специфичной, у вируса будет не слишком много выбора по использованию тех или иных «гаджетов», что ведет к меньшему числу вариаций и легкому обнаружению. Менее жесткие схемы сборки, определяющие лишь конечный эффект алгоритмов, могут быть непосильны для Frankenstein, которому иногда просто не хватает определенности для компоновки вредоносного алгоритма.
Защита от вирусов такого типа уже занимает умы ведущих поставщиков ПО. Совсем недавно компания Microsoft своего инструментария Enhanced Mitigation Experience Toolkit (EMET), который обеспечивает дополнительную защиту для пользователей ПК. В частности, этот инструментарий не дает вирусам исполнять код других приложений, как в вирусе Frankenstein. Это делается путем обертки легитимного ПО в специальный слой кода, который проверяет обращение к частям ПО из сторонних приложений. За эту технологию разработчик получил приз от Microsoft в размере 50 000 долл., но уже через две недели Шахрияр Джалаери, специалист по компьютерной безопасности из Ирана, заявил, что ему удалось обойти защиту EMET.
По материалам сайта New Scientist.