# Aegis **Repository Path**: frontcold/Aegis ## Basic Information - **Project Name**: Aegis - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-30 - **Last Updated**: 2026-02-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Aegis: 混合智能与动态调试安全代理 Aegis是一个高度实验性的、前沿的Web安全审计框架。它将自主AI代理(Agent)与多种安全测试技术(SAST, DAST, IAST, Debugging)深度融合,构建了一个能够对现代Web应用进行深度、智能、自动化安全审计的终极系统。 同志们!!这个玩意,目前就是个玩具,高度理想化,远超我的编码能力,充斥着大量AI生成的代码!!!生产使用打咩!但是如果有劳各位师傅们能贡献代码,我们可以一起把这个小玩具做大做强,变成大玩具甚至真正可用! ## 核心设计思想 Aegis的最终形态,由三大核心理念驱动,旨在最大限度地模仿一位顶尖安全专家的思维与工作流: 1. **“影子调查员” (无感的主动代理)**: Aegis在后台的“影子浏览器”中,对用户访问过的页面发起主动的、探索性的安全调查,而完全不干扰用户的正常浏览。它提供了被动式扫描的无感体验,但具备主动式测试的强大能力。 2. **“AI指挥官 + 多维情报源” (混合智能)**: Aegis不单纯依赖LLM的通用推理。它为“AI指挥官”(`AgentWorker`)配备了三大多维度的情报来源: * **静态分析(SAST)**: 框架集成了多种静态分析能力(例如 `src/utils/crypto_analyzer.py`),用于在分析过程中发现代码和资源中的静态线索(如密钥、危险函数)。 * **动态分析(DAST)**: `browser_tools`和`network_tools`是AI的“双手”,使其能与网站进行动态交互(点击、输入)和精确的发包测试。 * **运行时调试(Debugging)**: `UnifiedCDPDebugger`是AI的“窃听器”,通过在关键事件(如`click`)上设置断点,它能捕获到事件发生瞬间的JS运行时状态(如变量值),为AI提供无与伦比的“铁证”。 3. **“双记忆系统” (可持续学习)**: 为了解决长期运行和上下文窗口限制的矛盾,Aegis为AI代理设计了双记忆系统: * **长期记忆 (RAG)**: 基于ChromaDB,允许AI从过去相似架构的网站分析中学习经验。 * **工作记忆 (Summarization)**: AI在执行多步任务时,会通过LLM调用进行“自我总结”,将冗长的历史记录浓缩成简短的“状态摘要”,以防止上下文窗口溢出。 ## 技术栈 - **核心框架**: Python, asyncio - **浏览器自动化**: Playwright - **AI模型调用**: OpenAI 兼容 API(如 LM Studio / Ollama / OpenAI) - **HTTP客户端**: httpx - **静态分析**: 内置的Python脚本 - **长期记忆**: ChromaDB ## 工作原理 Aegis的核心是双模驱动架构,不同模式下,各组件的协同方式不同。 ### 被动模式 (Passive Mode) 工作流 在被动模式下,框架的核心是**无感地监听和分析用户产生的交互**。其职责被清晰地划分为“交互分析”和“会话保持”,由两个不同的Worker协同完成,以达到最高效率。 ```mermaid graph TD subgraph "用户侧 (User Side)" direction LR User["👤 用户"] -- "1. 正常操作" --> MainBrowser["🌐 主浏览器"] MainBrowser -- "2. 交互事件" --> CDPController["CDP 控制器"] CDPController -- "3. 事件入队" --> InteractionQueue["交互事件队列"] end subgraph "调度与分析 (Manager & Analysis)" direction TB InvestigationManager["🕵️ 调查任务管理器"] -- "4. 读取交互" --> InteractionQueue InvestigationManager -- "5. 聚合后派发分析任务" --> InteractionWorker["👩‍🔬 交互分析器"] InteractionWorker -- "6. 获取已登录的浏览器" --> BrowserPool["🕶️ 浏览器池"] InteractionWorker -- "7. 在后台重放并分析" --> AnalysisLoop{"分析循环"} AnalysisLoop -- "8. 输出报告" --> Reporter["📋 报告生成"] end subgraph "会话保持 (Session Holder)" direction TB AgentWorker_Passive["🤖 AgentWorker
(会话保持模式)"] -- "a. 登录并准备好环境" --> BrowserPool InvestigationManager -- "b. (可选)启动会话保持" --> AgentWorker_Passive end classDef user fill:#E8F8F5,stroke:#16A085,stroke-width:2px classDef manager fill:#FEF9E7,stroke:#F1C40F,stroke-width:2px class User,MainBrowser,CDPController,InteractionQueue user class InvestigationManager,InteractionWorker,BrowserPool,AnalysisLoop,Reporter,AgentWorker_Passive manager ``` ### 主动模式 (Autonomous Mode) 工作流 在主动模式下,`AgentWorker` 成为绝对核心,作为一个自主代理,在目标网站上执行“观察-思考-行动”的循环,主动探索和攻击。 ```mermaid graph TD subgraph "启动 (Initiation)" direction LR InvestigationManager["🕵️ 调查任务管理器"] -- "1. 分配任务和目标URL" --> AgentWorker_Active["🤖 AgentWorker"] end subgraph "AI代理的思考-行动循环" direction TB AgentWorker_Active -- "2. 获取浏览器" --> BrowserPool["🕶️ 浏览器池"] AgentWorker_Active -- "3. 观察 (Observe)" --> Page["页面状态"] Page -- "4. 形成上下文" --> AgentWorker_Active AgentWorker_Active -- "5. 思考 (Think)" --> LLM["LLM 决策"] LLM -- "6. 返回工具调用" --> AgentWorker_Active AgentWorker_Active -- "7. 行动 (Act)" --> Tools["🛠️ 执行工具
如: browser_tools, scanners"] Tools -- "8. 更新页面状态" --> Page subgraph "持续情报" Debugger["CDP 调试器"] -- "IAST事件" --> AgentWorker_Active end end AgentWorker_Active -- "9. 结束并报告" --> Reporter["📋 报告生成"] classDef manager fill:#FEF9E7,stroke:#F1C40F,stroke-width:2px classDef agent fill:#E8F8F5,stroke:#16A085,stroke-width:2px class InvestigationManager,BrowserPool,Reporter manager class AgentWorker_Active,Page,LLM,Tools,Debugger agent ``` ## 安装与使用 ### 前置要求 - Python 3.10+ - Chrome/Chromium 浏览器 - 支持的LLM服务 (本地 LM Studio / Ollama / 其他 OpenAI 兼容 API 服务) 1. **安装依赖**: 确保您的系统已安装Python 3.10+。然后运行: ```bash pip install -r requirements.txt ``` 2. **启动Chrome浏览器**: Aegis需要连接到一个开启了远程调试端口的Chrome实例。请先关闭所有Chrome进程,然后使用您的系统对应的命令启动它: ```bash # Windows "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 # macOS /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 # Linux google-chrome --remote-debugging-port=9222 ``` 3. **配置Aegis**: 打开 `config.yaml` 文件进行配置。 - **`whitelist_domains`**: **(重要)** 将您要测试的域名或IP地址加入白名单。 - **`browser_pool`**: - **`mode`**: 选择浏览器池模式 - `shared`: 共享主浏览器的认证状态(推荐) - `standalone`: 独立浏览器但复制认证 - `pool_size`: 并发扫描数量 - **`llm_service`**: - 使用与 OpenAI 兼容的 API 服务(如本地 LM Studio / Ollama 的 openai 兼容模式)。 - 在 `api_config` 中配置 `base_url`、`model_name`、`api_key` 与 `timeout`。 4. **运行Aegis**: ```bash playwright install python main.py ``` 程序启动后,您只需在主浏览器中正常浏览网页。Aegis的“侦察兵”会监控您的导航,并自动派遣“AI指挥官”在后台对您访问的页面进行自主的、混合式的安全审计。所有AI的思考过程和决策都会实时打印在Aegis的终端中。 5. **登录目标网站**: - 在Chrome中正常登录您要测试的网站 - 完成任何需要的人工验证(如验证码) - Aegis会自动同步认证状态到影子浏览器 6. **查看结果**: - **实时对话**: 在Aegis运行的终端中,可以直接看到AI的思考和决策过程。 - **最终报告**: 在`./reports`目录下,会为每个目标生成一份详细的Markdown格式审计报告。 - **AI对话存档**: 在`./logs`目录下,`ai_dialogues.jsonl`文件会完整记录每一次与AI的对话。 ## 文档 详细的技术文档请参考 [docs/](./docs/) 目录,包含: ### 📖 核心功能文档 - 被动模式交互复现功能说明 - 被动扫描模式修复总结 - 影子浏览器并行测试功能 - JS逆向功能使用说明 ### 📐 架构设计文档 - 系统架构图和组件说明 - 自主模式/被动模式架构设计 - CDP与网络AI集成架构 ## 测试 ### 运行被动模式交互复现测试 ```bash # 运行所有测试 python run_tests.py # 或直接运行被动模式测试 python tests/passive_mode/test_passive_mode_interaction.py ``` 测试将验证: - 交互录制器功能 - 序列管理器的依赖分析 - 交互复现器的精确执行 - 验证机制的安全性检查 ## 工作模式 ### 执行模式 #### 被动模式(默认) - **无感监控**: 在后台默默记录用户操作,不影响正常浏览 - **完整交互复现**: 能够记录并完整复现用户的操作序列(如登录、表单填写等) - **智能依赖分析**: 自动识别操作间的依赖关系,确保正确的执行顺序 - **精确输入模拟**: 逐字符复现用户输入,完美处理需要前提条件的操作 #### 主动模式 - AI代理自主探索和测试 - 更深入的漏洞挖掘 - 适合授权渗透测试 ### 浏览器池模式 #### 共享模式(推荐) - 影子浏览器在主浏览器中创建新标签页 - 自动共享cookies、localStorage和session - 支持测试需要登录的功能 - 资源消耗低 #### 独立模式 - 创建独立的headless浏览器实例 - 复制主浏览器的认证状态 - 更好的隔离性 - 适合敏感环境 ## 安全注意事项 ⚠️ **重要警告**: - 只对您有权测试的网站进行扫描 - 必须配置白名单域名以避免意外扫描 - 不要在生产环境直接使用 - 注意扫描频率以避免对目标服务器造成压力 ## 未来规划 (Roadmap) Aegis 框架仍在快速演进中,以下是我们共同规划的、能带来质变的功能迭代方向: ### 🚀 架构演进与核心重构 (Architectural Evolution & Core Refactoring) - [ ] **统一分析流程: 确立AI Agent的“总指挥”地位** - **目标**: 将`ScannerManager`改造为AI Agent可调用的工具,实现由AI根据上下文智能决策、触发特定扫描的统一分析流程。 - **价值**: 消除当前分析路径的割裂,实现真正的“智能编排”,让AI成为驱动所有扫描行为的核心。 - [ ] **引入依赖注入 (DI) 与服务容器** - **目标**: 在`main.py`中创建全局“服务容器”,集中管理`LLMClient`, `BrowserPool`等核心服务,并以依赖注入方式传递给各工作模块。 - **价值**: 大幅降低模块间耦合,提升代码的可测试性和可维护性。 - [ ] **分析逻辑服务化与代码整合** - **目标**: 将`AgentWorker`和`InteractionWorker`中重复的分析逻辑(如页面快照、调用扫描等)抽象成可复用的`AnalysisService`。 - **价值**: 减少代码冗余,使核心工作模块的职责更单一、清晰。 ### 🎯 功能增强与能力跃迁 (Feature Enhancement & Capability Leap) - [ ] **DAST引擎的成熟化 (PoC驱动)** - **描述**: 将当前的DAST测试升级为一个可编排、支持复杂PoC的工作流引擎,使其接近Nuclei等专业工具的能力。 - **已完成**: - [x] 将Payloads从硬编码重构为外部JSON/YAML文件。 - [x] 实现了SSTI漏洞检测的原型。 - [x] 实现了URL参数的增量分析原型。 - **待办 (TODO)**: - [ ] **定义PoC格式**: 设计一套机器可读的YAML格式,用于描述多步请求、变量提取、复杂匹配器等。 - [ ] **实现状态化引擎**: 支持在多步请求之间传递状态(如CSRF Token)。 - [ ] **增强匹配器 (Matcher)**: 实现更强大的结果断言能力,支持基于状态码、响应头、正则表达式、DSL等多种条件的判断。 - [ ] **支持带外检测 (OOB)**: 增加对SSRF等带外漏洞的检测支持。 - [ ] **核心引擎与AI能力** - **已完成**: - [x] **深化CDP与IAST集成**: 让AI能主动消费和理解来自`debug_events_q`的实时调试和IAST事件。 - **待办 (TODO)**: - [ ] **实现“分析-验证”闭环**: 在高级DAST引擎的基础上,实现`情报收集 -> AI分析 -> AI生成PoC -> DAST执行 -> 验证结果`的完整闭环。 - [ ] **实现AI工作记忆总结**: 在`AgentWorker`中增加“自我总结”步骤,解决长上下文限制。 ### 🧩 易用性与流程优化 (Usability & Flow Optimization) - [x] **优化导航与增量分析**: 引入"URL端点规范化"逻辑,避免对同一页面的重复性重量级分析。 - [x] **被动模式状态化重放**: 实现对用户连续操作链的记录与复现,确保对复杂交互的分析上下文绝对准确。 - [ ] **增强启动逻辑**: 优化启动行为,使其能自动发现并分析所有已打开的、在白名单内的标签页,并智能选择认证状态。