
OpenPetya v2.0.0
A Proof-of-Concept загрузочный набор и UEFI-загрузочное приложение, вдохновлённое программой-вымогателем Petya, написанное на Assembly, C и C++
OpenPetya
Proof-of-Concept буткит и UEFI загрузочное приложение, вдохновлённое вымогателем Petya, написанное на Assembly, C и C++
Если этот проект оказался для вас полезным или информативным, я буду искренне признателен за ⭐ в репозитории. Ваша поддержка станет для меня отличной мотивацией продолжать улучшать этот инструмент.
Обзор
OpenPetya — это образовательный проект, предназначенный для изучения внутреннего устройства буткитов и низкоуровневых вымогателей.
Проект фокусируется на:
- кастомной загрузке через MBR
- многоэтапном процессе загрузки
- переходе в Protected Mode
- шифровании Master File Table (MFT) NTFS
- криптографии на основе Salsa20
- проверке пароля и процессе восстановления
- программировании UEFI
OpenPetya НЕ является точной реimplementation ни Petya, ни NotPetya. Вместо этого это упрощённый Proof-of-Concept, созданный для целей обучения и исследований.
Стоит отметить, что OpenPetya не включает функциональность Command-and-Control (C2). Кроме того, OpenPetya хранит резервную копию MFT в открытом виде внутри скрытых секторов после шифрования. Такое поведение намеренно реализовано в образовательных целях, поскольку эти функции относительно тривиальны по сравнению с основными механизмами загрузчика и криптографии, реализованными в этом проекте. Однако при необходимости вы можете изменить или удалить эти функции.
Примечание: В версии 2.0.0 я решил не реализовывать это для UEFI из опасения, что это может быть использовано для нанесения ущерба современным операционным системам Windows.
Мотивация проекта
v1.0.0
За последние несколько месяцев я изучал:
- анализ вредоносного ПО
- загрузчики
- руткиты и буткиты
- внутреннее устройство Windows
- основы операционных систем
- низкоуровневое программирование на Assembly
Исследуя Petya и NotPetya, я заметил, что многие онлайн-ресурсы лишь кратко объясняют общий процесс работы, не демонстрируя, как на самом деле работает лежащий в основе процесс загрузки.
Кроме того, многие существующие проекты, связанные с Petya, полагаются на извлечённые бинарные файлы загрузчика или модифицированные оригинальные компоненты, а не реализуют логику с нуля.
Поэтому я решил разработать OpenPetya как практический проект для понимания:
- как работают кастомные MBR-буткиты
- как работают загрузчики второго этапа
- как работают процессы шифрования диска
- как реализованы механизмы проверки пароля и восстановления
Проект также является частью моих ongoing исследований буткитов, низкоуровневого вредоносного ПО и внутреннего устройства операционных систем.
Связанные статьи:
- Analyzing Petya
- Analyzing NotPetya
- Simple MBR And Bootloader
- OpenBootloader
- Rootkits and Bootkits Notes
- PC Assembly Language Notes
- Serious Cryptography Notes
v2.0.0
В версии 2.0.0 мне стало интересно, как работают современные буткиты (как описано в последних нескольких главах книги "Rootkits and Bootkits" Алекса Матросова, Евгения Родионова и Сергея Братуса). Поэтому я решил изучить программирование EFI-приложений с нуля. Затем я обнаружил, что это оказалось гораздо сложнее, чем я ожидал (особенно в плане отладки).
В любом случае, после написания нескольких простых EFI-приложений я опубликовал OpenPetya v2.0.0!
Возможности
v1.0.0
-
Кастомный MBR
OpenPetya использует кастомную главную загрузочную запись (MBR) для загрузки полезной нагрузки второго этапа.
-
Кастомный загрузчик второго этапа
Загрузчик второго этапа содержит основную функциональность проекта, включая:
- шифрование/дешифрование Salsa20
- проверку пароля
- логику восстановления
- пользовательский интерфейс
-
Переход в Protected Mode
Загрузчик переключается из 16-битного Real Mode в 32-битный Protected Mode перед выполнением логики более высокого уровня.
-
Шифрование MFT
Как и оригинальный Petya, OpenPetya шифрует критические части Master File Table (MFT) NTFS с помощью Salsa20.
-
Проверка пароля
OpenPetya проверяет введённый пароль перед дешифрованием, чтобы предотвратить необратимое повреждение, вызванное неверными ключами.
-
Автоматическое восстановление
После ввода правильного пароля:
- зашифрованные данные восстанавливаются
- исходная цепочка загрузки восстанавливается
- OpenPetya удаляет себя автоматически
v2.0.0
OpenPetya v2.0.0 НЕ включает шифрование MFT в кастомном EFI-приложении (petya.efi). Оно предлагает простую панель входа и выполняет chainloading после ввода правильного пароля.
Я решил не реализовывать шифрование MFT в EFI-приложении, поскольку оно могло бы быть использовано для нанесения ущерба современным операционным системам Windows, тогда как в v1.0.0 я реализовал его, поскольку злоумышленники уже продемонстрировали это в 2016 году.
Компоненты
OpenPetya.exe
Пользовательское приложение-установщик и контроллер в режиме пользователя.
Функции:
- выбор диска
- установка
- запуск перезагрузки
- интерфейс утилит
mbr.bin
Кастомный код главной загрузочной записи (MBR), отвечающий за:
- загрузку второго этапа
- раннее выполнение при загрузке
stage2.bin
Основная полезная нагрузка OpenPetya.
Обязанности:
- переход в Protected Mode
- криптографические операции Salsa20
- шифрование/дешифрование MFT
- проверка пароля
- восстановление
- интерфейс во время загрузки
petya.efi
Основная полезная нагрузка OpenPetya.
Функции:
- проверка пароля
- chainloading
Процесс работы
BIOS
Процесс работы OpenPetya (MBR + Bootloader) описан ниже.
- Пользователи устанавливают OpenPetya с помощью
OpenPetya.exeи выбирают пароль. - Машина перезагружается вручную или через механизм BSOD (с помощью
NtRaiseHardError), предоставляемый установщиком. - Во время загрузки кастомный MBR загружает полезную нагрузку второго этапа.
- Полезная нагрузка второго этапа переключает CPU в Protected Mode.
- OpenPetya шифрует выбранные части Master File Table (MFT) NTFS.
- После шифрования машина перезагружается снова.
- Интерфейс во время загрузки запрашивает у пользователя пароль.
- Если пароль правильный:
- зашифрованные данные дешифруются
- исходная цепочка загрузки восстанавливается
- OpenPetya удаляет себя автоматически
- Windows загружается в обычном режиме.
В отличие от оригинального вымогателя Petya, OpenPetya не пытается обманывать пользователей поддельными экранами CHKDSK или методами социальной инженерии. Проект предназначен исключительно для образовательных и исследовательских целей.
UEFI
Процесс работы OpenPetya (UEFI) описан ниже:
- Интерфейс во время загрузки запрашивает у пользователя пароль.
- Если пароль правильный:
- система выполняет chainloading
- Пользователи удаляют кастомную EFI-программу вручную
Сборка
Вы можете собрать проект с помощью приведённых ниже команд.
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
Технические заметки
Подробные объяснения о:
- процессе загрузки MBR
- Real Mode и Protected Mode
- реализации Salsa20
- процессе шифрования MFT
- дизайне буткитов
- дополнительных обсуждениях Petya и NotPetya
- использовании недокументированных API (таких как
NtRaiseHardError)
документированы в этой статье.
Отказ от ответственности
Этот проект был разработан исключительно в образовательных и исследовательских целях.
Цель OpenPetya — изучение:
- буткитов
- внутреннего устройства операционных систем
- низкоуровневых методов вредоносного ПО
- архитектуры загрузчиков
НЕ используйте этот проект для незаконной деятельности или против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Автор НЕ несёт ответственности за любое неправомерное использование этого программного обеспечения.
Демонстрация (Windows 7)
Скриншоты
Демонстрация работы
Планы на будущее
- Улучшенный процесс восстановления
- Более качественный парсинг NTFS
- Более точная симуляция поведения Petya
- Дополнительные исследования буткитов
- Полноэкранный Graphics Mode
- Поддержка Linux
Благодарности
Спасибо, что заинтересовались этим проектом. Отзывы и предложения приветствуются.