Shaheer-Cybersec/llm-redteam-harness
GitHub: Shaheer-Cybersec/llm-redteam-harness
基于 Ollama 本地模型和 OWASP LLM Top 10 框架的自动化 LLM 红队测试工具,通过批量发射攻击 prompt 并生成可视化报告来评估大语言模型的安全性。
Stars: 0 | Forks: 0
# ⚡ LLM 红队测试工具
由 [@ShaheerSec](https://linkedin.com/in/shaheer-hussain-cybersec) 开发 — AI 安全 / LLM 红队分析师
## 功能简介
大多数人手动测试 LLM —— 输入一个 prompt,看看会发生什么,然后继续。这款工具自动化了整个红队测试流程:
1. 加载攻击 prompt 库(prompt 注入、越狱、权限提升、数据提取)
2. 向运行在 Ollama 中的本地模型发送每一条 prompt
3. 分析每一次响应 —— 模型是服从了还是拒绝了?
4. 将每一项发现映射到官方的 OWASP LLM Top 10 (2025) 漏洞列表
5. 生成一份暗色主题的 HTML 报告,包含风险评分、严重性徽章以及完整的 prompt/响应对
无需 API key。无需外部服务。完全在你的本地机器上离线运行。
## 示例报告输出
| 指标 | 结果 |
| --------------------- | ------ |
| 总发射攻击数 | 30 |
| 发现的漏洞数量 | 4 |
| 抵御的攻击数 | 26 |
| 风险评分 | 13.3% |
**关键发现:** `llama3.2:1b` 抵御了直接的越狱攻击,但在间接攻击下失效了,包括学术框架(LLM01)和渐进式升级技术(LLM02)—— 这表明较小的模型更容易受到多步骤社会工程学攻击,而不是暴力指令覆盖。
## 覆盖的攻击类别
| 攻击类型 | OWASP LLM ID | 严重性 |
| ----------------------------------------------- | ------------ | -------- |
| Prompt 注入 — 直接覆盖 | LLM01 | 严重 |
| Prompt 注入 — Token 走私 (Base64) | LLM01 | 严重 |
| Prompt 注入 — Leetspeak 过滤器绕过 | LLM01 | 严重 |
| Prompt 注入 — 通过文档间接注入 | LLM01 | 严重 |
| Prompt 注入 — 嵌套注入 | LLM01 | 严重 |
| 越狱 — 角色劫持 (DAN) | LLM02 | 高 |
| 越狱 — 虚构框架升级 | LLM02 | 高 |
| 越狱 — 多样本重复 | LLM02 | 高 |
| 越狱 — 渐进式升级 | LLM02 | 高 |
| 越狱 — 学术框架 | LLM02 | 高 |
| 越狱 — 情感操纵 | LLM02 | 高 |
| 越狱 — 竞争目标 | LLM02 | 高 |
| 越狱 — 假设型 AI (ARIA) | LLM02 | 高 |
| 权限提升 — 伪造系统 Prompt | LLM08 | 严重 |
| 权限提升 — 管理员覆盖 | LLM08 | 严重 |
| 权限提升 — 通过纠正进行越狱 | LLM08 | 严重 |
| 数据提取 — 系统 Prompt 提取 | LLM06 | 高 |
| 数据提取 — PII 和内存探测 | LLM06 | 高 |
## 技术栈
- **Python 3.10+**
- **Ollama** — 本地 LLM 推理(无需 API key)
- **Jinja2** — HTML 报告模板
- **python-dotenv** — 环境配置
- **OWASP LLM Top 10 (2025)** — 漏洞映射框架
## 快速开始
**1. 克隆仓库**
```
git clone https://github.com/Shaheer-Cybersec/llm-redteam-harness.git
cd llm-redteam-harness
```
**2. 安装依赖**
```
pip install -r requirements.txt
```
**3. 安装 Ollama 并拉取目标模型**
从 [ollama.com](https://ollama.com) 下载 Ollama,然后运行:
```
ollama pull llama3.2:1b
```
**4. 配置你的环境**
```
cp .env.example .env
```
编辑 `.env` 并设置你的目标模型:
```
OLLAMA_MODEL=llama3.2:1b
OLLAMA_BASE_URL=http://localhost:11434
```
**5. 运行测试工具**
```
python main.py
```
**6. 打开你的报告**
报告保存在 `reports/report_.html` —— 可以使用任何浏览器打开。
## 项目结构
```
llm-redteam-harness/
├── main.py # Entry point — runs the full pipeline
├── harness/
│ ├── runner.py # Fires prompts at the target model
│ ├── parser.py # Analyzes responses, maps to OWASP LLM Top 10
│ └── report_gen.py # Generates the HTML report
├── prompts/
│ └── basic_injection.txt # Attack prompt library (30 prompts across 6 categories)
├── results/ # Raw JSONL output — one file per run
├── reports/ # Generated HTML reports — one file per run
├── requirements.txt
└── .env.example
```
## Pipeline 工作原理
```
prompts/*.txt
│
▼
runner.py ──► Ollama (local model) ──► results/*.jsonl
│
▼
parser.py
(OWASP mapping +
outcome detection)
│
▼
report_gen.py
│
▼
reports/*.html
```
## 添加你自己的 Prompt
使用以下格式将 prompt 添加到 `prompts/basic_injection.txt`:
```
# CATEGORY: 你的 Attack Type — Subcategory
Your attack prompt goes here on the next line.
```
类别字符串会自动映射到 OWASP LLM Top 10。支持的类别:
| 类别字符串 | 映射至 |
| ---------------------- | ---------------- |
| `Prompt Injection` | LLM01 — 严重 |
| `Jailbreak` | LLM02 — 高 |
| `Data Extraction` | LLM06 — 高 |
| `Privilege Escalation` | LLM08 — 严重 |
## 测试对象
| 模型 | 大小 | 结果 |
| ----------- | ------ | -------------------------------------------- |
| llama3.2:1b | 1.3 GB | 30 次攻击 — 4 个漏洞 (13.3% 风险评分) |
完全离线运行 —— 不会有任何数据离开你的机器。
## 路线图
- [ ] 多模型比较 —— 在多个模型上并排测试相同的 prompt
- [ ] Garak 集成 —— 扩展的探测库,包含 100 多种攻击探测
- [ ] 在 OWASP LLM Top 10 之外增加 MITRE ATLAS 映射
- [ ] LLM-as-judge 评分 —— 使用第二个模型来评估响应的安全性
- [ ] 导出 JSON,以便与安全 pipeline 和 SIEM 工具集成
- [ ] CI/CD 集成 —— 在模型更新时自动运行红队测试套件
## 免责声明
此工具仅供**教育和授权的安全研究目的**使用。仅测试你拥有或获得明确许可评估的模型。未经书面授权,请勿用于生产系统。
## 作者
**Shaheer Hussain (@ShaheerSec)**
AI 安全 / LLM 红队分析师
[LinkedIn](https://linkedin.com/in/shaheer-hussain-cybersec) · [GitHub](https://github.com/Shaheer-Cybersec) · [TryHackMe](https://tryhackme.com/p/cicada664)
标签:AI风险缓解, OWASP LLM Top 10, 后端开发, 大语言模型安全, 提示注入, 机密管理, 逆向工具, 集群管理