ParthSalunkhe7052/LastResort
GitHub: ParthSalunkhe7052/LastResort
LastResort 是一个基于 LLM 规划与真实浏览器执行的自主 Web 渗透测试 Agent,通过 DOM 实际效果验证漏洞来减少误报。
Stars: 0 | Forks: 0
# LastResort — 自主化 Web 渗透测试 Agent
使用 Go 构建,并带有 Playwright 执行层和 React 仪表板。LastResort 跨越了经典的“带有硬编码 payload 的盲目扫描器”模式:AI 规划循环会按需生成利用 payload,驱动实时浏览器执行它们,读取真实的页面状态,并记住它所学到的内容,从而可以跨有状态的导航流程串联多步骤攻击。
## 为什么会有这个项目
传统扫描器存在两个问题:
1. **它们匹配的是字符串,而非实际效果。** 如果 payload 被反射在响应正文中,它们就会将其称为漏洞发现——这会因那些已被转义、沙箱化或从未真正执行的 payload 产生大量误报。
2. **它们触发的是硬编码的特征签名。** 固定的 payload 列表无法适应特定应用程序过滤、编码或路由输入的方式。
LastResort 颠覆了这两点:
- **基于真实浏览器效果进行验证。** 一个候选的 XSS/SQLi/CSRF 只有在 Playwright 在实时 DOM 中观察到真实后果时——例如触发了 `alert()`/对话框、注入了节点、或状态发生了改变——而不仅仅是反射出一个字符串时,才会被认定为漏洞发现。正是这一点极大程度地减少了与响应字符串匹配相比所产生的误报。
- **AI 生成的上下文感知 payload。** LLM 规划循环(Gemini / OpenRouter)接收一个 `BrowserAttackContext`——即当前的可访问性树、先前的操作结果以及会话历史——并制定出针对应用程序实际行为量身定制的 payload,随后评估反馈并决定下一步行动。
## 架构
```
┌─────────────┐ ConnectRPC ┌──────────────────────────────┐
│ React UI │ ───────────────► │ Go Orchestrator │
│ (dashboard) │ ◄─────────────── │ plan → execute → verify → │
└─────────────┘ live events │ journal → repeat │
└───────────┬──────────────────┘
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌────────────┐ ┌───────────────┐ ┌──────────────┐
│ AI Client │ │ Browser (PW) │ │ SessionJournal│
│ Gemini / │ │ Playwright/TS │ │ SQLite │
│ OpenRouter │ │ exec + DOM │ │ AXTree + log │
└────────────┘ └───────────────┘ └──────────────┘
```
- **Orchestrator (Go)** — 运行 agent 循环:要求 AI 进行规划,在浏览器中执行操作,捕获 `ActionResult`,通过 DOM 状态进行验证,持久化保存到日志中,并将上下文反馈给下一个规划。
- **AI 层 (Go)** — 封装 LLM (Gemini / OpenRouter) 并注入 `BrowserAttackContext`,使模型能够基于全局态势感知进行规划,而非盲目猜测。
- **浏览器服务 (TypeScript / Playwright)** — 主要的执行环境。每个攻击操作都针对实时页面运行,并返回同步的反馈(DOM diff、对话框、脚本警告、导航)。
- **SessionJournal (SQLite)** — 对可访问性树 (AXTree) 节点、操作和结果的持久化记忆。正是这一点让 agent 能够在有状态的流程(登录 -> 导航 -> 注入)中执行**多步骤**漏洞利用,而非仅仅执行一次性 payload。
- **攻击模块 (Go)** — SQLi、XSS、CSRF、路径遍历、速率限制、CORS/标头检查,以及用于引导测试的手动工具模式。
- **React 仪表板** — 实时扫描启动、AI pipeline 面板、事件时间轴、发现摘要以及实时浏览器视图,通过 ConnectRPC 进行流式传输。
## 技术栈
| 层级 | 技术 |
|---|---|
| 核心 / 编排 | **Go** |
| 传输层 | **ConnectRPC** (Protobuf, streaming) |
| 浏览器执行 | **Playwright** (TypeScript 服务) |
| AI 规划 | **Gemini / OpenRouter** LLM 循环 |
| 持久化 | **SQLite** (SessionJournal, 发现, 证据) |
| 前端 | **React + Vite + TypeScript** |
| 构建 / 开发 | Taskfile, buf (代码生成) |
## 核心工程理念
- **基于效果的验证**优于响应字符串匹配——漏洞发现需要观察到浏览器实际产生的后果,这也是保持低误报率的关键。
- **Agent 记忆 (SessionJournal)** — 存储在 SQLite 中的 AXTree 和操作历史为 agent 提供了跨步骤的状态,从而能够执行依赖于先前导航的漏洞利用。
- **Schema 优先的 RPC** — Go 后端和 TS/React 前端之间共享的 ConnectRPC/Protobuf 契约,由 buf 生成。
- **规划与执行的分离** — 由 LLM 决定尝试*什么*;而由 Go + Playwright 负责其*如何*运行以及*是否*有效。
## 本地运行
```
# 浏览器服务 (Playwright)
cd browser && npm install && npm run build
# 配置 env (LLM key, DB path)
cp .env.example .env # set GEMINI_API_KEY / OPENROUTER key
# 运行 agent server (默认: SQLite 位于 ./data, 端口 8443)
go run ./cmd/lastresort serve
# UI
cd ui && npm install && npm run dev
```
请参阅 [`docs/`](docs/) 以获取架构评审、依赖分析和测试计划。
## 状态与范围
这是一个展示自主 agent 设计、基于浏览器的验证以及 LLM 规划循环的研究/作品集项目。**请仅针对您拥有或已获得明确授权测试的系统使用。**
标签:AI代理, CISA项目, EVTX分析, Go语言, Playwright, Web安全, 日志审计, 特征检测, 程序破解, 自动化渗透测试, 蓝队分析