
Um bootkit de Prova de Conceito e aplicativo de boot UEFI inspirado no ransomware Petya, escrito em Assembly, C e C++.
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.
OpenPetya é um projeto educacional projetado para estudar como bootkits e ransomware de baixo nível operam internamente.
O projeto foca em:
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.
Nos últimos meses, venho estudando:
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:
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:
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!
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:
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:
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.
OpenPetya.exeAplicação instaladora e controladora em modo de usuário.
Funções:
mbr.binCódigo personalizado do Master Boot Record (MBR) responsável por:
stage2.binO payload principal do OpenPetya.
Responsabilidades:
petya.efiO payload principal do OpenPetya.
Funções:
O fluxo de trabalho do OpenPetya (MBR + Bootloader) é resumido abaixo.
OpenPetya.exe e escolhem uma senha.NtRaiseHardError) fornecido pelo instalador.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.
O fluxo de trabalho do OpenPetya (UEFI) é resumido abaixo:
Você pode compilar o projeto usando os comandos abaixo.
make # Compila mbr.bin e stage2.bin
./build.sh # Compila OpenPetya.exe
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
Explicações detalhadas sobre:
NtRaiseHardError)Estão documentadas em este artigo.
Este projeto foi desenvolvido puramente para fins educacionais e de pesquisa.
O objetivo do OpenPetya é estudar:
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.
Obrigado por conferir este projeto. Feedback e sugestões são bem-vindos.