3、信息收集:目标AI系统资产发现、API接口探测、模型信息泄露侦察

好,咱们进入第三章。信息收集,说白了就是“踩点”。

你想想看,渗透测试就像打仗。你连敌人有多少兵力、阵地怎么布置都不知道,就冲上去?那肯定白给。AI系统渗透测试也一样。我个人的习惯是,花在信息收集上的时间,至少要占到整个项目周期的40%。这一步做得越细,后面漏洞挖掘就越顺手。

3.1 资产发现:先搞清楚“敌人”长什么样

什么是AI系统的资产?不只是服务器IP和域名。模型文件、训练数据、API端点、管理后台、甚至开发者的GitHub仓库,都是资产。

我常用的思路分三步:

  1. 域名与子域名收集:用Subfinder、Amass这些工具扫一遍。别只盯着主域名,很多AI服务会把API部署在 api.target.com 或者 model.target.com 这种子域名上。
  2. Web指纹识别:用WhatWeb、Wappalyzer看看目标用了什么技术栈。是Flask还是FastAPI?有没有用Kubernetes?这些信息能帮你推测出潜在的攻击面。
  3. 云存储桶探测:很多团队会把模型权重文件或者训练数据误传到公开的S3桶或阿里云OSS上。用工具扫一下 target-backup、target-model 这类常见命名模式。

实战经验:有一次我测试一个AI客服系统,主站防护做得滴水不漏。结果我在GitHub上搜到了他们一个内部运维脚本,里面硬编码了一个测试环境的S3桶地址。那个桶里,放着完整的用户对话日志。嗯,这就是典型的资产发现没做到位。

3.2 API接口探测:找到AI系统的“血管”

AI系统最核心的交互方式就是API。不管是模型推理、数据上传还是结果返回,全走API。所以,API接口探测是信息收集的重中之重。

我一般会做两件事:

3.2.1 主动扫描与爬取

用Burp Suite或者Postman配合爬虫,把目标Web应用的所有链接都抓下来。重点关注这些路径:

  • /api/v1/predict 或 /inference —— 模型推理接口
  • /api/v1/upload —— 文件上传接口(可能用于上传训练数据)
  • /api/v1/model/list —— 模型管理接口
  • /swagger.json 或 /docs —— API文档(有时候开发者忘了关)

小技巧:我曾经遇到一个目标,它的API文档直接暴露在 /redoc 路径下。里面清清楚楚写着每个接口的参数、返回值和认证方式。这相当于把自家大门的钥匙挂在了门把手上。

3.2.2 被动监听与流量分析

如果目标有客户端(比如手机App或桌面软件),那就更好了。用mitmproxy或Fiddler挂上代理,抓取客户端与服务器之间的通信流量。你会发现很多隐藏的API端点,甚至是一些内部调试接口。

举个例子,我曾经抓到一个AI绘画App的流量,发现它除了正常的 /generate 接口外,还有一个 /internal/queue_status 接口,直接暴露了任务队列的详细信息。这明显是开发环境没清理干净。

3.3 模型信息泄露侦察:最值钱的东西往往最容易被忽视

模型信息泄露,是AI系统特有的风险。传统Web渗透里没有这玩意儿。说白了,就是攻击者能不能从你的系统里,偷走或者推断出模型的结构、参数、训练数据。

我重点关注这几个方向:

泄露类型 常见场景 我的侦察方法
模型文件泄露 模型权重文件(.h5, .pt, .pkl)被直接放在Web目录下 扫描常见路径,如 /models/、/weights/,检查文件头特征
API返回信息泄露 推理接口返回了模型名称、版本号、甚至层数 手动构造请求,观察错误信息或响应体中的额外字段
训练数据泄露 通过模型逆向或成员推断攻击,判断某条数据是否在训练集中 使用影子模型技术,对比目标模型对已知数据的输出差异
日志与调试信息泄露 服务器返回了Python堆栈跟踪,暴露了模型加载路径 故意传入畸形数据,触发异常,看返回信息

警告:模型信息泄露不只是“丢个文件”那么简单。我曾经遇到一个案例,攻击者通过API返回的模型版本号,找到了该版本模型的一个已知漏洞(对抗性攻击),然后成功绕过了图像识别系统。所以,哪怕是一个版本号,也要当成敏感信息来保护。

3.4 实战小记:一次完整的AI资产发现流程

最后,我分享一个我自己的操作流程,你可以照着来:

  1. 第一步:用Amass跑一遍子域名,结果存到 subs.txt。
  2. 第二步:用httpx对子域名做存活探测,只保留200和403的。
  3. 第三步:用katana爬取存活站点的所有链接,重点关注API路径。
  4. 第四步:手动测试几个关键API,比如 /predict,看看返回信息里有没有模型元数据。
  5. 第五步:用gitleaks扫描目标相关的GitHub仓库,找硬编码的密钥或模型路径。

这一套下来,大部分AI系统的家底儿基本就摸清了。记住,信息收集不是一次性的活儿。渗透测试过程中,随时可能发现新的线索,随时要回头补充信息。灵活一点,别死板。

好,这一章就到这儿。下一章咱们聊聊怎么对AI系统的API进行攻击面分析,那才是真正开始“动手”的时候。