子域名接管与邮件安全:SPF/DKIM 失陷面实战
一、什么是子域名接管
当组织删除某个云资源(CDN 桶、SaaS 实例、托管页面)却忘记清理指向它的 CNAME 记录时,该 DNS 记录便成为"悬空记录(dangling DNS)"。若攻击者抢注/认领了同名云资源,便能完全控制该子域名——这就是子域名接管(Subdomain Takeover)。DNS 术语见 RFC 9499《DNS Terminology》。
二、为何它直接威胁邮件安全
多数企业 SPF 记录以 include: 引入整个发送域或某段基础设施。一旦某个被接管的子域(如 mail.sub.example.com)仍属于父域的信任边界,攻击者可:
- 绕过 SPF 对齐:以合法父域身份从该子域发信,SPF 检查通过。
- 复用有效 DKIM 选择器:若旧 DKIM 私钥/选择器未回收,签名仍被信任,DMARC 对齐成立。
- 投递欺骗邮件:DMARC 因"对齐"而放行,传统基于域名的检测完全失效,钓鱼/BEC 邮件堂而皇之地进入收件箱。
三、检测清单
| 动作 | 要点 |
|---|---|
| 子域枚举 | 定期枚举全量子域,与资产台账比对,识别无人认领者 |
| 悬空 CNAME 识别 | 扫描指向已释放/未知云资源的 CNAME(NXDOMAIN 或云默认页是强信号) |
| 生命周期同步 | 云资源下线流程必须包含"同步删除 DNS 记录"的强制步骤 |
| 持续监控 | 对外部托管子域做 DNS 变更告警,防止悄然被认领 |
四、防护要点
- 收紧 SPF:避免
include:过大域;对不再使用的发送源及时从 SPF 移除。 - DKIM 选择器治理:密钥轮换时彻底吊销旧选择器,资源下线即废私钥。
- DMARC 设 p=reject:即便个别对齐被绕过,拒绝策略也能兜底拦截未对齐邮件。
- 子域专属策略:为关键子域配置独立 SPF/DKIM/DMARC,缩小单点失陷面。
- DNS 变更审批:CNAME/NS 变更纳入审批与审计,杜绝"资源删了记录还在"。
五、事件响应
一旦发现接管:① 立即删除/改指 dangling 记录;② 吊销相关 DKIM 私钥并轮换选择器;③ 复核 SPF 是否仍包含该资产;④ 排查该子域历史发出的邮件是否涉钓鱼;⑤ 通知下游(客户/合作方)提高警惕。子域名接管是"基础设施卫生"问题,治理核心在于DNS 与云资源生命周期的强一致。
