
violin v3.2.1
Hermes용 Agentic 침투 테스트 프로필: 승인된 정찰, 웹/접근 제어 공격, 안전한 익스플로잇 검증, 가드 게이트 기반 증거 중심 보고를 위한 31개의 플레이북.
Violin ☤ — 감독형 에이전트 Hermes 침투 테스트 프로필
플레이북 35개 · 참조 17개 · 템플릿 13개 · 필수 실행 가드 · Hermes 네이티브
Violin은 Hermes 네이티브 에이전트 침투 테스트 프로필로, 감독되고 승인된 침투 테스트를 위한 것입니다 — 정찰부터 안전한 익스플로잇 검증, 보고까지. Hermes의 내장 도구 세트, 7개의 라우팅된 스킬, 그리고 대상 실행 경계에서 필수인 violin-guard 플러그인을 사용합니다. 독립형 CLI는 릴리스 검사, 진단, 관리 복구를 지원하며, 대상 명령은 플러그인을 통해 실행됩니다. Violin은 프로필별 자격 증명을 추가하지 않으며 Hermes에 이미 구성된 공급자 및 도구 백엔드를 상속합니다.
빠른 시작 · 워크플로우 · 가드 도구 · 벤치마크 · 개발
| 가드된 대상 실행 | 대상 명령이 시작되기 전에 범위, 단계, PTT, 스킬, 가설, 기록, 동기화 검사가 실행됩니다. |
| 지속적인 엔게이지먼트 상태 | PTT 작업, 가설, 명령 기록, 체크포인트, 증거, 보고서가 컨텍스트 압축 후에도 유지됩니다. |
| 증거 기반 발견 사항 | 검증된 발견 사항은 재현 가능한 증거와 표준 FIND-NNN.md 아티팩트가 필요합니다. |
| 라우팅된 방법론 | 침투 테스트 오케스트레이터가 웹, ID, API, 비즈니스 로직, LLM 보안, 잘못된 구성 플레이북을 선택합니다. |
| 제한된 실행 | 단일 명령, 명령 버스트, 백그라운드 프로세스, 배치 검토, 하트비트 검사, 취소가 하나의 상태 모델을 공유합니다. |
| 검증 가능한 릴리스 | 플러그인 등록, 스키마, 스킬 스냅샷, 문서 계약, 린트, 포맷팅, 전체 테스트 스위트가 릴리스 게이트로 검증됩니다. |
빠른 시작
프로필 설치
hermes profile install https://github.com/Strategic-Automation/violin
hermes -p violin
그런 다음 승인된 대상으로 시작하고 Violin이 대상 상호작용 전에 범위를 수집하도록 하세요:
example.com에 대해 승인된 침투 테스트를 실행하세요.
요구 사항
- Hermes Agent 0.18.0 이상
- 로컬 개발용 Python 3.11 및
uv - 예상 보안 도구 환경을 위한 Kali Linux 또는 Parrot OS
- 서면 승인 및 승인된 범위
Violin은 모델이나 공급자를 선택하지 않습니다. Hermes에서 구성하세요. 기본값으로 적합한 것은 로컬에서 Qwen3.8 27B 또는 호스팅 공급자를 통한 DeepSeek V4 Flash를 사용하세요.
엔게이지먼트 수명주기
flowchart LR
S[범위] --> R[정찰]
R --> V[취약점 연구]
V --> E[익스플로잇 검증]
E --> P[보고]
P --> X[회고]
G[Violin 가드] -. 검증 .-> R
G -. 검증 .-> V
G -. 검증 .-> E
- 엔게이지먼트를 초기화하고
scope/scope.yaml을 승인합니다. violin_record_ptt로 활성 PTT 작업 하나와 라우팅된 스킬을 선택합니다.violin_exec또는violin_exec_burst로 대상 명령을 실행합니다.- 증거가 상태를 변경함에 따라 가설을 업데이트합니다.
violin_review_batch로 각 제한된 명령 배치를 검토합니다.- 표준 발견 사항과 최종 보고서를 생성합니다.
- 회고를 완료합니다.
전체 단계 모델은 다음과 같습니다:
SCOPING → RECON → VULN_RESEARCH → EXPLOITATION
→ POST_EXPLOITATION / PRIVESC / FLAGS
→ REPORTING → RETROSPECTIVE
새 단계에서 작업을 시작하려면 해당 단계의 PTT 작업이 필요합니다. 기존 작업은 단계 섹션 간에 이동되지 않습니다.
가드 도구
플러그인은 하나의 타입화된 레지스트리에서 11개의 Hermes 도구를 등록합니다:
| 도구 | 용도 |
|---|---|
violin_record_ptt | PTT 작업 생성, 시작, 갱신, 종료 또는 취소 |
violin_record_hypothesis | 범위 내 가설 생성 또는 업데이트 |
violin_exec | 가드된 명령 하나 실행 |
violin_exec_burst | 제한된 명령 파일 실행 |
violin_exec_status | 백그라운드 실행 상태 읽기 |
violin_exec_cancel | 추적 중인 백그라운드 실행 취소 |
violin_review_batch | 완료된 배치 검토 및 상태 확정 |
violin_rebind_pending_batch | 확인 후 대기 중인 배치 재바인딩 |
violin_heartbeat_done | 완료된 하트비트 검토 해제 |
violin_target | 승인된 평가 대상 확인 |
violin_status | 현재 작업, 스킬, 차단 요인 설명 |
violin_exec는 일반적인 대상 명령 경계입니다. 도구별 실행 어댑터나 바이너리 허용 목록은 없습니다. 설치된 비대화형 도구는 엔게이지먼트 게이트를 통과한 후에만 실행될 수 있습니다.
원시 터미널 훅은 네트워크 격리가 아닌 최선의 안전망입니다. terminal은 호스트 로컬 준비 및 관리에만 사용하세요.
안전 모델
flowchart LR
A[서면 승인] --> B[승인된 범위]
B --> C[활성 단계 작업]
C --> D[스킬 및 가설 게이트]
D --> E[가드된 실행]
E --> F[증거 수령]
F --> G[배치 검토]
- 범위 승인 및 부트스트랩 검증 전에는 대상 상호작용이 없습니다.
- 대상 명령에 대한 원시 셸 실행이 없습니다.
- 파괴적, 방해적, 자격 증명, 지속성, 은밀성 또는 제3자 행위는 명시적 서면 승인 없이 금지됩니다.
- 원시 증거는
$ENG_DIR/evidence/<phase>/아래에 유지됩니다. - 비밀, 덤프, 증명 출력은
$ENG_DIR/state/에 저장되지 않습니다. - 컨텍스트 압축은 현재 Hermes 대화의 엔게이지먼트 파일에서 재개됩니다.
자세한 정책은
skills/pentest/references/standards.md에 있습니다.
엔게이지먼트 상태
init-engagement는 표준 작업 구조를 생성합니다:
$ENG_DIR/
├── scope/
│ └── scope.yaml
├── state/
│ ├── ptt.md
│ ├── history.md
│ └── checkpoint.json
├── hypotheses.md
├── evidence/
├── reporting/
└── retrospective/
스킬 전달
스킬은 요청 시 로드됩니다. 라우팅된 스킬에 대한 첫 번째 violin_record_ptt 호출은 PTT를 변경하지 않고 skill_prepared를 반환할 수 있습니다. Hermes가 스킬 콘텐츠를 전달한 후, 전환을 반복하여 수령을 바인딩하고 작업 변경을 적용하세요. violin_status는 정확한 복구 작업을 보고합니다.
.skill-loaded-*와 같은 마커 파일은 스킬 전달을 증명하지 않습니다.
라우팅된 스킬
| 스킬 | 범위 |
|---|---|
pentest | 범위, 수명주기, 정찰, 익스플로잇, 보고, 마무리 |
web-app | 인젝션, SSRF, 트래버설, 역직렬화, 클라이언트 측 결함 |
identity-auth | 인증, 권한 부여, IDOR, JWT, CSRF, 암호화 |
api-testing | REST, SOAP, GraphQL, WebSocket |
business-logic | 워크플로우, 가격, 쿠폰, 할당량, 추천, 경쟁 조건 |
llm-security | 프롬프트 인젝션, MCP, JSON-RPC |
misconfig | 배포, 오류 처리, 관찰 가능성, 난독화 |
오케스트레이터는 현재 작업에 필요한 단계 자료와 전문 플레이북만 로드합니다.
관리 CLI
CLI는 가드된 대상 실행을 대체하지 않습니다.
python scripts/violin_guard.py --help
python scripts/violin_guard.py init-engagement engagements/example --host example.com
python scripts/violin_guard.py check-bootstrap --eng-dir engagements/example
python scripts/violin_guard.py status --eng-dir engagements/example
python scripts/violin_guard.py generate-closeout --eng-dir engagements/example
python scripts/violin_guard.py check-release
check-command는 진단용 승인 검사를 노출하며 제공된 명령을 실행하지 않습니다.
아키텍처
plugins/violin_guard/
├── core/ 상태, 스키마, 파싱, 단계, 대상
├── gates/ 명령, 범위, 가설, 터미널 정책
├── engine/ 실행 및 릴리스 검증
├── handlers/ 공개 Hermes 도구 핸들러
├── hooks.py Hermes 수명주기 훅
└── registry.py 등록된 도구 정의
skills/ 오케스트레이터, 라우팅된 스킬, 플레이북, 참조
benchmark/ 러너, 스코어러, 증명 검사, 보정 픽스처
scripts/ 관리 CLI 및 플랫폼 스모크 테스트
tests/ 런타임, 통합, 문서, 릴리스 테스트
벤치마크
저장소에는 Escape Duck Store 정의와 알려진 양호/불량 스코어러 픽스처가 포함되어 있습니다. 보정은 스코어러가 해당 픽스처를 처리한다는 것을 증명합니다. 라이브 에이전트 회수율, 워크플로우 완료 또는 보고 품질을 확립하지는 않습니다.
uv run python benchmark/score.py --calibrate known-good
uv run python benchmark/score.py --calibrate known-bad
uv run python -m benchmark.run --target https://duck-store.escape.tech
점수를 게시하기 전에 벤치마크 방법론을 읽으세요. 신뢰할 수 있는 결과를 위한 증명, 재현성, 공식화, 공개 요구 사항을 정의합니다.
개발
uv sync --dev
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv run python scripts/violin_guard.py check-release
릴리스 게이트는 버전 표면, 격리된 플러그인 가져오기, 등록된 도구, 생성된 스키마, 스킬 스냅샷, 문서 계약, Ruff, 전체 테스트 스위트를 확인합니다.
플랫폼 스모크 테스트:
scripts/smoke-test.sh— Linux 및 Kali/Parrot 릴리스 스모크scripts/smoke-test.ps1— Windows 부트스트랩, 범위, 대상 확인 스모크; 스킬 전달 및 대상 실행은 Hermes 필요
기여 규칙은 CONTRIBUTING.md, 비공개 취약점 보고는 SECURITY.md를 참조하세요.
책임 있는 사용
Violin은 승인된 보안 평가를 위한 것입니다. 운영자는 범위, 승인, 대상 소유권, 데이터 처리 및 현지 법률에 대한 책임이 있습니다.
라이선스
MIT — LICENSE 참조.