文章总结: 本文介绍MCP如何让LLM直接调用本地渗透工具,实现自动化侦察、漏洞验证与后渗透,并以Python示例构建NmapMCPServer,给出接入ClaudeDesktop的配置要点与后续Skill规划。 综合评分: 90 文章分类: 渗透测试,安全工具,实战经验,AI安全,自动化
当渗透测试遇上 MCP (Model Context Protocol)
原创
丘驰 丘驰
极客零零七
2026年3月12日 11:56 加拿大
本文是「AI Agent × 渗透测试」系列的上篇。下篇《从 MCP 到 Skill:如何为 AI Agent 开发渗透测试专属技能》将深入讲解如何赋予 Agent “红队大脑”。
在过去的一年里,大语言模型(LLM)在安全领域的应用主要局限于”高级辅助搜索”和”代码审计分析”。由于物理隔离和安全沙箱的限制,LLM 就像是被关在玻璃房里的战术大师——它能看懂复杂的攻击路径,却无法亲自敲击键盘执行哪怕一个简单的 nmap 扫描。
直到 MCP(Model Context Protocol,模型上下文协议) 的出现,这堵叹息之墙终于被打破。
本文将以极客视角,深入探讨 MCP 如何重塑渗透测试的工作流,并手把手教你用 Python 编写一个专属的“渗透武器库 MCP Server”。
一、什么是 MCP?为什么它是渗透测试的“破壁人”?
MCP 是由 Anthropic 推出的一项开源标准协议,旨在为 AI 模型提供一种安全、标准化的方式来连接外部数据源和本地工具。你可以将其理解为 AI 专属的 USB 接口。
革命性意义:打通 LLM 与本地武器库的任督二脉
在传统的 AI 辅助渗透场景中,我们的工作流极其割裂:
- 运行 nmap。
- 将成百上千行的终端输出复制粘贴给 ChatGPT/Claude。
- 让 LLM 分析并生成下一步 payload。
- 复制 payload 回到终端执行。
引入 MCP 后,范式发生了彻底转变: 通过编写 MCP Server,你可以将本地的 Nmap、Sqlmap、Metasploit 甚至自定义的 Python 脚本,直接暴露给支持 MCP 的客户端(如 Claude Desktop 或 Cursor)。LLM 可以自主决策何时调用什么工具、传入什么参数,并直接读取工具的返回结果进行二次分析。AI 不再仅仅是顾问,而是成为了具备执行力的全自动渗透节点。
二、MCP 在渗透测试中的实战应用场景
当 LLM 获得了本地执行权限,渗透测试的效率将呈指数级提升。以下是几个典型场景:
1. 自动化 Recon
传统信息收集需要人工串联 Subfinder、Httpx、Nmap 等工具。通过 MCP,你可以对 LLM 说:“收集目标 example.com 的存活子域并扫描开放的高危端口。”
LLM 会自动调用对应的 MCP 工具,将杂乱的扫描结果聚合清洗,最终直接输出一份高价值的资产攻击面报告。
2. 交互式漏洞验证与利用
发现潜在的 SQL 注入点后,LLM 可以通过 MCP Server 自动生成 Sqlmap 的调用命令执行验证,甚至在遇到 WAF 拦截时,LLM 能根据返回的 HTTP 响应体,自动调整 Tamper 脚本和绕过策略。
3. 本地提权与后渗透分析
在获得基础 Shell 后,将目标机的文件读取权限通过 MCP 挂载。你可以直接让 LLM:“分析当前的 crontab 和 SUID 文件,找一个提权路径,并生成对应的 Exploit。”LLM 会通过系统调用直接读取目标文件内容并给出答案。
三、实战演练:从零编写一个Nmap MCP Server
为了让你直观感受到 MCP 的威力,我们将用 Python 编写一个轻量级的 MCP Server,将基础的 Nmap 端口扫描能力封装成 LLM 可以直接调用的 Tool。
环境准备 你需要安装 Python 3.10+,并安装以下依赖:
- 1
- 2
#确保本地已安装 Nmap 命令行工具pip install mcp python-nmap
编写核心逻辑 (nmap_server.py) 这里我们使用官方推荐的 FastMCP 框架,它的路由和装饰器设计非常契合 Python 开发者的习惯(类似 FastAPI)。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
import nmapimport json
from mcp.server.fastmcp import FastMCP# 初始化 MCP Server,命名为 "Pentest-Nmap-Node"mcp = FastMCP("Pentest-Nmap-Node")
# 实例化 Nmap PortScannernm = nmap.PortScanner()
@mcp.tool()def scan_target(target: str, ports: str = "1-1000", arguments: str = "-sV -Pn") -> str: """ 渗透测试端口扫描工具。允许 LLM 对指定目标进行 Nmap 扫描。 Args: target: 目标 IP 或域名,例如 '192.168.1.1' 或 'example.com' ports: 扫描的端口范围,例如 '22,80,443' 或 '1-1000' arguments: 额外的 Nmap 参数,默认 '-sV -Pn' (服务版本检测,跳过主机发现) """ try: # 执行扫描 nm.scan(hosts=target, ports=ports, arguments=arguments) results = [] for host in nm.all_hosts(): host_info = { "host": host, "state": nm[host].state(), "protocols": {} }
for proto in nm[host].all_protocols(): ports_data = [] lport = nm[host][proto].keys() for port in sorted(lport): port_info = { "port": port, "state": nm[host][proto][port]['state'], "service": nm[host][proto][port]['name'], "version": nm[host][proto][port].get('version', '') } ports_data.append(port_info) host_info["protocols"][proto]= ports_data results.append(host_info) return json.dumps({"status": "success", "data": results}, indent=2) except Exception as e: return json.dumps({"status": "error", "message": str(e)})
if __name__ == "__main__": # 启动 MCP Server,使用 stdio 传输层与客户端通信 mcp.run()
四、配置指南:接入你的 AI 客户端
写好了 Server,我们需要让支持 MCP 的客户端(例如 Claude Desktop)能够发现并调用它。找到你的 Claude Desktop 配置文件 claude_desktop_config.json:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
在配置中注册我们刚刚写好的 Nmap MCP Server:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
{ "mcpServers": { "pentest-nmap": { "command": "python", "args": [ "/绝对路径/到/你的/nmap_server.py" ] } }}
注:如果你使用了虚拟环境,command 请填写虚拟环境中 python 解释器的绝对路径。
重启 Claude Desktop。现在,你可以直接在对话框里对 Claude 说:
“帮我探测一下 scanme.nmap.org 的 22 和 80 端口,看看有没有可利用的服务版本。”
Claude 会自动识别到 scan_target 工具,发起调用,等待扫描完成,然后根据返回的 JSON 数据为你输出专业的渗透分析建议。
五、结语:有了手脚,还缺大脑
到这里,你已经掌握了 MCP 的核心原理,并亲手搭建了一个可工作的渗透测试武器库接口。LLM 终于可以从”玻璃房里的战术大师”变成能触碰真实目标的操作者。
但你可能已经发现了一个问题:MCP 给了 AI 手脚和兵器,它却不知道什么时候该出拳、该打哪里。
一个没有经过战术训练的 Agent,拿着 Nmap 的结果只会原样复述;而一个真正的红队专家,会在脑海中自动将端口、指纹和目录交叉验证,收敛出一条精准的攻击路径。
这就是”Skill”要解决的问题——赋予Agent红队的SOP和专家的思维链。
在下一篇《从 MCP 到 Skill:如何为 AI Agent 开发渗透测试专属技能》中,我们将深入拆解如何将顶级渗透测试员的经验和直觉,编码成Agent可以加载的”技能套件”,让MCP提供的武器库真正发挥出它应有的威力。
敬请期待。
关注「极客零零七」获取更多网安资讯。回复「工具」获取渗透测试工具清单
往期推荐
- [工具·书·人] 把渗透测试交给 AI 来做,这个开源项目做到了什么程度
- 国家级黑客在用 Gemini,我看完 Google 这份报告想说几句
- [技术深潜] Kali 官方集成 LLM:完全本地化自然语言渗透时代来了
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:极客零零七 丘驰 丘驰《当渗透测试遇上 MCP (Model Context Protocol)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论