한 문장으로 이 프로젝트가 뭘 하는지부터.
reverse-skill = "코딩 AI에게 보안·역공학 작업을 만나면 어떤 방법론과 도구를 어떤 순서로 쓸지를 통째로 가르치는 스킬 라우터 팩." Claude Code·Cursor·Codex 같은 에이전트에 "이 APK 까 봐"라고 시키면 보통은 막연하게 헤맨다. 이 레포를 얹으면 에이전트가 작업을 분류(라우팅)하고 → 필요한 도구를 그 자리에서 깔고(부트스트랩) → 끝나면 경험을 글로 남겨(진화) 다음에 더 잘하게 된다. 코드가 아니라 마크다운 방법론 문서와 라우팅 규칙, 그리고 설치 스크립트로 이뤄진 "지식 패키지"다.
범용 AI에게 보안을 시키는 건 내과의에게 뇌수술을 맡기는 것과 같다. 할 수는 있는데 어디서부터 손댈지, 무슨 장비가 필요한지 매번 처음부터 고민한다.
reverse-skill은 접수 데스크를 하나 세운다. "안드로이드 앱 분석"이라 말하면 APK 전문 창구로, "이 바이너리 뜯어 줘"라면 IDA·radare2 창구로 보낸다. 각 창구에는 표준 진료 순서(방법론)와 필요한 장비 목록(도구)이 미리 준비돼 있고, 진료가 끝나면 차트에 소견을 남겨 다음 환자 때 참고한다.
routing.json이라는 규칙 파일 한 장으로 결정한다.tool-index), 없을 때만 정해진 버전을 내려받는다. 버전을 못 박아(pin) 두는 게 핵심 — 공급망 공격을 막기 위해서다.만든 사람은 zhaoxuya520, 라이선스 MIT, 버전 v1.0.1. 별이 3.17만 개, 포크 4.3천 개(2026년 8월 30일 기준)로 이 카탈로그에서 손꼽히게 큰 레포다. README가 중국어·영어 병기이고, 지원 대상 클라이언트로 Claude Code·Kiro·Cursor·Cline·Codex 등을 명시한다.
역공학·침투 테스트·CTF는 권한이 있는 대상에게만 허용되는 행위다. 이 레포의 설계에서 가장 중요한 대목이 바로 그 지점을 도구 차원에서 강제한다는 것이다 — 뒤(4장)에서 볼 scope-contract가 "권한 증빙 없이는 능동 스캔·후킹·익스플로잇을 금지"하는 하드 게이트다. 이 문서는 그 설계를 공부 목적으로 해부하며, 무단 사용을 전제하지 않는다.
보안 스킬 모음은 많다. 별 3만 개를 가른 차이는 무엇인가.
초기 버전은 라우팅 표가 마크다운·스크립트 여기저기 흩어져 있었다. v1.0.1은 그걸 skills/config/routing.json 한 장으로 모았다(43개 규칙 R0~). 문서의 표현으로 "단일 사실 원천(Single Source of Truth)"이다. master-route.ps1·검증 스크립트·테스트가 전부 이 파일을 읽으므로, 라우팅을 바꾸려면 이 파일 하나만 고치면 되고 나머지는 자동으로 따라온다.
스크립트가 .ps1(PowerShell)과 .sh(Bash) 쌍으로 존재한다 — master-route·case-init·bootstrap 모두. 보안 작업이 칼리 리눅스와 윈도우를 오가는 현실을 반영한 것이고, CI가 두 플랫폼에서 같은 라우팅 결과가 나오는지(163개 이중언어 케이스 벤치마크)를 매번 검사한다.
방법론만 주고 "IDA 알아서 까세요"가 아니다. bootstrap-manifest.json이 도구별 정확한 버전·다운로드 방식·설치 경로를 들고 있다. 그런데 여기가 영리하다 — 버전을 고정(pin)하지 않은 자동설치 항목이 있으면 검증 스크립트가 CI를 실패시킨다. frida-tools 14.10.4, pwntools 4.15.0, jadx 1.5.6처럼 못이 박혀 있고, 커밋 해시로 고정한 것들도 있다.
field-journal/에 실제 작업 회고가 날짜별로 쌓인다(예: 2026-08-20_apk-flutter-banner-ad-removal.md). 여기에 seed-* 17건의 정제된 사례(ELF 패킹 로더·Go 스트립 악성코드·SSRF 클라우드 메타데이터…)가 더해져, 다음 작업에서 "전에 이런 걸 이렇게 풀었다"를 참고하게 한다. 회고를 공유할 땐 anonymization.md 규칙으로 민감정보를 지운다.
ops/IDENTITY.md가 특이하다. 유사 프로젝트(Z3r0)의 증거·범위·타임라인 사상은 흡수하되 React 작업대·FastAPI 컨트롤 플레인·PostgreSQL 증거 DB·Docker 호스트 풀은 "일부러 만들지 않는다"고 표로 선언한다. "git clone 하나로 끝, 강제 DB·UI·컨테이너 없음"을 정체성으로 내건 것이다.
라우팅·테스트·매니페스트·케이스 워크플로가 Claude Code·Codex·Cursor·OpenCode 어디에도 의존하지 않는다. 각 클라이언트용 어댑터는 선택이고, "어떤 호스트별 파일도 라우팅·테스트에 필수가 아니다"가 규칙이다. 스킬 팩이 한 도구의 생태계에 갇히기 쉬운데 그 경계를 명시적으로 지켰다.
언어가 아니라 "무엇으로 조립됐나"가 핵심인 레포다.
| 층 | 형태 | 역할 |
|---|---|---|
| 행동 사슬 | RULES.md (마크다운) | 에이전트가 이 파일을 읽는 즉시 실행할 순서. "확인만 하지 말고 지금 실행하라" |
| 라우팅 규칙 | routing.json | 43개 규칙의 단일 원천. 키워드→스킬 매핑, 우선순위 배열 |
| 라우터 | master-route.ps1 / .sh | 요청을 읽어 PRIMARY 스킬을 고른다. 두 플랫폼 병행 |
| 스킬 절차서 | skills/*/SKILL.md | 도메인별 방법론. APK·IDA·펜테스트·포렌식… |
| 도구 부트스트랩 | bootstrap-manifest.json + 스크립트 | 버전 고정 자동설치 |
| 경험 라이브러리 | field-journal/ | 자가 진화 — 회고·시드 사례 |
| MCP 브리지 | burp-mcp-full/ | Burp Suite를 에이전트에 연결하는 MCP |
routing.json을 SSoT로 삼고 다른 문서는 이 파일과 일치하는지 CI가 검사하는 게 이 레포의 핵심 규율이다.| 항목 | 내용 |
|---|---|
| PowerShell / Bash | 스크립트 런타임. 리눅스엔 PowerShell 심(shim)을 얹어 CI에서 병행 실행 |
| GitHub Actions | Windows + Ubuntu 매트릭스. 라우팅 벤치마크·정합성·핀 게이트·INDEX 최신성·JSON 검증·bash -n 문법 |
| Python | 일부 검증(consolidate_evidence.py·case-review/tests)과 도구 실행 |
| MCP | burp-mcp-full로 Burp Suite를, 문서상 IDA/radare2 MCP도 연동 |
정리하면 실행 코드는 얇고, 지식과 규칙과 검증이 두껍다. 이 레포에서 "소스"라 부를 만한 건 스크립트 몇십 개지만, 진짜 값어치는 87개의 SKILL.md 방법론 문서와 그것들을 정확히 이어 붙이는 라우팅·검증 체계에 있다.
세 개의 축이 맞물린다. 특히 두 번째가 이 레포의 양심이다.
요청이 들어오면 master-route가 routing.json의 43개 규칙을 훑는다. 각 규칙(R1~)은 키워드 정규식과 must/mustAll/exclude 조건을 갖는다. 예를 들어 R1(APK)은 apk·smali·jadx·安卓·证书校验(인증서 검증) 같은 이중언어 키워드에 걸린다. 여러 규칙이 걸리면 점수가 가장 높은 것을, 동점이면 우선순위 배열 앞쪽을 PRIMARY로 뽑고, 아무것도 안 걸리면 R0으로 폴백한다.
이 레포에서 가장 인상적인 설계다. ops/scope-contract.md가 하드 게이트를 건다 — 어떤 보안·역공학 작업이든 실행(ACT) 전에 work/<case>/scope.md에 범위와 권한을 적어야 하고, 그게 없으면 "문서 읽기·라우팅만 허용, 대상에 대한 능동 스캔·후킹·익스플로잇은 금지"다.
-Force/--force로도 이 게이트를 우회할 수 없다."
case-init 스크립트가 scope.md 템플릿을 만들고 auth.status=granted와 합법적 network_profile이 채워졌는지 확인한다. 합법적인 로컬 오프라인 샘플(예: 내 손의 APK 파일)은 offline-sample 프리셋으로 ready_for_act=true가 된다. 권한 확인을 사람의 양심이 아니라 스크립트가 강제하는 게이트로 만든 것이 이 프로젝트가 "공격 도구 모음"과 갈리는 지점이다.
RULES.md는 에이전트에게 "이해했다고만 답하면 실패한 것이다 — 지금 도구를 깔고 코드를 분석하고 취약점을 검증하라"고 강하게 지시한다. 자동화 효율을 높이는 순종 공학(obedience engineering)인데, 이 강한 지시가 인가 게이트와 정면으로 부딪히지 않도록 순서를 짜 둔 게 핵심이다 — 3번 단계가 "scope가 granted 될 때까지 case-init을 반복"이라 실행 재촉보다 권한 확인이 앞선다. 이 균형이 깨지면 위험한 도구가 되므로, 포크·수정 시 가장 조심할 대목이다.
작업이 끝나면 field-journal/에 회고를 남긴다. 두 종류다 — 날짜별 실전 회고(약 20건, "이 안드로이드 ARM64 자가추출 바이너리를 이렇게 복원했다")와 정제된 시드 사례 seed-001~seed-017(ELF 패킹·Kerberoasting·K8s 컨테이너 탈출 등 교과서적 유형). 다음 작업에서 라우터가 비슷한 사례를 참고 자료로 끌어와 판단을 돕는다. precedent-auth.md·precedent-reverse.md는 "이 조작이 허용되나 망설여질 때" 읽는 판례집 역할이다.
평면 모노레포다 — 폴더 이름이 곧 도메인이다.
규모를 정확히 세어 보면 이렇다 — 레포 전체 SKILL.md가 87개, 그중 skills/ 아래 도메인 스킬이 42개(폴더는 48개인데 config·ops·scripts·tests·references·field-journal 6개는 스킬이 아닌 인프라), CTF-Sandbox-Orchestrator/의 경쟁용 서브스킬이 42개, 여기에 중첩된 스킬(pentest-tools/src-hunter·reverse-engineering/dsl-vm-reverse)과 진입 규약이 더해진다.
대형 병원의 층별 안내도와 같다. skills/config/routing.json이 1층 접수 데스크의 진료과 배정표, skills/*/가 각 전문 진료과, ops/scope-contract가 수술 동의서 없이는 못 들어가는 수술실 문, field-journal/이 과거 증례 도서관이다. 층마다 하는 일이 하나로 정해져 있어 길을 잃지 않는다.
📌 옛 딥다이브와 달라진 수치: 2026-06-23판은 "스킬 22개 + CTF 서브스킬 41개"였다. 현재는 도메인 스킬만 42개로 배가됐고(클라우드·AD·포렌식·IoT·하드웨어·이메일·신원연합 등 v1.0에서 대거 추가), CTF 서브스킬도 42개, 라우팅은 흩어진 표에서 43규칙 단일 JSON으로 통합됐다. 레포를 평가할 땐 README 숫자보다 파일을 직접 세는 편이 안전하다.
보안 도메인이 아니어도 훔쳐 갈 만한 설계 습관들.
가장 배울 대목이다. 라우팅 로직을 스크립트에 if-else로 박지 않고 routing.json이라는 데이터로 빼냈다. 그 덕에 ⓐ 규칙 변경이 코드 수정이 아니라 데이터 수정이 되고, ⓑ 같은 데이터를 PowerShell·Bash·테스트가 공유하며, ⓒ "규칙이 서로 모순되지 않는가"를 기계가 검사할 수 있다. 어떤 도메인이든 정책을 코드에서 데이터로 승격시키는 이 패턴은 그대로 쓸 수 있다.
"권한 확인하세요"라는 안내문은 지켜지지 않는다. reverse-skill은 scope.md에 auth.status=granted가 없으면 능동 행위 스크립트가 멈추게 만들었고, -Force로도 못 넘게 했다. AI 에이전트에게 위험한 능력을 줄 때 "하지 말라"고 적는 대신 "할 수 없게" 만드는 발상은 이 카탈로그의 다른 레포(codex-with-chatgpt의 "쓰기 도구를 아예 안 만든다")와 정확히 같은 계열이다.
routing-benchmark.json에 163개 이중언어 케이스(빠른 검사용 40개)가 있어, 라우팅을 손댈 때마다 "예전에 맞던 분류가 여전히 맞는지"를 자동으로 확인한다. 규칙 기반 시스템은 키워드 하나 추가가 엉뚱한 요청을 가로채는 사고가 잦은데, 벤치마크가 그걸 잡는다.
.ps1과 .sh가 같은 결과를 내는지를 CI가 매번 대조한다(구조적 라우팅 패리티). "윈도우도 지원합니다"라는 README 문장은 쉽게 거짓이 되지만, 두 플랫폼 매트릭스 CI는 거짓이 되는 순간 빨개진다.
RULES.md의 강한 실행 지시는 에이전트가 "알겠습니다"만 하고 멈추는 흔한 실패를 막는다. 동시에 그 앞에 인가 게이트를 세워 순종이 폭주하지 않게 했다. AI에게 자율성을 줄 때 "더 하게 만드는 힘"과 "선을 못 넘게 하는 힘"을 함께 넣어야 한다는 걸 보여 주는 사례다.
실전 회고는 그대로 두면 고객·대상 정보가 섞인 민감 문서가 된다. anonymization.md 규칙으로 식별정보를 지운 뒤에만 field-journal/에 올리고, CONTRIBUTE-BACK.md로 공유 절차까지 정해 뒀다. "경험을 쌓되 안전하게"를 프로세스로 만든 것이다.
이 레포 자체는 가볍다 — 무거운 건 그것이 부르는 도구들이다.
| 항목 | 요구 | 비고 |
|---|---|---|
| AI 코딩 클라이언트 | 필수 | Claude Code·Cursor·Codex·Cline·Kiro 중 하나. 이 레포는 그 위에 얹는 방법론 팩이다 |
| PowerShell 또는 Bash | 필수 | 윈도우는 PS 5.1/7, 리눅스·macOS·칼리는 Bash. 스크립트가 쌍으로 있다 |
| Python | 일부 도구·검증 | pwntools·frida-tools 등이 Python 생태계 |
| git | 필수 | git clone이 곧 설치. 강제 DB·컨테이너 없음 |
| 도메인 도구 | 작업별 자동설치 | jadx·IDA·radare2·Frida·Burp… 필요할 때만 bootstrap이 깐다 |
| 권한 증빙 | 능동 작업의 전제 | 대상에 대한 합법적 인가. 없으면 게이트가 능동 행위를 막는다 |
| OS | Windows · Linux · macOS · Kali | 칼리 전용 안내(README-kali.md)까지 있다 |
레포를 얹는 것 자체는 git clone 한 번이다. 무게는 실제로 도구를 깔기 시작할 때 생긴다 — IDA 같은 상용 도구, Frida 같은 후킹 프레임워크, Burp 같은 프록시가 각자의 요구사항을 가져온다. bootstrap이 그걸 버전 고정으로 관리해 주는 게 이 레포의 값어치 중 하나다.
도구가 인가 게이트를 강제해도, 최종 책임은 사용하는 사람에게 있다. 권한 없는 대상에 대한 스캔·후킹·익스플로잇은 대부분의 관할에서 불법이다. 이 레포는 인가받은 침투 테스트·CTF·본인 자산 분석·보안 연구를 위한 것이고, 그 밖의 용도는 이 문서가 다루는 범위가 아니다.
합법적인 대상(내 자산·오프라인 샘플·CTF)으로만. 순서대로.
skills/config/routing.json을 열어 규칙 5개만 읽는다. 그다음 master-route.sh --hint "안드로이드 앱 인증서 검증 우회"를 돌려 내 예측과 실제 PRIMARY가 맞는지 비교한다.
scope.md 없이 능동 작업을 시켜 본다. 게이트가 "읽기·라우팅만 허용"으로 멈추는지 본다. 그다음 case-init으로 오프라인 샘플 scope를 만들고 ready_for_act=true가 되는지 확인한다.
-Force를 줘도 게이트가 안 열려야 정상이다. 이걸 눈으로 확인하는 게 이 레포의 안전 설계를 이해하는 가장 빠른 길이다.skills/tests/routing-benchmark.json에 새 요청 하나와 기대 PRIMARY를 추가하고 test-routing을 돌린다. 통과하면, 이번엔 기대값을 일부러 틀리게 바꿔 벤치마크가 빨개지는지 본다.
examples/ctf-demo/의 전체 흐름(라우팅 → scope 게이트 → 타임라인 → 증거 → 리포트)을 그대로 밟는다. CTF는 본질적으로 인가된 연습장이라 합법적으로 전 과정을 체험할 수 있다.
work/<case>/에 무엇이 쌓이는가 — scope·타임라인·증거·finding. 이 "작전 폴더" 구조가 이 레포가 흡수한 증거기반 방법론의 실체다.간단한 도메인 스킬(SKILL.md 하나 + 키워드)을 만들어 routing.json에 규칙으로 등록하고, INDEX.md 재생성·정합성 검사·벤치마크를 통과시킨다. 기존 규칙과 충돌하지 않게 우선순위를 잡는 게 관건이다.
이 레포를 제대로 쓰려면 곁들여 볼 것들.
SKILL.md 프런트매터(name·description)가 어떻게 라우팅·인덱싱의 입력이 되는지 본다. 요즘 Claude·Codex 등이 공유하는 스킬 파일 포맷을 익히면 이 레포의 42개 스킬이 왜 그 모양인지 이해된다. 이 카탈로그의 OpenKB·OpenMAIC 딥다이브와 함께 보면 "스킬 팩토리" 흐름이 잡힌다.
침투 테스트는 감이 아니라 표준을 따른다 — PTES(침투 테스트 실행 표준), OWASP 테스팅 가이드, MITRE ATT&CK. 이 레포의 각 SKILL.md가 암묵적으로 이 표준들을 절차로 옮긴 것이라, 원문을 알면 스킬을 비판적으로 읽을 수 있다.
도메인별 대표 도구를 하나씩 손에 익힌다 — 정적 분석 Ghidra·IDA·radare2, 동적 후킹 Frida, 안드로이드 jadx·apktool, 웹 Burp Suite, 익스플로잇 pwntools. bootstrap 매니페스트가 어떤 버전을 왜 고정했는지 보면 각 도구의 안정 버전 감각도 생긴다.
AI에게 위험한 능력을 줄 때의 설계를 공부한다 — 인가 게이트·능력 최소화·감사 로그·인간 승인 지점. 이 레포의 scope-contract와 이 카탈로그의 codex-with-chatgpt(읽기 전용 구조)를 나란히 놓고 "금지"가 아니라 "불가능"으로 만드는 두 방식을 비교하면 좋다.
burp-mcp-full을 읽고 기존 보안 도구를 MCP 서버로 감싸 에이전트가 부르게 하는 패턴을 익힌다. 이 카탈로그의 MCP 관련 딥다이브들과 함께 보면, "사람이 쓰던 GUI 도구를 에이전트 도구로 승격"시키는 방법이 손에 잡힌다.
문서·스크립트에 반복해 나오는 말들.
| 키워드 | 뜻 |
|---|---|
| 스킬 라우터 | 요청을 읽고 알맞은 방법론 스킬로 보내는 것. 이 레포의 정체성 그 자체 |
| RULES.md | 행동 사슬의 원천. 에이전트가 읽는 즉시 실행할 순서 (라우팅→scope→ACT) |
| routing.json | 라우팅 규칙 43개의 단일 사실 원천. 스크립트·테스트가 모두 여기서 읽는다 |
| PRIMARY | 라우터가 최종 선택한 주 스킬. 점수 최고 → 우선순위 → 폴백(R0) 순으로 결정 |
| scope.md · scope-contract | 작업 범위·권한을 적는 파일과 그걸 강제하는 계약. 능동 행위의 하드 게이트 |
| case-init | work/<case>/ 작전 폴더와 scope 템플릿을 만드는 스크립트 |
| bootstrap-manifest | 도구별 버전·설치법을 못 박은 매니페스트. 핀 없으면 CI 실패 |
| tool-index | 이 머신에 어떤 도구가 있나(yes/no·경로·버전)를 기록한 자동생성 파일 (gitignore) |
| field-journal | 자가진화 경험 라이브러리. 날짜별 회고 + seed-* 정제 사례 + 판례집 |
| 익명화 (anonymization) | 회고를 공유하기 전 대상·고객 식별정보를 지우는 규칙 |
| 클라이언트 중립 | 특정 AI 도구에 의존하지 않는 설계. 어댑터는 선택이고 필수가 아니다 |
| 공급망 핀 | 도구 버전을 정확히 고정해 악성 최신 버전 유입을 막는 것. CI 게이트로 강제 |
| CTF-Sandbox-Orchestrator | CTF 경쟁용 서브스킬 42종의 총괄 편성 |
| burp-mcp-full | Burp Suite를 에이전트가 부를 수 있게 하는 MCP 브리지 |
| IDENTITY.md | "우리는 스킬 라우터이지 플랫폼(React/FastAPI/DB/Docker 풀)이 아니다"라는 선언 |
원문과, 옆에 두고 볼 것들.
| 구분 | 링크 | 왜 보는가 |
|---|---|---|
| 원본 레포 | zhaoxuya520/reverse-skill | 별 3.17만 · 포크 4.3천 · MIT · v1.0.1 |
| 행동 사슬 | RULES.md | 가장 먼저 읽을 문서. 라우팅→scope→ACT 순서가 여기 있다 |
| 라우팅 원천 | skills/config/routing.json | 43개 규칙의 실체. 이 레포의 두뇌 |
| 인가 계약 | skills/ops/scope-contract.md | 능동 행위 하드 게이트. 이 레포의 양심 |
| 정체성 선언 | skills/ops/IDENTITY.md | "플랫폼이 아니라 라우터"라는 설계 철학 |
| 변경 이력 | CHANGELOG.md | v1.0.1에서 무엇이 추가됐는지 — 옛 딥다이브와의 차이를 여기서 확인 |
| CTF 예제 | examples/ctf-demo/ | 합법적으로 전 과정을 밟아 볼 수 있는 워크스루 |
| 방법론 표준 | PTES · OWASP Testing Guide · MITRE ATT&CK | 각 스킬이 암묵적으로 따르는 원문 표준 |
| 대표 도구 | Ghidra · Frida · jadx · pwntools · Burp Suite | bootstrap이 관리하는 도메인 도구 계보 |
reverse-skill의 값어치는 "보안 방법론을 잔뜩 모았다"가 아니다. 진짜 배울 것은 위험한 능력을 AI에게 어떻게 안전하게 위임하는가에 대한 답이다 — 정책을 데이터(routing.json)로 빼고, 위험 행동에 구조적 게이트(scope-contract)를 걸고, 경험을 익명화해 자산으로 쌓고, 이 모든 걸 두 플랫폼에서 CI로 검증한다. 코드는 얇고 규율은 두껍다. 다만 이 도구가 다루는 능력의 성격상, 합법적 인가 아래에서만 쓰는 것이 사용의 대전제다.