
Este framework permite ao usuário descobrir gadgets JOP e pode automatizar a construção de uma cadeia JOP completa para bypass de DEP. JOP ROCKET é a solução definitiva para programação orientada a salto no Windows. JOP ROCKET também encontra o novo dispatcher de dois gadgets, o que expande muito o que é possível com JOP.

NOTA: Com a versão 2.15, apresentamos o despachante de dois gadgets—isto expande significativamente as possibilidades com gadgets despachantes. Muitas otimizações e novos recursos adicionais foram adicionados com a versão 2.15 em 26 de maio de 2021.
Atualização: 29 de novembro de 2021: Enviei os slides do @Hack em Riade e também um white paper sobre JOP sem shellcode. Os vídeos de demonstração silenciosa usados na palestra podem ser encontrados aqui: https://www.youtube.com/playlist?list=PLynyJsHgQaJ3AfQGKVkeZJ9cWa7mIqDMV
Atualização: 1 de dezembro de 2022: Adicionei uma seção de Perguntas e Respostas no final deste GitHub, que inclui links para recursos (palestras e artigos).
Versão atual: 2.15
A Ferramenta Especialista em Conhecimento Cibernético Aberto para Reversão de Programação Orientada a Saltos, ou JOP ROCKET, é uma ferramenta projetada para facilitar a descoberta de gadgets JOP em um ambiente Windows x86. Esta ferramenta foi lançada na DEF CON 27, onde foi tema de uma palestra do Dr. Bramwell Brizendine e do Dr. Josh Stroschein. Uma grande atualização que estava em desenvolvimento foi lançada em setembro de 2020, com atualizações menores planejadas para o futuro próximo.
Por favor, navegue até https://github.com/Bw3ll/JOP_ROCKET para baixar esta ferramenta.
Várias atualizações importantes ocorreram. Recomenda-se que qualquer versão anterior à 2.15 seja atualizada para aproveitar as muitas atualizações. Elas incluem geração automática de cadeias JOP, descoberta de novos tipos de gadgets, novos tipos de gadgets despachantes e os despachantes de dois gadgets. O JOP ROCKET também passou por muitas outras mudanças importantes para melhorar e otimizar seu desempenho e velocidade.
O JOP ROCKET é um programa em Python que utiliza o mecanismo de desmontagem Capstone, bem como outras dependências. Esta ferramenta de exploração de software é um artefato completo projetado para facilitar a Programação Orientada a Saltos. Ela foi desenvolvida para ser executada no Windows.
As informações de uso não estão disponíveis no momento além do que está no menu de ajuda. Construir exploits JOP não é simples e é cheio de nuances, com alguns paralelos, mas muitas diferenças em relação ao ROP. Consulte a palestra da DEF CON para ver uma breve demonstração. https://www.youtube.com/watch?v=PMihX693mPE
Esta ferramenta foi ensinada na Dakota State University no programa de doutorado, como parte do CSC 848: Advanced Software Exploitation, o curso mais desafiador do programa. Os alunos concluíram exploits que incluíam bypass de DEP e ASLR.
Agradecemos a Austin Babcock por sua ajuda com vários problemas relacionados ao JOP ROCKET, incluindo suas instruções de instalação. Ele é um mestre em JOP.
Disponibilizamos um arquivo aqui, JOP ROCKET challenge - toy binaries.zip, para permitir que interessados testem e pratiquem JOP em alguns binários de exemplo, usando o JOP ROCKET. Você consegue fazer bypass da Prevenção de Execução de Dados (DEP)? Isso é bom se você quiser praticar JOP em um binário que você sabe que é garantidamente vulnerável e que possui os gadgets certos. Existe uma versão mais fácil e uma mais difícil do mesmo binário. Embora o JOP provavelmente seja mais difícil na primeira vez, até que alguém pegue o jeito. Depois de dominar o JOP com esses binários, você pode experimentá-lo em alguns gadgets do mundo real, assumindo que eles tenham gadgets suficientes. Se você estiver usando o paradigma de gadget despachante, lembre-se de que você precisa de um gadget despachante. O JOP também é possível misturado com ROP, usando um gadget JOP para apontar para um RET, de modo que JMP EDX poderia ter EDX apontando para RET. Isso é mais útil se você precisar de apenas um ou dois gadgets JOP para fazer o ROP funcionar. Os binários no arquivo devem permitir que você use o paradigma de gadget despachante de algumas maneiras diferentes, no entanto!
Com o paradigma de gadget despachante do JOP, você pode eliminar 100% o ROP, embora seja mais fácil começar com dois gadgets ROP, para carregar a tabela de despacho e o gadget despachante. A cadeia JOP pré-construída fará isso automaticamente, assumindo que eles estejam presentes. A partir daí, pode ser JOP puro, usando saltos indiretos e chamadas indiretas (JMP EBX, CALL EDX, etc.).
Instale o Python 2.7. A maneira mais fácil de fazer isso será pelo site: https://www.python.org/download/releases/2.7/
Se você já tem o Python 3, ainda precisará do Python 2.7, pois a ferramenta não funcionará corretamente com o Python 3.
Se você tiver ambos, precisará adicionar o comentário especial:
#!python2
ao topo do rocket.py. Em seguida, execute com "py rocket.py" em vez de "python rocket.py". Isso garantirá que o programa seja executado usando o Python 2.7. Alternativamente, você pode simplesmente fazer py -2 rocket.py

Instale o pip, caso ele já não esteja incluído com o Python.
Você precisará salvar o script fornecido e executá-lo, conforme as instruções no link. Se você encontrar um erro, tente usar o script "alternativo".
Se o pip ainda não funcionar, tente adicionar "C:\python27\Scripts" (ou o diretório correspondente) à sua variável de sistema Path:

Comece a instalar as dependências com o pip!
Nota: As instalações com pip devem funcionar usando o terminal do Windows, mas podem não funcionar em um ambiente Cygwin. Se estiver usando Cygwin, talvez seja necessário instalar a partir do código-fonte. Isso pode ser uma tarefa mais demorada, e você é orientado a consultar a documentação mais recente dos diferentes fabricantes das dependências.
pip install capstone
pip install pefile2
Você provavelmente já terá o pefile instalado com o Python 2.7, mas essa versão é antiga.
O Pefile2 é o que você precisa.
Você pode precisar executar pip uninstall pefile para fazer o programa usar o pefile2.
Etc... Uma lista de dependências pode ser encontrada no final deste documento. Cada uma deve ser instalada, caso ainda não esteja.
Os dois acima provavelmente são os únicos que você precisará instalar manualmente.
Muitas das dependências já vêm com o Python. Para listar os módulos disponíveis, abra um prompt:

Examine a lista e veja se você tem todas as dependências. Para aquelas que você não tiver, instale com o pip ou via código-fonte.
Nota: pywin32 é usado para Win32file e Win32api
Você deve ter em um diretório todos os cinco arquivos, rocket.py, lists,py, checkIt.py, ui.py e stackpivot.py. Para começar a usar a ferramenta, execute na linha de comando, python rocket.py filename.exe -- sendo filename.exe o programa para o qual você deseja obter gadgets JOP ou cadeias JOP.
Se você estiver recebendo erros como "SyntaxError: Missing parentheses in call to 'print'", provavelmente está executando com o Python 3. Tente fazer a correção descrita no Passo 1 para fazer o programa usar o Python 2.
Erros relacionados a "lists" ou "ui" provavelmente são causados pela localização dos arquivos lists.py e ui.py. Certifique-se de que esses arquivos estejam no mesmo diretório do rocket.py.