子域名接管与邮件安全:SPF/DKIM 失陷面实战

邮件安全运营 · 域名基础设施 · OWASP

一、什么是子域名接管

当组织删除某个云资源(CDN 桶、SaaS 实例、托管页面)却忘记清理指向它的 CNAME 记录时,该 DNS 记录便成为"悬空记录(dangling DNS)"。若攻击者抢注/认领了同名云资源,便能完全控制该子域名——这就是子域名接管(Subdomain Takeover)。DNS 术语见 RFC 9499《DNS Terminology》。

二、为何它直接威胁邮件安全

多数企业 SPF 记录以 include: 引入整个发送域或某段基础设施。一旦某个被接管的子域(如 mail.sub.example.com)仍属于父域的信任边界,攻击者可:

  1. 绕过 SPF 对齐:以合法父域身份从该子域发信,SPF 检查通过。
  2. 复用有效 DKIM 选择器:若旧 DKIM 私钥/选择器未回收,签名仍被信任,DMARC 对齐成立。
  3. 投递欺骗邮件:DMARC 因"对齐"而放行,传统基于域名的检测完全失效,钓鱼/BEC 邮件堂而皇之地进入收件箱。

三、检测清单

动作要点
子域枚举定期枚举全量子域,与资产台账比对,识别无人认领者
悬空 CNAME 识别扫描指向已释放/未知云资源的 CNAME(NXDOMAIN 或云默认页是强信号)
生命周期同步云资源下线流程必须包含"同步删除 DNS 记录"的强制步骤
持续监控对外部托管子域做 DNS 变更告警,防止悄然被认领

四、防护要点

  1. 收紧 SPF:避免 include: 过大域;对不再使用的发送源及时从 SPF 移除。
  2. DKIM 选择器治理:密钥轮换时彻底吊销旧选择器,资源下线即废私钥。
  3. DMARC 设 p=reject:即便个别对齐被绕过,拒绝策略也能兜底拦截未对齐邮件。
  4. 子域专属策略:为关键子域配置独立 SPF/DKIM/DMARC,缩小单点失陷面。
  5. DNS 变更审批:CNAME/NS 变更纳入审批与审计,杜绝"资源删了记录还在"。

五、事件响应

一旦发现接管:① 立即删除/改指 dangling 记录;② 吊销相关 DKIM 私钥并轮换选择器;③ 复核 SPF 是否仍包含该资产;④ 排查该子域历史发出的邮件是否涉钓鱼;⑤ 通知下游(客户/合作方)提高警惕。子域名接管是"基础设施卫生"问题,治理核心在于DNS 与云资源生命周期的强一致