2025 年 2 月,美国 CDC 的域名下突然冒出一堆指向色情片的 URL,搜索结果里还挂着 CDC 的"官方信誉"。不是 CDC 网站被人攻破,而是他们一个早被遗忘的 Azure 子域名,被一个叫 Hazy Hawk 的团伙悄悄接管了。
真正的漏洞不在 Web 服务器,而在 DNS 里那条没人记得的 CNAME 记录。
---
这不是我第一次见这类问题。干基础设施这行的人都清楚:DNS 是最容易"烂尾"的地方——域名注册、DNS 托管、业务资源可能分属三四个团队,业务下线了,DNS 记录没人清。Hazy Hawk 干的,就是专门去翻这些"没人记得的记录"。
本文把这套攻击链从里到外拆一遍:CNAME 悬挂记录怎么来的、为什么云资源劫持比经典域名劫持难得多、一条恶意 URL 从生成到落地要经过多少层跳转,以及运维到底该怎么堵。
---
一、先搞清楚:CNAME 和"悬挂记录"
CNAME(Canonical Name)是一条把"别名"指向"真实名字"的 DNS 记录。你在自己域名下配一个子域,告诉解析器:something.yourdomain.com 的内容,实际在 another.cloud.com 上找。
cdn.yourdomain.com. IN CNAME cdn-xxx.azureedge.net.
CDN、云服务、负载均衡都爱这么干,因为这样你可以只改云端资源,不用动 DNS。
当 CNAME 指向的资源不存在了,这条记录就成了"悬挂记录"(dangling DNS)。 理论上,业务下线时应同步删掉 CNAME;现实中,大量组织根本做不到。于是攻击者只要把这个"失踪的资源"重新创建出来,就能接管那条子域名。
---
二、为什么云资源劫持,比"注册个域名"难得多
经典 CNAME 劫持其实很"简单":CNAME 指向一个没人注册的域名。这时 DNS 会返回 NXDOMAIN——查询这个域名说"不存在"。攻击者花几美元把它注册下来,就接盘了。Guardio 报告过的 marthastewart[.]msn[.]com 劫持就是这条路。
但云资源劫持完全不是一回事:
- 多数云厂商对"已删除的资源"不返回 NXDOMAIN,而是返回一个 IP。 你以为还在线,其实资源早就没了。
- 每家云厂商的处理方式都不一样,有的甚至专门做了防劫持机制(比如 Azure 对删除的 App Service 有域名校验保护)。
- 想在海量 DNS 数据里挑出"悬挂但还能利用"的记录,靠公网探测根本做不到,必须有大规模的 passive DNS 数据配合人工验证。
---
三、完整攻击链拆解
用他们劫持 CDC 的例子走一遍:ahbazuretestapp[.]cdc[.]gov 这条子域名,CNAME 指向一个早被 CDC 丢弃的 Azure 站点 ahbdotnetappwithsqldb[.]azurewebsites[.]net。攻击者注册一个 Azure 账号、用同名建一个站点,这条子域名就姓"哈"了。
接管只是第一步,真正赚钱的是后面的分发链条:
被劫持的著名子域名
│ 托管大量恶意 URL
▼
URL 伪装 / 混淆(隐藏真实云资源名)
│
▼
第一跳:二次跳转(被劫持的 js.org / Blogspot / 短链服务)
│
▼
进入 TDS(流量分发系统)——按设备/地区/是否VPN 动态路由
│
▼
落地页:各类诈骗 / 假 APP / 假视频
│
▼
诱导"允许推送通知" → 成为长期骚扰的入口
我按这个链逐层讲。
1. 托管大量 URL,先隐藏真实资源
接管子域名后,他们在上面生成海量 URL,靠搜索引擎把这些 URL 顶到结果页前列——因为这些 URL 挂在 CDC、伯克利、德勤这些域名下,天然带着"信誉加成"。
关键是他们还会混淆 URL,不让你轻易看到劫持的是哪块资源。一个典型手法(AWS S3 场景):
- 直接写法:
https://oercommons[.]s3[.]amazonaws[.]com/<参数> - 混淆写法:
https://s3-ap-southeast-2[.]amazonaws[.]com/oercommons/<参数>
2. 第一跳:再过一个域名
恶意 URL 通常不会直接进落地页,而是先跳一次。中间跳转域可能是:
- 另一个被劫持的著名子域。比如法国奥运官网(巴黎奥运会结束后下线,DNS 记录没删)被接管,把访问者引到
share[.]js[.]org/watch/。js[.]org 是给 JS 开发者提供免费主页的服务,其子域通常指向开发者的 GitHub 仓库。share这个子域原本属于一位中国开发者 Jeff Tian 的 WeShare 工具,2024 年 11 月被不明渠道接管,变成钓鱼跳板——直到 2025 年 1 月 js[.]org 维护者发现页面内容变成了 "Sports-News powered by WordPress"。 - Blogspot 的废弃页面。很多 CDC URL 的第一跳是
chesta-korci-bro[.]blogspot[.]com这样的 Blogspot 子域,这些页面在被动 DNS 里只比攻击活动早出现一个月。 - 公开短链服务:t[.]co(原 Twitter)、TinyURL、Bitly、Cuttly 都可能被用作中间跳。
3. 进 TDS:按访客"分诊"
真正决定你去哪的是 TDS(Traffic Distribution System,流量分发系统)。它会根据设备类型、地理位置、IP 信誉来动态路由:
- 从 VPN / 代理访问?直接弹"检测到匿名代理"并拦截。
- 从住宅 IP 访问?根据设备与地区,把人引导到不同的诈骗内容。
- 有人第一次访问进了诈骗页,第二次却看到亚马逊购物页——这就是 TDS 在动态切换,最大化"转化率",同时躲避安全厂商的探测。
4. 落地页:拿别人的页面当"皮肤"
落地页也讲究。他们早期直接克隆纽约时报等真实网站的 HTML 当首页,骗过内容爬虫(但骗不过真人)。后来学聪明了,会模仿被劫持公司自己的官网——劫持了 Honeywell 的子域,就做一个仿 Honeywell 的页面,聊恒温器、智能家居。
至于"视频"诈骗页,模板是直接抄 PBS[.]org 的:连 JS 库、样式表、字体都从 pbs[.]org 原站加载(这反而暴露了它借用了合法站点)。但有意思的是,他们不抄 PBS 的视频播放器——因为那些"视频"压根是带播放按钮的模糊图片,根本不需要真播放器。
5. 收网:推送通知 = 长期"提款机"
到这还没完。进入骗局前,页面会弹一个"允许推送通知"的请求,很多人稀里糊涂点了允许。一旦同意,浏览器就会持续收到推送——每条推送都是一个新骗局入口。
这正是广告联盟的商业模式:推送变现(push monetization)的推广返佣高达 70%–90%。对攻击者来说,一条 URL 只能骗一次;拿到推送权限,就拿到了一条长期可反复触达受害者的通道。CDC 劫持里能看到 RollerAds、MoneyBadgers 等不同团伙在背后推送反病毒、技术支持等诈骗通知。
---
四、规模与动机:这是"门"生意,不是"黑客炫技"
Hazy Hawk 至少从 2023 年 12 月就在活跃,受害者覆盖全球政府、大学、医疗与大型企业——阿拉巴马州政府、澳大利亚卫生部、CDC、伯克利、UCL、德勤、安永、普华永道、TED……(完整 SLD 列表见文末指标附录)。
最讽刺的一点:他们拿这些"高信誉域名",干的却不是间谍活动或"高级"网络犯罪,而是广告联盟下面的灰色骗局生意。FBI 2023 年《老年人诈骗报告》显示,美国 60 岁以上人群一年因这类诈骗损失超 34 亿美元。这说明广告联盟返佣的钱足够多,多到值得一个技术相当老练的团伙,费尽心思去挖那些极难发现的悬挂记录。
---
五、防护:运维视角怎么堵
Hazy Hawk 的受害者分两类:被劫持的域名所有者,和点进恶意链接的用户。防护也分两层。
对域名所有者:把 DNS 当"资产"管理
这是老徐最想强调的:DNS 不是配好就不管的东西,它是要维护的资产。 尤其是并购之后,两边项目、域名注册、DNS 记录可能各管各的,最容易留下悬挂记录。
- 下线即删:任何云资源(S3 桶、Azure App Service、CDN、负载均衡)下线时,强制走一个"同步清理 CNAME"的流程,最好有自动化检测在资源下线时触发提醒。
- 追踪活跃资源:维护一份"云资源 ↔ DNS 记录"的对应清单,定期对账,确认每个 CNAME 指向的资源都还活着。
- 悬挂记录检测:用 passive DNS / 安全平台定期扫自己域下的悬挂 CNAME。
对终端用户:靠 DNS 层拦截 + 常识
- 用防护型 DNS(protective DNS)是性价比最高的解法。TDS 攻击者会频繁换域名,但只要威胁情报能识别和追踪 TDS 的关联域名体系(Infoblox 自己的威胁情报就是这么做的),换域名也逃不掉封堵。
- 别乱点"允许通知"。不明网站的推送权限一律拒绝;已经中招的,去浏览器设置里关掉该站点的通知。
结语
Hazy Hawk 的价值,不在于它把某个安全漏洞"打得有多漂亮",而在于它把一条藏在日常里的攻击路径讲透了:DNS 的悬挂记录,是很多组织从不设防的后门。 这类攻击不需要多精妙的 0day,只需要你有一堆"没人记得的资源"和"没人清理的记录"。
干运维的人都懂一句话:系统下线不是结束,把 DNS 记录也清干净才是结束。 下次当你看到某个没人用的子域名还解析到某个云服务时,想想 Hazy Hawk——那条记录可能正在给某个骗局开路。
---
附录:Hazy Hawk 指标(IOC)摘录
以下来自 Infoblox 公开报告,被劫持的 SLD 本身是合法域名,故不列出具体被劫的子域。
被劫持的二级域名(部分):
cdc[.]gov、alabama[.]gov、health[.]gov[.]au、berkeley[.]edu、ucl[.]ac[.]uk、dignityhealth[.]org、deloitte[.]com、ey[.]com、pwc[.]com、ted[.]com、honeywell[.]com、intel[.]com、stanford[.]edu、utexas[.]edu、usopen[.]com、unicef[.]org、wiley[.]com …
利用的云服务: Akamai、AWS EC2/S3/Elastic Beanstalk、Azure、Bunny CDN、Cloudflare CDN、GitHub、Netlify
第一跳跳转域(部分): chesta-korci-bro[.]blogspot[.]com、share[.]js[.]org
TDS 域名(部分): accomodateyours[.]com、viralclipnow[.]xyz、acceleratetomb[.]xyz、impliednauseous[.]xyz
推送通知请求域(部分): dankdigs[.]com、hotnewrumor[.]com、encryptalert[.]com
恶意落地页域名(部分): ferigs[.]xyz、edygik[.]org、cleanupharm[.]com、movie[.]rssnews[.]media
> 完整 IOC 见 Infoblox 的 GitHub 仓库。本文为技术拆解与解读,不构成对原文的替换。
点评与讨论
GITHUB 账号登录有疑问、有补充、有不同看法?欢迎留下你的点评,一起把技术聊透。👇