第8章 阶段7:输出与监控
本篇定位:子域名挖掘流程的最后一个阶段。前面六步是一次性挖掘——从准备到 HTTP 探测,拿到一份资产清单。但子域名不是静态的——目标天天在上线新服务、下线旧服务、变更 IP。一次挖掘的成果会过期。这一步把成果变成"持续跟踪的资产清单"。
阅读建议:如果你搭过资产监控流水线,可以跳到 8.3 差异对比看变更检测方法。如果是新手,按顺序读——8.1 到 8.3 是输出与监控的三道工序,缺一不可。
8.0 方法论框架
输出与监控在全局流程里的位置:
阶段6:HTTP 探测(带价值分级的子域列表) ──→ 【阶段7:输出与监控】 ──→ 闭环 │ ├── 结果归档(结构化资产清单) ├── 定期复扫(重跑流程,发现变化) ├── 差异对比(新增/下线/变更) └── 自动化流水线(定时任务+脚本+告警) │ └── 新增子域 → 回流到阶段2(重跑被动发现)什么是输出与监控
输出与监控(Output and Monitoring),指的是把一次性挖掘的成果归档为结构化资产清单,定期重跑挖掘流程,对比新旧清单发现变化,持续跟踪目标的攻击面。
为什么不是终点
| 子域的变化 | 频率 | 后果 |
|---|---|---|
| 新上线 | 天/周 | 攻击面扩大——新服务可能有新漏洞 |
| 下线 | 周/月 | 旧资产可能被接管——悬挂 DNS |
| IP 变更 | 月 | 原 IP 失效,新 IP 要重新评估 |
| 状态码变更 | 天/周 | 原本 404 的变 200——新服务上线 |
关键认知:一次挖掘的成果是"快照"——记录了某个时间点的攻击面。快照会过期。持续监控的价值是"发现变化"——新上线的子域往往是高价值目标(新服务、新漏洞),下线的子域可能有接管风险。
一次挖掘 vs 持续监控
| 对比 | 一次挖掘 | 持续监控 |
|---|---|---|
| 目标 | 拿到全量资产清单 | 跟踪攻击面变化 |
| 频率 | 一次性 | 定期(周/月) |
| 输出 | 资产清单 | 差异报告 |
| 价值 | 知道"现在有什么" | 知道"新增了什么、下线了什么" |
三个环节概览
监控的本质
关键认知:监控是整个流程的闭环。前面六步是线性的——从准备到 HTTP 探测,走一遍就结束。监控把线性流程变成循环——每次复扫发现新子域,新子域回到阶段2重跑被动发现,又可能发现更多——流程是循环的,不是一次性的。
8.1 结果归档
前置知识
资产清单概念
资产清单(Asset Inventory)是一份结构化的记录,列出目标的所有已知资产——子域名、IP、服务、价值等级。它的作用是"当前状态的基准线"——没有基准线,无法判断什么是"新增"的。
是什么
把前六步的成果整理成结构化的资产清单,作为后续差异对比的基准。
为什么
没有归档的结果会散乱、丢失、无法对比。前六步跑完,你可能有一份子域列表、一份 IP 列表、一份价值分级——但如果字段不统一、格式混乱、分散在多个文件里,下次复扫后没法对比。
怎么做
第一步:字段规范
资产清单的字段分四类(完整字段表见流程总结):
| 类别 | 包含字段 | 说明 |
|---|---|---|
| 基础信息 | 子域名、根域名、发现来源、发现时间 | 子域的身份证 |
| DNS 信息 | A 记录 IP、CNAME 链、NS 记录 | 子域的 DNS 状态 |
| HTTP 信息 | 协议、状态码、标题、响应体大小 | 子域的 HTTP 状态 |
| 价值信息 | 价值等级、风险标注、建议动作 | 子域值不值得打 |
第二步:格式选择
| 格式 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| CSV | 简单、Excel 能开 | 不支持嵌套 | 小规模、人工查看 |
| JSON | 支持嵌套、程序友好 | 体积大 | 自动化处理 |
| 数据库 | 可查询、可对比 | 要搭建 | 大规模、长期监控 |
第三步:分级标注
把 HTTP 探测的价值分级写入清单:
| 等级 | 标注 | 处理优先级 |
|---|---|---|
| 高价值 | 重点跟踪 | 优先处理 |
| 中价值 | 常规跟踪 | 常规处理 |
| 低价值 | 定期检查 | 低频处理 |
| 信息价值 | 记录 | 不处理 |
| CDN 后 | 标注 CDN | 需绕过处理 |
第四步:去重合并
多源结果合并去重——同一个子域从多个方法发现,合并为一条记录:
| 子域 | 来源 | 合并后 |
|---|---|---|
api.example.com | CT, 搜索引擎, 字典爆破 | 来源=CT+SE+爆破 |
技巧
| 技巧 | 做法 | 价值 |
|---|---|---|
| 标准化字段 | 所有子域用统一的字段名和格式 | 下次对比时能自动匹配 |
| 时间戳记录 | 每条记录标注发现时间和最后验证时间 | 区分历史数据和当前数据 |
| 来源追溯 | 记录每个子域从哪些方法发现的 | 评估可信度 |
| 历史数据保留 | 旧清单不删——存档 | 用于长期趋势分析 |
注意事项
| 事项 | 说明 |
|---|---|
| 字段不统一难对比 | 这次用subdomain,下次用host——对比不了 |
| 历史数据要保留 | 不要用新清单覆盖旧清单——存档保留 |
| 敏感信息脱敏 | 资产清单可能包含敏感信息——分享时脱敏 |
| 去重不要过度 | 同一子域不同 IP 都要保留(负载均衡) |
8.2 定期复扫
前置知识
攻击面变化概念
目标的攻击面不是静态的,它在持续变化:
| 变化类型 | 触发场景 | 频率 |
|---|---|---|
| 新上线 | 新服务部署、新域名解析 | 天/周 |
| 下线 | 旧服务下架、域名删除 | 周/月 |
| IP 变更 | 服务器迁移、CDN 调度 | 月 |
| 状态码变更 | 服务恢复/故障、配置修改 | 天/周 |
是什么
定期重跑挖掘流程(阶段2-6),发现新增和变更的子域。
为什么
一次挖掘的成果是快照,会过期。目标天天在上线新服务、下线旧服务。新上线的子域往往是高价值目标——新服务可能有未修复的漏洞。下线的子域可能有接管风险——悬挂 DNS。
怎么做
第一步:扫描频率
| 频率 | 适合目标 | 资源消耗 |
|---|---|---|
| 周级 | 高价值目标、频繁更新的业务 | 高 |
| 月级 | 常规目标 | 中 |
| 季度级 | 低频更新的目标 | 低 |
建议分级设定频率——高价值目标周级,中价值月级,低价值季度级。
第二步:扫描范围
| 范围 | 做什么 | 资源消耗 |
|---|---|---|
| 全量扫描 | 重跑完整的阶段2-6 | 高 |
| 增量扫描 | 只跑被动发现(阶段2)+ DNS 清洗(阶段5) | 低 |
建议增量优先——先用低成本的方法发现新增,再对新增的做完整流程。
第三步:扫描流程
定期复扫流程: 1. 重跑阶段2(被动发现)→ 拿到新清单 2. 和旧清单对比 → 发现新增子域 3. 对新增子域跑阶段3-6 → 拿到价值分级 4. 对旧清单做 DNS 清洗(阶段5) → 确认旧子域是否仍存活 5. 更新资产清单第四步:资源规划
| 资源 | 月级扫描消耗 | 周级扫描消耗 |
|---|---|---|
| 时间 | 2-4 小时 | 每周 1-2 小时(自动化后) |
| API 配额 | SecurityTrails 50次/月 | 要升级或分摊 |
| 带宽 | HTTP 探测的请求量 | 同上 |
| DNS 查询量 | 字典爆破的查询量 | 同上 |
技巧
| 技巧 | 做法 | 价值 |
|---|---|---|
| 分级扫描频率 | 高价值周级,低价值季度级 | 资源集中到高价值目标 |
| 增量优先 | 先跑被动发现看有没有新增 | 低成本发现变化 |
| 自动化流水线 | 搭自动化定时任务 | 不用人工触发 |
| 资源预算 | 预留 API 配额给定期扫描 | 避免一次挖掘用完配额 |
注意事项
| 事项 | 说明 |
|---|---|
| 配额限制 | 第三方 API 有月度配额——要给定期扫描预留 |
| 扫描时机 | 避开目标业务高峰期——减少影响 |
| 目标感知 | 定期复扫会增加被发现的概率——频率越高越明显 |
| 资源平衡 | 扫描频率和资源消耗要平衡——不要为了全覆盖耗尽资源 |
8.3 差异对比
前置知识
差异检测概念
差异检测(Diff)是对比两份数据,找出不同部分。在子域名监控里,Diff 对比新旧两份资产清单——新清单(这次扫描结果)和旧清单(上次扫描结果)——找出新增、下线、变更的子域。
是什么
对比新旧两份资产清单,找出新增、下线、变更的子域。
为什么
从几百上千个子域里手动找变化不现实。一份完整的资产清单可能有几千条记录——人工对比不可能,要自动化。
怎么做
第一步:新增子域
新清单有、旧清单没有的子域:
| 新清单 | 旧清单 | 结果 |
|---|---|---|
newapi.example.com | 没有 | 新增 |
www.example.com | 有 | 不变 |
第二步:下线子域
旧清单有、新清单没有的子域:
| 旧清单 | 新清单 | 结果 |
|---|---|---|
oldservice.example.com | 没有 | 下线 |
www.example.com | 有 | 不变 |
第三步:变更子域
新旧清单都有、但字段变了:
| 子域 | 字段 | 旧值 | 新值 | 结果 |
|---|---|---|---|---|
api.example.com | IP | 1.2.3.4 | 5.6.7.8 | IP 变更 |
admin.example.com | 状态码 | 401 | 200 | 状态码变更 |
cdn.example.com | CNAME | old.cloudfront.net | new.cloudfront.net | CNAME 变更 |
第四步:差异结果处理
| 差异类型 | 处理 | 去向 |
|---|---|---|
| 新增子域 | 重跑阶段2-6,拿价值分级 | 回流阶段2 |
| 下线子域 | 标注下线,检查悬挂 DNS | 进入阶段5清洗 |
| IP 变更 | 重新评估价值 | 更新清单 |
| 状态码变更 | 重新分级 | 更新清单 |
技巧
| 技巧 | 做法 | 价值 |
|---|---|---|
| 多维度对比 | 不只比子域名,还比 IP、CNAME、状态码 | 发现隐含变更 |
| 变更分级 | IP 变更 vs 状态码变更 vs 新增 vs 下线 | 不同变更优先级不同 |
| 告警阈值 | 新增超过 5 个触发告警 | 避免小变化被淹没 |
| 趋势分析 | 对比多期清单看趋势 | 发现目标的扩张/收缩 |
注意事项
| 事项 | 说明 |
|---|---|
| 通配符干扰差异 | 通配符 DNS 的 IP 可能随机变化——不等于真实变更 |
| CDN IP 变化不等于真实变更 | CDN 调度导致 IP 变化——要看 CNAME 是否变 |
| DNS 缓存影响对比 | 不同 DNS 缓存状态可能导致结果差异——要多 DNS 交叉 |
| 假新增/假下线 | DNS 超时导致误判——要重试验证 |
8.4 自动化流水线
前置知识
自动化流水线概念
自动化流水线(Automation Pipeline)是把"手动做的重复流程"变成"定时自动执行"的机制。三件套:定时任务(触发器)+ 脚本(执行器)+ 告警(通知器)。定时任务到点触发脚本,脚本跑完出结果,有变化时发告警。
是什么
搭建自动化定时任务,定期重跑挖掘流程,有变化时自动告警。
为什么
定期复扫如果手动做很累——每周要手动跑一遍流程、手动对比、手动整理报告。自动化流水线把这三件事变成自动的——人到点不用管,有变化自动告警。
怎么做
三件套:
| 组成 | 做什么 | 工具示例 |
|---|---|---|
| 定时任务 | 到点触发扫描 | cron / GitHub Actions / CI/CD |
| 脚本 | 执行挖掘流程 + 差异对比 | 自定义脚本 / 工具链 |
| 告警 | 有变化时通知 | 邮件 / Slack / 飞书 / Webhook |
流水线流程:
定时任务触发(每周一 09:00) ↓ 脚本执行: 1. 重跑阶段2被动发现 2. 和旧清单对比 3. 对新增子域跑阶段3-6 4. 生成差异报告 5. 更新资产清单 ↓ 告警判断: - 新增 > 5 个 → 发告警 - 高价值新增 > 0 个 → 发告警 - 下线 > 3 个 → 发告警 ↓ 通知发送(邮件/Slack/飞书)技巧
| 技巧 | 做法 | 价值 |
|---|---|---|
| 分级告警 | 高价值新增立即告警,低价值新增汇总周报 | 避免告警淹没 |
| 失败重试 | 扫描失败自动重试 | 避免单次失败导致漏扫 |
| 结果存档 | 每次扫描结果存档 | 长期趋势分析 |
| 工具链组合 | 被动发现工具 + 清洗工具 + HTTP 探测工具 | 各环节用最擅长的工具 |
注意事项
| 事项 | 说明 |
|---|---|
| API 密钥管理 | 流水线里的 API 密钥要安全存储 |
| 扫描超时 | 长时间扫描要设超时——不能无限跑 |
| 告警风暴 | 配置不当会发大量告警——要设阈值 |
| 工具更新 | 工具版本要定期更新——字典和工具过时影响覆盖率 |
8.5 阶段输出
输出1:资产清单
| 类别 | 包含字段 | 说明 |
|---|---|---|
| 基础信息 | 子域名、根域名、来源、时间 | 子域的身份证 |
| DNS 信息 | A 记录 IP、CNAME 链、NS 记录 | 子域的 DNS 状态 |
| HTTP 信息 | 协议、状态码、标题、响应体大小 | 子域的 HTTP 状态 |
| 价值信息 | 价值等级、风险标注、建议动作 | 子域值不值得打 |
完整字段表见流程总结文档。这里只给类别框架。
输出2:差异报告
| 字段 | 说明 | 示例 |
|---|---|---|
| 差异类型 | 新增/下线/变更 | 新增 |
| 子域名 | 变化的子域 | newapi.example.com |
| 旧值 | 上次扫描的值 | 不存在 |
| 新值 | 这次扫描的值 | 200, 标题=API Docs |
| 价值等级 | 新增子域的分级 | 高 |
| 告警 | 是否触发告警 | 是 |
| 时间 | 变化发现时间 | 2026-10-04 |
输出3:监控配置
| 字段 | 说明 | 示例 |
|---|---|---|
| 扫描频率 | 多久扫一次 | 周级 |
| 扫描范围 | 全量/增量 | 增量 |
| 告警规则 | 什么情况告警 | 新增>5 / 高价值新增>0 |
| 通知方式 | 怎么通知 | 飞书 Webhook |
| 上次扫描 | 上次扫描时间 | 2026-09-27 |
| 下次扫描 | 下次扫描时间 | 2026-10-04 |
8.6 与其他阶段的衔接
输出流向与回路
监控是整个流程的闭环
| 闭环 | 做什么 |
|---|---|
| 差异→阶段2 | 新增子域回到被动发现重跑 |
| 差异→阶段4 | 新增子域进入进阶发现做递归 |
| 差异→阶段5 | 下线子域做 DNS 清洗检查悬挂 |
全流程回顾
从准备到监控的完整循环:
阶段1:准备 → 阶段2:被动 → 阶段3:主动 → 阶段4:进阶 → 阶段5:清洗 → 阶段6:HTTP 探测 → 阶段7:输出与监控 → 新增子域 → 回到阶段2(循环)| 阶段 | 做什么 | 输入 | 输出 |
|---|---|---|---|
| 1 准备 | 界定范围、选字典、配环境 | 目标信息 | 根域名+字典+环境 |
| 2 被动 | 零风险找子域 | 根域名 | 子域名列表(60-80%) |
| 3 主动 | 向 DNS 敲门找子域 | 被动结果 | 补充子域名列表 |
| 4 进阶 | 以子域为跳板递归 | 已发现子域 | 新子域+新根域名 |
| 5 清洗 | 把原始数据变可信 | 原始子域列表 | 可信子域+IP 列表 |
| 6 HTTP | 判断存活和价值 | 可信子域列表 | 价值分级清单 |
| 7 输出 | 归档+复扫+对比 | 价值分级清单 | 资产清单+差异报告 |
关键认知:输出与监控不是"做完了就结束",而是"持续跟踪的开始"。一次挖掘给你的是"快照"——某个时间点的攻击面。持续监控给你的是"趋势"——攻击面怎么变化。新上线的子域往往是高价值目标——新服务可能有新漏洞,值得优先关注。
子域名挖掘流程的七个阶段到这里全部讲完。下一篇:踩坑实录——实战中会遇到的陷阱与预防。