文章总结: 文章分析渗透测试中MCP调用工具的弊端,指出重复传递工具定义造成Token浪费且交互支持差。提出两种替代方案:一是让Agent在Kali环境直接执行命令行以支持复杂交互;二是采用Anthropic代码方法,由AI编写代码处理数据以降低消耗。结论建议专业渗透测试应优先在原生环境构建专用Agent,避免MCP的冗余封装。 综合评分: 87 文章分类: 渗透测试,AI安全,安全工具
渗透测试用MCP调用工具,有点画蛇添足,合理的方法有两种
原创
孙志敏
AI与安全
2025年12月23日 08:01 北京
LLM赋能的渗透测试工具,目前基本可以分为两个大的流派,用MCP和直接调用工具,前者从Kali MCP到Hexstrike AI,后者则更多,象之前跟踪的PentestGPT,CAI,以及最近比较热的Strix,Autopentester等,各有特点,也各有问题。
01
MCP的价值
MCP是Anthropic推出的协议,主要用于标准化AI助手与外部数据源和工具的连接方式。该协议通过统一的接口规范,使得大语言模型能够安全、高效地访问各类资源,包括数据库、API、文件系统等。MCP采用客户端-服务器架构,支持双向通信和状态管理,让AI系统能够动态发现和使用可用的工具与数据源。
其核心优势在于提供了标准化的集成框架,降低了开发复杂度,提高了系统的可扩展性和互操作性。开发者可以通过MCP服务器暴露自定义功能,而AI应用则通过MCP客户端调用这些功能。
MCP的出现,直接带动了一个新的架构概念,就是Agentic AI(代理式AI),该架构最大的特点,是把控制权交给模型,相关的规划及执行全部交给模型执行,大幅度降低应用的开发难度。很多的应用都开始支持MCP,象IDA pro,Burp suite,甚至Kali 及其一些工具,象Meta sploit,Nuclei MCP Server等都对MCP提供了支持,这些支持使得平常的mcp client,象cursor,claude desktop等可以直接使用这些工具,有了AI的加持,使用这些工具非常方便,大大促进了应用。
渗透测试本来是非常复杂的工作,原理,技巧,路径规划,工具使用都非常难,有了MCP和AI的支持,使得渗透测试工作难度大幅降低,这非常好。
02
Hexstrike AI类MCP的问题
从Kali MCP到HexstrikeAI,都使用MCP调用Kali的工具,为了能够使模型准确调用工具,都把工具的调用做成函数,然后把函数的功能,参数等作为说明送给大模型,这导致三个问题:
1)工作本身繁琐,需要把工具的说明描述一遍给大模型,且函数的说明有可能和系统里的安装不一致
2)每次调用都要把这些内容送给大模型,导致浪费非常多的tokens。
3)通过这种函数调用的方法,可以远程执行,但对于一些多交互的工具,比如msfconsole等,不容易调用,以及一些反弹工具等,这种方法并不行。
实际上,Kali工具作为通用知识,大模型都是非常清晰地知道每个工具的使用方法的,这在逻辑上很浪费。
以GPT-4、Deepseek等模型为例,它们可以:
- 准确生成nmap的各种扫描命令和参数组合
- 详细解释Metasploit的exploit模块使用
- 给出SQLMap的注入检测完整流程
- 指导Burp Suite的配置和使用技巧
- …
把大模型已经熟知的信息再送给大模型,实在是画蛇添足,没有必要。
03
合理的解决方案一:让Agent直接调用命令行工具
真实的渗透测试远比CTF竞赛复杂,很难用一句话描述清楚目标。这是一个高度迭代、需要持续状态管理的过程,包含信息收集、漏洞发现、漏洞利用、后渗透、报告生成等多个阶段。每个阶段都需要根据目标特性灵活调整策略和工具组合。
对于系统性的渗透测试,直接让Agent在Kali环境下调用命令行工具有明显优势:
- 原生支持复杂交互
- 可以直接处理msfconsole的交互式操作
- 支持反弹shell的管理和维护
- 能够处理需要多轮交互的工具
- 状态管理更自然
- 保持会话连续性
- 中间结果直接存储在本地
- 历史命令和输出易于追溯
- 效率更高
- 无需函数封装的额外开销
- 模型直接生成它已经熟悉的命令
- 避免重复的工具描述传输
这种专用Agent架构让模型在原生Kali环境中直接发挥其已有的工具知识,避免了MCP的封装开销,更适合专业的渗透测试工作。
04
合理的解决方案二:Anthropic代码方法
MCP的浪费tokens这个问题,已经比较普遍,不仅体现在安全上,各场景都涉及,所以,Anthropic给了一个方案:
Anthropic提出的核心思想是让AI写代码来调用MCP工具,而非直接调用。传统方式需要将所有工具定义预先加载到上下文中,每次调用的中间结果也要经过模型处理,导致Token急剧膨胀。
解决方法是将MCP服务器映射为文件系统结构,每个工具对应一个代码文件。AI通过探索文件系统按需加载工具定义,而不是一次性加载全部。更关键的是,中间数据处理在代码执行环境完成,只将最终结果返回给模型。
举例来说,处理一个包含10000行的表格,传统方式需要将全部数据传给模型过滤。而用代码方式,AI可以写出const pending = data.filter(row => row.status === ‘pending’),在执行环境完成过滤,只返回5条结果供模型查看。
文章中的实际案例显示,这种方法能将Token消耗从15万减少到2千,降幅达98.7%。同时还带来了隐私保护、状态持久化等额外好处。本质上就是利用LLM擅长写代码的能力,把数据处理的重活儿交给代码执行环境,模型只负责编排逻辑。原文比较长,有兴趣可以自行分析
https://www.anthropic.com/engineering/code-execution-with-mcp
05
结论:场景决定选择
MCP并非一无是处,但在渗透测试领域,它更像是入门级的便利工具,而非专业解决方案。
对于专业的渗透测试工作,与其通过MCP给已经”懂行”的LLM重复解释工具用法,不如构建专用的Agent系统,让AI直接在原生环境中施展其已有的知识和能力。这不是技术路线的优劣问题,而是为正确的场景选择正确的工具.
END
推荐阅读
AI驱动的开源攻击框架:HexStrike-AI
CAI+DeepSeek渗透测试情况及扩展分析
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:AI与安全 孙志敏《渗透测试用MCP调用工具,有点画蛇添足,合理的方法有两种》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论