
ROP ROCKET é um framework avançado de ataque de reuso de código, com amplas capacidades de geração de cadeias ROP, incluindo para o novo ataque de Syscalls do Windows, um novo Heaven's Gate, e ROP "shellcodeless". O framework utiliza emulação e ofuscação para ajudar a expandir a superfície de ataque.
Este novo e avançado framework ROP fez sua estreia na DEF CON 31 com algumas capacidades sem precedentes. O ROCKET gera vários tipos de cadeias e fornece novos padrões ou técnicas.
Por favor, note que este ainda é um trabalho em andamento, com algumas capacidades atualizadas e aprimoradas a serem adicionadas. As atualizações devem ser regulares. Se encontrar problemas, por favor, coloque-os em issues ou envie-me um e-mail, e eu os resolverei. Alternativas adicionais para gerar certos tipos de gadgets também serão adicionadas.
O trabalho está em andamento, com novas capacidades sendo adicionadas regularmente no momento. Por favor, verifique regularmente.

O ROP ROCKET é muito poderoso com algumas capacidades únicas, que incluem o seguinte:
Agosto de 2025: O ROP ROCKET possui uma Mini-Ferramenta de Bypass de ASLR, lançada na DEFCON em 10 de agosto de 2025, que gerará nove bypasses de ASLR para ASLR de 64 bits de alta entropia.


Isso deve ser instalado como um pacote local. Existe um arquivo setup.py. Para fazer isso, basta ir ao diretório e inserir o seguinte comando:
py -m pip install -e ./ Dependendo da sua instalação do Python, pode ser necessário variar um pouco. Se você visualizar os pacotes instalados, deverá ver ROP-ROCKET aparecer: py -m pip list Acredita-se que todas as dependências necessárias estão incluídas, mas se você encontrar algum problema - devido à novidade deste lançamento, basta abrir uma issue, e iremos analisá-lo.
Basta executá-lo a partir da linha de comando: py rop2.py rop_tester_syscall.exe Um arquivo rop_tester_syscall.exe totalmente explorável também está incluído como um arquivo zip. Isso foi desenvolvido apenas para ajudar a garantir que todos os gadgets estejam sendo encontrados e não perdidos.
Esta ferramenta foi inspirada pelo muito mais antigo JOP ROCKET, que escrevi como parte da minha tese de doutorado e lancei na DEF CON 27 em 2019. Isso levou a muito desenvolvimento adicional em JOP e muitas novas capacidades JOP, além de fornecer documentação extensa sobre a mecânica e uso do JOP em diferentes artigos. Essa ferramenta está um pouco desatualizada no momento - é um estilo mais antigo de Python. Com esta nova pesquisa, parte desta inspiração é tentar fazer algo novo e diferente na área de ROP. Cumprimos esse mandato até agora. Então, de certa forma, esta ferramenta é inspirada por uma ferramenta JOP, permitindo-nos talvez tentar pensar fora da caixa e de maneiras menos convencionais do que normalmente faríamos com ROP. O ROP ROCKET não possui nenhuma capacidade JOP - é estritamente dedicado ao ROP. A única ferramenta totalmente dedicada a JOP é o JOP ROCKET, já que todo o resto meio que tem um placeholder para trabalho futuro em JOP. De qualquer forma, eu queria esclarecer essas informações históricas, para que a semelhança nos nomes não confunda ninguém, pois são duas ferramentas muito diferentes e não relacionadas.

O ROCKET gerou um ataque Heaven's Gate x86-para-x64, imprimindo-o na tela e salvando-o.

O ROCKET gerou uma Syscall do Windows para NtProtectVirtualMemory para Win 10/11, imprimindo-a na tela e salvando-a.

Graças às suas capacidades internas de emulação, o ROCKET pode considerar muitas combinações incomuns de gadgets. O acima destina-se a capturar um ponteiro de pilha (ESP) e movê-lo para ECX. Ele é capaz de encontrar meios alternativos de fazer isso, em vez de usar apenas um único gadget ROP, que pode não estar disponível. Primeiro, move esp para edi; edi é então movido para ebx; e ebx é então movido para esi. ECX é definido como zero, via estouro de inteiro, e então o valor de esi (contendo nosso ponteiro de pilha) é adicionado a ecx. O resultado é que o ponteiro de pilha está em ecx. Um gadget equivalente e mais curto seria mov ecx, esp # ret - embora isso nem sempre seja possível. O ROCKET também lida corretamente com as instruções pop extras, produzindo o preenchimento correto. Observe que o ROP ROCKET considera cuidadosamente os registradores que devem ser protegidos ("registradores excluídos"), que podem mudar de gadget para gadget. No exemplo acima, nenhum registrador é "corrompido" que estamos tentando proteger.

O ROCKET fornece muitas opções sobre o que e como você captura gadgets. Os padrões podem ser definidos no arquivo config.cfg, é claro. Aqui, o usuário decide examinar apenas blocos de memória com no máximo 0xa (15) bytes.

Você não pode apenas imprimir cadeias ROP individuais, mas também pode imprimir todos os gadgets encontrados, organizados por categoria, como mov edx. Existem centenas de possibilidades. Você também pode refinar os resultados alterando o número de linhas por gadget.

Ao imprimir resultados, existem muitas opções para diferentes tipos de filtros a serem aplicados para excluir gadgets, como ASLR, CFG, DLLs do sistema Windows, ou apenas bytes ruins simples. Isso é tudo altamente personalizável.

Às vezes, você precisa ofuscar um determinado gadget que pode se mostrar indisponível de outra forma, devido a bytes ruins no endereço do gadget. Temos muitas opções para isso, e você também pode excluir com base nos registradores usados ou bytes ruins.
Aqui, o usuário usou ofuscação para decodificar dinamicamente em tempo de execução o endereço para um xor eax, edi # ret, que hipoteticamente ele não poderia usar de outra forma. Uma vez decodificado, o push r32 / ret faz com que isso seja executado imediatamente. Esta é uma ótima maneira de usar gadgets que de outra forma não estariam disponíveis devido a bytes ruins. O ROCKET completa isso em segundos. Sua capacidade de fazer isso com estouro de inteiro é quase garantida de funcionar, assumindo que não haja problemas com bytes ruins ou falta de registradores disponíveis (ou seja, o usuário excluiu muitos registradores).
Esta ferramenta foi criada e escrita por Dr. Bramwell Brizendine, começando no início de 2023.
Shiva Shashank Kusuma trabalhou para o Dr. Bramwell Brizendine como estudante de pós-graduação para desenvolver padrões para o ROP ROCKET. Ele fez um trabalho inestimável e foi co-palestrante na DEFCON e no Black Hat Arsenal. Em 2025, Shiva também começou a contribuir com a programação do ROP ROCKET.
18/09/2023 - Várias melhorias; suporte adicional para formas variantes de vazar o far jump que leva à syscall do Windows.
03/2024 - Muitas atualizações importantes em uma base um tanto regular - por favor, tente manter a cópia mais atualizada, se possível, se você pretende usar ativamente o ROP ROCKET. Alterações individuais não serão listadas. Pequenas mudanças e atualizações provavelmente continuarão. Apenas grandes novos recursos serão descritos. (Alguns pequenos novos recursos já foram adicionados.) Final de março a 3 de abril de 2024 - Atualizações extensas na emulação para melhorar e aumentar a eficiência; suporte para muito mais opções de possibilidades para gadgets individuais serem gerados; correção de bugs; novo lançamento de VirtualAlloc e VirtualProtect via pushad. Embora outras ferramentas já tenham fornecido suporte para VirtualProtect e VirtualAlloc antes, que é por isso que não o fizemos, agora sentimos que seria negligente não incluir estes, especialmente porque podem ser aprimorados pelas capacidades da ferramenta. Criados templates completos para VirtualAlloc e VirtualProtect via pushad, que também incluem shellcode (pop a calc).
05/2024 - Reformulação massiva das syscalls do Windows para expandir grandemente o que pode ser encontrado com binários do mundo real. Mesmo gadgets longos e indesejáveis que vazam o registrador FS (necessário para fazer syscalls do Windows no SysWow64, ou seja, 32 bits) podem ser trabalhados de forma automatizada. Numerosas outras melhorias menores.
28/06/2025 - Atualizações massivas, incluindo suporte para 17 novas WinAPIs não incluídas anteriormente no ROP ROCKET. Adicionada capacidade de definir uma quantidade inicial de estouro - isso é relevante, pois pode afetar cálculos para strings ou ponteiros ao fazer emulação.