最近安全圈里讨论“AI渗透”的声音很多,但有一个现象很典型:把 LLM、模型、智能体、Skills、MCP 这几个词放在一起,绝大多数人只能模糊感觉到它们相关,却说不清谁在管哪一层。更现实的问题是,很多做网安的朋友想入门 AI 渗透,结果一上来就被“Agent”“MCP 协议”“Skill 封装”这些概念劝退了。
这里我想先给一个明确判断:AI 渗透不是一个单一工具,也不是某个“一键打点”的软件,它是一套由大语言模型驱动、配合技能封装和工具接入协议组成的安全工程实践。搞懂这套体系的关键,不是先去学渗透技巧,而是先把底层概念之间的分工关系理清楚。
这篇文章就面向“负基础”读者,用最朴素的方式把 LLM、模型、智能体、Skills、MCP 这五个概念拆开讲透,再通过三个可以本地跑起来的最小示例,让你对 AI 渗透的技术底座有一个真实、可操作的认知。
1. 这篇文章真正要解决的问题
先说一个我在社区里反复看到的场景:一个传统渗透测试工程师,熟悉 Burp Suite、Nmap、SQLMap,但第一次看到“用 LLM 做安全分析”时,脑子里冒出的问题是——这跟用 Python 写个自动化脚本有什么区别?
另一个场景是:一个刚学 AI 的开发者,知道 Transformer、知道 Prompt,但对“渗透测试”完全没有概念,听到“AI 渗透”就以为是大模型自动扫漏洞,兴奋地点进去,结果发现自己连 TCP 和 HTTP 的关系都要重新翻书。
这两个场景背后有一个共同的痛点:AI 渗透的技术栈横跨了两门学科,不是补一门就能上手的。你既要懂大模型的能力边界,也要懂安全测试的基本流程,还要理解智能体、技能、工具协议这些编排层的概念。
这篇文章要解决的,就是这个“中间地带”的概念缺口。
读完这篇文章,你会得到三个明确的收益:
- 理清 LLM、模型、智能体、Skills、MCP 到底是什么,分别解决什么问题,谁在依赖谁。
- 知道“AI 渗透”其实有两层含义:一层是用 AI 辅助做安全测试,另一层是对大模型应用本身做安全评估。
- 能独立跑通三个最小示例:调用大模型做日志分析、用 Skills 封装安全经验、用 MCP 把外部工具接入智能体。
换句话说,这篇文章不教你具体的漏洞利用姿势,而是帮你把 AI 渗透的“地基”夯实。地基稳了,后面学什么都快。
2. 五个核心概念扫盲:LLM、模型、智能体、Skills、MCP
这五个概念是 AI 渗透技术栈的骨架。我建议你先忘掉那些复杂的技术定义,把下面这套类比装进脑子里。
2.1 LLM 与模型:从“参数仓库”到“语言大脑”
“模型”这个词在 AI 领域里是最通用的概念。从数学视角看,模型就是一个函数:输入数据,输出结果。它之所以有智能表现,是因为通过大量数据训练,内部的参数被调整到了能完成特定任务的状态。
LLM(Large Language Model,大语言模型)则是专门处理自然语言的模型。它的特点是参数规模大、训练数据量大、基于 Transformer 架构。你可以把 LLM 理解为一个“语言大脑”:它能理解你输入的句子,能生成符合语法的回复,能做总结、翻译、推理。
但在 AI 渗透的语境里,我们需要更精确一些:LLM 是一个推理引擎,不是知识库本身,也不是工具。它不直接知道目标网站的端口状态,它只是根据你给它的信息进行推理和判断。
这就是新手最容易踩的坑:以为 LLM 什么都知道、什么都能做。实际上,LLM 的能力上限很大程度取决于你如何给它输入上下文、如何设计提示词,以及如何把外部工具的结果喂给它。
2.2 智能体:从“会说”到“会做”
如果只有 LLM,它只是一个“能聊天的模型”。但在渗透测试这种真实任务里,我们需要的是“能干活”的系统:能调扫描器、能分析结果、能根据情况决定下一步动作。
这就是智能体(Agent)的定位。
智能体是一个以大模型为核心决策者,同时具备规划(Planning)、记忆(Memory)、工具调用(Tool Use)、行动执行(Action)能力的完整系统。你可以把它理解成一个“数字员工”:LLM 是他的大脑,工具是他的手,记忆是他的工作笔记,规划能力是他的任务分解能力。
举个例子:你让一个智能体去完成“对目标站点做基础信息收集”这个任务。它会自己把任务拆成几个子任务:先查 DNS 记录,再扫开放端口,然后识别 Web 服务的指纹,最后汇总成一份报告。这个过程中,LLM 负责决策“下一步做什么”,真正的扫描动作由 Nmap 等工具完成。
所以,智能体是 AI 渗透的核心执行形态。单纯的 LLM 只是“军师”,智能体才是“前线指挥官”。
2.3 Skills:可复用的专项技能包
有了智能体,接下来要解决的是“能力复用”问题。
假设你是一个经验丰富的安全工程师,你有一套完整的目录扫描方法论:用什么字典、用什么工具参数、如何判断结果是否异常。如果你每一次都靠提示词把这些步骤描述给大模型,不仅效率低,而且每次质量还不稳定。
Skills 要解决的就是这个问题。
Skills 直译为“技能”,它把一组完成某个专项任务的步骤、规则、代码脚本打包成一个可以被智能体加载的模块。你可以把 Skills 理解成智能体的“插件技能包”:让智能体掌握一个特定技能时,不需要重新训练模型,只需要加载这个技能包。
在实际落地中,一个 Skill 通常包含两个部分:描述文件(说明这个技能适用于什么场景、执行步骤是什么)和可执行脚本(真正干活的代码)。智能体遇到相关任务时,会先读取描述文件判断是否适用,如果适用就调用其中的脚本和流程。
这里要注意 Skills 与普通提示词的区别:提示词是“一次性指令”,Skills 是“可复用的标准化流程”。质量高的 Skills 能把专家的隐式知识显性化,这是 AI 渗透工程化的重要一步。
2.4 MCP:标准化的工具接入协议
如果说 Skills 解决的是“智能体会不会做某件事”,那 MCP 解决的是“智能体怎么调用某个工具”。
在 MCP 出现之前,让大模型调用外部工具通常有几种方式:内置插件、写死 API 调用、或者靠开发者在智能体代码里逐个适配。这些方式最大的问题是碎片化——每接入一个新工具,都要重新写一套对接逻辑。
MCP(Model Context Protocol,模型上下文协议)是一个开放协议,它规范了智能体与外部工具、数据源之间的通信方式。你可以把它理解成“AI 世界的 USB 接口”:只要工具方实现了 MCP Server,任何支持 MCP 的客户端都可以直接对接,不需要为每个工具单独定制适配器。
在安全场景里,MCP 的价值非常明显。Nmap、Burp Suite、目录扫描器、指纹识别工具、甚至漏洞库查询服务,都可以封装成 MCP Server 供智能体调用。这样智能体就有了统一的工具调用层,而且工具输出结果可以被 LLM 直接读取和分析。
2.5 五个概念的关系梳理
为了帮你彻底理清它们的关系,我用一个表来对比:
| 概念 | 一句话定义 | 在 AI 渗透中的角色 | 类比 |
|---|---|---|---|
| 模型 | 经训练得到的参数化函数 | 提供推理和语言能力 | 大脑的神经元网络 |
| LLM | 大语言模型 | 理解任务、生成决策 | 大脑皮层 |
| 智能体 | 模型+规划+记忆+工具的系统 | 负责任务拆解与执行调度 | 前线指挥官 |
| Skills | 可复用的专项技能包 | 封装安全测试方法与流程 | 特种兵的作战手册 |
| MCP | 模型上下文协议 | 标准化工具接入与数据通信 | USB 接口 |
它们之间的依赖链是这样的:模型是基础设施,LLM 是模型的典型形态;智能体以 LLM 为大脑,通过 Skills 获得专业技能,通过 MCP 调用外部工具完成实际动作。
理解了这条链,你再去看网上的 AI 渗透项目,就不会再被各种名词绕晕了。
3. AI 渗透的两层含义与学习定位
“AI 渗透”这个词其实包含两个完全不同的方向,很多新手没有区分,导致学习路线走偏。
第一层含义是“用 AI 做渗透”,也就是利用大模型和智能体来辅助人工完成渗透测试工作。比如用 LLM 分析扫描报告、用 Agent 自动调用多个信息收集工具、用 ChatOps 的方式让 AI 帮你写报告。这一层提升的是“安全工程师的生产力”。
第二层含义是“对 AI 做渗透”。大模型应用本身已经成为新的攻击面:提示词注入、模型劫持、工具调用滥用、训练数据投毒、敏感信息泄露等,都是安全测试的新课题。这一层考验的是“对 AI 应用的安全评估能力”。
作为负基础学习,我的建议是先聚焦第一层含义,也就是“用 AI 辅助安全测试”,因为它的学习曲线更平滑,也更容易在合法授权环境下练习。
在学习定位上,你要给自己定一个预期:AI 渗透目前还不能替代传统渗透测试,它更像是一个“智能副驾驶”。它擅长的是信息整理、任务调度、模式识别、报告生成;真正的高难度漏洞挖掘和利用,依然依赖人对业务逻辑的理解。
所以,不要指望“会了个 AI 渗透工具就能日穿一切”,也不要以为学了 AI 就不用学网络基础了。正确的姿势是:以传统安全知识为底座,把 LLM、Skills、MCP 当成增强自己战斗力的新装备。
4. 环境准备与最小技术栈搭建
这一节带你搭一个能本地运行的 AI 渗透学习环境。我们的原则是:能本地跑就本地跑,不依赖外部付费 API,数据不出机器。
需要准备的环境如下:
- 操作系统:Windows 10/11、macOS 或 Linux 均可,本文演示命令以 bash 为主。
- Python 3.10 及以上版本,能用虚拟环境管理依赖。
- 本地大模型运行时。这里以 Ollama 为例,它支持一键安装开源模型,并提供 OpenAI 兼容的 API 接口。
- Python 依赖包:用于调用模型和处理工具协议。
先安装 Ollama。打开终端,执行:
curl -fsSL https://ollama.com/install.sh | sh安装完成后,拉取一个适合在本地跑的中小型模型。这里以 qwen2.5:7b 为例,它体积适中,对中文理解好,适合安全分析这类任务:
ollama pull qwen2.5:7b如果你的机器内存小于 16GB,建议选择更小的模型,例如qwen2.5:3b或llama3.2:3b。模型不是越大越好,学习阶段先跑通流程最重要。
然后创建 Python 虚拟环境并安装依赖:
python3 -m venv ai-security source ai-security/bin/activate pip install openai mcp requests这里安装openai库是因为 Ollama 提供了 OpenAI 兼容接口,我们可以统一用一套代码风格调用模型。安装完成后,验证 Ollama 服务是否正常:
ollama serve另开一个终端,执行:
curl http://localhost:11434/v1/models如果返回了模型列表 JSON,说明 Ollama 正常运行,环境准备完毕。
5. 最小实例一:用 Python 调用 LLM 做安全日志分析
第一个示例,我们写一个 Python 脚本,调用本地大模型分析 Web 访问日志,判断是否存在可疑扫描或注入尝试。这是 AI 辅助渗透中最常见、也最容易上手的一类任务。
先创建文件log_analyzer.py:
# 文件:log_analyzer.py from openai import OpenAI client = OpenAI( base_url="http://localhost:11434/v1", api_key="ollama", # 本地服务不校验密钥,占位即可 ) def analyze_log(log_text: str) -> str: prompt = f""" 你是一名 Web 安全分析工程师。 请分析下面的访问日志片段,找出可疑的扫描、注入尝试或异常请求,并给出风险评估。 注意:你只能对日志文本进行分析,不能对目标系统发起任何请求。 日志内容: {log_text} """ resp = client.chat.completions.create( model="qwen2.5:7b", messages=[ {"role": "system", "content": "你是安全分析助手,只做日志分析。"}, {"role": "user", "content": prompt}, ], temperature=0.2, ) return resp.choices[0].message.content if __name__ == "__main__": sample_log = """ 2025-06-01 10:00:01 192.168.1.10 GET /index.php?id=1 UNION SELECT user,password FROM users 2025-06-01 10:00:05 192.168.1.10 GET /admin/config.php.bak 2025-06-01 10:00:07 192.168.1.10 GET /.git/HEAD 2025-06-01 10:00:12 192.168.1.11 GET /products/list.php?id=2 """ result = analyze_log(sample_log) print(result)这段代码的逻辑并不复杂。OpenAI客户端被配置成本地 Ollama 的地址,model参数指定我们本地的模型名称。analyze_log函数把日志文本拼接进提示词中,要求模型输出分析结论。temperature设置为 0.2,是为了让模型的输出更稳定、更保守,减少自由发挥。
运行方式:
python log_analyzer.py预期输出大致会包括:识别出UNION SELECT是 SQL 注入探测、.git/HEAD是敏感文件泄露探测、.bak文件请求属于敏感文件枚举,并给出风险等级建议。
这就是 AI 辅助渗透的最基本形态:模型不直接发起攻击,而是帮安全工程师从大量告警和日志中快速筛选出真正值得关注的可疑行为。
6. 最小实例二:用 Skills 封装安全经验
第二个示例,我们把一个真实的渗透测试经验封装成 Skills,让智能体能够按标准流程执行。这里以“目录与服务探测”技能为例。
在支持 Skills 的智能体框架中,技能通常以目录形式存放在约定位置。路径结构大致如下:
~/.claude/skills/ ├── web-recon/ │ ├── SKILL.md │ └── recon.py └── log-analysis/ ├── SKILL.md └── analyze.py每个技能目录下的SKILL.md是技能描述文件,是智能体判断“何时使用该技能”的关键。下面是一个示例内容:
# 技能名称:Web 基础信息收集 ## 适用场景 在取得授权的渗透测试项目中,对目标 Web 应用做基础信息收集。 ## 使用步骤 1. 确认目标已在授权范围内,否则立即终止并提醒用户。 2. 获取目标域名或 IP,先执行端口扫描:`nmap -sV <target>` 3. 如果存在 HTTP/HTTPS 服务,请求根路径并记录响应头信息。 4. 对常见敏感目录执行字典扫描,例如 `/admin`、`/.git`、`/backup`。 5. 将结果整理成「端口开放」「服务版本」「敏感目录」三个清单。 ## 输出格式 使用 Markdown 表格输出,包含:目标地址、发现项、风险等级、建议动作。 ## 安全提醒 - 仅在获得书面授权的目标上执行。 - 扫描频率保持低速,避免影响目标业务。这段描述文件的价值在于,它把一次人工信息收集的完整思路固化了下来。智能体读到这个文件后,就能理解整个任务的执行流程,并在不同项目里复用。
技能目录中的脚本则负责具体的自动化操作。下面是recon.py的一个简化版本:
# 文件:~/.claude/skills/web-recon/recon.py import subprocess import sys def run_port_scan(target: str) -> str: """调用 nmap 做端口扫描,只做授权目标的基础探测。""" cmd = ["nmap", "-sV", "--top-ports", "100", target] result = subprocess.run(cmd, capture_output=True, text=True, timeout=120) return result.stdout if __name__ == "__main__": if len(sys.argv) < 2: print("用法: python recon.py <目标地址>") sys.exit(1) print(run_port_scan(sys.argv[1]))通过这种“描述文件 + 可执行脚本”的组合,安全团队的经验就可以变成可复用的资产。这也是 AI 渗透工程化的一个核心思路:把专家在做的事情标准化,让智能体可以稳定执行。
7. 最小实例三:用 MCP 接入外部安全工具
第三个示例,我们用 MCP 把一个 HTTP 探测功能封装成标准服务,让任何支持 MCP 的客户端都能调用它。
先安装 MCP 所需的 SDK。以 Python 生态为例:
pip install "mcp[cli]" requests然后创建一个 MCP Server 文件,命名为http_probe_server.py:
# 文件:http_probe_server.py from mcp.server.fastmcp import FastMCP import requests mcp = FastMCP("http-probe") @mcp.tool() def check_http_header(url: str) -> str: """获取目标 URL 的 HTTP 响应头,用于基础信息收集。仅限在授权范围内使用。""" try: resp = requests.get(url, timeout=10, allow_redirects=True) except Exception as e: return f"请求失败: {e}" return f"status={resp.status_code}\nheaders={dict(resp.headers)}" if __name__ == "__main__": mcp.run(transport="stdio")这个 Server 暴露了一个check_http_header工具。任何 MCP 客户端连接到它之后,都可以让大模型决定何时调用这个工具,并把返回结果交给 LLM 分析。
在支持 MCP 的桌面客户端中,你需要在配置文件中注册这个服务。以 Claude Desktop 风格的配置为例:
{ "mcpServers": { "http-probe": { "command": "python", "args": ["/absolute/path/to/http_probe_server.py"] } } }配置完成后,客户端就能识别名为http-probe的工具服务。当你向智能体提问“看看这个站点的响应头信息”,它会自动决定调用check_http_header,然后把结果整理给你。
MCP 的价值在这里体现得非常直接:安全工具不需要写死在应用代码里,而是以标准协议的方式灵活接入。今天接入 HTTP 探测,明天接入目录扫描器,后天接入漏洞库查询,只需要不断向 MCP Server 添加工具定义即可。
值得说明的是,MCP 的 SDK 和配置细节仍在快速迭代,不同版本之间的 API 略有差异。你学习时以官方仓库的 README 为准,核心思想是理解“工具由 Server 暴露,由模型按需调用”这个模式。
8. 常见问题与排查思路
学习这套技术栈时,最容易遇到下面几类问题,我整理成了排查表格,方便你对照处理。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 调用本地模型报连接错误 | Ollama 服务未启动或端口不对 | 检查http://localhost:11434是否能访问 | 启动ollama serve,或在代码中修改base_url |
| 模型返回内容质量差 | 模型太小,或提示词不明确 | 换更小模型测试同一问题,或简化任务描述 | 更换更大参数模型,或把任务拆成多步执行 |
| MCP Server 启动后客户端连不上 | stdio 模式路径配置错误 | 先手动运行脚本看是否有报错 | 修正 JSON 配置中的command和args为绝对路径 |
| Skills 没有被智能体识别 | 目录名或描述文件名不规范 | 检查技能目录名称和SKILL.md位置 | 按官方约定的目录层级重新放置技能文件 |
| 调用扫描工具超时 | 目标响应慢或扫描参数过大 | 查看工具自身日志,确认扫描范围 | 设置合理超时时间,缩小端口或字典范围 |
| 日志分析结果遗漏明显风险 | 日志格式不完整,或上下文不足 | 检查输入日志的格式是否规范 | 先将日志清洗成统一格式,再交给模型分析 |
排错的总原则是:先看模型层报错,再看工具层报错,最后看接入层配置。从链路的最底层逐级向上排查,比盲目改代码更高效。
9. 安全边界、最佳实践与学习建议
AI 渗透具有天然的双刃剑属性,学习过程中必须把安全边界放在第一位。下面这几条,我不只是建议,而是强烈要求。
第一,授权是一切前提。所有扫描、探测、分析实验,只能在你自己搭建的靶场、本地虚拟机、或者获得书面授权测试的目标上进行。对未授权目标的任何探测行为,都是违法行为。
第二,数据脱敏是底线。不要让真实业务数据、客户数据、内部系统信息进入大模型。本地部署模型是更稳妥的选择,避免敏感信息外流。
第三,最小权限原则。给智能体和 MCP 接入的工具只分配完成任务所需的最小权限。比如信息收集阶段只开放扫描权限,不开放写权限和系统命令权限。
第四,保留审计记录。凡是智能体自动调用的工具、模型输入输出、决策过程,都应当有日志记录。这不仅是为了复盘,也是为了在出现问题时能追溯责任。
在工程实践层面,我建议你按这个顺序推进学习:
- 先熟练掌握传统安全基础,比如 HTTP 协议、Web 漏洞原理、端口扫描,这是判断模型输出是否正确的底层能力。
- 再学习提示词工程,学会如何让大模型稳定输出结构化结果。
- 然后练习把安全步骤拆解成可复用的 Skills,逐渐积累自己的技能库。
- 最后研究 MCP,把扫描器、指纹识别、漏洞检测等工具逐步接入智能体流程。
远离那种“AI 自动渗透”的一步到位幻想。真正靠谱的学习节奏,是先把单一能力打磨好,再通过智能体把能力编排起来,逐步形成一个可以辅助实战的 AI 安全助手。
另一个值得关注的方向是“对 AI 做安全”:当大模型应用进入企业业务系统,提示词注入、越权访问、敏感信息泄露这些风险就需要安全工程师来评估和防护。这部分内容在概念上与本文是一脉相承的,可以作为你后续学习的重点方向。
建议你先从本地环境搭建开始,把第 5、6、7 节三个示例完整跑通。跑通之后,再尝试改造:换一个不同场景的日志分析任务,或者把你日常安全工作中最常用的一两个操作封装成自己的第一个 Skill。理论和实践之间,差的永远是“先动手跑起来”这一步。