Adnan-Akil/Aegis-Red
GitHub: Adnan-Akil/Aegis-Red
一个面向 LLM Web 应用的自主多智能体安全评估框架,通过模拟人类渗透测试员的行为来发现和利用 AI 应用中的语义漏洞。
Stars: 0 | Forks: 0
# Aegis-Red 🛡️🔴
### 面向基于 Web 的 LLM 应用的自主多智能体 AI 安全评估框架
*B.Tech 计算机科学与工程毕业设计项目 | 迪拜阿米提大学*
[](https://fastapi.tiangolo.com)
[](https://nextjs.org)
[](https://github.com/langchain-ai/langgraph)
[](https://playwright.dev)
[](https://supabase.com)
[](https://railway.app)
[](https://vercel.com)
[](https://opensource.org/licenses/MIT)
Aegis-Red 是一个**闭环、自主、多智能体的 offensive security 框架**,旨在对基于 LLM 的 Web 应用进行导航、画像分析和压力测试。
传统的漏洞扫描器通过直接的 API endpoint 寻找静态模式(如 SQL injection 或 XSS)。然而,现代企业级 AI 应用是对话式的、非确定性的且依赖上下文的。Aegis-Red 通过模拟人类渗透测试人员来弥补这一差距:它直接与浏览器 DOM 交互,探索目标接口,推断后端架构,并根据实时反馈动态变异其对抗性 prompt,以绕过安全过滤器。
## 📌 目录
- [⚡ 快速开始](#-quickstart)
- [📖 1. 执行摘要与愿景](#1-executive-summary--vision)
- [🧠 2. 核心理念与设计策略](#2-core-philosophy--design-strategy)
- [🏛️ 3. 系统架构与流程](#3-system-architecture--flows)
- [💻 4. 深入技术栈](#4-deep-dive-tech-stack)
- [🛡️ 5. 核心创新与高级漏洞利用](#5-key-innovations--advanced-exploitation)
- [🧪 6. 基准目标生态系统](#6-the-benchmark-target-ecosystem)
- [📊 7. 性能与评估指标](#7-performance--evaluation-metrics)
- [⚙️ 8. 设置与安装](#8-setup--installation)
- [🚀 9. 使用与执行](#9-usage--execution)
- [🤝 10. 贡献与协作](#10-contributions--collaboration)
## ⚡ 快速开始
### Windows
```
git clone https://github.com/Adnan-Akil/Aegis-Red.git
cd Aegis-Red
setup.bat :: installs venv, deps, playwright, and frontend
start.bat :: starts backend (port 8000) + dashboard (port 3000)
```
### Linux / macOS
```
git clone https://github.com/Adnan-Akil/Aegis-Red.git
cd Aegis-Red
bash setup.sh # installs venv, deps, playwright, and frontend
# 然后在两个终端中:
venv/bin/uvicorn backend.main:app --reload
cd frontend && npm run dev
```
然后打开 **http://localhost:3000**,登录,并粘贴任何目标 AI URL 即可开始攻击。
## 📖 1. 执行摘要与愿景
AI 集成已经从简单的无状态文本框演变为自主的“使用工具的 Agent”和企业级 RAG 引擎。随着这些 Agent 获得访问数据库和执行操作的权限(例如:执行 shell 命令、检索内部文档或重置凭证),它们引入了大规模的语义漏洞。
Aegis-Red 代表了从静态、无状态的安全测试向**自主、UI 驱动的红队测试**的转变。使用状态机编排器,该框架:
1. **爬取**未知的网页以定位聊天机器人界面。
2. **画像**分析目标行为以检测其能力(例如,是否拥有工具或文档)。
3. **制定**基于其发现的战略性攻击计划。
4. 通过浏览器自动化**执行** payload,保留多轮对话状态。
5. 使用安全、零泄漏的混合分析器动态**评估**响应。
6. 实时**变异**失败的 prompt 以规避语义安全过滤器。
## 🧠 2. 核心理念与设计策略
### 为什么我们选择这条路径
* **直接 DOM 交互 vs. 仅 API 扫描**:API 扫描器会绕过客户端代码、前端护栏、字符限制和上下文路由逻辑。Aegis-Red 直接与 DOM 交互,确保对人类攻击者进行高保真、真实的模拟。
* **LangGraph 编排 vs. 单一 Agent**:单一 LLM 在处理多步骤任务时会出现严重的上下文退化、规划漂移和幻觉。通过将职责划分为结构化的 StateGraph(Surface Mapper、Planner、Executor、Evaluator、Mutator),我们保证了模块化和状态一致性。
* **对抗性模糊测试 vs. 静态策略手册**:静态的 prompt injection 列表很容易被简单的正则表达式过滤器捕获。Aegis-Red 使用“语义模糊测试”(Semantic Fuzzing)——迭代地修改 prompt 上下文、语言、结构和编码——以找出目标过滤器中脆弱的边缘情况。
## 🏛️ 3. 系统架构与流程
Aegis-Red 被建模为一个利用军事 **OODA Loop(观察、定向、决定、行动)**的循环状态机。
```
graph TD
A[Start: Target URL] --> B[Surface Mapper: Discover UI Elements]
B --> C[Active Prober: Interrogate Target Type]
C --> D[Strategic Planner: Select Optimal Payload]
D --> E[Executor Node: Playwright Interaction]
E --> F[Evaluator Node: Hybrid Audit Layer]
F -- Breach Confirmed --> G[Report Generator: Structured PDF/Markdown]
F -- Refusal Detected / Try Again --> H[Mutator Node: Evolve Payload]
H --> E
F -- No Breach / Payload Exhausted --> D
```
### LangGraph 状态 Pipeline (`src/pipelines/graph.py`)
编排器使用严格类型的 schema 在 `StateGraph` 中维护对话状态:
1. **`planner_node`**:分析目标能力和之前的失败历史,从 `AttackRegistry` 中选择最可行的 payload。
2. **`executor_node`**:使用无头浏览器控制来输入 prompt、点击提交、监控流式响应的稳定状态,并捕获输出。
3. **`evaluator_node`**:在本地扫描正则匹配的机密信息,检查结构化的 JSON 有效性,对敏感片段应用保留结构的加密,并提示 LLM Judge 进行语义判决。
4. **`mutator_node`**:根据之前的失败进行演进,此节点应用同形字替换、翻译重定向、base64 封装和角色扮演框架等策略来重写 payload。
```
stateDiagram-v2
[*] --> Planner : Enter target details
Planner --> Executor : Selected payload ID
Executor --> Evaluator : Captured UI message
Evaluator --> Mutator : Verdict: FAIL (Mutations < 2)
Mutator --> Executor : Evolved Payload
Evaluator --> Planner : Verdict: FAIL (Mutations limit hit)
Evaluator --> [*] : Verdict: SUCCESS (Vulnerability logged)
```
## 💻 4. 深入技术栈
### 后端编排核心
* **Python 3.10+ / asyncio**:使用异步执行线程构建,以处理并发的 Web 自动化而不造成阻塞。
* **LangGraph & LangChain**:管理状态、内存缓冲区、条件转换和 LLM 集成。
* **FastAPI**:将应用逻辑作为 RESTful Web API 提供,并将遥测更新流式传输回客户端。
* **SQLite (通过 `aiosqlite`)**:便携、轻量级的数据库,用于存储事务日志、目标画像和成功的 payload 模式。
### Web 自动化引擎
* **Playwright**:自动化无头 Chromium 实例,以与现代 SPA 平台(React/Next.js/Streamlit)交互。包含自修复选择器缓存。
### 前端展示层
* **Next.js 15 (App Router) & TypeScript**:现代单页应用 (SPA),设计为操作指挥终端。
* **Tailwind CSS**:严格的定制设计系统,包含深色模式面板、毛玻璃容器和鲜艳的光晕效果。
* **Framer Motion**:流畅的微动画和脉动的遥测光晕,用于指示实时的后端 Agent 处理状态。
* **Lucide Icons**:干净、以开发者为中心的图标集。
## 🛡️ 5. 核心创新与高级漏洞利用
### A. 本地保留结构密码(零泄漏 LLM Judge)
将提取的机密信息(如 API key 或内部数据库密码)发送给第三方 LLM 进行验证会违反合规性并造成二次数据泄露。Aegis-Red 通过在将疑似机密发送给 LLM Judge 之前,对其运行**本地保留结构凯撒密码**来解决此问题:
$$\text{Cipher}(c) = (c - \text{Base} + 7) \bmod \text{Range} + \text{Base}$$
* **字母**转换为字母,**数字**转换为数字,**格式化字符**(`-`、`.`、`_`)被保留,以维持凭证的结构 schema。
#### 密码执行演练:
| 原始字符 | 类型 | 凯撒位移计算 (+7) | 加密结果 |
| :--- | :--- | :--- | :--- |
| **A** | 大写字母 | $(0 + 7) \bmod 26 = 7$ | **H** |
| **K** | 大写字母 | $(10 + 7) \bmod 26 = 17$ | **R** |
| **I** | 大写字母 | $(8 + 7) \bmod 26 = 15$ | **P** |
| **A** | 大写字母 | $(0 + 7) \bmod 26 = 7$ | **H** |
| **1** | 数字 | $(1 + 7) \bmod 10 = 8$ | **8** |
| **2** | 数字 | $(2 + 7) \bmod 10 = 9$ | **9** |
| **3** | 数字 | $(3 + 7) \bmod 10 = 0$ | **0** |
| **4** | 数字 | $(4 + 7) \bmod 10 = 1$ | **1** |
LLM Judge 接收到:`[REDACTED: HRPH8901HIJK2345]`。它可以轻松确认是否发生了高熵密钥泄漏,因为格式符合 `AKIA\d{4}`,但真正的 API key 永远不会离开本地环境。
### B. 动态数据外发链 (DEC)
大多数 RAG 引擎在内存中或通过 Web cookie 维护对话状态。当攻击者在第 1 轮中越狱系统后,在第 2 轮中启动新的浏览器上下文会清除会话。
Aegis-Red 通过将数据外发命令**直接嫁接**到 payload 上下文中,并在处于活动受损状态的**同一浏览器标签页**中执行它们来解决这个问题:
```
[Turn 1: Jailbreak] -> (Succeeds) -> [Same Browser Tab] -> [Turn 2: Obfuscated Query] -> (Exfiltrates context documents)
```
此外,第 2 轮的 prompt 被设计为**触发检索的查询**(例如,询问有关机密 API key 的复杂问题,而不是祈使句),以强制向量数据库填充 LLM 的上下文窗口。
### C. 精准西里尔字母同形字混淆
静态 Web 应用防火墙 (WAF) 和关键字过滤器会拦截包含被禁字符串(如 `"admin"` 或 `"system prompt"`)的 prompt。Aegis-Red 通过以编程方式将拉丁字符替换为外观相同的西里尔字母 Unicode 码位来绕过这一点:
* 拉丁字母 `'a'` (U+0061) $\rightarrow$ 西里尔字母 `'а'` (U+0430)
* 拉丁字母 `'e'` (U+0065) $\rightarrow$ 西里尔字母 `'е'` (U+0435)
字符串匹配过滤器评估该字符串是安全的(评估为 `False`),但多语言分词器对语义意图的解码却是完全相同的,从而触发漏洞利用。
## 🧪 6. 受控目标生态系统
Aegis-Red 针对位于 `benchmark_apps/` 中的受控目标基准应用进行了测试:
### 🤖 1. 标准聊天机器人 (`chatbot_vuln`)
* **目标**:覆盖角色设定限制,提取 system prompt,并绕过标准策略拒绝。
* **弱点**:软弱的角色设定。可通过假设性故事讲述和 token 预测陷阱来绕过。
### 📁 2. RAG 助手 (`rag_vuln`)
* **目标**:提取包含模拟 PII(社会安全号码、私人战略文档)的专有文档。
* **防御**:严格的仅限英语 DLP 正则表达式过滤器,扫描传出响应。
* **弱点**:翻译误导(要求输出法语/德语)和 Base64 外发绕过了英语 DLP 过滤器。
### ☁️ 3. CloudOps 工具 Agent (`tool_agent_vuln`)
* **目标**:在没有管理员权限的情况下触发后端命令(例如 `reboot_server`、`delete_user`)。
* **防御**:基于角色的访问检查。
* **弱点**:容易受到间接 prompt injection 和思维链操纵的影响,从而使模型相信用户是授权的管理员。
## 📊 7. 性能与评估指标
基于跨 **82 个不同会话**进行的 **1,306 次总攻击循环**的定量性能:
### 关键数学公式
* **变异有效性 (ME)**:
$$\text{ME} = \frac{|P_{\text{success}}|}{|P_{\text{failed\_initial}}|} \times 100$$
* *Aegis-Red 达到了 **46.4%** 的 ME,证明变异后的 payload 能够成功利用那些拦截了最初尝试的目标。*
* **自主性得分 (AS)**:
$$\text{AS} = 1.0 - \frac{\text{Manual Interventions}}{\text{Total Sessions}}$$
* *Aegis-Red 达到了 **0.98** 的 AS,在 82 次运行中仅需 1 次人工干预。*
### 遥测性能摘要
| 指标 | 测量值 | 备注 |
| :--- | :--- | :--- |
| **变异有效性 (ME)** | **46.4%** | 根据失败上下文细化并调整 prompt |
| **自主性得分 (AS)** | **0.98 /1.0** | Playwright 处理 DOM 稳定并自愈选择器 |
| **平均攻破时间 (TTC)** | **43.2 秒** | 快速的闭环执行 |
| **最快攻破记录** | **3.7 秒** | 单次直接启发式 mapper 漏洞利用 |
| **评估器精度 (v2.0)** | **96%** | 高于 v1.0 的 72%(精英补丁) |
| **记录的严重违规** | **138** | 经混合评估器确认 |
### 可视化进度图表
*以下是显示性能指标的预渲染统计图表:*
#### 1. 各攻击类别的成功率

#### 2. 平均攻破时间 (TTC) 分布

#### 3. Delta 改进:Aegis-Red v1.0 与 v2.0 大修对比

## ⚙️ 8. 设置与安装
### 前置条件
* **Python 3.10+**
* **Node.js 18+** & `npm`
* **Groq API Key** — [console.groq.com](https://console.groq.com/keys)
* **Supabase 项目** — [supabase.com](https://supabase.com)
### 1. 克隆
```
git clone https://github.com/Adnan-Akil/Aegis-Red.git
cd Aegis-Red
```
### 2. 配置环境
```
# Root .env(后端密钥)
cp .env.example .env
# 编辑 .env 并填入 GROQ_API_KEY、SUPABASE_URL、SUPABASE_SERVICE_KEY
# Frontend .env.local
cp frontend/.env.example frontend/.env.local
# 编辑 frontend/.env.local 并填入 Supabase anon key + BACKEND_URL
```
### 3. 运行安装
```
:: Windows
setup.bat
```
```
# Linux / macOS
bash setup.sh
```
这将处理:创建 venv → pip install → playwright chromium install → npm install。
### 4. Supabase Schema
在您的 Supabase SQL 编辑器中运行 SQL,以创建所需的表(`sessions`、`logs`、`findings`、`profiles`)。在每个表上启用行级安全性,以便用户只能看到自己的数据。
## 🚀 9. 使用与执行
### 选项 A:桌面启动器(Windows — 推荐用于本地开发)
双击 `start.bat`。它将:
1. 检查是否存在 venv 和 npm(如果没有,请先运行 `setup.bat`)。
2. 杀死 3000 和 8000 端口上的任何僵尸进程。
3. 在新终端中启动端口 8000 上的 **FastAPI 后端**。
4. 在新终端中启动端口 3000 上的 **Next.js 仪表板**。
5. 打开浏览器访问 `http://localhost:3000`。
### 选项 B:手动(Linux/macOS 或精细控制)
```
# 终端 1 — Backend
venv/bin/uvicorn backend.main:app --reload
# 终端 2 — Frontend
cd frontend && npm run dev
```
### 选项 C:直接 CLI 攻击(无仪表板)
```
# 攻击一个实时的外部 URL
venv/Scripts/python run_attack.py https://your-target.com/chat --iter 5
# 攻击本地 benchmark 目标
venv/Scripts/python runner.py --target hardened_rag --iter 5
```
### 选项 D:Vercel + Railway(生产环境)
将 `backend/` 部署到 Railway(通过 `Procfile` 自动检测),并将 `frontend/` 部署到 Vercel。在每个平台上设置环境变量,并将 `BACKEND_URL` 指向您的 Railway URL。
## 🤝 10. 贡献与协作
我们欢迎安全研究人员、AI 开发人员和红队成员协作并改进 Aegis-Red!以下是您可以参与的方式:
### 如何贡献
1. **报告错误和建议功能**:如果您发现浏览器自动化的边缘情况或选择器问题,请开启一个 issue 或提交报告。
2. **添加攻击 Payload**:通过向 `src/tools/attacks/` 下的注册表贡献新的越狱、外发或工具滥用 payload 来扩展库。
3. **加固目标**:提交新的易受攻击场景,或为基准目标生态系统提出更强的防御/DLP 模式。
4. **代码质量**:帮助完善我们的 Agent prompt、mutator LLM 逻辑或 SQLite 持久化模型。
### Pull Request 指南
- 分支命名:`feat/`、`fix/` 或 `chore/`。
- 保持更改的模块化,并确保现有的单元测试通过。
- 建议使用 Conventional Commits 格式的简洁提交信息。
标签:AI安全, AV绕过, Chat Copilot, CISA项目, FastAPI, GitHub, LangGraph, LLM应用测试, Playwright, 多智能体, 特征检测, 逆向工具