文章总结: 本文介绍了一个基于大模型的AI自动化渗透测试agent框架,采用决策层、知识层和执行层三层架构。决策层实现快慢结合的渗透策略,先情报收集再针对性攻击;知识层包含攻击原子库、SRC实战知识库和漏洞库的三库联动机制;执行层通过Docker容器隔离运行各类安全工具。框架强调智能决策替代盲目扫描,具备60-70%自动化渗透能力,支持人工干预。 综合评分: 82 文章分类: 渗透测试,AI安全,红队,安全工具,安全建设
记录自己的第一个AI渗透agent
M9 M9
白昼信安
2026年4月27日 08:55 甘肃
在小说阅读器读本章
去阅读
用了半个月时间,自己的第一个AI自动化渗透测试agent的初级版本终于是搞差不多了,借鉴学习了很多的腾讯云黑客松的优秀项目和渗透框架,必须给大佬们的思路点赞。
简述
它不是传统的扫描器,而是一个会「思考」的 AI 渗透工程师,用大模型做大脑,用安全工具做手脚,用知识库做记忆,用实战报告做渗透经验库。
下面我将会简单介绍一下三个核心层,决策层、知识层和执行层。
一、决策层
1.1 快慢结合的驾驭框架
传统自动化工具最大的问题是什么?只知道扫,不知道想。
一上来就 nuclei 全量跑,目录扫描全开,结果扫了半天啥也没发现,还把流量打满了。
所以我的Agent的渗透思路为:先快后慢,先想后做。
Phase 0:准备阶段(快)
例如目标为: http://120.10.176.44
Agent 不会立刻开扫,而是先做情报收集:
① 技术栈识别
• 发现 Nginx 1.26 + Vue.js 前后端分离 • 后端返回 Spring Boot 风格 404 • 前端存在 UEditor 富文本编辑器
② JS 文件分析
• 提取前端路由:/login、/admin/、/organization/ • 发现 API 前缀:/api/v1/ • 识别第三方组件:UEditor
③ 已知漏洞匹配
• UEditor .NET 版存在远程文件上传漏洞(CVE) • UEditor JSP/PHP 版存在 SSRF 漏洞 • 自动匹配RAG漏洞库,准备 PoC
这个阶段不发攻击流量,纯信息收集 + 情报分析。10 -20秒完成。
Phase 1:快速侦察(快)
已知信息:Nginx + Vue + Spring Boot + UEditor 攻击面:登录接口、API 接口、UEditor 上传、管理后台
Agent 根据 Phase 0 的判断,有针对性地探测:
• 访问 /admin/ → 301 重定向 → 管理后台存在 • 访问 /api/v1/ → JSON 格式 404 → API 网关确认 • 访问 /login → 登录页面 → 认证入口确认 • UEditor 路径探测 → 静态资源 → 版本确认
关键:每一步都有目的,不是盲扫。
Phase 2:慢速深挖(慢)
Phase 1 确定了攻击面,Phase 2 开始精准打击:
攻击方向 1:UEditor 文件上传
匹配漏洞库:UEDITOR-NET-UPLOAD(CRITICAL) 执行 PoC:构造上传请求 → 验证是否可利用 结果:✗ 版本不匹配,不可利用
攻击方向 2:API 未授权访问
测试接口:/api/v1/accounts、/api/v1/users 尝试绕过:空 Token、错误 Token、Content-Type 变换 结果:⚠️ 发现 /api/v1/accounts 返回数据
攻击方向 3:弱口令
目标:/login 登录接口 字典:admin/123456、admin/admin、system/system 结果:✗ 无弱口令
为什么叫「快慢结合」?
| 阶段 | 速度 | 内容 | 原则 | | — | — | — | — | | Phase 0 | ⚡️ 快 | 情报收集、技术栈识别 | 不发攻击流量 | | Phase 1 | ⚡️ 快 | 关键路径探测 | 有针对性,不盲扫 | | Phase 2 | 🐢 慢 | 漏洞验证、深度测试 | 精准打击,每个漏洞验证到底 |
核心理念:
• 先侦察再攻击 — 情报驱动,不盲目扫描• 攻击面收敛 — 根据发现动态调整策略• 精准验证 — 每个漏洞都要验证到可利用级别• 可解释性 — 每一步都有思考过程,不是黑盒
二、知识层
在刚开始的版本中,我一直在思考这个问题,为什么我们作为渗透测试工程师是拿到目标后我们心中有一个完整的渗透链,但是作为大模型确没有,只有当你明确指令他才会去做,所以基于这个问题,我对渗透agent做了三套RAG,分别是攻击原子【核心】、SRC 实战知识库、漏洞POC库。
2.1 攻击原子库【渗透方向】
什么是攻击原子?
攻击原子 = 最小化的漏洞利用单元
不是传统的 CVE 编号 + PoC,而是从真实漏洞文章中自动提取的结构化测试模型。 每条攻击原子是从一篇漏洞报告里抽出来的,长这样:
{
"atom_id":"ato_logic_amount_001",
"name":"支付金额四舍五入导致半价充值",
"vuln_type":"logic",
"severity":"P2",
"match_tags": {
"object": ["amount", "payment", "balance", "rounding"],
"action": ["pay", "charge", "recharge", "round"]
},
"preconditions": [
{"key":"auth_required", "value":true},
{"key":"amount_controllable", "value":true}
],
"test_action": {
"description":"在充值金额输入框中输入0.019,提交支付,观察实际扣款金额和到账金额",
"method":"manual"
},
"success_indicator": [
"status_200",
"balance_increased_by_0.02",
"displayed_amount_0.01"
],
"feedback": [
{
"condition":"response.balance_increase == 0.02",
"updates": [{"variable":"rounding_behavior", "value":true}]
}
]
}
核心机制:match_tags 匹配 不是关键词搜索,是「对象 + 动作」双维度匹配。
首先,Agent 抓到一个数据包后进行特征提取特征【正则】,然后使用MCP调用我们的攻击原子库去匹配原子,将匹配到的原子作为渗透思路进行借鉴。
AI访问浏览器抓到的包:
POST /api/pay
{"user_id":1001, "amount":0.019, "payment_type":"alipay"}
提取特征:
├── object(对象): user_id, amount, payment_type
├── action(动作): pay
└── response: balance, status
匹配攻击原子:
├── 匹配度 0.95 → ato_logic_amount_001(支付四舍五入)
├── 匹配度 0.72 → ato_logic_payment_bypass(支付绕过)
└── 匹配度 0.65 → ato_info_user_enumeration(用户枚举)
这样的话相当每个渗透步骤都有大致方向的指导,防止偏移或漏测。
2.2 SRC 实战知识库【渗透思路】
这是从真实漏洞报告中提取的实战经验。
来源: 国内各大 SRC 的已修复漏洞报告
内容:
• 漏洞类型:逻辑漏洞、越权、注入、信息泄露... • 攻击场景:实战中怎么发现的、怎么利用的 • 关键细节:接口特征、参数构造、绕过手法
我将这些收集到的报告全部进行了二次处理,重点提取了漏洞类型、漏洞场景、利用方式、渗透思路、关键参数等,将其进行向量化处理。
例如:Agent 在遇到「管理系统」类目标时,会自动检索这类案例,参考实战思路进行测试。
2.3 漏洞库【漏洞利用】
CVE 漏洞库:结构化已知漏洞
数据来源: CVE、NVD、各厂商安全公告、安全研究文章
存储方式: SQLite + Markdown 详情文档
三库联动:
识别到目标用的是 SpringBoot
↓
┌─────┴─────┐
↓ ↓
CVE 库 攻击原子
"Spring Boot " 访问 /actuator/env
有哪些已知 看返回值判断
CVE" 是否存在漏洞"
↓ ↓
└─────┬─────┘
↓
SRC 知识库
"别人挖 Spring漏洞的实战经验"
↓
LLM综合判断,精准测试
三、执行层
所有攻击工具不在宿主机上跑,全在隔离的 Docker 容器里。
┌───────────────────────────┐
│ pentest-lab(渗透实验室) │
│ │
│ 📡 nmap - 端口扫描、服务识别 │
│ 🔍 nuclei - 漏洞批量检测 │
│ 🕷️ sqlmap - SQL 注入验证 │
│ 📂 spray - 目录扫描 │
│ 🌐 curl - HTTP 请求 │
│ 📁 ffuf - 文件枚举 │
│ │
│ 📁 /pentest/字典/ │
│ ├── 后台目录字典 │
│ ├── 后台路径字典 │
│ ├── 接口路径字典 │
│ ├── PHP 敏感路径 │
│ ├── Java 敏感路径 │
│ └── 中文路径字典 │
│ │
│ 🌍 代理入口: socks5://127.0.0.1:10808 │
└────────────────────────────┘
并加入代理轮换机制,方便waf绕过和扫描操作等被拉黑。
四、人工干预
加入了人工干预聊天窗口,方便及时提出AI没有渗透到的点进行补充渗透。
五、未完成的功能
目前的agent已经可以帮我完成60%-70%的渗透测试工作了。
但是还有很多bug和不足,例如长期记忆、渗透经验、工具调用等等方面,不过也总算是一个新的开始。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:白昼信安 M9 M9《记录自己的第一个AI渗透agent》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论