如何通过Agent+Skill+Kali进行漏洞挖掘"

admin 2026-11-06 03:04:23 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

如何通过Agent+Skill+Kali进行漏洞挖掘

原创

小枣信安
小枣信安

小枣信安

2026年11月4日 19:40
北京

去阅读

介绍

网络安全怎么搞,小枣信安来唠唠。

近期几篇记录下AI辅助漏洞挖掘的相关内容,例如自主化Agent应用,AI辅助渗透等。

本篇记录的AI辅助挖洞核心架构就是使用一个Agent,通过Skill将各个漏洞的挖掘技能接入,通过MCP将外部工具接入,例如将Kali系统接入。使用时直接给Agent下达任务,它会根据Skill要求去调用相关工具进行测试。

整体架构图:

Skill来源

当前用于安全测试Skill有很多,比如Anthropic-Cybersecurity-Skills,也有一些漏洞挖掘的智能体工具包含了相关的Skill,比如Strix、Artex、PentestGPT、Hexstrike-ai等等,我们可以去整合这些Skill,或根据自己需求调整相关内容等。

AI操作台配置

首先要有一个智能体可以来配置Skill,以Claude Code为例,将整理好的Skill放到指定目录,我这里放到项目级Skill下(项目文件夹\.claude\skills\),便于测试。

Skill准备好后,我们将Kali接入,当技能中如果提到相关工具使用,或智能体需要使用相关安全工具时,可直接调用Kali中的工具。

这里接入有两种方式,一种是通过MCP,一种是智能体通过SSH去操作Kali。

先来看第一种,以Kali官方MCP为例,先在Kali中安装MCP服务:

sudo apt install mcp-kali-server

之后启动MCP:

kali-server-mcp --ip 0.0.0.0 --port 5000

这里ip参数指定监听地址,四个0允许任意IP连接。

回到Claude,在当前项目下建一个.mcp.json,项目级的MCP需配置到这个文件中,示例内容如下:

{
  \"mcpServers\": {
    \"mcp-kali-server\": {
      \"command\": \"ssh\",
      \"args\": [
        \"[email protected]\",
        \"mcp-server\"
      ],
      \"type\": \"stdio\"
    }
  }
}

这是一种方式,另一种比较简单,直接告诉智能体通过SSH远程连接Kali,通过SSH去调用相关工具,这种形式的弊端在于执行的命令和命令返回结果要全靠模型去拼接和识别,而MCP返回的是结构化的JSON。

进入Claude后,输入/mcp和/skills查看价值的技能和工具,都识别后,AI的渗透控制台就相当于搭建好了。

测试流程

有了智能体并接入了技能库和工具后,并不是直接测试就可以,直接目标发给智能体,让其根据技能库进行安全测试很明显不太行,这里会存在很多问题,比如:

1、某一个功能,智能体怎么知道应该去调用哪个技能,例如后台有个搜索功能,且搜索关键字会展示在页面上,那可能就存在SQL注入、XSS、未授权访问等,可能查询的是员工信息,响应中的敏感信息没有脱敏,存在信息泄露问题,那智能体如何保证去调用到这些技能。

2、测试过程不太好追溯,比如智能体测试了哪个接口,这个接口测试了哪些漏洞,是否漏掉了某个接口等,这些基本属于一个黑盒的情况。

3、工具或者请求的网页中响应的信息过多时,如果都作为了下一步的输入,则会导致耗费很多不必要的Token。

4、每个漏洞的具体测试方法是否会越界,哪些操作属于敏感操作,避免安全测试造成安全事故等问题。所以最好看下Skill的内容,是否包含了利用的内容,完事也可以在Skill中说明只做探测,禁止去做对应的危险行为。

所以整个测试流程并不是固定的,就好像开发一个漏洞挖掘智能体,需要把相关情况去通过代码、循环机制、提示词等等去限制和规划,所以我们也需要根据平时的测试情况去设计一下整个测试流程。

当然,这些也不是什么大问题,不影响使用去测试,我这里根据上面情况让AI给写了两个提示词,分两步,第一步是先做信息搜集,包括目标的信息,以及目标的相关功能、接口情况、接口可能存在的漏洞等,相当于先做一个威胁建模进行存档。第二步是让智能体根据第一步的信息去调用相关的Skill进行测试,最后给一个结果报告。

参考如下:

第一步:

你是一名应用安全分析师,可以使用当前已接入的安全 Skill 和 Kali MCP 工具。

现在执行第一阶段:信息搜集与威胁建模。此阶段只进行信息搜集,不进行漏洞测试。

### 执行任务

1. 在用户授权的目标范围内,搜集目标的技术栈、服务、页面、API 接口、HTTP 方法和参数。
2. 梳理主要功能、输入与输出、认证方式、用户角色、权限边界及核心业务流程。
3. 根据每个功能的实际特征分析潜在风险,不要只根据功能名称判断。
4. 为每个功能匹配可能适用的漏洞类型和安全 Skill。例如,搜索功能需要分别考虑 SQL 注入、XSS、越权访问和敏感信息泄露等风险,不能因为某一种风险不成立就忽略其他风险。
5. 区分已确认事实、推测和未知信息。每个风险都应说明匹配理由;证据不足时标记为待确认。

### Skill 匹配要求

根据 Skill 的名称、用途、适用条件和前置要求,筛选适用的候选 Skill。此阶段只进行匹配,不执行漏洞测试。

不要强行匹配无关 Skill,也不要遗漏与功能特征明显相关的风险类型。

### Token 优化

优先输出结构化摘要,不要直接堆积大量网页源码、扫描日志和请求响应。保留必要的证据编号,以便后续按需查看原始内容。

### 最终输出

请生成以下内容:

1. **目标画像:** 技术栈、服务和主要组件。
2. **功能与接口清单:** 每个接口的 ID、地址、方法、参数、功能及相关权限。
3. **功能风险清单:** 每个功能可能涉及的漏洞类型及判断依据。
4. **Skill 匹配清单:** 推荐 Skill、匹配理由和前置条件。
5. **信息缺口:** 尚未发现、无法确认或未覆盖的内容。
6. **第二阶段输入:** 将以上结果整理成简洁、结构化的 JSON,供下一阶段直接使用。

确保每个接口和风险都有唯一 ID,方便后续追踪。

完成第一阶段后停止,不要执行漏洞测试。

第二步:

你是一名应用安全测试工程师,可以使用当前已接入的安全 Skill 和 Kali MCP 工具。

现在根据第一阶段的信息搜集结果和威胁模型,执行第二阶段:选择适用的 Skill,对目标进行有针对性的安全探测。

### 执行流程

1. 读取第一阶段报告,了解每个功能、接口、潜在风险及对应的候选 Skill。
2. 根据实际证据选择 Skill。调用前先读取其说明,确认适用条件、前置要求和探测方法。
3. 对每个接口分别评估适用的漏洞类型,不要只测试一种风险,也不要对所有接口机械地执行全部 Skill。
4. 按照各 Skill 定义的方法和限制进行探测,只做探测与必要的非破坏性验证,不进行漏洞利用。
5. 根据测试结果动态调整后续任务。如果发现新风险,可以补充测试任务;如果 Skill 不适用或前置条件不满足,则记录原因并跳过。
6. 对疑似漏洞进一步核对证据。工具报错、异常响应或单次结果不能直接认定为漏洞。

### 测试追踪

为每个接口建立测试记录,至少记录:

- 接口 ID、地址和 HTTP 方法。
- 应检查的漏洞类型。
- 实际调用的 Skill。
- 测试状态:未测试、测试中、已完成、疑似发现、受阻或跳过。
- 测试结果、证据编号和未完成原因。

每完成一项测试,立即更新记录。结束前将测试记录与第一阶段的接口清单进行对比,明确指出哪些接口和漏洞类型已经测试,哪些尚未测试,以及原因。

已完成测试不代表接口一定安全。

### Token 优化

工具返回结果先进行摘要、去重和必要的脱敏,只向模型传递当前判断所需的信息。

保留原始请求、响应和日志的证据编号;只有遇到疑似漏洞、结果异常或需要进一步验证时,才读取相关原始内容。不要反复传递完整历史日志。

### 最终报告

请输出:

1. **已确认的问题:** 漏洞类型、影响、证据及修复建议。
2. **疑似问题:** 现象、已有证据和仍需确认的内容。
3. **测试记录:** 各接口测试了哪些漏洞类型、调用了哪些 Skill、结果如何。
4. **未覆盖清单:** 尚未测试的接口和风险,以及具体原因。
5. **执行总结:** Skill 调用情况、工具失败、信息缺口和后续建议。

所有结论必须有证据支持。不得将未测试的内容描述为安全,也不得声称已完成实际未执行的测试。

现在开始执行第二阶段。

当然这个机制目前个人还没有进行大量测试,很多东西依然在测试和优化阶段,仅供参考。完事大家有更好的思路也欢迎讨论。

小枣信安:专注于网络安全,涵盖智能体安全、大模型安全、漏洞挖掘、红蓝攻防、应用安全、AI赋能网络安全等方向。

    评论:0   参与:  0