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, 后端开发, 大语言模型安全, 提示注入, 机密管理, 逆向工具, 集群管理