如何利用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 智能页面遍历

五种策略:

  1. 链接爬取
  2. 敏感路径探测
  3. 框架感知
  4. 上下文合并
  5. 已认证发现

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 扩展机制

新增漏洞类型(三步完成,不改代码)

  1. knowledge/ 目录下创建 .md 知识库文件(AI自动发现)
  2. pentest_runner.pyVULN_TEST_STRATEGIES 中添加探测规则
  3. 完成,AI自动加载新知识库驱动测试

新增框架路径

  • 编辑 knowledge/framework_*.md
  • sitemap 自动加载所有 - (path) 条目

8.3 上下文管理

为防止上下文过长导致后续修改偏离原始框架,需加入约定:

  • 每次修改都遵循预设标准
  • 如果某次修改未执行标准,说明已偏离轨道,需重新提示

九、完整执行流程

9.1 全自动管道(run命令)

侦察 → 认证 → DB检查 → 公开测试 → 认证测试 → 报告

9.2 测试过程演示

  1. AI根据网站特征,自动进行目录遍历,寻找可利用点
  2. AI自动决策进入未授权页面
  3. 发现可疑注入点时,AI自主编写利用脚本进行验证
  4. 成功写入WebShell
  5. 进一步利用,实现RCE(远程代码执行)
  6. 在目标文件夹下生成对应的脚本文件

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是决策者,人类是指导者,工具只是执行者

相似文章
相似文章
 全屏