pfin-arya/prompt_sql_injection
GitHub: pfin-arya/prompt_sql_injection
基于双 LLM 架构的 API 红队自动化测试框架,能够根据 API 文档和策略文件生成测试 prompt 并自动评估 API 响应是否违反安全策略。
Stars: 0 | Forks: 0
# 红队 — API 测试框架
使用**双 LLM 架构**的自动化 API 红队测试。给定 API 文档和可选的 SOP/策略文档,该工具会生成逼真的测试 prompt,访问目标 API,并评估响应是否符合策略。
## 工作原理
```
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ API Docs │────▶│ LLM-A │────▶│ Test Prompts │
│ (.md/.docx/.pdf)│ │ (Generator) │ │ (seed + follow) │
└─────────────────┘ └──────────────┘ └────────┬─────────┘
│
┌─────────────────┐ ▼
│ SOP / Policies │ ┌──────────────┐ ┌──────────────────┐
│ (folder of │────▶│ LLM-B │◀────│ Target API │
│ docs) │ │ (Evaluator) │ │ Response │
└─────────────────┘ └──────┬───────┘ └──────────────────┘
│
▼
┌──────────────────┐
│ Excel Report │
│ (verdict + │
│ reason + source)│
└──────────────────┘
```
1. **LLM-A(生成器)** 读取您的 API 文档 + 检索到的 SOP 上下文 → 生成逼真的种子 prompt 和后续 prompt
2. 每个 prompt 都会发送到 **目标 API** 并捕获响应
3. **LLM-B(评估器)** 检索相关的 SOP/策略片段 → 根据 API 文档和策略证据验证 API 响应
4. 结果将写入 **Excel 报告**,其中包含判定、原因和来源引用
## 项目结构
```
Red_team/
├── main.py # Entrypoint: python main.py
├── .env.local # Your configuration (not committed)
├── .env.example # Template for .env.local
├── requirements.txt # Python dependencies
│
├── docs/ # API documentation files
│ ├── pai_chat.md
│ └── *.docx
│
└── redteam/ # Source package
├── config.py # Env-based settings + validation
├── llm.py # Azure OpenAI client
├── helpers.py # JSON parsing, text utils
├── document_loader.py # Load .md/.docx/.pdf/.json/.txt
├── policy_index.py # SOP chunking + lexical retrieval
├── api_extractor.py # LLM doc extraction + cURL parser
├── api_caller.py # Build request body + call API
├── prompt_generator.py # LLM-A: seed + follow-up generation
├── evaluator.py # LLM-B: SOP-based validation
├── orchestrator.py # Test cycle orchestration
└── report.py # Excel report generation
```
## 快速开始
```
# 1. 克隆并进入目录
cd Red_team
# 2. 安装依赖
pip install -r requirements.txt
# 3. 配置环境
cp .env.example .env.local
# 使用你的 Azure OpenAI credentials、路径等编辑 .env.local
# 4. 运行
python main.py
```
## 配置
所有设置均由 `.env.local` 驱动。关键变量:
| 变量 | 描述 |
|----------|-------------|
| `AZURE_OPENAI_ENDPOINT` | Azure OpenAI 的 endpoint URL |
| `AZURE_OPENAI_KEY` | Azure OpenAI 的 API key |
| `MODEL_GEN` | 用于生成 prompt 的 LLM 模型 |
| `MODEL_EVAL` | 用于响应评估的 LLM 模型 |
| `API_DOC_PATH` | API 文档文件的路径 |
| `SOP_FOLDER_PATH` | SOP/策略文档的文件夹路径 |
| `NUM_SEEDS` | 要生成的种子测试组数量 |
| `FOLLOWUPS_PER_SEED` | 每个种子的后续 prompt 数量 |
| `MAX_TESTS` | 最大测试用例总数 |
| `OUTPUT_EXCEL` | 输出报告文件名 |
请参阅 [.env.example](.env.example) 获取完整列表。
## 支持的文档格式
| 格式 | 扩展名 | 备注 |
|--------|-----------|-------|
| Markdown | `.md` | 直接文本 |
| 纯文本 | `.txt`, `.log`, `.csv` | 直接文本 |
| JSON | `.json` | 格式化打印 |
| Word | `.docx` | 转换为 Markdown(保留表格) |
| PDF | `.pdf` | 通过 `pypdf` 提取文本 |
| YAML | `.yaml`, `.yml` | 直接文本 |
标签:API安全测试, DLL 劫持, 人工智能, 大语言模型, 用户模式Hook绕过, 红队评估, 逆向工具