mantejl/recon-agent
GitHub: mantejl/recon-agent
基于LLM的安全侦察代理,通过ReAct循环自主决定扫描策略并生成结构化发现报告的工具。
Stars: 0 | Forks: 0
# recon-agent
一个 **LLM驱动的安全侦察代理**:你给它一个 **目标URL**(仅限你拥有或被允许测试的系统),它会在循环中 **决定运行哪些检查**,使用你用 Python 实现的 **工具**。这是一个学习/演示代理——不能替代专业扫描器或授权评估。
## 代理的工作原理
代理遵循 **ReAct风格的循环**(推理 → 行动 → 读取结果 → 重复):
1. **模型** 读取你的任务(例如“审计这个URL”)和之前步骤的任何 **观察**。
2. 它发出一个 **工具调用**:一个 **名称**(要运行的函数)和 **参数**(例如URL)。
3. **LangChain** 运行你的 **工具**——普通代码:`requests.get`、BeautifulSoup 等。
4. 该函数的 **返回值** 作为 **观察** 反馈给模型。
5. 循环继续,直到模型产生 **最终答案**(并且可选地,直到你合并来自工具的结构化 **发现** 列表)。
因此:**模型规划和编排**;**工具** 执行 HTTP/HTML 工作并编码安全逻辑(缺失的header、有趣的链接、对实验应用的基础注入检查等)。
## 代码的组织方式
实现后,仓库的结构大致如下:
- **`tools.py`** — 真正的“扫描器”部分:例如 `fetch_headers` 和 `extract_links` 这样的函数,使用 `@tool` 装饰以便代理可以调用它们。每个工具的 **docstring** 告诉模型何时使用它。工具可以 **追加** 到共享的 **findings** 列表,这样无论最终摘要多么冗长,你都能获得结构化的行。
- **`agent.py`** — 将 **`ChatOpenAI`** 连接到 **ReAct 代理**(例如 LangChain 的 `AgentExecutor` + `create_react_agent` 在 `langchain-classic` 中),包含工具列表、**系统提示** 和 **`verbose`** 日志,这样你可以在终端中看到 Thought / Action / Observation。
- **`report.py`** — 将收集的 **findings** 转换为 **JSON**(以及后续可选的 Markdown)用于演示和面试。
模型内部 **没有获取页面的魔法**:每个 HTTP 请求和 HTML 解析都发生在 **你的** 工具代码内部。
## 运行时的预期输出
启用 `verbose` 日志后,运行应该显示 **多次工具调用**(例如先检查header,然后提取链接),然后是简短的 **自然语言摘要**。另外,你可以打印或保存一个 **JSON 数组** 的发现(`vuln_type`、`endpoint`、`severity`、`evidence`、`recommendation` 等),这些来自工具记录的內容。
## 安全提示
使用 **本地实验目标**(例如 Docker 中的 DVWA)进行演示。不要将此工具对准未明确获得测试许可的主机。
标签:API安全, ChatOpenAI, Findings管理, JSON输出, LangChain, LLM, Python, ReAct, Splunk, Unmanaged PE, URL发现, Web安全, 人工智能安全, 合规性, 响应头分析, 安全代理, 安全报告, 安全检测, 工具调用, 无后门, 网络安全, 蓝队分析, 请求响应过滤, 轻量级, 逆向工具, 隐私保护