
A Proof-of-Concept загрузочный набор и UEFI-загрузочное приложение, вдохновлённое программой-вымогателем Petya, написанное на Assembly, C и C++
Proof-of-Concept буткит и UEFI загрузочное приложение, вдохновлённое вымогателем Petya, написанное на Assembly, C и C++
Если этот проект оказался для вас полезным или информативным, я буду искренне признателен за ⭐ в репозитории. Ваша поддержка станет для меня отличной мотивацией продолжать улучшать этот инструмент.
OpenPetya — это образовательный проект, предназначенный для изучения внутреннего устройства буткитов и низкоуровневых вымогателей.
Проект фокусируется на:
OpenPetya НЕ является точной реimplementation ни Petya, ни NotPetya. Вместо этого это упрощённый Proof-of-Concept, созданный для целей обучения и исследований.
Стоит отметить, что OpenPetya не включает функциональность Command-and-Control (C2). Кроме того, OpenPetya хранит резервную копию MFT в открытом виде внутри скрытых секторов после шифрования. Такое поведение намеренно реализовано в образовательных целях, поскольку эти функции относительно тривиальны по сравнению с основными механизмами загрузчика и криптографии, реализованными в этом проекте. Однако при необходимости вы можете изменить или удалить эти функции.
Примечание: В версии 2.0.0 я решил не реализовывать это для UEFI из опасения, что это может быть использовано для нанесения ущерба современным операционным системам Windows.
За последние несколько месяцев я изучал:
Исследуя Petya и NotPetya, я заметил, что многие онлайн-ресурсы лишь кратко объясняют общий процесс работы, не демонстрируя, как на самом деле работает лежащий в основе процесс загрузки.
Кроме того, многие существующие проекты, связанные с Petya, полагаются на извлечённые бинарные файлы загрузчика или модифицированные оригинальные компоненты, а не реализуют логику с нуля.
Поэтому я решил разработать OpenPetya как практический проект для понимания:
Проект также является частью моих ongoing исследований буткитов, низкоуровневого вредоносного ПО и внутреннего устройства операционных систем.
Связанные статьи:
В версии 2.0.0 мне стало интересно, как работают современные буткиты (как описано в последних нескольких главах книги "Rootkits and Bootkits" Алекса Матросова, Евгения Родионова и Сергея Братуса). Поэтому я решил изучить программирование EFI-приложений с нуля. Затем я обнаружил, что это оказалось гораздо сложнее, чем я ожидал (особенно в плане отладки).
В любом случае, после написания нескольких простых EFI-приложений я опубликовал OpenPetya v2.0.0!
Кастомный MBR
OpenPetya использует кастомную главную загрузочную запись (MBR) для загрузки полезной нагрузки второго этапа.
Кастомный загрузчик второго этапа
Загрузчик второго этапа содержит основную функциональность проекта, включая:
Переход в Protected Mode
Загрузчик переключается из 16-битного Real Mode в 32-битный Protected Mode перед выполнением логики более высокого уровня.
Шифрование MFT
Как и оригинальный Petya, OpenPetya шифрует критические части Master File Table (MFT) NTFS с помощью Salsa20.
Проверка пароля
OpenPetya проверяет введённый пароль перед дешифрованием, чтобы предотвратить необратимое повреждение, вызванное неверными ключами.
Автоматическое восстановление
После ввода правильного пароля:
OpenPetya v2.0.0 НЕ включает шифрование MFT в кастомном EFI-приложении (petya.efi). Оно предлагает простую панель входа и выполняет chainloading после ввода правильного пароля.
Я решил не реализовывать шифрование MFT в EFI-приложении, поскольку оно могло бы быть использовано для нанесения ущерба современным операционным системам Windows, тогда как в v1.0.0 я реализовал его, поскольку злоумышленники уже продемонстрировали это в 2016 году.
OpenPetya.exeПользовательское приложение-установщик и контроллер в режиме пользователя.
Функции:
mbr.binКастомный код главной загрузочной записи (MBR), отвечающий за:
stage2.binОсновная полезная нагрузка OpenPetya.
Обязанности:
petya.efiОсновная полезная нагрузка OpenPetya.
Функции:
Процесс работы OpenPetya (MBR + Bootloader) описан ниже.
OpenPetya.exe и выбирают пароль.NtRaiseHardError), предоставляемый установщиком.В отличие от оригинального вымогателя Petya, OpenPetya не пытается обманывать пользователей поддельными экранами CHKDSK или методами социальной инженерии. Проект предназначен исключительно для образовательных и исследовательских целей.
Процесс работы OpenPetya (UEFI) описан ниже:
Вы можете собрать проект с помощью приведённых ниже команд.
make # Сборка mbr.bin и stage2.bin
./build.sh # Сборка OpenPetya.exe
Предупреждение: Пожалуйста, запускайте его в вашей виртуальной машине!
Приведённые ниже команды показывают, как установить кастомный MBR и загрузчик второго этапа (требуются права администратора):
Legacy BIOS:
OpenPetya.exe --list
OpenPetya.exe --drive 0 --install mbr.bin stage2.bin
UEFI:
OpenPetya.exe --is-admin
OpenPetya.exe --firmware
OpenPetya.exe --uefi-secure
OpenPetya.exe --drive 0 --uefi-install petya.efi
OpenPetya.exe --drive 0 --uefi-restore
Подробные объяснения о:
NtRaiseHardError)документированы в этой статье.
Этот проект был разработан исключительно в образовательных и исследовательских целях.
Цель OpenPetya — изучение:
НЕ используйте этот проект для незаконной деятельности или против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Автор НЕ несёт ответственности за любое неправомерное использование этого программного обеспечения.
Спасибо, что заинтересовались этим проектом. Отзывы и предложения приветствуются.