用大模型做安全扫描,能发现隐藏的漏洞吗?
前言:大模型如何辅助安全扫描?
很多同学问我:“用大模型做安全扫描,能发现隐藏的漏洞吗?”答案是肯定的,但前提是方法得当。
传统漏扫工具依赖签名库,对新出现的绕过方式或逻辑漏洞反应慢。
大模型(如 DeepSeek、GPT-4)能通过理解代码上下文、配置文件和日志模式,发现那些“看上去没问题但实际有风险”的点。
本文不讲玄学,直接带你从零跑一遍完整的扫描流程。
第一步:准备大模型扫描环境
大模型本身不直接扫描端口,你需要一个“中间人”——把扫描数据喂给模型分析。
建议用开源项目 PentestGPT 或自己写脚本调用 API。
这里以 PentestGPT 为例(基于 GPT-4 的渗透测试助手)。
安装 PentestGPT
git clone https://github.com/GreyDGL/PentestGPT.git
cd PentestGPT
pip install -r requirements.txt
配置 API 密钥
export OPENAI_API_KEY=你的OpenAI密钥
如果你用本地大模型(比如通过 Ollama),也可以配置对应端点。
PentestGPT 默认支持 OpenAI 格式。
第二步:执行一次目标扫描并让大模型分析
先使用传统工具收集信息,再把结果输入大模型。
这里以扫描一个 Web 应用为例。
收集基本信息
# 用 nmap 扫开放端口
nmap -sV -A example.com -oN nmap_result.txt
# 用 gobuster 爆破目录
gobuster dir -u http://example.com -w /usr/share/wordlists/dirb/common.txt -o gobuster_result.txt
将结果喂给 PentestGPT
pentestgpt --target example.com --file nmap_result.txt --file gobuster_result.txt
模型会自动分析输出中的可疑点,
比如“8080 端口运行了旧版 Tomcat,
可能存在 CVE-2024-XXXX”、
“/admin 目录返回 302 但未限制 IP,
可尝试暴力破解”。
注意:PentestGPT 默认开启交互模式,你可以追问细节,比如“这个漏洞如何利用?
有没有公开的 exp?
”。
第三步:常见问题与避坑指南
零基础最容易遇到这几个问题:
- API 配额不足:免费账号限额低,建议用申请了更高额度的开发者账号,或用本地大模型(如 Llama 3.1 70B)。
- 模型产生幻觉:大模型可能编造不存在的漏洞。必须人工验证,比如检查 CVE 编号是否真实、Payload 是否有效。
- 扫描权限:不要对未授权目标做任何扫描,包括使用大模型分析。一定要在自有测试环境或获得授权的目标上进行。
- 结果不够具体:如果觉得回答太宽泛,可以追加上下文,例如把源代码片段也提交给模型。
第四步:验证大模型发现的隐藏漏洞
大模型提示了一个可疑点,怎么确认是真实漏洞?
例如模型说“登录接口未对密码长度做限制,可能被注入”。
验证方法:
# 使用 curl 测试长度限制
curl -X POST http://example.com/login -d "username=admin&password="$(python3 -c 'print("A"*1000)')
如果返回 500 或显示 SQL 错误,说明确实存在漏洞。这一步不能跳过,大模型只是辅助,最终结论靠手动测试。
结语
回到最初的问题:“用大模型做安全扫描,能发现隐藏的漏洞吗?”我的经验是:可以,但不能完全依赖它。
大模型擅长发现逻辑缺陷和配置不当,但需要搭配传统扫描工具,并且每一步人工验证。
建议你按照本文的步骤先跑一次,熟悉之后就可以根据自己的环境定制流程。
遇到奇怪的结果,优先检查 API 配置和模型版本。