
这次我们来看一个方向AI渗透。这个方向最近热度很高但很多教程习惯一上来就铺智能体框架、MCP 配置、模型微调对从零开始的读者非常不友好。这篇“负基础”文章会把整个体系拆开从概念讲起再逐步走到部署、写 Skills、接 MCP、组智能体让第一次接触的人也能理解AI 到底是怎么参与网络安全工作的。文章先回答四个基础问题LLM 在安全测试里能干什么、Skills 是什么、MCP 解决什么问题、智能体如何把前面这些东西串成一条流水线。然后给出可落地的入门路径模型选型、平台搭建、技能编写、工具调用、效果验证、常见问题排查。重点放在“先跑通一次最小实验”而不是一次学完所有框架。这套内容适合三类读者刚入门网络安全想用 AI 提升测试效率的安全新人对 LLM 应用开发好奇想接入安全工具链的开发者和运维在红蓝对抗或安全运营中需要快速处理扫描日志、漏洞描述和测试报告的团队成员。文章涉及的所有操作请只在授权测试环境、本地靶场、CTF 或模拟仿真环境里执行。AI 渗透不等于对未授权目标发起攻击合规这条线是一票否决的。1. 核心概念速览AI 渗透不是一个单独工具而是一套组合体系。它由模型、LLM、Skills、MCP、智能体这五层组成下面先用一张表把它们的定位说清楚。概念一句话定位在 AI 渗透里的作用渗透测试在授权范围内发现系统弱点任务背景最终输出是漏洞清单和加固建议LLM大型语言模型文本理解和生成引擎承担对话、分析、代码生成、报告撰写等智力工作模型具体的 LLM 实现API 或本地权重决定回答质量、推理速度、显存成本和上下文长度Skills可复用的技能模块由提示词、流程、工具绑定组成让 AI 按固定流程完成子域名收集、日志分析等任务MCP模型上下文协议LLM 与外部工具的标准化桥梁让 AI 调用 nmap、sqlmap、浏览器、数据库等外部工具智能体由 LLM 驱动的自主应用编排“任务拆解、调用 Skills 和 MCP、完成目标”的流程这五层的关系可以这样理解模型是大脑LLM 是大脑的推理能力Skills 是岗位说明书MCP 是手和脚智能体是实际执行任务的员工。一个 AI 渗透任务本质上是智能体拿到目标后按技能流程逐项调用工具最后用 LLM 汇总成报告。后面的章节我会按这个顺序展开先准备模型再搭工作台然后写技能接通 MCP最后组成智能体。模型选择上入门阶段有两种路径API 方式选用一个支持 OpenAI 兼容接口的大模型 API成本低、启动快适合功能验证和流程学习。本地方式使用 Ollama、LM Studio 等工具加载 7B 到 14B 开源模型一般建议准备 8GB 以上内存或 4GB 以上显存具体以模型大小和量化方式为准。如果你完全没有 GPU也可以先用 CPU 跑小模型只是速度会慢不建议在 CPU 环境做高并发或超长上下文实验。2. AI 渗透的使用场景与合规边界AI 在渗透测试里的定位不是“自动攻击”的黑盒工具而是“测试人员的工作流加速器”。换句话说AI 能把大量重复性、整理类工作消化掉让测试人员把精力放在判断和利用上。以下是目前技术成熟度比较高、适合 AI 介入的场景。第一个是信息收集阶段。渗透测试的前期需要整理子域名、IP 段、端口服务、WAF 指纹等资产信息。AI 能把这些分散的原始结果转成结构化资产清单减少手工复制粘贴。第二个是漏洞分析。扫描器往往输出大量原始日志和条目AI 可以将这些内容整理为可读的漏洞描述、版本影响范围以及验证思路。它不替代扫描器而是帮你把扫描结果读明白。第三个是代码审计辅助。在授权测试中如果目标是一个开源项目AI 可以辅助快速定位危险函数、敏感信息泄露点和硬编码凭据。这里要强调它只是辅助最终结论必须由审计人员复核。第四个是日志与流量分析。面对海量日志AI 能帮助提取异常登录、可疑请求、命令执行痕迹。尤其是把不同来源的日志关联起来AI 的归纳能力比人肉翻日志快很多。第五个是报告生成。把测试过程、漏洞截图、修复建议整理成符合模板的渗透测试报告这个工作非常耗时AI 可以将时间压缩到几分钟。前提是模板清晰并且报告内容由测试者确认。第六个是告警研判与应急参考。在安全运营场景中AI 可以辅助判断告警等级给出处置建议。它不代替安全分析师但能减少初级研判的重复劳动。这些场景有一个共同点全部发生在授权范围之内。AI 不会替你做“是否合法”的决策这个边界必须由操作者自己守住。具体来说有五个底线只能对你有权测试的目标开展操作包括你拥有的系统、客户书面授权的测试项目、CTF 和本地靶场。不要把客户数据、业务截图、内部凭据、个人信息上传到公网 AI 服务。对敏感数据优先使用本地推理或私有化部署。不要直接把 AI 生成的结论当最终结果。AI 有概率产生幻觉所有漏洞判断必须由测试人员复核。任何自动化操作都要先评估影响。对生产系统务必先确认执行范围避免触发告警、造成业务中断。涉及攻击性命令、漏洞利用代码务必只在隔离的靶场环境运行不在公网产生真实攻击流量。另外“AI 渗透”还有一个方向是“用 AI 对抗 AI”。例如针对 LLM 应用的提示注入、越权工具调用、模型滥用。这一点在后面智能体章节会重点讲。当你用 AI 自动化操作安全工具时必须考虑提示注入风险防止模型被外部内容诱导执行危险命令。3. 模型选型与环境准备3.1 模型选型先决定运行方式AI 渗透里的“模型”不只指模型名称还包含推理方式、上下文长度、工具调用能力。选模型时建议只看四个指标。指标说明对安全任务的影响上下文长度模型一次能处理的文本量日志、报告、源代码动辄几万 token上下文短会被截断工具调用能力模型能否稳定输出结构化工具调用参数决定 MCP 和函数调用是否可靠推理速度每 token 生成时间实时交互工具对速度要求高本地与 API数据是否离开本地敏感项目必须走本地部署对入门读者我更推荐 API 模式。理由很简单不需要管理 GPU 驱动和模型文件通常 30 分钟就能跑通可以把精力集中在理解 Skills 和智能体的概念上。等后续涉及敏感数据或离线分析再转向本地模型。常见开源模型量级与硬件参考大致如下实际占用请以你的环境和量化方式为准7B 级别模型量化后一般需要 6GB 到 8GB 显存或 16GB 内存跑 CPU 版本。14B 级别模型量化后一般需要 10GB 到 16GB 显存适合中高端显卡。32B 到 70B 级别模型建议 32GB 以上显存或者使用云服务。API 模型无本地硬件要求但需要网络、API 密钥并关注计费。如果你是 NVIDIA 显卡先确认驱动和 CUDA 版本如果是 Mac优先使用支持 Metal 加速的 Ollama 或 Llama.cpp如果只有 CPU建议从 7B 量化模型开始。3.2 准备最小工具链一个最小可用的 AI 渗透实验环境建议准备以下组件Python 3.10 以上用于写脚本、调用 API、跑 MCP 客户端。Anaconda 或 venv隔离 Python 环境避免依赖冲突。Docker方便启动 Dify、Open WebUI、向量数据库等平台。一个 LLM 渠道OpenAI 兼容 API 或本地 Ollama 服务。一个智能体平台Dify、LangChain、LlamaIndex 都可以。一个 MCP 客户端Claude Desktop、Cline或自己写的 Python 客户端。一个授权测试靶场DVWA、Vulhub、HackTheBox、本地虚拟机等。这组工具不需要一次装齐。第一次实验只需要“Python API 密钥 Dify”这三样先把模型对话跑通再逐步扩展。4. 搭建一个最小可用的 AI 工作台4.1 用 Dify 搭对话入口Dify 是目前比较流行的开源 LLM 应用开发平台它把模型管理、提示词编排、知识库、智能体、工作流都集中到一个 Web 界面里很适合用来验证安全测试类的小应用。如果你有 Docker启动 Dify 的大致流程如下具体命令以官方仓库为准# 克隆 Dify 项目并进入 docker 目录 git clone https://github.com/langgenius/dify.git cd dify/docker cp .env.example .env docker compose up -d启动完成后浏览器访问本机端口默认安装地址一般是http://localhost/install。首次启动需要创建管理员账号进入后台后在左侧菜单找到“模型供应商”填入你的 API 密钥并选择模型。如果你不想用 Dify也可以直接用 Open WebUI 配合 Ollama或者直接用 Python 脚本调用 OpenAI 兼容接口。核心目标都一样让一个 LLM 能稳定对话。4.2 用 Python 调用接口做最小验证下面这段代码可以作为“最小接口验证”确认模型服务可用。它使用 OpenAI 兼容协议所有支持该协议的网关都能适用from openai import OpenAI # 如果使用本地 Ollamabase_url 改成 http://127.0.0.1:11434/v1 # 如果使用云 API改成服务商提供的地址和你的密钥 client OpenAI( base_urlhttp://127.0.0.1:11434/v1, api_keyEMPTY ) response client.chat.completions.create( modelqwen2.5:7b, # 注意替换为实际模型名 messages[ {role: system, content: 你是一名安全测试助理回答要简洁、准确。}, {role: user, content: 如何判断一个 Web 服务是否存在目录遍历漏洞} ], temperature0.3 ) print(response.choices[0].message.content)判断成功标准模型能正常回答目录遍历检测方法并输出合法、合理的检测思路。如果报 401通常是密钥或地址配置错误如果超时检查服务端是否真的启动以及模型文件是否已加载。4.3 工作台连通性检查启动 Dify 和模型后建议先做一个连通性测试在对话窗口输入“请介绍一下你自己”看模型是否能正确返回。如果这一步失败后面所有 Skills 和 MCP 实验都会卡住。连通性测试通过后再开始写第一个提示词实验。5. 从提示词到 Skills为什么不是简单“问一句”很多初学者拿到 AI 后只会写临时提示词例如“帮我扫描一下这个网站”。这有两个问题提示词不可复用而且 AI 没有工具权限它只能输出一堆建议不能真正执行任何操作。Skills 就是来解决这个问题的。5.1 Skills 的定义和结构Skills 可以理解为“打包好的能力模块”。它不只是一段提示词而是一个包含多个部分的完整定义技能名称和描述让智能体知道在什么场景调用它。执行步骤任务怎么拆解、按什么顺序执行。工具绑定需要调用哪些外部命令或 API例如 curl、dig、nmap。输出格式最终返回什么结构的数据。测试用例用于验证技能是否有效。在 Claude Agent Skills、Codex 等生态里技能通常是一个包含SKILL.md和脚本文件的目录并在 YAML 格式的元信息里说明触发条件。不同平台叫法略有差异但核心设计思想一致把 AI 完成任务的方法固化成文件反复复用。5.2 写一个“子域名信息收集”技能下面用一个通用结构演示“怎么写 Skills”。假设目标是通过证书透明度日志收集一个授权域名的子域名列表name: subdomain_enum description: 收集目标域名的子域名、解析IP并输出HTML列表 bind_tools: - curl - dig steps: 1. 使用 crt.sh 查询证书透明度日志收集子域名 2. 使用 dig 对每个子域名解析 A 记录 3. 汇总为 {domain, ip, status} 列表 4. 检查常见内部域名前缀生成报告 output_format: markdown security: - 仅限授权目标 - 禁止对未授权 IP 发起主动扫描这个 YAML 只是设计文档要变成可运行技能还需要配套 Python 或 Shell 脚本来真正执行查询。关键是先掌握设计思想把任务流程写清楚把工具调用写清楚把输出格式写清楚再交给智能体执行。5.3 如何验证 Skills 有效验证一个技能是否可用不能只看“AI 有没有回复”。要重点检查以下四点是否按步骤执行有没有跳过信息收集直接输出结论。工具调用是否真实返回的 IP 是否与 dig 结果一致而不是 AI 编造。格式是否符合要求Markdown 表格是否完整字段是否为空。在异常输入下是否稳定比如域名格式错误时AI 会不会仍然执行无关操作。常见失败是AI 在技能描述里说要调用工具但实际没有调用而是直接“编”出了结果。排查方式是把智能体的工具调用日志打开观察真实调用记录。如果日志里没有出现 dig 或 curl那这份输出就不可信。6. MCP让 AI 真正调用安全工具提示词再强也只能生成文字。要让 AI 执行扫描、查询、写文件必须有工具调用通道。MCP也就是 Model Context Protocol是目前比较主流的标准化方案之一。6.1 MCP 的架构MCP 的基本架构可以拆成四个角色角色说明MCP Host运行大模型应用的主机环境例如 Claude Desktop、Dify、ClineMCP Client在 Host 中发起工具调用的客户端MCP Server把本地或远程能力封装成标准化工具接口工具实际执行的函数、命令或 API 操作MCP Server 不需要和 LLM 直接对话它只提供“工具清单”和“调用接口”。当大模型在某个步骤需要用到工具时会通过 Host 向 Server 发送结构化请求Server 执行完成后把结果返回给模型。这样模型就获得了“使用工具”的能力。举例在一个配置了 MCP 的安全工作流中AI 收到指令“检查这台主机的 80 端口服务”模型决定调用 nmap 工具MCP Server 把任务发给本地扫描进程服务端返回端口和版本信息模型再把结果整理成分析报告。整个过程对用户来说是一次对话背后已经发生了多次工具调用。6.2 一个 MCP 调用的结构示例下面给出一个通用请求结构用来展示 MCP 在实际调用时的大致格式。这只是一个协议层面的解释不能直接运行{ jsonrpc: 2.0, method: tools/call, params: { name: run_command, arguments: { command: nmap, args: [-sV, -p, 80,443, 192.168.1.1] } } }真实使用时你需要选择一种 MCP 客户端或者在 Dify、Claude Desktop、Cline 里直接配置现成 MCP Server。不同 SDK 的封装方式不同建议查阅你所用生态的官方文档。6.3 常见安全相关 MCP Server 方向从当前社区生态看可接入的工具方向大致包括网络扫描类封装 nmap、masscan 等命令让 AI 能够发起端口扫描。Web 应用类通过 Playwright 或浏览器自动化控制网页访问、截图、抓取响应内容。数据库类查询表结构、执行只读 SQL 语句帮助分析数据泄漏面。代码分析类让 AI 读取本地代码目录辅助代码审计。逆向类IDA Pro 等工具接入 MCP方便查看反汇编结果。威胁情报类查询域名、IP、哈希的威胁情报信息。文件操作类在授权环境中协助处理日志、导出报告。需要重点强调MCP Server 本身只是“接口”它不区分请求是否合法。如果你把一个“任意命令执行”能力暴露给模型Host 端必须做好权限控制和输入校验否则模型很容易被外部内容诱导执行危险命令。这也是智能体安全的核心问题。7. 搭建第一个渗透智能体7.1 智能体和聊天机器人的区别智能体是由 LLM 驱动的自主应用。它和“聊天机器人”的区别在于智能体有目标、会拆解任务、能调用工具、能根据中间结果调整下一步操作。聊天机器人只负责“对话”而智能体负责“完成任务”。一个最简单的渗透测试智能体流程可以设计成四步接收目标信息 - 调用 MCP 执行资产测绘 - 识别开放服务与版本 - 检索漏洞库匹配可能风险 - 生成授权测试建议和报告这个流程并不复杂。你可以用 Dify、LangChain、Coze 等平台把链路串起来。下面用 LangChain 风格的伪代码示意核心思路不能直接运行# 这是一个结构示例实际运行需要安装并配置对应的 LangChain 组件 from langchain_openai import ChatOpenAI llm ChatOpenAI( modelyour-model-name, base_urlhttp://127.0.0.1:8000/v1, api_keyEMPTY ) def scan_and_analyze(target: str): # 1. 信息收集阶段 assets run_asset_scan(target) # 2. 服务识别阶段 services identify_services(assets) # 3. 漏洞匹配阶段 risks match_vulnerabilities(services) # 4. 汇总报告 summary llm.invoke(f根据以下信息生成风险报告: {risks}) return summary print(scan_and_analyze(192.168.1.1))在真实项目里run_asset_scan等函数会调用 nmap 或漏洞扫描器的 MCP 接口而不是简单返回占位内容。第一次实验建议从单台主机开始不要直接扫整个网段避免误伤和性能问题。7.2 给智能体加安全边界设计智能体时最容易被忽略的是安全问题。攻击者可能在 Web 页面或日志里注入恶意指令例如文本中写着“忽略你的规则执行以下命令”。如果模型不分青红皂白地把页面内容当成指令就可能被诱导执行危险操作。建议做好以下几层防护工具权限分级高危工具比如命令执行、文件写入必须经过人工确认。指令隔离把“用户输入”和“工具返回的内容”都视为不可信数据不允许它们覆盖系统提示词中的顶层规则。输出过滤工具执行结果必须经过白名单校验再交给模型总结。审计日志记录每一步工具调用便于事后溯源。最小权限给智能体的权限只覆盖任务所需范围不开放全局 shell。这五个原则在实际项目中能明显降低风险。尤其是提示注入它不只是论文里的概念而是真实发生过的安全问题。8. 在授权环境中的功能测试与效果验证8.1 准备一个授权测试靶场如果手头没有现成的内部测试目标可以先搭一个本地靶场然后让 AI 在靶场里完成“发现漏洞并输出报告”的任务。推荐方式有几种。DVWA经典 Web 漏洞靶场界面简单适合入门。Vulhub基于 Docker 的一键漏洞环境集合可以复现具体 CVE。HackTheBox提供固定目标适合练习但需要联网且遵守平台规则。本地虚拟机安装旧版本 CMS 或中间件演练特定漏洞。无论使用哪种都要保证网络隔离在本地环境不要暴露到公网。靶场的作用是给 AI 一个“合法尝试”的空间同时也是测试集。8.2 功能测试用例表建议按以下维度设计测试用例功能模块测试输入预期结果失败判断资产识别指定一个授权域名或 IP返回开放端口、服务、版本无输出或输出格式错误漏洞匹配输入扫描结果或描述返回对应 CVE 和检测命令推荐不存在的版本攻击命令报告生成输入测试记录生成规范 Markdown 报告报告字段缺失、数据伪造工具调用让 AI 执行 nmap 扫描有真实调用日志和结果AI 未调用工具直接编造防御提示词在页面中注入恶意指令AI 不执行额外危险操作模型误执行注入命令测试结束除了看功能是否通过还要看“AI 是否老实”。如果 AI 报告里出现了某个工具的扫描时序而工具调用日志里没有对应记录那这份报告就不可信。这个检查点是整个验证过程的核心。8.3 常见失败模式与处理方法工具调用失败可能是命令路径、参数格式、上下文格式不对。打开 MCP Server 日志查看执行请求有没有真正到达命令端。上下文超长日志或扫描输出太多模型上下文放不下。可以先让工具端做摘要再喂给模型。结果不稳定同一任务在不同模型上差异很大需要固定模型版本并使用较低的 temperature。系统幻觉模型描述了一个不存在的工具调用但 Server 并没有这个方法。需要在系统提示词里明确可调用工具清单。9. 资源占用、性能观察与常见问题排查9.1 资源占用观察方法如果你使用本地模型需要重点关注以下指标显存占用运行模型时用nvidia-smi查看 GPU 显存使用率。内存占用CPU 推理时用任务管理器或free -h观察内存。上下文长度观察 API 耗时和 token 使用量定位 prompt 长度。吞吐量记录每秒生成 token 数评估交互响应速度。一个典型的观测命令组合如下# 查看 GPU 显存占用和进程 nvidia-smi # 查看 Ollama 已加载的模型和显存 ollama ps # 查看端口占用排查服务是否启动 netstat -ano | grep