한국어 · English
Chatbot Red Team Automation · Team OverRide Edition
PROMEX는 실제 브라우저 세션에서 대상 챗봇과 상호작용하며 프롬프트 인젝션 공격을 자동 실행하고, 응답 증거를 수집·판정·리포트까지 일관된 파이프라인으로 처리하는 Red Team Automation 도구입니다.
크롬 사이드패널 기반 확장 프로그램이 사이트별 UI 맥락에서 공격을 수행하고, FastAPI 분석 서버가 배치 판정과 보고서 생성을 담당합니다.
- 브라우저 DOM 기반 실전형 주입/응답 수집
- 호스트별 설정 동기화(카테고리, 횟수, LLM 옵션, 서버 URL 등)
AI_MODE포함 다중 공격 모드- Prompt Injection LLM / Report Analysis LLM 분리 선택
- 분석 히스토리, 통계, 즉시 다운로드(HTML/XLSX/PDF/CSV/TXT)
Chrome Extension (MV3 Side Panel)
├── popup/ # 사이드패널 UI(Analysis / Scan / Options)
├── content/ # 페이지 상호작용(주입/응답 수집/선택자)
└── background/ # 스캔 오케스트레이션, 서버 API 호출
│
▼
FastAPI Server (server/)
├── /api/attack/* # 패턴/카테고리
└── /api/judge/* # 판정/배치판정/리포트 생성/다운로드
injection-scan/
├── extension/
│ ├── manifest.json
│ ├── popup/
│ ├── content/
│ └── background/
├── server/
│ ├── main.py
│ ├── api/
│ ├── core/
│ ├── data/
│ ├── reports/
│ └── requirements.txt
└── README.md
| 유형 ID | 설명 | 데이터 |
|---|---|---|
COMMON |
유형별 패턴을 일부씩 섞어 스캔 (단일 유형 아님) | 각 */patterns.csv 샘플링 |
DIRECT_CMD_INJECT |
직접 명령·Override/DAN 계열 | data/DIRECT_CMD_INJECT/patterns.csv |
PROMPT_LEAK |
시스템·개발자 지침 유출 유도 | data/PROMPT_LEAK/patterns.csv |
ROLEPLAY_BYPASS |
역할극·페르소나 우회 | data/ROLEPLAY_BYPASS/patterns.csv |
INDIRECT_INJECT |
문서·주석·붙여넣기 경유 | data/INDIRECT_INJECT/patterns.csv |
CONTEXT_MANIPULATION |
맥락·멀티턴 조작 | data/CONTEXT_MANIPULATION/patterns.csv |
ENCODING_OBFUSCATION |
인코딩·난독화 우회 | data/ENCODING_OBFUSCATION/patterns.csv |
AI_MODE |
정적 CSV 대신 목표 지시문과 이전 턴 히스토리를 바탕으로 LLM이 공격 프롬프트를 동적으로 생성·적응 | 정적 patterns.csv 미사용(런타임 생성) |
CSV 헤더: id,prompt,category_id,source,lang
id가 비어 있으면 서버에서 자동 생성됩니다.
- 사이드패널
Options에서 분석 서버 URL 및 LLM 옵션을 설정 Scan에서 공격 유형/횟수/AI 지시문(선택)을 설정AI 메시지 선택으로 사이트별 응답 영역 선택자를 지정- Background가 패턴 로드(또는 AI 생성) → 주입 루프 → 응답 수집
- 서버 배치 판정 및 리포트 생성
Analysis에서 히스토리/통계/다운로드 확인
| 구분 | 버전·조건 |
|---|---|
| Python | 3.10 이상 권장 |
| Chrome | 최신 안정판 (Manifest V3·Side Panel 지원) |
| OS | Windows / macOS / Linux (서버는 크로스 플랫폼) |
저장소 루트에서 server 디렉터리로 이동합니다.
cd server(선택) 가상환경을 쓰면 의존성 충돌을 줄일 수 있습니다.
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
# source .venv/bin/activate환경 변수 파일을 만듭니다. server/.env.example을 복사해 server/.env로 저장한 뒤, 사용할 LLM 제공자에 맞게 API 키를 채웁니다.
# Windows (PowerShell): Copy-Item .env.example .env
# macOS / Linux: cp .env.example .env의존성 설치 후 서버를 띄웁니다.
pip install -r requirements.txt
uvicorn main:app --reload --host 127.0.0.1 --port 8000기본 주소는 http://127.0.0.1:8000 입니다. 브라우저에서 http://127.0.0.1:8000/docs 로 OpenAPI 문서를 확인할 수 있습니다.
.env에서 자주 쓰는 항목 예시:
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini
# BATCH_JUDGE_CONCURRENCY=3Gemini·Claude를 쓰는 경우 GEMINI_API_KEY, ANTHROPIC_API_KEY 등도 .env.example 주석을 참고해 설정합니다.
- Chrome에서
chrome://extensions/를 연다. - 우측 상단 개발자 모드를 켠다.
- 압축해제된 확장 프로그램을 로드합니다를 누른다.
- 이 저장소의
extension폴더를 선택한다. - 도구 모음에서 PROMEX 아이콘을 클릭하거나, 우클릭 메뉴에서 사이드 패널에서 열기로 패널을 연다.
- 사이드패널 Options에 분석 서버 URL(예:
http://127.0.0.1:8000)을 넣고 적용한다. - 대상 챗봇이 열린 탭에서 Scan → AI 메시지 선택으로 응답 영역을 지정한 뒤 스캔을 시작한다.
| 메서드 | 경로 | 설명 |
|---|---|---|
| GET | /api/attack/patterns?category=COMMON |
패턴 목록 (per_category_common, limit_per_category 지원) |
| GET | /api/categories |
사용 가능한 카테고리 목록 |
| POST | /api/judge/batch-evaluate |
응답 일괄 판정 |
| POST | /api/judge/report |
리포트 생성 |
| GET | /api/judge/report-file |
생성된 리포트 파일 다운로드 |
Attack Pathnone: 경로 신호 없음direct: 직접 지시 기반 우회/누출 정황indirect: 간접 주입/난독 경유 정황memory-carryover: 이전 턴 문맥 전이 정황
Memory Score(memory_dependency_score)- 0.0 ~ 1.0 범위의 메모리 의존 신호 점수
- 높을수록 이전 대화 영향 가능성이 큼
스캔마다 server/reports/<scan-name>/ 디렉터리에 생성:
*.html: 대시보드형 결과 리포트(그래프/상세 테이블)*.xlsx: 스프레드시트 분석용*.pdf: 공유용 PDF*.csv,*.txt: 후처리/기록용
| 구분 | 기술 |
|---|---|
| Extension | Chrome MV3, Side Panel, chrome.tabs, chrome.storage |
| Server | Python 3, FastAPI, Uvicorn, Pydantic, python-dotenv |
| Judge | LLM(OpenAI/Gemini/Claude 옵션) + 규칙 기반 가드 |
| Report | HTML, openpyxl(XLSX), reportlab(PDF), CSV/TXT |
본 프로젝트는 허가된 보안 테스트/교육 목적에서만 사용해야 합니다.
동의 없는 서비스 대상 공격은 불법일 수 있습니다.
API 키와 .env는 절대 커밋하지 마세요.
CMUX × AIM Intelligence Hackathon (2026) — AI Safety & Security Track
한국어 · English
Chatbot Red Team Automation · Team OverRide Edition
PROMEX is a browser-based red team automation tool for web chatbots. It runs prompt-injection attacks in a real browser session, collects AI responses, and sends them through a single pipeline: server-side judgment and report generation.
A Chrome side panel extension drives attacks in each site’s DOM context; a FastAPI analysis server handles batch evaluation and exports (HTML, XLSX, PDF, CSV, TXT).
- DOM-based prompt injection and response capture
- Per-host settings (category, count, LLM options, server URL, etc.)
- Multiple attack modes including
AI_MODE - Separate Prompt Injection LLM and Report Analysis LLM in Options
- Analysis history, charts, and one-click report downloads
Chrome Extension (MV3 Side Panel)
├── popup/ # Side panel UI (Analysis / Scan / Options)
├── content/ # Page interaction (inject / capture / selector)
└── background/ # Scan orchestration, server API calls
│
▼
FastAPI Server (server/)
├── /api/attack/* # Patterns & categories
└── /api/judge/* # Judge, batch judge, reports, downloads
injection-scan/
├── extension/
│ ├── manifest.json
│ ├── popup/
│ ├── content/
│ └── background/
├── server/
│ ├── main.py
│ ├── api/
│ ├── core/
│ ├── data/
│ ├── reports/
│ └── requirements.txt
└── README.md
| Category ID | Description | Data |
|---|---|---|
COMMON |
Mixed sampling across categories (not a single type) | Sample from each */patterns.csv |
DIRECT_CMD_INJECT |
Direct commands, override / DAN-style | data/DIRECT_CMD_INJECT/patterns.csv |
PROMPT_LEAK |
System / developer instruction exfiltration | data/PROMPT_LEAK/patterns.csv |
ROLEPLAY_BYPASS |
Roleplay / persona bypass | data/ROLEPLAY_BYPASS/patterns.csv |
INDIRECT_INJECT |
Via documents, comments, paste | data/INDIRECT_INJECT/patterns.csv |
CONTEXT_MANIPULATION |
Context / multi-turn manipulation | data/CONTEXT_MANIPULATION/patterns.csv |
ENCODING_OBFUSCATION |
Encoding / obfuscation bypass | data/ENCODING_OBFUSCATION/patterns.csv |
AI_MODE |
LLM-generated adaptive prompts from a goal instruction and prior turns | No static patterns.csv (runtime generation) |
CSV columns: id,prompt,category_id,source,lang
Empty id values are auto-generated on the server.
- In the side panel Options, set the analysis server URL and LLM options; click Apply if needed.
- In Scan, choose attack category, injection count, and optional AI instruction.
- Use Pick AI message area to save a per-host CSS selector for the chatbot response region.
- Background loads patterns (or generates in AI mode) → injection loop → response capture.
- Server batch judgment and report generation.
- Open Analysis for history, stats, and downloads.
| Item | Requirement |
|---|---|
| Python | 3.10+ recommended |
| Chrome | Latest stable (MV3 + Side Panel) |
| OS | Windows / macOS / Linux |
From the repo root:
cd server(Optional) virtual environment:
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
# source .venv/bin/activateCopy server/.env.example to server/.env and fill API keys for your provider.
# Windows (PowerShell): Copy-Item .env.example .env
# macOS / Linux: cp .env.example .envInstall and run:
pip install -r requirements.txt
uvicorn main:app --reload --host 127.0.0.1 --port 8000Default URL: http://127.0.0.1:8000 — OpenAPI: http://127.0.0.1:8000/docs
Example .env:
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini
# BATCH_JUDGE_CONCURRENCY=3For Gemini or Claude, set GEMINI_API_KEY, ANTHROPIC_API_KEY, etc. per server/.env.example.
- Open
chrome://extensions/ - Enable Developer mode
- Click Load unpacked
- Select this repository’s
extensionfolder - Open the side panel from the toolbar icon or Open side panel in the extension menu
- In Options, set the analysis server URL (e.g.
http://127.0.0.1:8000) and Apply - On the target chat tab: Scan → Pick AI message area, then start the scan
| Method | Path | Description |
|---|---|---|
| GET | /api/attack/patterns?category=COMMON |
Pattern list (per_category_common, limit_per_category) |
| GET | /api/categories |
Available categories |
| POST | /api/judge/batch-evaluate |
Batch judgment |
| POST | /api/judge/report |
Generate report bundle |
| GET | /api/judge/report-file |
Download a generated report file |
Attack Pathnone: no strong path signaldirect: direct-instruction bypass / leak signalindirect: indirect / obfuscated path signalmemory-carryover: prior-turn context appears to influence the reply
Memory Score(memory_dependency_score)- Float 0.0–1.0: strength of “memory carryover” style signals
- Higher values suggest stronger influence from earlier turns
Each scan writes under server/reports/<scan-name>/:
*.html— Dashboard-style report (charts + detail table)*.xlsx— Spreadsheet*.pdf— PDF export*.csv,*.txt— Plain exports
| Layer | Stack |
|---|---|
| Extension | Chrome MV3, Side Panel, chrome.tabs, chrome.storage |
| Server | Python 3, FastAPI, Uvicorn, Pydantic, python-dotenv |
| Judge | LLM (OpenAI / Gemini / Claude options) + rule-based guards |
| Report | HTML, openpyxl, reportlab, CSV/TXT |
Use only on systems you are authorized to test. Unauthorized testing may be illegal.
Never commit API keys or .env files.
CMUX × AIM Intelligence Hackathon (2026) — AI Safety & Security Track
