Пересматривая MoonBounce - вредоносный код патчит сердце прошивки

information security

Независимый исследователь вредоносного ПО  Seeker опубликовал подробные заметки о техническом анализе компонента CORE_DXE, являющегося частью сложной UEFI-прошивки MoonBounce. Этот вредоносный имплант, ранее документированный экспертами "Лаборатории Касперского" и связанный с группой APT41 (также известной как Winnti), использует уникальные методы для внедрения в самую раннюю стадию загрузки системы.

Описание

Анализ сосредоточен на ядре фазы DXE (Driver Execution Environment), которое является центральным исполнительным компонентом UEFI. Исследователь отмечает, что MoonBounce не добавляет отдельный драйвер, а напрямую модифицирует исполняемый код самого CORE_DXE. Этот подход позволяет импланту функционировать как встроенный хук (inline hook), который выполняется раньше и на более глубоком уровне, чем все остальные DXE-драйверы. По сути, вредоносная программа "патчит" само ядро исполнения прошивки.

Ключевым механизмом является установка inline-хуков на критические функции таблицы EFI_BOOT_SERVICES, а именно на AllocatePool, CreateEventEx и ExitBootServices. Все перехваченные вызовы перенаправляются в единую функцию-диспетчер. Этот диспетчер идентифицирует, какая именно служба была вызвана, сравнивая байты инструкций, и затем запускает соответствующую вредоносную логику. Например, хук в AllocatePool используется для подготовки и размещения шелл-кода (shellcode) в памяти. Хук в CreateEventEx регистрирует обратный вызов для события gEfiEventLegacyBootGuid, обеспечивая передачу управления на этапе legacy-загрузки.

Особенно важным является перехват функции ExitBootServices, который отмечает переход от фазы работы прошивки к загрузке операционной системы. На этом этапе код MoonBounce сканирует память в поиске загрузчика ОС (winload.efi), используя сигнатуру на основе паттерна инструкций. После обнаружения загрузчика имплант копирует и выполняет шелл-код, который, в свою очередь, внедряется в ядро Windows (ntoskrnl.exe). Этот код находит критические API ядра с помощью алгоритма хеширования имен и устанавливает хук на функцию ExAllocatePool внутри ядра. В результате обеспечивается непрерывность выполнения вредоносного кода от фазы прошивки до полностью загруженной операционной системы.

Исследователь подчеркивает адаптивность угрозы. MoonBounce поддерживает как устаревший путь загрузки с Compatibility Support Module (CSM), так и чистый UEFI-путь. Это демонстрирует глубокое понимание авторами вредоносной программы внутренних процессов, временных рамок и границ доверия в последовательности загрузки UEFI. Seeker характеризует MoonBounce как высокоразвитый и мощный UEFI-имплант, способный перехватывать управление на границе перехода от прошивки к ядру.

В своих заметках аналитик также делится методологическими выводами. Он отмечает, что анализ firmware требует работы на уровне машинных инструкций (opcode), которые в данном контексте становятся основным API. Кроме того, создается ментальная модель, где каждый уровень анализа опирается на свои абстракции. Пользовательский режим доверяет API, режим ядра - структурам данных и потоку управления, а анализ прошивки в конечном итоге сводится к доверию raw-исполнению инструкций. Исследователь выражает благодарность экспертам "Лаборатории Касперского" и компании Binarly за их фундаментальные работы, которые сделали возможным дальнейшее изучение этой сложной угрозы.

Индикаторы компрометации

MD5

  • d94962550b90ddb3f80f62bd96bd9858

SHA1

  • 6bfb3634f6b6c5a114121fe53279331ff821ee1e
Комментарии: 0