
ROP ROCKET — это продвинутая платформа для атак с повторным использованием кода, с обширными возможностями генерации ROP цепочек, включая новую атаку на системные вызовы Windows, новый Heaven's Gate и «безшеллкодную» ROP. Платформа использует эмуляцию и обфускацию для расширения поверхности атаки.
Эта новая, продвинутая ROP-структура дебютировала на DEF CON 31 с некоторыми беспрецедентными возможностями. ROCKET генерирует несколько типов цепочек и предоставляет новые шаблоны или техники.
Обратите внимание, что это всё ещё работа в процессе, с некоторыми обновлёнными и расширенными возможностями, которые будут добавлены. Обновления должны быть регулярными. Если вы столкнётесь с проблемами, пожалуйста, сообщайте о них в issues или по электронной почте, и я их исправлю. Также будут добавлены дополнительные альтернативные способы генерации определённых типов гаджетов.
Работа продолжается, и новые возможности регулярно добавляются. Пожалуйста, проверяйте обновления на регулярной основе.

ROP ROCKET очень мощный и обладает некоторыми уникальными возможностями, включая следующие:
Август 2025 г.: ROP ROCKET имеет мини-инструмент обхода ASLR, выпущенный на DEFCON 10 августа 2025 г., который генерирует девять вариантов обхода 64-битного ASLR с высокой энтропией.


Это должно быть установлено как локальный пакет. Есть файл setup.py. Для этого просто перейдите в каталог и выполните следующую команду:
py -m pip install -e ./ В зависимости от вашей установки Python вам может потребоваться немного изменить её. Если вы просмотрите установленные пакеты, вы должны увидеть ROP-ROCKET: py -m pip list Считается, что все необходимые зависимости включены, но если вы столкнётесь с какими-либо проблемами – из-за новизны этого релиза – просто откройте issue, и мы рассмотрим это.
Просто запустите его из командной строки: py rop2.py rop_tester_syscall.exe Полностью эксплуатируемый rop_tester_syscall.exe также включён в виде zip-файла. Он был разработан, чтобы помочь убедиться, что все гаджеты находятся и не пропущены.
Этот инструмент был вдохновлён гораздо более старым JOP ROCKET, который я написал в рамках части своей докторской диссертации и выпустил на DEF CON 27 в 2019 году. Это привело к значительному дальнейшему развитию JOP и многим новым возможностям JOP, а также к предоставлению обширной документации по механике и использованию JOP в различных статьях. Этот инструмент сейчас немного устарел — это более старый стиль Python. С этим новым исследованием часть вдохновения заключается в попытке сделать что-то новое и иное в области ROP. На данный момент мы выполнили эту задачу. Так что в некотором смысле этот инструмент вдохновлён JOP-инструментом, что позволяет нам, возможно, попытаться мыслить нестандартно и менее традиционными способами, чем обычно с ROP. ROP ROCKET не имеет никаких возможностей JOP — он строго посвящён ROP. Единственным полностью посвящённым JOP инструментом является JOP ROCKET, так как всё остальное имеет лишь заглушки для будущей работы над JOP. В любом случае, я хотел прояснить эту историческую информацию, чтобы схожесть названий никого не смущала, так как это два совершенно разных и несвязанных инструмента.

ROCKET сгенерировал атаку Heaven's Gate x86-to-x64, выведя её на экран и сохранив.

ROCKET сгенерировал системный вызов Windows для NtProtectVirtualMemory для Win 10/11, выведя его на экран и сохранив.

Благодаря своим внутренним возможностям эмуляции ROCKET может рассматривать множество необычных комбинаций гаджетов. Приведённый выше код предназначен для захвата указателя стека (ESP) и перемещения его в ECX. Он может находить альтернативные способы сделать это, а не просто использовать один ROP-гаджет, который может быть недоступен. Сначала он перемещает esp в edi; затем edi перемещается в ebx; а затем ebx перемещается в esi. ECX устанавливается в ноль с помощью целочисленного переполнения, а затем значение esi (содержащее наш указатель стека) добавляется к ecx. В результате указатель стека оказывается в ecx. Эквивалентный более короткий гаджет был бы mov ecx, esp # ret — однако такой не всегда возможен. ROCKET также корректно обрабатывает дополнительные инструкции pop, создавая правильные заполнители. Обратите внимание, что ROP ROCKET тщательно учитывает регистры, которые необходимо защищать («исключённые регистры»), которые могут меняться от гаджета к гаджету. В приведённом выше примере ни один регистр, который мы пытаемся защитить, не «затирается».
