AgeOfAlgorithms/Mahoraga-Webapp-Defender

GitHub: AgeOfAlgorithms/Mahoraga-Webapp-Defender

基于多 LLM Agent 协作的实时 Web 应用自主防御系统,通过影子环境隔离攻击者并自动检测、分析、修补代码漏洞。

Stars: 1 | Forks: 0

# Mahoraga Webapp Defender

AI 驱动的响应式 Web 应用防御系统,旨在实时抵御 AI 驱动的攻击。

GitHub stars License: MIT PRs Welcome

## 目录 - [Mahoraga Webapp Defender](#mahoraga-webapp-defender) - [目录](#table-of-contents) - [简介](#introduction) - [目标网站](#target-website) - [架构](#architecture) - [双重环境](#dual-environments) - [Agent Pipeline](#agent-pipeline) - [如何开始](#how-to-start) - [准备工作](#getting-ready) - [完整 Defender vs. Attacker 实验](#full-defender-vs-attacker-experiment) - [仪表板](#dashboard) - [日志](#logs) - [Agents](#agents) - [Pipeline](#pipeline) - [补丁](#patches) - [LLM 配置](#llm-configuration) - [技术栈](#tech-stack) - [特别鸣谢](#special-thanks) ## 简介 Mahoraga Defender 是一个响应式、与攻击者类型无关的实时防御系统的 PoC。其核心机制是诱骗对手在一个无害的虚假环境("影子"环境)中进行发现和攻击,并记录这些攻击行为。然后,由一个 LLM agent 分析日志,并将检测到的漏洞详情交给更多的 LLM agent 以修复漏洞并部署补丁。 该系统旨在实现完全自动化,并充分考虑了 API 成本优化。系统提供了一个 GUI,便于轻松监控流量日志、agent 活动和补丁 pipeline,并控制要部署的 agent 数量。 ## 目标网站 目标(受害者)网站是 [crAPI (Completely Ridiculous API)](https://github.com/OWASP/crAPI) 的一个 fork,这是 OWASP 为教授 API 安全测试而创建的一个刻意带有漏洞的 Web 应用。crAPI 模拟了一个车主平台,其微服务涵盖了 OWASP Top 10 API 漏洞。defender 旨在清晰区分正常用户和恶意用户的会话,以便在保护网站免受攻击者侵害的同时,正常用户的用户体验质量不会出现任何下降。 我们的 fork (`crapi-fork/`) 增加了: - 植入的蜜罐(诱饵凭证、endpoint、token)用于检测攻击者 - 在攻击面共嵌入了 12 个 CTF 风格的 flag - 一个并行的 "shadow" 栈,具有相同的服务和独立的数据库,用于安全地观察攻击者 - 基于 nginx Lua 的会话路由,透明地将可疑会话从生产环境重定向到 shadow 环境 原始副本保存在 `crapi-original/` 中,以便在实验之间重置环境。 ## 架构 ### 双重环境 - **生产环境**: 通过 nginx 反向代理为真实用户提供服务 (端口 8888) - **影子环境**: 具有独立数据库的相同诱饵栈,透明地接收重定向过来的攻击者流量 ### Agent Pipeline

- **Orchestrator**: 协调整个 pipeline。管理 agent 生命周期、补丁/审查队列、工单状态、部署和崩溃恢复。在运行时动态扩缩 fixer/reviewer agent。 - **Watcher**(基于规则): 监控生产环境流量日志,并使用模式匹配(暴力破解、注入、枚举、蜜罐访问等)对会话的威胁级别进行评分。一旦威胁分数超过阈值,就会触发重定向操作。 - **Shadow Analyzer**(LLM agent): 按可配置的时间间隔读取 shadow 环境的流量日志,以检测成功的漏洞利用。对日志条目进行去重,检测攻击模式,并将确认的漏洞利用推送到修复队列。 - **Fixer**(LLM agent): 接收漏洞利用报告,读取相关的源代码,并直接在 `crapi-fork/` 中进行修补。在一个沙盒化的 bash 环境中运行,访问权限仅限于 `crapi-fork/`。 - **Reviewer**(LLM agent): 验证补丁的正确性、范围和安全性。批准的补丁将触发部署操作;拒绝的补丁将连同反馈一起发送回 fixer。 在部署时,Python 服务通过 gunicorn 热重载(即时生效),而 Java/Go 服务则通过 `docker compose up -d --build` 重新构建。 **为什么没有 Tester agent?** 我们曾考虑添加一个专门的用户测试 agent 和一个单独的测试环境,但为了保持系统的轻量级,这两者都被移除了。 ## 如何开始 ### 准备工作 - 建议使用 conda 或 python 虚拟环境(例如,`conda create -n XYZ python=3.13`,然后执行 `conda activate XYZ`)。 - 安装依赖项:`pip install -r requirements.txt` ### 完整 Defender vs. Attacker 实验 1. 在项目根目录运行 `./start.sh` —— 将从 `crapi-original/` 重置 `crapi-fork/` 的源代码,重新构建所有服务,植入 flag 和蜜罐。 2. 运行 defender: `python3 -m harness.main --app-url http://localhost:8888 -v`。 3. 开始对 `localhost:8888` 上的网站进行渗透测试(挑战说明位于 `localhost:8888/challenge`)。如果使用 AI agent 进行渗透测试,该 agent 不应获得对内部 docker 进程的任何访问权限,否则将被视为作弊。 4. 在渗透测试的同时,在 `localhost:3000` 监控 defender 仪表板,以查看实时日志、agent 操作、补丁、捕获的 flag 等。 5. 会话结束后,运行 `docker compose down -v` 以移除为本项目启动的 docker 容器和数据库。 ## 仪表板 仪表板: http://localhost:3000 在所有标签页上都可以看到一个全局 agent 状态栏,显示 agent 健康状况(活动/挂起/空闲/错误)以及扩缩控制项。 ### 日志 实时分屏显示生产环境/影子环境的请求日志查看器,带有按严重性着色的条目和流量分组

### Agents 按 agent 划分的活动信息流,包含系统提示、工具调用和 LLM 模型标签

### Pipeline 看板视图:已检测 → 修复中 → 审查中 → 已部署,带有可调整大小的详情面板

### 补丁 代码差异、修改的文件、回滚命令以及每个补丁的时间线

## LLM 配置 该系统使用任何兼容 OpenAI 的 API。在 [`config/llm.yaml`](config/llm.yaml) 中配置模型: ``` # Shadow Analyzer — 读取 shadow 日志以检测 exploits(无 tool calling) shadow_analyzer: provider: gemini model: gemini-2.5-flash api_key_env: GEMINI_API_KEY # defined in harness/.env pricing: input_per_million: 0.30 output_per_million: 2.50 # Fixer — 修补 source code(tool-calling agent) fixer: provider: gemini model: gemini-3-flash-preview api_key_env: GEMINI_API_KEY # defined in harness/.env pricing: input_per_million: 0.50 output_per_million: 3.00 # Reviewer — 验证 patches(tool-calling agent) reviewer: provider: gemini model: gemini-3-flash-preview api_key_env: GEMINI_API_KEY # defined in harness/.env pricing: input_per_million: 0.50 output_per_million: 3.00 ``` 要切换提供商,请更改 `provider` 和 `model`,然后在 `harness/.env` 中设置相应的 API key: 支持的提供商:OpenAI, Gemini, Anthropic, Groq, Together, Ollama, Mistral, DeepSeek, Fireworks, xAI, Perplexity, OpenRouter, Zhipu。 通过将自定义提供商的 base URL 添加到 YAML 的 `providers` 部分来添加它们。 ``` providers: openai: https://api.openai.com/v1 gemini: https://generativelanguage.googleapis.com/v1beta/openai/ anthropic: https://api.anthropic.com/v1/ groq: https://api.groq.com/openai/v1 ... # add more if needed ``` 注意:只有少数 API 提供商拥有足够高的速率限制来支持 3 个以上的 agent 同时工作。Google 的 Gemini 就是其中之一。 ## 技术栈 - **LLMs**: 任何兼容 OpenAI 的 API(默认:agent 使用 Gemini 3 Flash Preview,analyzer 使用 Gemini 2.5 Flash) - **目标应用**: 修改过的 crAPI (Python/Django, Java/Spring Boot, Go, MongoDB, PostgreSQL) - **路由**: 带有 Lua 脚本的 nginx,用于透明的会话重定向 - **评分**: 通过 FastAPI 控制平面实现的基于 Redis 的威胁评分 - **仪表板**: React + Tailwind CSS,由 FastAPI 提供服务,并使用 WebSocket 进行实时更新 - **编排**: Python asyncio 基于队列的 agent 协调 ## 特别鸣谢 特别感谢 [d3lta05](https://github.com/d3lta05) ([LinkedIn](https://www.linkedin.com/in/lucasnason/)) 和 [aleemladha](https://github.com/aleemladha) 在渗透测试方面的帮助。
标签:Agent, AI安全, AppImage, Chat Copilot, CISA项目, DevSecOps, DLL 劫持, FTP漏洞扫描, GitHub开源项目, LLM, MIT协议, PB级数据处理, PFX证书, rizin, Unmanaged PE, WAF, Web应用防火墙, 上游代理, 人工智能, 大语言模型, 安全编排, 安全运维, 实时防御, 影子环境, 搜索引擎查询, 攻击检测, 日志审计, 模块化设计, 流量监控, 测试用例, 源码补丁, 漏洞分析, 用户模式Hook绕过, 网络安全, 自动化修复, 自动化响应, 自动化渗透测试, 请求拦截, 路径探测, 逆向工具, 隐私保护