TrendShift 딥다이브 · 2026-07-01

Strix 딥다이브
— 자율 AI 에이전트가 본인 앱의 취약점을 찾고 고치는 오픈소스 보안 테스트 도구

StrixAI 기반 자율 침투 테스트 에이전트를 오픈소스로 제공하는 보안 도구다. Docker 샌드박스 안에서 Kali Linux 환경을 올리고, 멀티 에이전트 그래프가 정찰·취약점 탐지·PoC 검증·자동 패치까지 수행한다. OWASP ZAP·Burp Suite 같은 전통적 스캐너와 달리, LLM이 직접 도구를 선택하고 결과를 해석하며 다음 공격 단계를 결정한다. 백엔드는 Python + openai-agents SDK + LiteLLM으로 구성되어 OpenAI·Anthropic·Google·로컬 모델 등 어떤 LLM이든 교체 가능하다. (저장소: usestrix/strix · Python 3.12+ · v1.0.4 · Apache-2.0 라이선스)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 저장소가 대체 무엇인가.

윤리·법률 경고 — 반드시 읽기
반드시 본인 소유 또는 명시적 서면 허가를 받은 시스템에만 사용

Strix는 허가된(authorized) 보안 테스트 도구다. OWASP ZAP, Burp Suite와 동일한 범주다. 본인이 소유하거나 운영자에게 서면으로 침투 테스트 허가를 받은 시스템 외에는 절대 사용하면 안 된다. 무단 사용은 대부분의 국가에서 형사처벌 대상인 불법 행위다. 이 공부자료는 아키텍처·에이전트 설계·도구 오케스트레이션 같은 교육적 내용에 집중한다.

핵심 메시지

"팀 단위 AI 해커가 Docker 샌드박스 안에서 내 앱을 공격하고, 취약점을 찾으면 PR로 패치까지 제안."

Strix는 LLM이 단순히 보안 리포트를 읽는 수준이 아니라, 실제로 nmap 스캔 → sqlmap 주입 시도 → Caido 프록시로 요청 분석 → Playwright 브라우저로 XSS 검증까지 직접 도구를 선택하고 실행하는 에이전트 시스템이다.

루트 에이전트가 정찰·익스플로잇·보고 전문 서브 에이전트들을 생성하고 조율한다. 모든 실행은 Kali Linux 기반 Docker 컨테이너 안에서 이루어지므로 호스트 머신은 안전하다. CLI 한 줄(strix --target ./my-app)로 실행하고, CI/CD 파이프라인에도 붙일 수 있다.

용어
침투 테스트 (Penetration Testing, Pentest)
시스템 소유자의 허가 하에 공격자처럼 직접 취약점을 찾고 검증하는 보안 평가 방법론. 단순히 코드를 분석하는 정적 분석(SAST)과 달리, 실제로 공격 동작을 실행해 "이 공격이 실제로 먹히는가"를 검증한다. Strix는 이 과정을 AI 에이전트로 자동화한다.

2왜 주목받는가

트렌딩 이유 · 경쟁 도구 대비 장점.

개발자가 CLI 한 줄로 실제 동작하는 PoC까지 얻는 경험이 트렌딩의 핵심이다. 기존 보안 스캐너는 긴 리포트를 주지만 "진짜 익스플로잇이 되는지" 확인은 사람이 해야 했다. Strix는 AI가 직접 익스플로잇을 실행해 실제 동작을 증명하고, 자동 패치까지 제안한다. CI/CD 통합으로 "PR마다 보안 테스트"가 현실이 됐다.

경쟁 도구와의 비교

도구방식Strix 대비 차이
OWASP ZAP자동 크롤링 + 패턴 매칭 스캐너룰 기반 — 알려진 패턴만 탐지, 비즈니스 로직 취약점 미탐지. LLM 추론 없음
Burp SuiteHTTP 프록시 + 수동/반자동 분석전문가 수동 작업 필수, 자동화 수준 낮음. 비싼 Pro 라이선스
NucleiYAML 템플릿 기반 자동 스캔템플릿에 정의된 취약점만 탐지, 새로운 취약점 패턴 발굴 불가
Semgrep / Bandit정적 코드 분석(SAST)코드 패턴만 분석 — 런타임 동작, 배포 설정, 체이닝 취약점 미탐지
Strix자율 AI 에이전트 (DAST + SAST + LLM 추론)실제로 공격 실행 → PoC 검증 → 패치 제안. 비즈니스 로직·체이닝 취약점도 탐지
Strix의 핵심 차별점
False Positive 없는 검증된 취약점 — 실제로 동작하는 PoC를 증거로 제시

기존 스캐너의 최대 약점은 "경고는 많은데 실제로 공격이 되는지 모른다"는 것이다. Strix는 LLM이 직접 sqlmap·Playwright·Caido를 조합해 공격을 실행하고, 성공하면 그 HTTP 요청/응답 전체를 PoC 증거로 보고한다. "가능성 있는 취약점"이 아닌 "실제로 공격 성공한 취약점"만 보고한다.

현실적 주의사항
v1.0.4 Alpha — 상용 침투 테스트 서비스를 완전히 대체하기는 어려움

자동화된 AI 에이전트는 창의적이지만, 고도로 맥락화된 비즈니스 로직 취약점이나 복잡한 인증 체계는 숙련된 인간 테스터가 더 잘 찾는다. Strix는 빠른 1차 스캔과 개발자 보안 인식 향상 도구로 가장 잘 활용된다. 공식 README에도 "Only test apps you own or have permission to test"라고 명시되어 있다.

3기술 스택 전체 지도

Python 에이전트 프레임워크 + Kali 컨테이너 + LLM 연동.

백엔드 — Python 에이전트 계층

라이브러리 / 모듈역할
openai-agents[litellm]==0.14.6핵심 에이전트 프레임워크. OpenAI의 Agents SDK. SandboxAgent 클래스로 Docker 샌드박스 내 도구 실행을 담당
LiteLLM (openai-agents 플러그인)모든 LLM 프로바이더 통합 레이어. OpenAI·Anthropic·Google·Vertex AI·Bedrock·로컬 Ollama 등 100+ 모델을 동일 API로 사용
pydantic 2.x + pydantic-settings설정·스캔 파라미터 데이터 모델 검증. 타입 안전 설정 로딩
docker 7.1+Docker 데몬 Python 클라이언트. 컨테이너 생성·관리·파일 복사
textual 6.0+터미널 UI(TUI) 프레임워크. 실시간 에이전트 상태·취약점 발견 스트리밍 화면
rich터미널 색상 출력. Non-interactive 모드(CI/CD)에서 취약점 리포트 표시
cvss 3.2CVSS(공통 취약점 점수 체계) 계산. 취약점 심각도 점수 산출
caido-sdk-client 0.2+Caido HTTP 프록시를 Python에서 제어. 프록시 요청 목록 조회·재전송·사이트맵 분석
jinja2에이전트 시스템 프롬프트 템플릿 렌더링. 스캔 모드·화이트박스 여부에 따라 프롬프트 동적 생성
requestsHTTP 클라이언트. 웹 검색·외부 API 연동

샌드박스 컨테이너 — Kali Linux 기반 공격 환경

도구역할 (모두 Docker 컨테이너 내부)
Kali Linux (kali-rolling)컨테이너 베이스 이미지. 보안 도구 패키지가 사전 설치된 Debian 계열 배포판
nmap + ncat포트 스캔·서비스 지문 수집·네트워크 정찰. NET_ADMIN/NET_RAW 권한으로 raw socket 사용
sqlmapSQL 인젝션 자동 탐지·익스플로잇. DB 종류 자동 인식, 파라미터 퍼징
NucleiYAML 템플릿 기반 취약점 스캐너. CVE·OWASP Top 10 패턴 자동 검사
Caido (caido-cli v0.56)HTTP 인터셉트 프록시. 에이전트가 앱의 모든 HTTP 트래픽을 가로채고 분석
agent-browser (Playwright 기반)헤드리스 Chromium. XSS·CSRF·클릭재킹·인증 우회 등 브라우저 취약점 검증
subfinder + httpx + katana서브도메인 열거·HTTP 프로브·웹 크롤링. 공격 표면 매핑
ffuf + dirsearchURL 경로·파라미터 퍼징. 숨겨진 엔드포인트·파일 발견
semgrep + banditSAST 도구. 화이트박스 모드에서 소스 코드 취약 패턴 분석
gitleaks + trufflehog시크릿·하드코딩된 자격증명 탐지. API 키·비밀번호 코드 내 누출 검사
jwt_tool + zaproxy + wapitiJWT 취약점·OWASP ZAP 스캔·DAST 추가 레이어
tree-sitter (다국어 파서)Java·Python·Go·JS·TS·Bash·JSON·YAML AST 생성. 에이전트의 코드 구조 이해

인프라 / 배포

구성요소역할
Docker (런타임 필수)샌드박스 컨테이너 실행. StrixDockerSandboxClient가 NET_ADMIN·NET_RAW 권한과 host-gateway로 컨테이너 생성
PyPI (strix-agent)pip install strix-agent로 설치. Python 3.12~3.14 지원. PyInstaller로 독립 실행 바이너리도 제공
GitHub ActionsCI/CD 통합. PR마다 strix -n -t ./ --scan-mode quick 실행, 취약점 발견 시 non-zero exit
PostHog + Scarf익명 사용 텔레메트리. 스캔 카운트·모델 사용 패턴 수집 (opt-out 가능)
SQLite (agents.db)에이전트 세션 영속성. 스캔 중단 시 strix --resume <scan-id>로 재개 가능

4아키텍처 심화 분석

에이전트 루프 · 멀티 에이전트 그래프 · Docker 샌드박싱 설계.

┌──────────────────────────────────────────────────────────────────────┐ │ Strix 전체 시스템 구조 │ │ │ │ 사용자 │ │ $ strix --target ./my-app 또는 strix --target https://app.com │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ interface/ (CLI + TUI) │ │ │ │ · cli.py: argparse CLI, 스캔 파라미터 파싱 │ │ │ │ · tui/app.py: Textual TUI — 실시간 에이전트 메시지 스트리밍 │ │ │ │ · utils.py: 타깃 유형(로컬/GitHub/URL) 판별, scope 결정 │ │ │ └─────────────────────┬───────────────────────────────────────┘ │ │ │ scan_config dict │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ core/runner.py — run_strix_scan() │ │ │ │ · LLM 모델 해석 (STRIX_LLM 환경변수) │ │ │ │ · 스캔 ID 생성, 런 디렉토리 초기화 │ │ │ │ · 이력 있으면 resume (SQLite agents.db 복원) │ │ │ │ · RunConfig + SandboxRunConfig 조립 │ │ │ └──────────────┬──────────────┬──────────────────────────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────────────┐ ┌───────────────────────────────────────┐ │ │ │ runtime/ │ │ agents/factory.py │ │ │ │ session_manager │ │ build_strix_agent() │ │ │ │ (Docker 컨테이너) │ │ · SandboxAgent(openai-agents SDK) │ │ │ │ · StrixDocker │ │ · Jinja2 시스템 프롬프트 렌더 │ │ │ │ SandboxClient │ │ · 도구 셋 조립 (25개 도구) │ │ │ │ · NET_ADMIN 권한 │ │ · 루트 에이전트: finish_scan 포함 │ │ │ │ · Caido 부트스트랩│ │ · 자식 에이전트: agent_finish 포함 │ │ │ └──────┬───────────┘ └──────────────┬────────────────────────┘ │ │ │ │ │ │ └──────────────┬──────────────┘ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ core/execution.py — run_agent_loop() │ │ │ │ LLM 추론 루프: │ │ │ │ 1. LLM이 현재 상황 분석 → 다음 도구 선택 │ │ │ │ 2. 도구 실행 (Docker 컨테이너 내 셸 명령 or Python sandbox) │ │ │ │ 3. 결과를 LLM에 피드백 → 다음 단계 결정 │ │ │ │ 4. create_agent() 호출 시 서브 에이전트 스폰 │ │ │ │ 5. finish_scan() 또는 agent_finish() 호출 시 루프 종료 │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ Kali Linux Docker 샌드박스 │ │ │ │ ┌──────────┐ ┌─────────┐ ┌────────┐ ┌──────────────────┐ │ │ │ │ │ shell │ │filesystem│ │browser │ │ caido proxy │ │ │ │ │ │(nmap/ │ │(파일 읽기│ │(Chrom- │ │(HTTP 인터셉트· │ │ │ │ │ │ sqlmap/ │ │·쓰기· │ │ium+ │ │ 재전송·사이트맵) │ │ │ │ │ │ nuclei │ │ 패치적용)│ │Playwright│ │ │ │ │ │ │ 등) │ │ │ │) │ │ │ │ │ │ │ └──────────┘ └─────────┘ └────────┘ └──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ report/ — 최종 결과 │ │ │ │ · create_vulnerability_report() → CVSS 점수 산출 │ │ │ │ · dedupe.py: 중복 취약점 제거 │ │ │ │ · writer.py: HTML/Markdown 보고서 생성 │ │ │ │ · strix_runs/<scan-id>/ 에 저장 │ │ │ └─────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────┘

핵심 설계 패턴 4가지

패턴 1

SandboxAgent — Docker 컨테이너가 에이전트의 실행 환경

openai-agents SDK의 SandboxAgent는 일반 Agent와 달리, 도구 실행을 로컬 프로세스가 아닌 Docker 컨테이너 안에서 수행한다. Strix는 StrixDockerSandboxClient로 이를 확장해 Kali Linux 이미지에 NET_ADMIN/NET_RAW 권한을 추가하고 host.docker.internal 호스트 게이트웨이를 연결했다. 에이전트가 nmap -sS로 raw socket 스캔을 실행해도 컨테이너 밖은 영향받지 않는다.

패턴 2

멀티 에이전트 그래프 — 전문화된 서브 에이전트 동적 생성

루트 에이전트가 create_agent() 도구를 호출하면 새로운 서브 에이전트가 생성된다. 각 에이전트는 독립적인 SQLite 세션(agents.db)을 갖고, AgentCoordinator가 전체 트리를 관리한다. "정찰 에이전트", "SQL 인젝션 전문 에이전트", "보고서 작성 에이전트"처럼 분업하며, send_message_to_agent()로 발견 정보를 공유한다. 스캔이 중단되면 agents.json 스냅샷으로 어떤 에이전트가 어떤 상태였는지 저장해 재개한다.

패턴 3

Jinja2 시스템 프롬프트 — 스킬 기반 동적 프롬프트

에이전트의 시스템 프롬프트는 strix/agents/prompts/system_prompt.jinja에서 Jinja2 템플릿으로 렌더링된다. 스캔 모드(quick/standard/deep), 화이트박스 여부(소스코드 유무), 루트/자식 에이전트 여부에 따라 다른 "스킬" 블록이 주입된다. 스킬은 strix/skills/ 폴더의 파일들로, tooling/agent_browser, scan_modes/deep, coordination/root_agent 등이 있다. 프롬프트를 코드에 하드코딩하지 않고 파일로 관리하는 구조다.

패턴 4

라이프사이클 도구 — 완료 신호로 루프 종료

에이전트 루프는 LLM이 finish_scan()(루트) 또는 agent_finish()(자식)를 호출할 때만 종료된다. _finish_tool_use_behavior() 함수가 도구 실행 결과를 검사해 "scan_completed": true 또는 "agent_completed": true 페이로드가 있으면 루프를 멈춘다. 이 신호 없이 텍스트만 출력한 채 끝내면 오류로 기록된다. LLM이 "작업이 끝났다"고 판단해도 반드시 지정된 도구를 호출해야 하는 명시적 종료 계약이다.

비유 — 보안 팀으로 이해하기

기존 스캐너(ZAP·Nuclei)는 체크리스트를 가진 인턴이다. 목록에 있는 항목을 하나씩 확인하고 "이 패턴 있음/없음"을 체크한다. 빠르지만 목록에 없는 새로운 유형은 놓친다.

Strix는 팀장(루트 에이전트)과 전문가들(서브 에이전트)로 이루어진 레드 팀이다. 팀장이 "이 앱은 Node.js + JWT 인증이네 — JWT 전문가와 API 퍼저를 붙이자"고 판단해 직접 지시하고, 전문가들이 실제로 공격을 실행한다. 성공하면 "이 토큰으로 관리자 계정에 접근했다"는 증거를 들고 팀장에게 보고하고, 팀장이 최종 보고서를 작성한다.

5디렉토리 구조 해부

Python 패키지 구조와 각 모듈의 책임 범위.

strix/ 루트 — pyproject.toml (hatchling 빌드) ├── pyproject.toml 패키지 메타데이터 + ruff/mypy/bandit 설정 ├── strix.spec PyInstaller 독립 실행 바이너리 빌드 스펙 ├── Makefile 빌드·린트·테스트 단축 명령 ├── containers/ │ ├── Dockerfile Kali Linux 기반 샌드박스 이미지 │ │ (nmap·sqlmap·nuclei·Caido·Playwright·semgrep·gitleaks 등 설치) │ └── docker-entrypoint.sh 컨테이너 기동 시 Caido 초기화 │ └── strix/ Python 패키지 루트 ├── interface/ 사용자 진입점 계층 │ ├── main.py CLI 엔트리포인트 (pyproject.toml scripts 등록) │ ├── cli.py argparse 기반 CLI 파서·실행 │ ├── utils.py 타깃 파싱, scope 결정, diff 분석 │ └── tui/ Textual TUI │ ├── app.py 메인 TUI 앱 (에이전트 메시지 실시간 표시) │ ├── live_view.py 스트리밍 취약점 발견 뷰 │ ├── history.py 이전 스캔 이력 뷰 │ └── messages.py TUI 내부 이벤트 메시지 타입 │ ├── core/ 스캔 실행 핵심 계층 │ ├── runner.py 최상위 run_strix_scan() — 스캔 오케스트레이션 │ ├── execution.py run_agent_loop() + spawn_child_agent() │ ├── agents.py AgentCoordinator (에이전트 트리 관리) │ ├── hooks.py ReportUsageHooks (비용 예산 추적·초과 차단) │ ├── inputs.py 스캔 태스크 문자열 + 스코프 컨텍스트 생성 │ ├── paths.py 런 디렉토리·상태 디렉토리 경로 유틸 │ └── sessions.py SQLite 에이전트 세션 열기 │ ├── agents/ 에이전트 구성 계층 │ ├── factory.py build_strix_agent() — SandboxAgent 조립 │ └── prompt.py Jinja2 시스템 프롬프트 렌더러 │ ├── tools/ 에이전트가 호출하는 도구들 (25개) │ ├── agents_graph/ create_agent, send_message, view_graph 등 │ ├── finish/ finish_scan() — 루트 에이전트 완료 신호 │ ├── notes/ create/read/update/delete_note — 에이전트 메모 │ ├── todo/ create/list/mark_done_todo — 작업 목록 관리 │ ├── proxy/ Caido HTTP 프록시 제어 도구 │ │ ├── caido_api.py 컨테이너 내 Python SDK (caido-sdk-client) │ │ └── tools.py list_requests, view_request, repeat_request 등 │ ├── reporting/ create_vulnerability_report() — CVSS 점수 산출 │ ├── thinking/ think() — LLM 내부 추론 스크래치패드 │ ├── load_skill/ load_skill() — 런타임 스킬 동적 로드 │ ├── web_search/ web_search() — Perplexity API 검색 │ ├── apply_patch/ 코드 패치 적용 도구 │ ├── agent_browser/ Playwright 브라우저 제어 래퍼 │ ├── shell/ exec_command, write_stdin — 셸 실행 │ └── view_image/ 스크린샷 이미지 LLM에 전달 │ ├── runtime/ 샌드박스 런타임 계층 │ ├── backends.py 백엔드 레지스트리 (현재: docker만) │ ├── docker_client.py StrixDockerSandboxClient (NET_ADMIN 확장) │ ├── session_manager.py 컨테이너 생성·재사용·정리 관리 │ └── caido_bootstrap.py Caido 프록시 포트 대기·API 키 초기화 │ ├── config/ 설정 로딩 (pydantic-settings) ├── report/ 취약점 보고서 생성·중복제거·비용 추적 ├── skills/ 에이전트 스킬 파일 로더 └── telemetry/ PostHog·Scarf 익명 텔레메트리

6학습 포인트 (기술별)

이 레포에서 무엇을 배울 수 있는가.

포인트 1 · LLM 에이전트 설계

openai-agents SDK로 도구 호출 루프 직접 구현하기

Strix의 핵심은 LLM이 function_tool로 등록된 Python 함수들을 선택·호출하고, 결과를 다시 LLM에 피드백하는 루프다. core/execution.pyrun_agent_loop()를 읽으면, 에이전트가 어떻게 "생각 → 도구 선택 → 실행 → 결과 분석 → 다음 도구 선택"을 반복하는지 배울 수 있다. @function_tool 데코레이터로 함수를 도구로 등록하는 패턴도 바로 익힐 수 있다.

볼 파일: strix/core/execution.py, strix/tools/thinking/tool.py

포인트 2 · 멀티 에이전트 오케스트레이션

에이전트 트리 관리 — AgentCoordinator 패턴

strix/core/agents.pyAgentCoordinator는 에이전트 간 부모-자식 관계, 상태(running/waiting/completed/failed/stopped), 메시지 큐를 관리한다. 에이전트가 중단되면 상태를 JSON으로 직렬화해 디스크에 저장하고, 재시작 시 복원한다. 멀티 에이전트 시스템의 상태 관리 문제를 어떻게 해결하는지 볼 수 있는 실제 사례다.

볼 파일: strix/core/agents.py, strix/tools/agents_graph/tools.py

포인트 3 · Docker SDK 활용

Python docker 라이브러리로 컨테이너 동적 생성·제어

StrixDockerSandboxClient는 openai-agents SDK의 DockerSandboxClient를 서브클래싱해 필요한 Docker 설정(NET_ADMIN 권한, 호스트 게이트웨이, ENTRYPOINT 보존)을 주입한다. SDK의 부모 클래스 메서드를 "verbatim copy + delta" 방식으로 오버라이드하는 현실적 패턴을 볼 수 있다. Docker를 Python에서 제어하는 전체 흐름이 잘 문서화되어 있다.

볼 파일: strix/runtime/docker_client.py, strix/runtime/backends.py

포인트 4 · LiteLLM 멀티 프로바이더 통합

OpenAI·Anthropic·Gemini를 동일 코드로 교체하는 방법

STRIX_LLM="anthropic/claude-sonnet-4-6"처럼 환경변수 하나만 바꾸면 Anthropic Claude로 동작한다. LiteLLM이 각 프로바이더의 API 차이를 추상화해준다. strix/config/models.py를 보면 모델 이름에서 프로바이더를 파싱하고, Chat Completions API와 Responses API의 차이를 처리하는 코드를 볼 수 있다. 멀티 LLM 프로바이더를 지원하는 앱을 만들 때 바로 참고 가능한 패턴이다.

볼 파일: strix/config/models.py, pyproject.tomlopenai-agents[litellm]

포인트 5 · Textual TUI 프레임워크

터미널에서 실시간 스트리밍 UI 만들기

strix/interface/tui/app.py는 Textual 프레임워크로 구성된 터미널 UI다. 에이전트가 발견하는 취약점, 실행 중인 도구, 비용 사용량이 실시간으로 갱신된다. Textual의 컴포넌트 기반 UI 구성, 비동기 이벤트 처리, 반응형 레이아웃을 실제 프로덕션 코드에서 배울 수 있다.

볼 파일: strix/interface/tui/app.py, strix/interface/tui/live_view.py

포인트 6 · 보안 도구 오케스트레이션

nmap·sqlmap·nuclei를 Python에서 프로그래밍 방식으로 제어

에이전트는 exec_command 도구로 컨테이너 셸에서 nmap, sqlmap, nuclei, ffuf 등을 실행하고 출력을 파싱한다. Caido 프록시는 Python SDK(caido-sdk-client)로 직접 제어한다. 보안 도구를 자동화 파이프라인에서 어떻게 사용하는지 배울 수 있는 실제 예시다. Dockerfile을 보면 각 도구를 어떻게 조합 설치하는지도 배울 수 있다.

볼 파일: strix/tools/proxy/caido_api.py, containers/Dockerfile

7하드웨어 / 시스템 요구사항

로컬 개발 환경부터 CI/CD 배포까지.

항목요구사항 / 비고
필수 — DockerDocker Desktop(Mac/Windows) 또는 Docker Engine(Linux). Kali 샌드박스 컨테이너 실행에 반드시 필요. docker ps가 동작해야 함
Python3.12 이상 필수 (pyproject.toml requires-python = ">=3.12"). 3.13·3.14도 지원
LLM API 키OpenAI·Anthropic·Google 등 지원 프로바이더 중 하나 필요. LLM_API_KEY 환경변수. 로컬 Ollama도 가능
RAM최소 4GB 여유 권장. Kali 컨테이너 + LLM 추론 동시 실행. 대형 코드베이스 화이트박스 스캔 시 8GB+
디스크Kali 이미지 자동 풀(최초 실행 시 수 GB). 스캔 결과는 strix_runs/에 저장
네트워크LLM API 호출 필요. 화이트박스 모드는 오프라인 가능(LLM만 로컬 시). 블랙박스 타깃 스캔은 외부 인터넷 필요
OSLinux·macOS·Windows 지원. Docker 실행 가능 환경이면 됨
CI/CDubuntu-latest GitHub Actions 러너 기본 지원. Docker 사전 설치됨. strix -n -t ./ --scan-mode quick
비용GPT-5.4 기준 일반 스캔 $2~10 예상. --max-budget으로 비용 상한 설정 가능. ReportUsageHooks가 토큰·비용 추적
첫 실행 팁
DVWA로 안전하게 첫 스캔 연습하기

DVWA(Damn Vulnerable Web Application)는 의도적으로 취약하게 만든 실습용 웹 앱이다. docker run -d -p 80:80 vulnerables/web-dvwa로 로컬에 띄운 뒤 strix --target http://localhost로 스캔하면 본인 컴퓨터에서 완전히 합법적으로 Strix를 테스트할 수 있다. 알려진 취약점이 가득하므로 Strix가 실제로 무엇을 찾아내는지 확인하기 좋다.

8직접 해볼 수 있는 실습 과제

모든 실습은 본인 환경 또는 의도적 취약 앱(DVWA 등)에서만 수행한다.

실습 전 필독
반드시 본인 소유 또는 허가받은 시스템에서만 실행

아래 실습은 모두 로컬 Docker 컨테이너(localhost) 또는 의도적 취약 앱(DVWA·WebGoat)을 대상으로 한다. 타인의 서버, 클라우드 서비스, 공용 웹사이트에 절대 실행하지 않는다. 실수로 실행하는 것도 법적 책임이 생길 수 있다.

실습 1

Strix 설치 및 DVWA 첫 스캔 난이도 ★☆☆ 입문

의도적 취약 앱 DVWA를 Docker로 띄우고 Strix로 스캔한다. 어떤 취약점을 찾는지 직접 확인한다.

# 1. Strix 설치
pip install strix-agent

# 2. LLM 설정 (예: OpenAI)
export STRIX_LLM="openai/gpt-4o"
export LLM_API_KEY="sk-..."

# 3. 의도적 취약 앱 실행 (localhost:8080)
docker run -d -p 8080:80 vulnerables/web-dvwa

# 4. Strix 스캔 (본인 로컬만 — http://localhost)
strix --target http://localhost:8080

# 스캔 결과는 strix_runs/ 폴더에 저장됨
실습 2

로컬 취약 코드 화이트박스 스캔 난이도 ★★☆ 중급

WebGoat(의도적 취약 Java 앱) 소스코드를 로컬에 클론한 뒤 화이트박스 모드로 스캔한다. LLM이 소스코드와 실행 환경을 함께 분석하는 방식을 관찰한다.

# WebGoat 소스코드 클론 (학습용 의도적 취약 앱)
git clone https://github.com/WebGoat/WebGoat.git
cd WebGoat

# 소스코드 화이트박스 스캔 (standard 모드)
strix --target ./WebGoat --scan-mode standard

# 또는 GitHub URL로 직접 클론 + 스캔
strix --target https://github.com/WebGoat/WebGoat
실습 3

Non-interactive 모드로 CI/CD 연동 이해 난이도 ★★☆ 중급

-n 플래그로 TUI 없이 실행해 CI/CD 환경을 시뮬레이션한다. exit code로 취약점 발견 여부를 확인하는 자동화 패턴을 익힌다.

# Non-interactive 모드 (터미널 출력만, TUI 없음)
strix -n --target http://localhost:8080

# exit code 확인 (0=취약점 없음, 1=취약점 발견)
echo "Exit code: $?"

# 빠른 스캔 모드 (변경 파일만)
strix -n --target ./ --scan-mode quick
실습 4

소스코드 분석 — 에이전트 도구 직접 만들기 난이도 ★★★ 고급

Strix의 @function_tool 패턴을 따라 간단한 도구를 직접 만들어본다. 에이전트 SDK가 어떻게 Python 함수를 LLM이 호출할 수 있는 도구로 변환하는지 이해한다.

# strix/tools/에서 간단한 도구 패턴 참고
from agents import RunContextWrapper, function_tool

@function_tool(timeout=30)
async def my_custom_tool(ctx: RunContextWrapper, target_url: str) -> str:
    """내 커스텀 보안 도구 — 에이전트가 이 설명을 읽고 도구를 선택한다.

    Args:
        target_url: 분석할 URL
    """
    # 실제 로직 구현
    return f"분석 결과: {target_url}"

# @function_tool이 함수 시그니처에서 JSON Schema를 자동 생성함
# LLM은 docstring + 파라미터 타입을 보고 도구 사용 방법을 이해함
실습 5

스캔 재개 기능 실험 + AgentCoordinator 이해 난이도 ★★★★ 도전

스캔 중 Ctrl+C로 강제 종료한 뒤, --resume으로 재개하는 실험을 한다. strix_runs/ 폴더의 agents.jsonagents.db를 직접 열어 에이전트 상태가 어떻게 저장되는지 분석한다.

# 스캔 시작 (scan-id 메모해두기)
strix --target http://localhost:8080
# 중간에 Ctrl+C로 중단

# strix_runs/ 폴더 탐색
ls strix_runs/
cat strix_runs/scan-XXXXX/.state/agents.json

# 중단된 스캔 재개
strix --resume scan-XXXXX

# SQLite 에이전트 DB 직접 열기 (sqlite3 CLI)
sqlite3 strix_runs/scan-XXXXX/.state/agents.db ".tables"

9관련 기술 심화 학습 로드맵

한 주씩 따라가는 "AI 에이전트 + 보안 엔지니어링" 코스.

주차주제학습 자료 / 할 일
1주차웹 보안 기초OWASP Top 10 공식 문서 정독. DVWA 설치 후 수동으로 SQL 인젝션·XSS 시도해보기. "공격을 이해해야 방어를 설계한다"
2주차LLM 에이전트 기초openai-agents SDK 공식 튜토리얼. @function_tool 데코레이터 패턴 직접 구현. ReAct(Reason + Act) 에이전트 패턴 이해
3주차Docker 심화Docker 공식 문서 — 네트워크 모드, 권한(capabilities), 볼륨 마운트. Strix의 StrixDockerSandboxClient 코드 분석
4주차Caido / HTTP 프록시Caido 공식 문서. MITM 프록시 동작 원리 이해. strix/tools/proxy/caido_api.py 분석 — SDK로 프록시 제어하는 방법
5주차LiteLLM 멀티 프로바이더LiteLLM 공식 문서. 동일 코드로 OpenAI·Anthropic·Ollama 전환 실습. Strix config/models.py 분석
6주차Textual TUI 개발Textual 공식 튜토리얼. 간단한 TUI 앱 직접 만들기. strix/interface/tui/ 코드를 템플릿 삼아 개인 CLI 도구에 TUI 추가
7주차멀티 에이전트 오케스트레이션AgentCoordinator 패턴 깊이 분석. 에이전트 간 메시지 전달, 상태 직렬화, 재개 메커니즘 이해. Strix를 기반으로 도메인 특화 에이전트 설계해보기
8주차CI/CD 보안 통합GitHub Actions로 Strix 스캔 워크플로 직접 작성. SARIF 포맷 이해. DevSecOps "Shift Left" 원칙 적용. 취약점 발견 시 PR 자동 코멘트 추가

10핵심 키워드 사전

본문에 나온 용어 빠른 참조.

용어의미
침투 테스트 (Pentest)시스템 소유자 허가 하에 실제 공격자처럼 취약점을 찾고 검증하는 보안 평가. 단순 코드 분석이 아닌 실제 공격 실행으로 "진짜 먹히는지" 확인한다.
DASTDynamic Application Security Testing. 앱이 실행된 상태에서 실제 요청을 보내 취약점을 탐지. 런타임 동작·설정 오류까지 발견 가능. Strix의 주요 접근법.
SASTStatic Application Security Testing. 소스코드를 실행 없이 분석. 빠르지만 런타임 취약점은 놓칠 수 있다. Strix 화이트박스 모드에서 semgrep/bandit으로 보완.
OWASP Top 10가장 흔하고 위험한 웹 취약점 10가지 목록 (OWASP 재단 발표). 인젝션·인증 결함·XSS·SSRF 등. Strix가 탐지 대상으로 삼는 취약점 분류.
PoC (Proof of Concept)취약점이 실제로 공격 가능함을 증명하는 최소한의 코드/요청. Strix는 단순 경고 대신 실제로 동작하는 HTTP 요청·응답 전체를 PoC로 제시한다.
CVSSCommon Vulnerability Scoring System. 취약점 심각도를 0~10 점수로 표준화한 체계. Strix가 cvss 라이브러리로 각 취약점 점수를 산출한다.
CaidoBurp Suite 대안 HTTP 인터셉트 프록시. Strix 샌드박스에 내장되어 에이전트가 앱의 모든 HTTP 트래픽을 가로채고 재전송한다.
SandboxAgentopenai-agents SDK의 에이전트 타입. 도구 실행을 Docker 컨테이너 내부에서 수행해 호스트 머신을 보호한다. Strix가 이를 확장해 보안 도구 실행 환경을 만들었다.
function_toolopenai-agents SDK의 데코레이터. Python 함수의 시그니처·타입 힌트·docstring에서 JSON Schema를 자동 생성해 LLM이 호출 가능한 도구로 등록한다.
LiteLLMOpenAI·Anthropic·Google·Azure·Bedrock·로컬 모델 등 100+ LLM 프로바이더를 동일 API로 통합하는 Python 라이브러리. Strix가 멀티 프로바이더 지원에 활용.
ReAct 패턴Reason + Act. LLM이 "추론(Thought) → 행동(Action) → 관찰(Observation)"을 반복하는 에이전트 패턴. Strix의 에이전트 루프가 이 패턴을 따른다.
TextualPython 터미널 UI 프레임워크. React/Vue처럼 컴포넌트 기반으로 TUI를 만든다. Strix의 실시간 스캔 화면에 사용.
NET_ADMIN / NET_RAWLinux 컨테이너 권한(capability). raw socket 사용·네트워크 인터페이스 제어 허가. nmap의 SYN 스캔(-sS)에 필요해 Strix 컨테이너에 추가.
XSS (Cross-Site Scripting)공격자의 악성 스크립트를 타깃 웹사이트에 주입해 다른 사용자 브라우저에서 실행하는 취약점. Strix가 Playwright 브라우저로 실제 실행 여부를 검증.
SQL 인젝션SQL 쿼리에 악의적 입력을 주입해 DB를 무단 조회·변조하는 취약점. Strix가 sqlmap으로 자동 탐지·익스플로잇. OWASP Top 10 단골.
SSRFServer-Side Request Forgery. 서버가 공격자 지정 URL로 요청을 보내도록 유도하는 취약점. 내부 서비스·메타데이터 API 접근에 악용 가능.
화이트박스 / 블랙박스화이트박스: 소스코드를 보며 테스트. 블랙박스: 소스코드 없이 동작하는 앱만 테스트. Strix는 로컬 디렉토리를 주면 화이트박스, URL만 주면 블랙박스 모드로 자동 전환.
DevSecOps / Shift Left보안 테스트를 개발 초기·CI/CD 단계에서 수행하는 문화. Strix의 GitHub Actions 통합이 이 원칙의 실천 방법.

11참고 링크