Skip to content

devjanger/PROMEX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PROMEX

한국어 · English

PROMEX

Video

Youtube

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가 비어 있으면 서버에서 자동 생성됩니다.


실행 흐름

  1. 사이드패널 Options에서 분석 서버 URL 및 LLM 옵션을 설정
  2. Scan에서 공격 유형/횟수/AI 지시문(선택)을 설정
  3. AI 메시지 선택으로 사이트별 응답 영역 선택자를 지정
  4. Background가 패턴 로드(또는 AI 생성) → 주입 루프 → 응답 수집
  5. 서버 배치 판정 및 리포트 생성
  6. Analysis에서 히스토리/통계/다운로드 확인

설치

사전 요구

구분 버전·조건
Python 3.10 이상 권장
Chrome 최신 안정판 (Manifest V3·Side Panel 지원)
OS Windows / macOS / Linux (서버는 크로스 플랫폼)

1) 분석 서버 (FastAPI)

저장소 루트에서 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=3

Gemini·Claude를 쓰는 경우 GEMINI_API_KEY, ANTHROPIC_API_KEY 등도 .env.example 주석을 참고해 설정합니다.

2) Chrome 확장 (PROMEX)

  1. Chrome에서 chrome://extensions/ 를 연다.
  2. 우측 상단 개발자 모드를 켠다.
  3. 압축해제된 확장 프로그램을 로드합니다를 누른다.
  4. 이 저장소의 extension 폴더를 선택한다.
  5. 도구 모음에서 PROMEX 아이콘을 클릭하거나, 우클릭 메뉴에서 사이드 패널에서 열기로 패널을 연다.
  6. 사이드패널 Options에 분석 서버 URL(예: http://127.0.0.1:8000)을 넣고 적용한다.
  7. 대상 챗봇이 열린 탭에서 ScanAI 메시지 선택으로 응답 영역을 지정한 뒤 스캔을 시작한다.

주요 API

메서드 경로 설명
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 Path
    • none: 경로 신호 없음
    • 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는 절대 커밋하지 마세요.


Team OverRide

CMUX × AIM Intelligence Hackathon (2026) — AI Safety & Security Track


PROMEX

한국어 · English

PROMEX

Video

Youtube

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).


Features

  • 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

Architecture

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

Repository layout

injection-scan/
├── extension/
│   ├── manifest.json
│   ├── popup/
│   ├── content/
│   └── background/
├── server/
│   ├── main.py
│   ├── api/
│   ├── core/
│   ├── data/
│   ├── reports/
│   └── requirements.txt
└── README.md

Attack categories

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.


Typical workflow

  1. In the side panel Options, set the analysis server URL and LLM options; click Apply if needed.
  2. In Scan, choose attack category, injection count, and optional AI instruction.
  3. Use Pick AI message area to save a per-host CSS selector for the chatbot response region.
  4. Background loads patterns (or generates in AI mode) → injection loop → response capture.
  5. Server batch judgment and report generation.
  6. Open Analysis for history, stats, and downloads.

Installation

Prerequisites

Item Requirement
Python 3.10+ recommended
Chrome Latest stable (MV3 + Side Panel)
OS Windows / macOS / Linux

1) Analysis server (FastAPI)

From the repo root:

cd server

(Optional) virtual environment:

python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
# source .venv/bin/activate

Copy 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 .env

Install and run:

pip install -r requirements.txt
uvicorn main:app --reload --host 127.0.0.1 --port 8000

Default 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=3

For Gemini or Claude, set GEMINI_API_KEY, ANTHROPIC_API_KEY, etc. per server/.env.example.

2) Chrome extension (PROMEX)

  1. Open chrome://extensions/
  2. Enable Developer mode
  3. Click Load unpacked
  4. Select this repository’s extension folder
  5. Open the side panel from the toolbar icon or Open side panel in the extension menu
  6. In Options, set the analysis server URL (e.g. http://127.0.0.1:8000) and Apply
  7. On the target chat tab: ScanPick AI message area, then start the scan

Main API

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

Report fields

  • Attack Path
    • none: no strong path signal
    • direct: direct-instruction bypass / leak signal
    • indirect: indirect / obfuscated path signal
    • memory-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

Report artifacts

Each scan writes under server/reports/<scan-name>/:

  • *.html — Dashboard-style report (charts + detail table)
  • *.xlsx — Spreadsheet
  • *.pdf — PDF export
  • *.csv, *.txt — Plain exports

Tech stack

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

Disclaimer

Use only on systems you are authorized to test. Unauthorized testing may be illegal.
Never commit API keys or .env files.


Team OverRide

CMUX × AIM Intelligence Hackathon (2026) — AI Safety & Security Track

About

Chatbot Red Team Automation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors