
AFL++ 퍼징, 크로스 아키텍처 QEMU 에뮬레이션, 하니스 개발, Ghidra 헤드리스 분석, 커스텀 뮤테이터, 익스플로잇 개발용 패치 비교를 위한 데스크톱 워크벤치
Rogue Framework는 AFL++, 크로스 아키텍처 QEMU 퍼징, 하니스 개발, 경량 Ghidra 헤드리스 분석, 커스텀 뮤테이터, 패치 비교를 위한 데스크톱 워크벤치입니다. 버튼만 있는 래퍼가 아니라 감사 가능한 워크벤치를 의도적으로 지향합니다. 생성된 모든 AFL++ 명령은 실행 전에 표시되며, 생성된 하니스는 연구자가 편집할 수 있는 일반 소스 파일입니다. 이는 "exploit 개발자를 위한 BurpSuite"가 되는 것을 목표로 합니다.
Rogue Framework는 현재 Linux와 Python 3.11+ 및 PyQt6을 대상으로 합니다.
Kali Linux에서는 설치 프로그램이 Python 환경을 구성하고, 공식 AFL++ stable 브랜치를 클론하여 전체 배포본과 계측된 QEMU 백엔드를 빌드합니다. 그런 다음 Ghidra headless, 네이티브/멀티아키텍처 GDB, GDB 서버, QEMU user/system 에뮬레이션, 컴파일러/빌드 의존성, 사용자 런처, 영구적인 셸 PATH 항목을 설치합니다. AFL++는 무시되는 로컬 AFLplusplus/ 디렉터리에 다운로드되며 Rogue Framework의 일부로 배포되지 않습니다:
chmod +x install.sh
./install.sh
rogue-framework
일반적인 크로스 컴파일러와 게스트 sysroot도 함께 설치하려면(다운로드가 훨씬 큽니다) 다음을 사용하세요:
./install.sh --with-cross-toolchains
설치 프로그램은 멱등(idempotent)입니다. 기존 설치를 감사하려면 ./install.sh --check를 사용하고, AFL++/QEMU 재빌드를 강제하려면 ./install.sh --rebuild-afl을 사용하세요. ./install.sh --update-afl은 다운로드한 체크아웃을 최신 공식 안정 버전으로 명시적으로 fast-forward합니다. 데스크톱 사용자로 실행하세요. sudo는 apt 패키지에 대해서만 요청합니다. 새로 작성된 PATH는 이미 실행 중인 부모 셸을 변경할 수 없으므로, 새 터미널을 열거나 ~/.zshrc/~/.bashrc를 source하거나 설치 프로그램이 출력한 절대 경로 ~/.local/bin/rogue-framework를 통해 Rogue를 실행하세요.
체크아웃에서 수동으로 시작하는 방법도 계속 사용할 수 있습니다:
python3 run.py
편집 가능한 환경의 경우:
python3 -m pip install -e .
rogue-framework
크로스 아키텍처 동적 바이너리는 QEMU_LD_PREFIX로 선택한 일치하는 게스트 sysroot가 필요합니다. 이는 본질적으로 대상/배포판에 따라 다릅니다. Ghidra의 analyzeHeadless 경로는 도구 → 외부 도구에서 재정의할 수 있습니다.
.rgp 프로젝트는 휴대용 프로젝트 정의를 포함하는 읽기 가능한 버전 관리 JSON입니다. 크고 변경 가능한 아티팩트는 관리되는 동반 워크스페이스에 있습니다:
example.rgp
example.rgp-work/
workspace.json
project.sqlite3
corpus/
output/
harnesses/
mutators/
analysis/
logs/
runs/
staging/
recovery/
backups/
objects/sha256/
이러한 분리는 프로젝트 파일을 검토 가능하게 유지하고 크래시 코퍼스, 파인딩, 분석 인덱스, Ghidra 상태를 JSON에 포함하지 않도록 방지합니다. workspace.json은 매니페스트를 올바른 워크스페이스 ID에 바인딩하고, project.sqlite3는 운영/인덱싱된 상태를 저장합니다. 관리 참조는 workspace://를 사용하고, 명시적 외부 리소스는 external://를 사용합니다. 머신 로컬 도구 경로와 UI 상태는 휴대용 프로젝트 외부에 저장됩니다.
다른 이름으로 저장(Save As)은 새 프로젝트 및 워크스페이스 ID를 가진 독립적인 클론을 만듭니다. Rogue는 열린 문서를 전환하기 전에 대상을 스테이징하고 검증하므로, 실패한 클론은 소스 프로젝트를 변경하지 않은 상태로 둡니다. 정식 저장은 권고적 작성자 임대(revision/SHA-256 충돌 검사 포함)를 사용하고, 이전의 정상 매니페스트를 보존하며, fsync로 파일을 원자적으로 게시하고, 활성 편집기 초안을 포함한 크래시 복구 스냅샷을 유지합니다. 생성된 하니스, 뮤테이터, Ghidra JSON, 패치 비교 결과, 최소화된 파인딩도 트랜잭션 방식으로 게시되므로 교체에 실패해도 이전의 유효한 아티팩트가 삭제되지 않습니다.
.fuzz 프로젝트Rogue는 레거시 스키마 0–2의 .fuzz 매니페스트와 해당 .fuzz-work 동반 파일을 가져올 수 있습니다. 레거시 소스는 정식 대상이 되지 않습니다. 첫 번째 저장 시 원본 레거시 파일을 유지하면서 형제 .rgp 프로젝트와 .rgp-work 워크스페이스로 업그레이드합니다. 새 프로젝트와 다른 이름으로 저장 대상은 항상 .rgp를 사용합니다.