Многоэтапное ВПО использует Python и Donut в цепочке загрузки
Вредоносное программное обеспечение использует многоэтапную цепочку загрузки, в которую входят обфусцированный байт-код Python, выполнение шеллкода, полезная нагрузка, сгенерированная Donut, загрузчик на основе PE-файлов laZzzy и зашифрованные ресурсы .NET. Исходный файл имеет формат модуля CPython 3.13 с расширением .pyc.
Расшифровка начальных этапов
После деобфускации в восстановленном коде Python обнаруживается блок шеллкода. Он зашифрован алгоритмом RC4 и закодирован в Base64. Скрипт декодирует этот блок, расшифровывает его, копирует в исполняемую память и передаёт ему управление.
Первый этап шеллкода сгенерирован с помощью Donut. Этот инструмент упаковывает исполняемые файлы или сборки .NET в позиционно-независимый шеллкод для архитектуры x86-64. Вместе с полезной нагрузкой Donut встраивает метаданные и модуль. Извлечение этих компонентов позволяет получить следующий исполняемый этап.
Следующий этап использует загрузчик шеллкода laZzzy. В отличие от позиционно-независимого шеллкода, он формирует полный исполняемый файл Windows в формате PE. Встроенный шеллкод laZzzy хранит с применением шифрования AES-CBC и последующего преобразования XOR.
Во время выполнения PE-заглушка laZzzy расшифровывает полезную нагрузку и выполняет её с помощью инъекции в текущий или удалённый процесс.
Статическое извлечение и загрузка .NET-модуля
Для статического извлечения исследователи идентифицировали скомпилированную подпрограмму расшифровки AES-CBC по сигнатуре паттерна инструкций. Затем они разрешили RIP-относительные ссылки, чтобы определить ключ AES, вектор инициализации, шифртекст и размер полезной нагрузки. После этого операции AES и XOR воспроизвели в автономном режиме.
Такой подход не требует отладки, эмуляции или выполнения кода. Восстановленный шеллкод содержит второй слой Donut. Его расшифровка и извлечение дают ещё одну пару метаданных и модуля. В этом случае модулем служит встроенная DLL для .NET.
DLL можно декомпилировать стандартными инструментами анализа .NET. Её ресурсы также зашифрованы. Вредоносное программное обеспечение разбирает эти ресурсы, загружает выбранные секции в память в виде шеллкода и передаёт им управление.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



