
OpenPetya v2.0.0
Um bootkit de Prova de Conceito e aplicativo de boot UEFI inspirado no ransomware Petya, escrito em Assembly, C e C++.
OpenPetya
Um bootkit de Prova de Conceito e aplicação de boot UEFI inspirado no ransomware Petya, escrito em Assembly, C e C++
Se você achar este projeto útil ou informativo, eu realmente agradeceria uma ⭐ no repositório. Seu apoio seria uma grande motivação para eu continuar melhorando esta ferramenta.
Visão Geral
OpenPetya é um projeto educacional projetado para estudar como bootkits e ransomware de baixo nível operam internamente.
O projeto foca em:
- bootloading MBR personalizado
- processo de boot em múltiplos estágios
- transição para o Modo Protegido
- criptografia da Master File Table (MFT) do NTFS
- criptografia baseada em Salsa20
- validação de senha e fluxo de restauração
- programação UEFI
OpenPetya NÃO tem a intenção de ser uma reimplementação exata do Petya ou do NotPetya. Em vez disso, é uma Prova de Conceito simplificada projetada para fins de aprendizado e pesquisa.
Vale mencionar que o OpenPetya não inclui funcionalidade de Command-and-Control (C2). Além disso, o OpenPetya armazena dados de backup da MFT em texto puro dentro de setores ocultos após a criptografia. Esse comportamento é intencionalmente projetado para fins educacionais, pois esses recursos são relativamente triviais em comparação com o bootloader principal e os mecanismos criptográficos implementados neste projeto. No entanto, você ainda pode modificar ou remover esses recursos, se necessário.
Nota: Na versão 2.0.0, optei por não implementá-lo para UEFI por preocupação de que pudesse ser usado indevidamente para danificar sistemas operacionais Windows modernos.
Motivação do Projeto
v1.0.0
Nos últimos meses, venho estudando:
- análise de malware
- bootloaders
- rootkits e bootkits
- internals do Windows
- fundamentos de sistemas operacionais
- programação Assembly de baixo nível
Ao pesquisar Petya e NotPetya, percebi que muitos recursos online apenas explicam brevemente o fluxo geral sem demonstrar como o processo de boot subjacente realmente funciona.
Além disso, muitos projetos existentes relacionados ao Petya dependem de binários de bootloader extraídos ou componentes originais modificados, em vez de implementar a lógica do zero.
Portanto, decidi desenvolver o OpenPetya como um projeto prático para entender:
- como bootkits MBR personalizados funcionam
- como bootloaders de estágio 2 operam
- como fluxos de criptografia de disco funcionam
- como mecanismos de validação de senha e restauração são implementados
O projeto também faz parte da minha pesquisa contínua sobre bootkits, malware de baixo nível e internals de sistemas operacionais.
Artigos relacionados:
- Analyzing Petya
- Analyzing NotPetya
- Simple MBR And Bootloader
- OpenBootloader
- Rootkits and Bootkits Notes
- PC Assembly Language Notes
- Serious Cryptography Notes
v2.0.0
Na versão 2.0.0, fiquei curioso sobre como bootkits modernos funcionam (conforme abordado nos últimos capítulos de "Rootkits and Bootkits" de Alex Matrosov, Eugene Rodionov e Sergey Bratus). Portanto, decidi estudar programação de aplicações EFI do zero. Então descobri que era muito mais difícil do que eu esperava (em termos de depuração).
De qualquer forma, depois de escrever algumas aplicações EFI simples, publiquei o OpenPetya v2.0.0!
Recursos
v1.0.0
-
MBR Personalizado
O OpenPetya usa um Master Boot Record (MBR) personalizado para carregar o payload de estágio 2.
-
Bootloader Personalizado de Estágio 2
O bootloader de estágio 2 contém a funcionalidade principal do projeto, incluindo:
- criptografia/descriptografia Salsa20
- validação de senha
- lógica de restauração
- interface de usuário
-
Transição para o Modo Protegido
O bootloader alterna do Modo Real de 16 bits para o Modo Protegido de 32 bits antes de executar a lógica de nível superior.
-
Criptografia da MFT
Semelhante ao Petya original, o OpenPetya criptografa partes críticas da Master File Table (MFT) do NTFS usando Salsa20.
-
Validação de Senha
O OpenPetya valida a senha inserida antes da descriptografia para evitar corrupção irreversível causada por chaves inválidas.
-
Restauração Automática
Uma vez que a senha correta é inserida:
- os dados criptografados são restaurados
- a cadeia de boot original é recuperada
- o OpenPetya se remove automaticamente
v2.0.0
O OpenPetya v2.0.0 NÃO inclui criptografia da MFT na aplicação EFI personalizada (petya.efi). Ele oferece um painel de login simples e realiza chainloading quando a senha está correta.
Optei por não implementar a criptografia da MFT na aplicação EFI porque ela poderia ser usada indevidamente para danificar sistemas operacionais Windows modernos, enquanto a implementei na v1.0.0, pois atores de ameaças já a haviam demonstrado em 2016.
Componentes
OpenPetya.exe
Aplicação instaladora e controladora em modo de usuário.
Funções:
- seleção de unidade
- instalação
- acionamento de reinicialização
- interface de utilitários
mbr.bin
Código personalizado do Master Boot Record (MBR) responsável por:
- carregamento do estágio 2
- execução inicial do boot
stage2.bin
O payload principal do OpenPetya.
Responsabilidades:
- transição para o Modo Protegido
- operações criptográficas Salsa20
- criptografia/descriptografia da MFT
- validação de senha
- restauração
- interface em tempo de boot
petya.efi
O payload principal do OpenPetya.
Funções:
- validação de senha
- chainloading
Fluxo de Trabalho
BIOS
O fluxo de trabalho do OpenPetya (MBR + Bootloader) é resumido abaixo.
- Os usuários instalam o OpenPetya usando
OpenPetya.exee escolhem uma senha. - A máquina é reinicializada manualmente ou através do mecanismo BSOD (via
NtRaiseHardError) fornecido pelo instalador. - Durante o boot, o MBR personalizado carrega o payload de estágio 2.
- O payload de estágio 2 alterna a CPU para o Modo Protegido.
- O OpenPetya criptografa partes selecionadas da Master File Table (MFT) do NTFS.
- Após a criptografia, a máquina reinicia novamente.
- Uma interface em tempo de boot solicita a senha ao usuário.
- Se a senha estiver correta:
- os dados criptografados são descriptografados
- a cadeia de boot original é restaurada
- o OpenPetya se remove automaticamente
- O Windows inicializa normalmente novamente.
Diferente do ransomware Petya original, o OpenPetya não tenta enganar os usuários com telas falsas de CHKDSK ou comportamento de engenharia social. O projeto é projetado puramente para fins educacionais e de pesquisa.
UEFI
O fluxo de trabalho do OpenPetya (UEFI) é resumido abaixo:
- Uma interface em tempo de boot solicita a senha ao usuário.
- Se a senha estiver correta:
- o sistema realiza chainloading
- Os usuários removem o programa EFI personalizado manualmente
Compilação
Você pode compilar o projeto usando os comandos abaixo.
make # Compila mbr.bin e stage2.bin
./build.sh # Compila OpenPetya.exe
Uso
Aviso: Execute-o na sua máquina virtual!
Os comandos abaixo mostram como instalar o MBR personalizado e o bootloader de estágio 2 (privilégio administrativo é necessário):
BIOS legado:
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
Notas Técnicas
Explicações detalhadas sobre:
- processo de boot do MBR
- Modo Real e Modo Protegido
- implementação do Salsa20
- fluxo de criptografia da MFT
- design de bootkits
- mais discussões sobre Petya e NotPetya
- como usar APIs não documentadas (como
NtRaiseHardError)
Estão documentadas em este artigo.
Aviso Legal
Este projeto foi desenvolvido puramente para fins educacionais e de pesquisa.
O objetivo do OpenPetya é estudar:
- bootkits
- internals de sistemas operacionais
- técnicas de malware de baixo nível
- arquitetura de bootloaders
NÃO use este projeto para atividades ilegais ou contra sistemas que você não possui ou para os quais não tem permissão explícita de teste.
O autor NÃO é responsável por qualquer uso indevido deste software.
Demonstração (Windows 7)
Capturas de Tela
Demonstração em Tempo de Execução
Planos Futuros
- Fluxo de recuperação aprimorado
- Melhor parsing do NTFS
- Simulação mais precisa do comportamento do Petya
- Pesquisa adicional sobre bootkits
- Modo Gráfico em tela cheia
- Suporte a Linux
Agradecimentos
Obrigado por conferir este projeto. Feedback e sugestões são bem-vindos.