How LLM-Based Penetration Testing Harnesses Work
LLM 기반 침투 테스트 하네스는 어떻게 작동하나
LLM은 요청을 글로 만들 뿐 실제 웹사이트를 시험하지 않으며, 도구 실행과 결과 전달을 맡는 하네스가 필요합니다. 글쓴이는 Cairn, Artex, Strix를 취약한 웹 앱에 적용해 구조와 결과를 비교하고, 범용 하네스에 적절한 도구와 스킬을 붙이는 방식을 제안합니다.
- 주제
에디터 노트
비교 결과만 보면 전용 하네스의 우위는 입증되지 않습니다. 같은 테스트 앱에서 Cairn과 Strix 모두 계정 탈취를 놓쳤고, Pi는 단순한 목표 프롬프트로 해당 취약점을 찾았다고 글쓴이는 보고합니다. 다만 대상은 글쓴이가 만든 웹 앱 하나이며, 이 결과로 다른 환경의 성능까지 일반화할 근거는 없습니다. Reddit 댓글도 범용 도구로 비슷한 결과를 얻었다는 경험과 더 나은 모델이 중요하다는 의견을 보탭니다. 실제 선택에서는 목표 단위 작업과 전체 표면 점검의 차이, 세션 관리와 증거 검증 절차가 비교 기준이 됩니다.
AI 요약
LLM 자체는 입력을 받아 텍스트를 출력하는 모델입니다. 예를 들어 웹사이트를 점검하라는 요청을 받으면 파일을 읽거나 사이트에 접속하라는 문장을 만들 뿐, 실제 동작은 하지 않습니다. 하네스는 모델의 출력을 해석해 명령을 실행하고, 실행 결과를 다시 모델에 전달하는 소프트웨어입니다. Claude Code도 파일 관리, 명령 실행, 하위 에이전트 운영, MCP 서버 연동 등을 포함한 하네스이며, Pi와 OpenCode도 여러 모델을 연결해 쓸 수 있습니다.
글쓴이는 DOM 기반 XSS, 결제 없이 책 구매, IDOR, 계정 탈취 취약점을 심은 전자책 구매 웹사이트를 직접 만들고 Cairn, Artex, Strix를 시험했습니다.
Cairn
Cairn은 단일 목표를 해결하는 문제 풀이 엔진으로, 전체 표면을 살펴 취약점을 빠짐없이 찾는 침투 테스트 도구와는 목적이 다르다고 글쓴이는 설명합니다. 입력은 대상(Origin), 목표(Goal), 추가 정보(Hints)입니다. 먼저 단일 프롬프트로 목표 달성을 시도하고, 실패하면 Reasoner가 이전 작업을 검토해 다음 작업 의도(Intent)를 만듭니다. 각 작업은 Claude Code, Codex, Pi 같은 하네스에서 실행하는 작업자가 맡습니다. Katana, Nuclei, Nmap, 퍼징 페이로드와 Playwright 같은 도구도 들어 있으며, 인증 절차를 정해 둔 전용 스크립트는 없어 모델이 로그인 방법을 찾아야 합니다.
글쓴이는 세션 유지와 만료 감지가 웹 앱 평가에서 중요하다고 지적합니다. Cairn은 DOM XSS를 발견한 뒤 이를 계정 탈취에 활용할 수 있다고 판단했습니다. 글쓴이가 찾으려던 계정 탈취 취약점 자체는 아니었지만 목표 달성으로 처리했습니다. 반면 같은 목표를 별도 스킬이나 도구 없이 DeepSeek를 연결한 Pi의 /goal 기능에 입력하자 원하는 계정 탈취 취약점을 찾았다고 합니다. 글쓴이는 Cairn이 기존 하네스의 목표 기능을 다시 구현한 셈이라고 평가합니다.
Artex
Artex는 CrowdStrike 보고서에서 실제 공격에 쓰인 도구로 언급됐습니다. 글쓴이는 중국에서 만들어진 원본 코드를 정리하고 번역한 뒤 격리 환경에서 실행했습니다. UI에서 활성화할 스킬과 가드레일, 대상, 트래픽 로그, 토큰 예산 등을 설정할 수 있습니다. Claude Code나 Pi를 재사용하지 않고 자체 에이전트 라이브러리와 실행 로직을 갖췄습니다. 글쓴이는 외부로 텔레메트리가 전송되지 않도록 하려는 설계일 수 있다고 설명하지만, 이는 가능한 이유로 제시한 해석입니다.
Artex에도 상세한 취약점 정의나 인증 전용 로직은 없습니다. 모델이 인증 방식과 도구, 점검 방법을 선택합니다. 플래너가 처음에 작업 의도를 만들고 작업자가 수행하며, 작업이 끝날 때마다 플래너가 전체 상황을 살펴 새 의도를 추가합니다. 글쓴이가 제공한 플래너 프롬프트는 목표 상태와 작업 그래프를 확인하고, 진행 중인 의도와 중복되지 않는 새 방향을 내도록 규정합니다. 목표가 미달성인데 작업이 없으면 최소 한 건을 배정하고, 부정적 관찰은 근거와 신뢰도를 확인한 뒤 종결하도록 합니다. 진행 중인 작업이 있으면 그 선행 결과를 기다리고, 목표가 달성됐다고 표시하기 전에는 측정 가능한 조건을 확인합니다.
이번 시험에서 Artex는 전체 테스트에 작업자 두 명만 사용했고, 계정 탈취를 찾지 못했지만 나머지 취약점을 발견해 보고서를 만들었습니다. 취약점을 선택해 상세 내용을 보거나 Dig Deeper로 사후 침투 단계로 넘어가는 UI도 제공합니다.
Strix
Strix는 웹 UI 대신 CLI를 사용합니다. OpenAI SDK로 에이전트 구조를 만들고, 브라우저 조작에는 Playwright를 사용하는 Vercel Agent Browser를 씁니다. Cairn과 Artex처럼 조정자와 작업자를 두지만, 정찰 단계와 취약점 유형별 점검, 발견부터 검증과 보고까지 이어지는 절차를 명시합니다. 글쓴이는 이 점을 근거로 Strix를 단순한 해킹 도구보다 정식 침투 테스트 프레임워크에 가깝다고 봅니다.
조정자 프롬프트에는 IDOR, SQLi, SSRF, XSS, XXE, RCE, CSRF, 경쟁 조건, 비즈니스 로직, 인증과 JWT 등 10개 점검 대상이 들어갑니다. 정찰을 먼저 수행하고 기존 도구를 우선 사용하며, 커버리지 기록과 위협 모델, 증거 관리도 요구합니다. 취약점 유형과 구성 요소별로 에이전트를 나누고, 각 작업자에게는 예를 들어 인증 상태에서 엔드포인트를 수집하고 장바구니부터 결제까지의 흐름을 조사하라는 식으로 구체적인 작업을 맡깁니다. 스킬 목록과 대상 범위도 프롬프트에 포함합니다. 글쓴이는 전체 취약점을 찾는 목표에는 이런 전용 단계와 역할 분담이 적합하다고 평가합니다. 그러나 같은 대상에 대한 최종 보고서에서도 계정 탈취 취약점은 빠졌습니다.
전용 프레임워크가 필요한가
글쓴이는 Claude Code나 Pi 같은 범용 하네스가 이미 충분히 성숙했고 계속 개발되고 있다고 주장합니다. Pi의 /goal 기능만으로 추가 스킬이나 도구 없이 같은 취약점을 찾았으며, 필요한 스킬과 도구, 환경을 더하면 전용 도구와 비슷한 작업을 할 수 있다는 설명입니다. 스킬은 바꾸기 쉽지만 큰 코드베이스는 교체하기 어렵기 때문에 빠르게 변하는 AI 환경에서는 유연한 구성이 낫다고 덧붙입니다.
Reddit 반응
- @bageloid — Claude Code와 자체 호스팅한 검열 제거 Qwen 3.8 모델을 조합해 좋은 결과를 얻었습니다. 전용 하네스는 어떤 성능을 낼지 궁금합니다.
- @Redditperegrino — 침투 테스트 하네스가 무엇인지 궁금해 글의 절반쯤 읽었습니다. 저는 Pi.dev와 Claude Code를 씁니다. Claude Code는 Pro/Max 요금제가 아니라 API 요금을 받기 때문에 사용하고, 나머지는 Pi를 씁니다. 제가 틀렸을 수도 있지만, 이런 작업에는 맞춤형 침투 테스트 하네스가 필요하지 않다는 점이 아이러니합니다. 예전에 Claude Code와 Pi로 같은 결과를 얻었습니다. 침투 테스트에는 전용 하네스보다 맞춤형 모델이나 더 똑똑한 모델이 낫겠습니다.
- @utku1337 — 네, 글의 마지막에서 저도 같은 결론에 도달했습니다.
- @Redditperegrino — 아, 알겠습니다. 글과 공유에 감사드립니다, 형제님!
- @average_pornstar — 잘 읽었습니다.
원문: Substack / 번역·요약: Trawling