如何利用AI编写属于适合自己的渗透skills
字数 3213
更新时间 2026-07-12 14:39:13
利用AI编写个性化渗透测试Skills教学文档
一、背景与问题
当前网络上充斥着各种“AI自动化渗透测试”方案,号称几十个Agent协作、数百个Skills组合。然而对于实际场景——如测试单个网站、挖掘特定URL的SRC——这些复杂方案往往过度冗余,调用大量不必要的工具,反而降低了效率和针对性。
核心思路:既然大模型本身拥有丰富的安全知识,为什么不直接利用这些知识,让AI实时决策、动态构造Payload,而非依赖预置的字典和脚本?
二、工具与环境准备
2.1 AI编程代理工具选型
- 开源方案:OpenCode、Claude Code、OpenClaw等均可
- 核心要求:能够与AI模型交互,支持Plan/Build模式切换
2.2 API Key与模型选择
- 多数AI编程工具提供免费模型,无需API Key即可使用
- 推荐使用OpenCode,支持直接白嫖
2.3 工作模式说明
- Plan模式:制定计划阶段,防止AI随意修改代码
- Build模式:具体执行阶段,允许AI进行代码编写和修改
三、需求分析与设计原则
3.1 明确需求边界
在开始编写前,必须清晰定义:
- 要实现哪些功能
- 哪些功能是不必要的
- 针对的目标类型是什么
- 测试深度如何
需求考虑越全面,最终生成的Skills越贴合实际场景。
3.2 常见误区
直接使用网上现成的Skills并让AI总结,会导致:
- 照搬大量不需要的工具(如MSF、Sqlmap、Nmap)
- 功能偏离原始需求
- 产生大量无用代码
3.3 正确做法
先让AI分析现有Skills的实现目标,然后根据自身需求进行删减和定制。
四、第一版实现及其问题
4.1 初始尝试
直接让AI基于网络上的Skills进行总结和实现,结果:
- 使用了大量自定义脚本进行漏洞检测
- 照搬了MSF、Sqlmap、Nmap等工具
- 严重偏离“轻量级、AI驱动”的设计初衷
4.2 问题根源
需求描述过于宽泛,给了AI太大的自由度,甚至允许它自行新增功能。
五、优化版本:AI编排器架构
5.1 重构思路
彻底抛弃第一版的冗余设计,构建一个AI编排器——AI作为决策中心,控制测试流程,而不是依赖外部工具链。
5.2 工作流程
用户输入目标URL → AI分析目标特征 → AI决策下一步行动 → 执行原子操作 → AI分析响应 → 循环直至完成
5.3 功能对比
| 特性 | 第一版(工具依赖型) | 第二版(AI编排器) |
|---|---|---|
| 漏洞检测 | 依赖Sqlmap/Nmap等 | AI实时决策构造Payload |
| 字典文件 | 预置大量字典 | 无内置字典 |
| 扩展性 | 需修改工具配置 | 编辑知识库文件即可 |
| 适用场景 | 通用扫描 | 精准定向测试 |
六、增强与完善
6.1 漏洞类型扩展
逐步增加更多漏洞检测能力,包括但不限于:
- SQL注入
- XSS
- SSRF
- 命令注入
- LFI
- 文件上传
- XXE
- CSRF
- 反序列化
- IDOR
- 认证绕过
- API漏洞
- 敏感数据泄露
- 配置错误
- CMS漏洞
- 组件漏洞
- 业务逻辑漏洞
- 数据库漏洞
- OS漏洞
6.2 认证测试支持
- Cookie登录
- Token认证
- 表单登录
- BasicAuth
- Session复用(
-s SESSION参数)
6.3 智能页面遍历
五种策略:
- 链接爬取
- 敏感路径探测
- 框架感知
- 上下文合并
- 已认证发现
6.4 报告生成
- Markdown格式
- JSON格式
- 嵌入式树形站点地图
- CWE/CVSS评分
七、核心架构设计
7.1 三种可能的架构
方案一:纯AI驱动
- AI负责所有决策和执行
- 优点:灵活度高
- 缺点:受限于模型能力
方案二:AI驱动工具集
- AI作为决策者,调用外部工具执行原子操作
- 优点:结合AI智能和工具效率
- 缺点:仍依赖工具
方案三:混合模式
- 部分漏洞用AI直接测,部分用工具辅助
- 优点:平衡灵活性和效率
推荐选择:AI驱动工具集
7.2 最终架构
用户输入 → CLI入口(cli.py)
↓
AI决策引擎(OODA循环)
├── 观察(Observe):分析目标响应
├── 定向(Orient):确定漏洞类型
├── 决策(Decide):选择测试策略
└── 行动(Act):执行原子操作
↓
知识库(22个文件)
├── 漏洞知识(SQLi/XSS/SSRF等19+类型)
├── 框架知识(CMS/组件等)
└── WAF指纹(9种WAF识别与绕过)
↓
原子操作层(Python脚本)
├── HTTP请求
├── 响应解析
└── 结果保存
↓
输出 → 漏洞报告(Markdown+JSON)
7.3 OODA自主决策循环
- 观察:接收目标HTTP响应
- 定向:分析响应特征,判断潜在漏洞
- 决策:从知识库中选择合适的Payload策略
- 执行:构造并发送Payload
- 判定:分析返回结果,确认漏洞是否存在
7.4 核心原则
| 原则 | 说明 |
|---|---|
| AI做判断,工具跑腿 | AI有安全知识,工具没有;工具做判断浪费AI能力 |
| Phase 2c拦停 | 防止AI偷懒跳过部分漏洞类型 |
| Per-URL而非Per-Param | 每个URL内部测完再换,避免跨URL回溯 |
| P0-P3仅参考不决定量 | 防止低优先级漏洞永远只测少量Payload |
| 禁止批量脚本 | AI必须在每一步的决策环里,不能被脚本替代 |
| Phase 4b默认跳过 | 渗透测试产出的是漏洞清单,不是攻破整个内网 |
八、关键技术实现
8.1 容错机制
防数据丢失
- 每10个漏洞或100次测试自动执行
save_checkpoint() - 崩溃后最多丢失最近一批结果
崩溃恢复
- 支持
--resume标志 - 加载
checkpoint.json,跳过已完成阶段和注入点
网络抖动处理
- HTTP GET/POST请求3次重试
- 指数退避策略:1s → 2s → 4s
- 偶发超时/连接断开自动恢复
Cookie过期检测
- 认证时记录基准页面大小
- 每50个注入点对比当前页面大小
- 缩小超过50%触发告警
8.2 扩展机制
新增漏洞类型(三步完成,不改代码)
- 在
knowledge/目录下创建.md知识库文件(AI自动发现) - 在
pentest_runner.py的VULN_TEST_STRATEGIES中添加探测规则 - 完成,AI自动加载新知识库驱动测试
新增框架路径
- 编辑
knowledge/framework_*.md sitemap自动加载所有- (path)条目
8.3 上下文管理
为防止上下文过长导致后续修改偏离原始框架,需加入约定:
- 每次修改都遵循预设标准
- 如果某次修改未执行标准,说明已偏离轨道,需重新提示
九、完整执行流程
9.1 全自动管道(run命令)
侦察 → 认证 → DB检查 → 公开测试 → 认证测试 → 报告
9.2 测试过程演示
- AI根据网站特征,自动进行目录遍历,寻找可利用点
- AI自动决策进入未授权页面
- 发现可疑注入点时,AI自主编写利用脚本进行验证
- 成功写入WebShell
- 进一步利用,实现RCE(远程代码执行)
- 在目标文件夹下生成对应的脚本文件
9.3 关键特征
- 无固定Payload字典:所有Payload由AI根据响应实时推理构造
- 全量发现:9策略 × 15提取源 × 300节点 = 页面发现
- 资产深度解析:CSS/JS/Manifest/SW中的隐藏URL自动提取
- 认证全覆盖:Cookie/Token/表单/BasicAuth,全工具
-s复用 - 稳定性保障:重试+退避+原子保存+断点续传+Session过期检测
十、最终效果
10.1 使用方式
用户只需对AI说:“帮我测试某个站点,账号是xxx,密码是yyy(或Session是zzz)”,AI即可自动完成渗透测试。
10.2 测试覆盖
- 上述19+种漏洞类型全面覆盖
- 知识库相当于一本完整的渗透测试手册
- AI可自主决定是否查阅知识库
10.3 能力依赖
- 漏洞利用的深度和方式取决于AI大模型的强度
- 使用某些模型可达写入Shell、获取系统权限的效果
- 模型限制越小,自动化程度越高
十一、未来展望
随着大模型能力的不断增强,对外部工具的依赖将越来越少。未来的渗透测试Skill可能只需要:
- 给大模型提供最基础的网络操作接口(HTTP请求、响应解析)
- 其余全部交由AI自身的知识储备完成
最终实现:AI是决策者,人类是指导者,工具只是执行者。
相似文章
相似文章