一句话:资产测绘的瓶颈从来不是工具,而是"这个域名到底属不属于目标"这个判断。
一、传统资产测绘的三个痛点
- 字典 brute-force 效率低:几十万条字典跑下去,命中的往往还是那几个常见前缀。
- 测绘语法难写:FOFA/Hunter/Quake 各有各的语法,写一条精确的
body匹配要调半小时。 - 归属判断靠人:
xxx-test.example.com和xxx.example.com可能属于不同实体,工具分不清。
AI 恰好能补上这三块。
二、用 AI 生成测绘语法
把目标业务描述丢给 AI,让它产出多平台语法:
# 任务
目标:某省级政务云平台,官网 example.gov.cn,
特征:页面底部有"技术支持:XX科技",使用统一登录门户。
# 要求
分别生成 FOFA、Hunter、Quake 查询语法,用于发现:
1. 该单位的其他子域名资产
2. 使用相同技术支持商的其他单位(供应链视角)
3. 相同 favicon 的资产(icon hash 测绘)
# 输出
每条语法说明用途,并给出可能命中量级预估。
AI 会输出类似:
FOFA: body="技术支持:XX科技" && country="CN"
Hunter: web.body="技术支持:XX科技" && ip.country="CN"
Quake: body:"技术支持:XX科技"
比手写快得多,而且它会主动补充你没想过的角度(比如证书序列号、ICP 备案号反查)。
三、icon hash 测绘:AI 帮你算
favicon hash 是资产测绘里命中率极高的手段。传统做法要自己写脚本算 mmh3。
让 AI 直接给你脚本:
# 计算 favicon 的 mmh3 hash(FOFA 用)
import mmh3
import requests
import base64
def favicon_hash(url):
r = requests.get(url, timeout=10, verify=False)
# FOFA 的算法:先 base64 编码,再对换行处理后的内容取 mmh3
favicon = base64.encodebytes(r.content)
return mmh3.hash(favicon)
print(favicon_hash("https://example.gov.cn/favicon.ico"))
拿到 hash 后去 FOFA 查 icon_hash="xxxxx",常能一次捞出几十个同框架资产。
四、子域名收集的 AI 增强流程
4.1 智能字典生成
不要用通用字典。让 AI 根据目标业务生成业务相关字典:
# 任务
目标:某大型医院(三甲),主域 hospital.com
业务包含:HIS 系统、LIS 检验、PACS 影像、OA、预约挂号、微信公众号、
医保对接、科研平台、教学系统。
# 要求
生成 300 个高概率子域名前缀(中英文),按业务模块分组,
标注每个前缀的推测用途。优先输出医疗行业常见命名习惯。
AI 会产出 his、lis、pacs、yiyuan、guahao、yibao、ky(科研)、jwc(教务)这类通用字典里没有的前缀。
4.2 结果智能归类
跑完爆破后,把结果丢给 AI 聚类:
# 输入
以下是从目标收集到的 1200 个子域名(附 HTTP 标题、状态码、IP)
# 任务
1. 按业务系统聚类(门户/后台/API/测试环境/文档站)
2. 标记"高价值目标":含 admin/后台/测试/未授权接口特征
3. 标记"疑似不属于本单位"的域名(外包、供应商)
4. 输出 Markdown 表格,按价值排序
这一步把原始数据变成可执行的目标清单,价值极高。
五、把测绘做成自动化流水线
用 MCP 把工具串起来,让 LLM 编排:
# 伪代码:MCP 驱动的资产测绘 Agent
steps = [
("subfinder", "-d {domain} -all"),
("httpx", "-l {subs} -title -status-code -tech-detect"),
("fofa_api", "domain=\"{domain}\""),
("ai_analyze", "聚类并输出高价值目标"),
]
for tool, args in steps:
result = call_mcp_tool(tool, args.format(**ctx))
ctx[tool] = result
ctx["summary"] = llm.summarize(ctx) # 每步让 AI 压缩上下文
关键设计:每步结束让 AI 压缩结果,否则上下文很快爆掉。
六、容易被忽略的 AI 测绘角度
- ICP 备案反查:让 AI 从备案号提取主体,反查同主体下所有域名
- SSL 证书 SAN 字段:AI 解析证书里的所有域名,常含未公开资产
- 招聘信息 OSINT:目标企业的 JD 里会暴露内部系统名称("熟悉 XX 系统者优先")
- GitHub 泄露:让 AI 分析目标组织的仓库,找硬编码域名和 IP
- 微信公众号/小程序:小程序包里的接口域名往往没做资产梳理
七、Must-have:结果去重与验证
AI 生成的资产清单必须验证:
# 用 httpx 批量验证存活 + 抓标题
cat subs.txt | httpx -silent -title -status-code -tech-detect \
-o verified.txt
# 用 AI 判断哪些标题是"默认页/错误页"(应剔除)
AI 判断"这个标题是真实业务页还是 Nginx 默认页"的准确率很高,能省掉大量人工筛选。
八、小结
资产测绘是 AI 落地渗透测试最成熟的场景:它本质是一个"大量数据 + 模式判断"的任务,正好落在 AI 的甜蜜区。 但记住两条:
- AI 生成的资产清单必须实测存活验证
- 归属判断(是否属于目标)最终要人工确认,这是法律边界
下一篇:用 AI 辅助 Fuzz,生成高质量 Payload。
系列文章:AI 渗透测试与漏洞挖掘实战