Франкенштейн — объединение тел кода вместе, чтобы скрыть вредоносное ПО


Недавний метод исследования позволяет скрыть вредоносное ПО путем объединения частей программы, которые уже установлены в системе, для создания необходимой функциональности. Это затрудняет обнаружение вредоносных программ за счет создания версии Франкенштейна.

Хотя система Франкенштейна является лишь доказательством концепции, а созданный код просто выполнял несколько простых задач, сортировку и XOR, не имея возможности репликации, компьютерные ученые из Техасского университета в Далласе, безусловно, доказали, что этот метод жизнеспособен.

И кто знает, может быть, это даже где-то в дикой природе. Ведь одним из главных преимуществ метода является то, что он более эффективно скрывает вредоносные программы.

Идея связана с возвратно-ориентированным программированием (ROP). Это строит программу из фрагментов кода, уже находящихся в адресном пространстве, которые заканчиваются возвратом. Это позволяет эксплойту, который захватил стек, делать все, что ему нужно, без необходимости устанавливать новый код или перезаписывать существующий код, что потенциально может вызвать механизм обнаружения оборудования.

Фрагменты кода, которые использует ROP, называются «гаджетами», и каждый гаджет выполняет простую задачу, которую можно собрать во что-то, что выполняет эффективные вычисления. Нетрудно показать, что не требуется много загруженного кода, чтобы получить достаточно устройств, чтобы сформировать полный набор Тьюринга.

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

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

Список того, на что влияет каждый гаджет, или «клобберы», также сохраняется, чтобы гаджеты можно было объединить таким образом, чтобы не изменять их основное назначение, т.е. чтобы не возникало нежелательных взаимодействий.

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

Существующие мутационные методы для сокрытия вредоносных программ обычно используют только такие методы, как XOR для фиксированной строки с кодом или перестановка блоков кода. Подход Франкенштейна строит новое «тело» из частей, извлеченных из существующих программ, и поэтому каждый раз создает что-то новое.

По сравнению с существующими методами сокрытия вредоносных программ подход Франкенштейна имеет множество преимуществ — вопрос в том, используется ли он уже?


Добавить комментарий