
ROP ROCKET은 고급 코드 재사용 공격 프레임워크로, 새로운 Windows Syscalls 공격, 새로운 Heaven's Gate, 그리고 "shellcodeless" ROP를 포함한 광범위한 ROP 체인 생성 기능을 제공합니다. 이 프레임워크는 에뮬레이션과 난독화를 활용하여 공격 표면을 확장하는 데 도움을 줍니다.
이 새롭고 진보된 ROP 프레임워크는 DEF CON 31에서 데뷔하여 전례 없는 기능들을 선보였습니다. ROCKET은 여러 유형의 체인을 생성하고 새로운 패턴이나 기술을 제공합니다.
이 도구는 아직 개발 중이며, 업데이트 및 향상된 기능이 추가될 예정입니다. 업데이트는 정기적으로 이루어질 것입니다. 문제가 발생하면 이슈에 올리거나 이메일로 알려주시면 처리하겠습니다. 또한 특정 유형의 가젯을 생성하는 대체 방법도 추가될 예정입니다.
현재 새로운 기능이 정기적으로 추가되며 작업이 진행 중입니다. 정기적으로 확인해 주시기 바랍니다.

ROP ROCKET은 몇 가지 독특한 기능을 갖춘 매우 강력한 도구로, 다음을 포함합니다:
2025년 8월: ROP ROCKET에는 ASLR 우회 미니 도구가 포함되어 있으며, 2025년 8월 10일 DEFCON에서 출시되었습니다. 이 도구는 64비트 높은 엔트로피 ASLR에 대한 9가지 ASLR 우회 방법을 생성합니다.


로컬 패키지로 설치해야 합니다. setup.py 파일이 있습니다. 이렇게 하려면 디렉토리로 이동하여 다음 명령을 입력하십시오:
py -m pip install -e ./ Python 설치에 따라 약간 다를 수 있습니다. 설치된 패키지를 확인하려면 py -m pip list를 입력하면 ROP-ROCKET이 표시되어야 합니다. 필요한 모든 종속성이 포함되어 있다고 생각되지만, 이번 릴리스의 새로움으로 인해 문제가 발생하면 이슈를 열어 주시면 확인하겠습니다.
명령줄에서 간단히 실행하십시오: py rop2.py rop_tester_syscall.exe 완전히 익스플로잇 가능한 rop_tester_syscall.exe가 zip 파일로 포함되어 있습니다. 이는 모든 가젯이 빠짐없이 발견되는지 확인하는 데 도움이 되도록 개발되었습니다.
이 도구는 훨씬 더 오래된 JOP ROCKET에서 영감을 받았습니다. 제 박사 학위 논문의 일부로 작성하여 2019년 DEF CON 27에서 발표했습니다. 이로 인해 JOP에 대한 많은 추가 개발과 새로운 JOP 기능이 생겼으며, 다양한 논문에서 JOP의 메커니즘과 사용법에 대한 광범위한 문서도 제공했습니다. 그 도구는 현재 약간 구식입니다 - 더 오래된 스타일의 Python입니다. 이 새로운 연구를 통해 영감의 일부는 ROP 분야에서 새롭고 독특한 시도를 하는 것입니다. 지금까지 그 임무를 수행했습니다. 따라서 이 도구는 JOP 도구에서 영감을 받았으며, 기존 ROP 방식보다 비전통적인 방식으로 생각해 볼 수 있게 해줍니다. ROP ROCKET에는 JOP 기능이 없습니다 - 오직 ROP 전용입니다. 완전히 전용 JOP 도구는 JOP ROCKET뿐이며, 다른 도구들은 대부분 JOP에 대한 향후 작업을 위한 자리 표시자일 뿐입니다. 어쨌든 이 역사적 정보를 명확히 하고 싶었습니다. 이름의 유사성으로 혼동하지 않도록 하기 위함입니다. 이 두 도구는 매우 다르며 관련이 없습니다.

ROCKET이 Heaven's Gate x86-to-x64 공격을 생성하여 화면에 출력하고 저장했습니다.

ROCKET이 Windows 10/11용 NtProtectVirtualMemory에 대한 Windows 시스템 콜을 생성하여 화면에 출력하고 저장했습니다.

내부 에뮬레이션 기능 덕분에 ROCKET은 많은 비정상적인 가젯 조합을 고려할 수 있습니다. 위의 예는 스택 포인터(ESP)를 캡처하여 ECX로 이동하는 것을 목적으로 합니다. 단일 ROP 가젯(사용할 수 없을 수도 있음)을 사용하는 대신 대체 방법을 찾을 수 있습니다. 먼저 esp를 edi로 이동하고, edi를 ebx로 이동한 다음, ebx를 esi로 이동합니다. ECX는 정수 오버플로우를 통해 0으로 설정되고, 그런 다음 esi(스택 포인터를 포함)의 값이 ecx에 추가됩니다. 결과적으로 스택 포인터는 ecx에 있습니다. 이와 동등한 더 짧은 가젯은 mov ecx, esp # ret이지만, 항상 가능한 것은 아닙니다. ROCKET은 추가 pop 명령어도 올바르게 처리하여 올바른 채우기를 생성합니다. ROP ROCKET은 보호해야 하는 레지스터("제외된 레지스터")를 신중하게 고려하며, 이는 가젯에 따라 달라질 수 있습니다. 위 예제에서 보호하려는 레지스터는 "클로버"되지 않았습니다.

ROCKET은 가젯을 어떻게 캡처할지에 대한 많은 옵션을 제공합니다. 물론 기본값은 config.cfg 파일에서 설정할 수 있습니다. 여기서 사용자는 최대 0xa(15)바이트의 메모리 청크만 검사하기로 결정했습니다.

개별 ROP 체인뿐만 아니라 mov edx와 같은 범주별로 구성된 모든 발견된 가젯을 출력할 수 있습니다. 수백 가지 가능성이 있습니다. 가젯당 라인 수를 변경하여 결과를 세분화할 수도 있습니다.

결과를 출력할 때 ASLR, CFG, Windows 시스템 DLL 또는 단순한 bad byte와 같은 다양한 필터를 적용하여 가젯을 제외할 수 있는 많은 옵션이 있습니다. 이 모든 것은 매우 사용자 정의가 가능합니다.

때로는 가젯 주소의 bad byte로 인해 사용할 수 없는 특정 가젯을 난독화해야 할 필요가 있습니다. 이를 위한 많은 옵션이 있으며, 사용된 레지스터나 bad byte를 기준으로 제외할 수도 있습니다.

여기서 사용자는 난독화를 사용하여 xor eax, edi # ret의 주소를 런타임에 동적으로 디코딩했습니다. 그렇지 않으면 사용할 수 없었을 것입니다. 디코딩 후 push r32 / ret이 즉시 실행되도록 합니다. 이는 bad byte 때문에 사용할 수 없는 가젯을 사용하는 좋은 방법입니다. ROCKET은 이를 몇 초 만에 완료합니다. 정수 오버플로우를 통한 이 기능은 bad byte 문제나 사용 가능한 레지스터 부족(즉, 사용자가 너무 많은 레지스터를 제외한 경우)이 없다면 거의 확실히 작동합니다.
이 도구는 2023년 초부터 Dr. Bramwell Brizendine가 만들고 작성했습니다. Shiva Shashank Kusuma는 대학원생으로서 Dr. Bramwell Brizendine 밑에서 ROP ROCKET의 패턴을 개발했습니다. 그는 귀중한 작업을 수행했으며 DEFCON 및 Black Hat Arsenal에서 공동 연사로 활동했습니다. 2025년에는 Shiva가 ROP ROCKET의 프로그래밍에도 기여하기 시작했습니다.
2023년 9월 18일 - 다양한 개선 사항; Windows 시스템 콜로 이어지는 far jump를 누설하는 변형 방법에 대한 추가 지원.
2024년 3월 - 정기적으로 많은 중요한 업데이트 - ROP ROCKET을 적극적으로 사용하려면 가능한 최신 버전을 유지하시기 바랍니다. 개별 변경 사항은 나열되지 않습니다. 사소한 변경 및 업데이트는 계속될 예정입니다. 주요 새 기능만 설명됩니다. (일부 사소한 새 기능이 이미 추가되었습니다.)
2024년 3월 말 ~ 4월 3일 - 에뮬레이션에 대한 광범위한 업데이트로 효율성 향상; 개별 가젯 생성에 대한 더 많은 가능성 옵션 지원; 버그 수정; pushad를 통한 VirtualAlloc 및 VirtualProtect의 새로운 릴리스. 다른 도구들이 이미 VirtualProtect 및 VirtualAlloc을 지원했기 때문에 이전에는 포함하지 않았지만, 이제 도구의 기능으로 향상될 수 있으므로 포함하지 않는 것이 잘못된 것 같습니다. pushad를 통한 VirtualAlloc 및 VirtualProtect의 전체 템플릿을 생성했으며, 셸코드(계산기 실행)도 포함됩니다.
2024년 5월 - Windows 시스템 콜을 대대적으로 개편하여 실제 바이너리에서 찾을 수 있는 범위를 크게 확장했습니다. SysWow64(즉, 32비트)에서 Windows 시스템 콜을 수행하는 데 필요한 FS 레지스터를 누설하는 길고 바람직하지 않은 가젯도 자동으로 처리할 수 있습니다. 기타 여러 사소한 개선 사항.
2025년 6월 28일 - 대대적인 업데이트. ROP ROCKET에 이전에 포함되지 않았던 17개의 새로운 WinAPI 지원을 추가했습니다. 초기 오버플로우 양을 정의하는 기능을 추가했습니다. 이는 에뮬레이션 시 문자열이나 포인터에 대한 계산에 영향을 줄 수 있으므로 중요합니다.