Adnan-Akil/Aegis-Red

GitHub: Adnan-Akil/Aegis-Red

一个面向 LLM Web 应用的自主多智能体安全评估框架,通过模拟人类渗透测试员的行为来发现和利用 AI 应用中的语义漏洞。

Stars: 0 | Forks: 0

# Aegis-Red 🛡️🔴 ### 面向基于 Web 的 LLM 应用的自主多智能体 AI 安全评估框架 *B.Tech 计算机科学与工程毕业设计项目 | 迪拜阿米提大学* [![FastAPI](https://img.shields.io/badge/Backend-FastAPI-009688.svg?style=flat&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com) [![Next.js](https://img.shields.io/badge/Frontend-Next.js-000000.svg?style=flat&logo=nextdotjs&logoColor=white)](https://nextjs.org) [![LangGraph](https://img.shields.io/badge/Orchestrator-LangGraph-FF6F61.svg?style=flat&logo=langchain&logoColor=white)](https://github.com/langchain-ai/langgraph) [![Playwright](https://img.shields.io/badge/Automation-Playwright-2EAD33.svg?style=flat&logo=playwright&logoColor=white)](https://playwright.dev) [![Supabase](https://img.shields.io/badge/Auth-Supabase-3ECF8E.svg?style=flat&logo=supabase&logoColor=white)](https://supabase.com) [![部署到 Railway](https://img.shields.io/badge/Deploy_Backend-Railway-0B0D0E.svg?style=flat&logo=railway&logoColor=white)](https://railway.app) [![部署到 Vercel](https://img.shields.io/badge/Deploy_Frontend-Vercel-000000.svg?style=flat&logo=vercel&logoColor=white)](https://vercel.com) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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. 各攻击类别的成功率 ![攻击类别](https://raw.githubusercontent.com/Adnan-Akil/Aegis-Red/main/charts/chart1_attack_categories.png) #### 2. 平均攻破时间 (TTC) 分布 ![攻破时间](https://raw.githubusercontent.com/Adnan-Akil/Aegis-Red/main/charts/chart2_ttc.png) #### 3. Delta 改进:Aegis-Red v1.0 与 v2.0 大修对比 ![v1 与 v2 大修对比](https://raw.githubusercontent.com/Adnan-Akil/Aegis-Red/main/charts/chart3_v1_vs_v2.png) ## ⚙️ 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, 多智能体, 特征检测, 逆向工具