Skip to content

taeng0204/attack-automation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CyBiasBench: LLM Cyber Attack Bias Benchmark

LLM 보안 에이전트(Claude, Codex, Gemini, OpenCode)의 사이버 공격 수행 능력과 편향성을 비교 분석하는 자동화 실험 프레임워크.

실험 시나리오

시나리오 목적 변수
Scenario 1 프롬프트 유형에 따른 공격 행동 비교 Guidance(2) x Structure(2) x Victim(3) x 반복(3) = 36 세션
Scenario 2 공격 기법별 성공률 비교 공격기법(10) x Victim(3) x 반복(3) = 90 세션

각 세션에서 1개 에이전트가 격리된 Docker 네트워크에서 실행됩니다. 병렬 비교는 별도 터미널에서 동시 실행합니다.

아키텍처

  1 run.sh 실행 = 1 세션 (완전 격리)

  ┌─────────────────────────────────────┐
  │  net-{session_id}  (격리 네트워크)   │
  │                                     │
  │  ┌──────────────┐                   │
  │  │ metrics-proxy│ ◄── LiteLLM      │
  │  │  (port 4000) │     토큰/비용 추적│
  │  └──────┬───────┘                   │
  │         │                           │
  │  ┌──────┴───────┐                   │
  │  │    victim    │ ◄── 취약 서버     │
  │  └──────┬───────┘                   │
  │  ┌──────┴───────┐                   │
  │  │ http-logger  │ ◄── mitmproxy    │
  │  └──────┬───────┘                   │
  │  ┌──────┴───────┐                   │
  │  │    agent     │ ◄── CLI 에이전트  │
  │  └──────────────┘                   │
  └─────────────────────────────────────┘
  • 1 run.sh = 1 agent: 각 실행이 고유한 Docker 네트워크에서 격리
  • 병렬 실행: 별도 터미널에서 run.sh를 동시 실행 (세션별 고유 이름으로 충돌 없음)
  • 동적 compose: 실행 시 .compose-{session_id}.yml 자동 생성
  • metrics-proxy: API 호출을 중계하여 토큰/비용 메트릭 수집
  • http-logger: mitmproxy 기반 HTTP 트래픽 로깅 (에이전트 ↔ victim)

빠른 시작

# 1. 환경 설정
cp .env.example .env   # API 키 입력

# 2. 단일 에이전트 실행
./run.sh --prompt prompts/guided.txt --claude --mode struct \
    --output-format output_formats/guided_structured.txt

# 3. 병렬 실행 (별도 터미널에서)
./run.sh --prompt prompts/guided.txt --claude --mode struct &
./run.sh --prompt prompts/guided.txt --codex --mode struct &
./run.sh --prompt prompts/guided.txt --gemini --mode struct &

# 4. OpenCode + Ollama (폐쇄망/로컬 모델)
./run.sh --prompt prompts/guided.txt --opencode --opencode-model "openai/gpt-4o" \
    --mode struct --output-format output_formats/guided_structured.txt

# 5. Scenario 2 일괄 실행 (에이전트별)
./run_scen2.sh --agent claude
./run_scen2.sh --agent codex
./run_scen2.sh --agent gemini

run.sh 옵션

옵션 설명 기본값
--prompt <file> 프롬프트 파일 (필수) -
--agent <type> 에이전트 타입 -
--claude/--codex/--gemini/--opencode 에이전트 숏핸드 -
--victim <type|image> 프리셋 또는 Docker 이미지 juice-shop
--victim-port <port> 커스텀 이미지의 포트 3000
--mode <report|struct> 출력 형식 report
--output-format <file> 커스텀 출력 형식 템플릿 기본 템플릿
--keep 실행 후 컨테이너 유지 삭제
--build Docker 이미지 강제 재빌드 -
--rerun <session_id> 기존 세션 재실행 -
--token-limit <n> 최대 토큰 수 무제한
--call-limit <n> 최대 API 호출 수 무제한
--cost-limit <n> 최대 비용 (USD) 무제한
--claude-model <model> Claude 모델 claude-opus-4-5-20251101
--codex-model <model> Codex 모델 gpt-5.2-codex
--gemini-model <model> Gemini 모델 gemini-3-pro-preview
--opencode-model <model> OpenCode 모델 -
--export-images <file> Docker 이미지 tar 내보내기 -
--import-images <file> Docker 이미지 tar 불러오기 -

에이전트

Agent 기본 모델 CLI 비고
Claude claude-opus-4-5-20251101 Claude Code CLI -
Codex gpt-5.2-codex OpenAI Codex CLI -
Gemini gemini-3-pro-preview Gemini CLI -
OpenCode (지정 필수) OpenCode v1.x Ollama, DeepSeek, Mistral 등

모든 에이전트는 Kali Linux 기반 이미지에서 실행되며 nmap, sqlmap, nikto, dirb, curl 등 보안 도구가 포함되어 있습니다.

OpenCode + Ollama (폐쇄망 배포)

OpenCode는 로컬 LLM(Ollama)을 포함한 다양한 프로바이더를 지원하는 범용 에이전트입니다.

# .env에 Ollama 서버 주소 설정
OLLAMA_API_BASE=http://192.168.0.57:11434

# 실행 (LiteLLM 프록시가 gpt-4o 요청을 Ollama로 라우팅)
./run.sh --prompt prompts/guided.txt --opencode --opencode-model "openai/gpt-4o" --mode struct

# 이미지 내보내기 (소스 머신)
./run.sh --export-images images.tar

# 이미지 불러오기 (폐쇄망 머신)
./run.sh --import-images images.tar

Victim 서버

Type 이미지 포트 주요 취약점
juice-shop bkimminich/juice-shop 3000 OWASP Top 10
mlflow mlflow-vulnerable:2.9.2 (로컬 빌드) 5000 RCE, Path Traversal, SSRF
vuln-shop vuln-shop:latest (로컬 빌드) 3000 커스텀 취약점
bentoml bentoml-vulnerable:1.4.2 (로컬 빌드) 3000 RCE, SSRF
gradio gradio-vulnerable:4.19.0 (로컬 빌드) 7860 Path Traversal, File Access

세션 ID 형식

  • Scenario 1: {victim}_{agent}_{guidance}_{structure}_{NN} (예: juice-shop_claude_guided_structured_01)
  • Scenario 2: {victim}_{agent}_scen2_{technique}_{NN} (예: mlflow_gemini_scen2_sqli_01)

결과 구조

results/<session_id>/
├── session.json        # 세션 메타데이터 (에이전트, victim, 모델 등)
├── output/             # 에이전트 결과 (JSONL/Markdown)
├── api-logs/           # API 호출 메트릭 + 대화 로그
│   ├── usage.jsonl     # 전체 API 호출 메트릭
│   └── proxy.log       # LiteLLM 프록시 디버그 로그
├── http-logs/          # 에이전트 ↔ victim HTTP 트래픽
└── analysis/           # 공격 분류, ASR 검증, 메트릭 요약

분석 파이프라인

실험 실행 후 자동 수행:

  1. 공격 분류 — OWASP CRS 패턴으로 HTTP 요청 분류 (classify_attacks.py)
  2. 성공 검증 — HTTP 응답 기반 ASR 산출 (verify_success.py)
  3. 메트릭 집계 — 토큰/비용/레이턴시 요약 (aggregate_metrics.py)

재실행

# 세션 재실행 (에이전트 자동 감지)
./run.sh --rerun juice-shop_claude_guided_structured_01

# 다른 모델로 재실행
./run.sh --rerun juice-shop_codex_guided_structured_01 --codex-model gpt-4o

Scenario 2 일괄 실행

# 특정 에이전트로 전체 실행
./run_scen2.sh --agent claude

# 필터링
./run_scen2.sh --agent codex --technique sqli --victim juice-shop

# 미리보기
./run_scen2.sh --agent gemini --dry-run

주의사항

  • 이 도구는 교육 및 연구 목적으로만 사용
  • 승인된 환경에서만 보안 테스트 수행
  • 실제 시스템에 대한 무단 공격은 불법

About

Automated LLM Agent attack execution framework for CyBiasBench

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors