
Эта платформа позволяет пользователю обнаруживать JOP-гаджеты и может автоматизировать построение полной JOP-цепочки для обхода DEP. JOP ROCKET — это идеальное решение для jump-oriented программирования в Windows. JOP ROCKET также находит новый двухгаджетный диспетчер, который значительно расширяет возможности JOP.

ПРИМЕЧАНИЕ: В версии 2.15 мы представляем двухгаджетный диспетчер — это значительно расширяет возможности с диспетчерскими гаджетами. 26 мая 2021 года в версии 2.15 было добавлено множество оптимизаций и новых функций.
Обновление: 29 ноября 2021 г.: Я загрузил слайды для @Hack в Эр-Рияде, а также технический доклад (white paper) о JOP без шелл-кода. Тихое демо-видео, использованные в выступлении, можно найти здесь: https://www.youtube.com/playlist?list=PLynyJsHgQaJ3AfQGKVkeZJ9cWa7mIqDMV
Обновление: 1 декабря 2022 г.: Я добавил раздел «Вопросы и ответы» в конец этого GitHub-репозитория, который включает ссылки на ресурсы (выступления и статьи).
Текущая версия: 2.15
Инструмент Jump-oriented Programming Reversing Open Cyber Knowledge Expert Tool, или JOP ROCKET, предназначен для облегчения поиска JOP-гаджетов в среде x86 Windows. Этот инструмент был представлен на DEF CON 27, где он стал темой доклада доктора Брэмвелла Бризендайна и доктора Джоша Строшайна. Крупное обновление, которое находилось в разработке, было выпущено в сентябре 2020 года, с планами небольших обновлений в ближайшем будущем.
Пожалуйста, перейдите по адресу https://github.com/Bw3ll/JOP_ROCKET, чтобы загрузить этот инструмент.
Произошёл ряд крупных обновлений. Рекомендуется обновить любую версию, предшествующую 2.15, чтобы воспользоваться многочисленными обновлениями. Они включают автоматическую генерацию JOP-цепей, обнаружение новых типов гаджетов, новые типы диспетчерских гаджетов и двухгаджетные диспетчеры. JOP ROCKET также претерпел множество других важных изменений, направленных на повышение производительности и скорости.
JOP ROCKET — это программа на Python, использующая дизассемблерный движок Capstone, а также другие зависимости. Этот инструмент для эксплуатации программного обеспечения является полнофункциональным продуктом, предназначенным для облегчения Jump-oriented Programming. Предполагается, что он будет запускаться в Windows.
Информация об использовании в настоящее время недоступна, кроме той, что есть в меню справки. Создание JOP-эксплойтов непросто и требует тонкого понимания; здесь есть некоторые параллели с ROP, но и много отличий. Обратитесь к выступлению на DEF CON, чтобы увидеть краткую демонстрацию. https://www.youtube.com/watch?v=PMihX693mPE
Этот инструмент преподавался в Университете штата Дакота в докторской программе, в рамках курса CSC 848: Advanced Software Exploitation, самого сложного курса в программе. Студенты выполняли эксплойты, включавшие обход DEP и ASLR.
Благодарим Остина Бэбкока за помощь с различными вопросами, связанными с JOP ROCKET, включая его инструкции по установке. Он мастер JOP.
Мы загрузили архив здесь, JOP ROCKET challenge - toy binaries.zip, чтобы заинтересованные стороны могли протестировать и попрактиковаться в JOP на некоторых образцах игрушечных бинарных файлов с помощью JOP ROCKET. Сможете ли вы обойти Data Execution Prevention (DEP)? Это хорошо, если вы хотите попрактиковаться в JOP на бинарном файле, который, как вы знаете, гарантированно уязвим и содержит нужные гаджеты. Есть более лёгкая и более сложная версии одного и того же бинарного файла. Хотя JOP, вероятно, будет сложнее в первый раз, пока кто-то не освоится. Как только вы освоите JOP на этих бинарных файлах, вы можете попробовать его на некоторых реальных гаджетах, при условии, что в них достаточно гаджетов. Если вы используете парадигму диспетчерских гаджетов, имейте в виду, что вам действительно нужен диспетчерский гаджет. JOP также можно смешивать с ROP, используя JOP-гаджет, указывающий на RET, так что JMP EDX может иметь EDX, указывающий на RET. Это более полезно, если вам нужно всего один или два JOP-гаджета, чтобы заставить ROP работать. Бинарные файлы в архиве должны позволить вам использовать парадигму диспетчерских гаджетов несколькими разными способами!
С парадигмой диспетчерских гаджетов JOP вы можете на 100% исключить ROP, хотя проще всего начать с двух ROP-гаджетов, чтобы загрузить диспетчерскую таблицу и диспетчерский гаджет. Готовая JOP-цепь сделает это за вас автоматически, при условии, что они присутствуют. После этого может использоваться чистый JOP, с непрямыми переходами и непрямыми вызовами (JMP EBX, CALL EDX и т.д.).
Установите Python 2.7. Проще всего это сделать с сайта: https://www.python.org/download/releases/2.7/
Если у вас уже установлен Python 3, вам всё равно понадобится Python 2.7, так как инструмент не будет работать должным образом с Python 3.
Если у вас есть оба, вам нужно добавить специальный комментарий:
#!python2
в верхней части rocket.py. Затем запускайте с помощью «py rocket.py» вместо «python rocket.py». Это гарантирует, что программа будет запущена с использованием Python 2.7. В качестве альтернативы можно просто выполнить py -2 rocket.py

установите pip, если он ещё не включён в Python.
Вам нужно сохранить предоставленный скрипт и запустить его, как указано в инструкциях по ссылке. Если возникнет ошибка, попробуйте использовать «альтернативный» скрипт.
Если pip всё ещё не работает, попробуйте добавить «C:\python27\Scripts» (или ваш соответствующий каталог) в системную переменную Path:

Начните установку зависимостей с помощью pip!
Примечание: Установка с помощью pip должна работать в терминале Windows, но может не работать в среде Cygwin. Если вы используете Cygwin, возможно, потребуется устанавливать из исходного кода. Это может занять больше времени; обращайтесь к последней документации от различных разработчиков зависимостей.
pip install capstone
pip install pefile2
И т.д. Список зависимостей можно найти в конце этого документа. Каждая из них должна быть установлена, если ещё не установлена.
Две указанные выше зависимости, вероятно, единственные, которые вам нужно установить самостоятельно.
Многие зависимости уже входят в состав Python. Чтобы вывести список доступных модулей, откройте командную строку:

Просмотрите список и проверьте, есть ли у вас все зависимости. Те, которых нет, установите с помощью pip или из исходного кода.
Примечание: pywin32 используется для Win32file и Win32api
В одном каталоге у вас должны находиться все пять файлов: rocket.py, lists,py, checkIt.py, ui.py и stackpivot.py. Чтобы начать использовать инструмент, выполните в командной строке python rocket.py filename.exe, где filename.exe — программа, для которой вы хотите получить JOP-гаджеты или JOP-цепи.
Если вы получаете ошибки типа "SyntaxError: Missing parentheses in call to 'print'", скорее всего, программа запускается с Python 3. Попробуйте исправление, описанное в Шаге 1, чтобы программа использовала Python 2.
Ошибки, связанные с «lists» или «ui», скорее всего, вызваны расположением файлов lists.py и ui.py. Убедитесь, что эти файлы находятся в том же каталоге, что и rocket.py.