工作来源

S&P 2022

工作背景

域名过期后就可以更改所有权,其历史信誉会转移给域名新所有者。所有依赖域名解析的客户端都容易产生残留信任流量,从 JavaScript 库到系统更新甚至是最终用户。甚至是被安全研究人员或者相关执法机构水坑的恶意域名最终也会过期,重新注册后即可用于恢复休眠的僵尸网络。滥用域名历史信誉可能会危及网络空间整体安全,损害很多用户的隐私。

域名注册的整个生存周期此前已经有过多篇文章进行论述了,这里不再赘述。详情可以参看 USENIX Security 2017 的《Game of Registrars: An Empirical Analysis of Post-Expiration Domain Name Takeovers》中做了完整的讨论:

简言之,通用顶级域名下注册的域名需要遵循 ICANN 的过期注册恢复政策(ERRP)。政策要求在域名过期前最多一个月,注册商要通知域名所有者两次;在域名过期后五天内注册商要通知所有者一次。确认域名过期后,正式进入赎回宽限期,宽限期结束后五天就可以重新公开注册了。

如果攻击者购买了已经过期的域名,就能够接管所有客户端发起的通信,包括 HTTPS 在内的技术都不能保持机密性。HTTP 公钥固定(HPKP)虽然能够判断服务器公钥改变,但因为使用困难目前已经被弃用。

攻击者可以尝试构建与先前域名同样的服务,在与客户端的交互中收集更多信息,包括 IP 地址、地理位置、设备指纹与用户凭据等。

过往的研究集中在域名抢注上,那些“看起来”就有价值的域名。为此,Dropcatcher 甚至在几秒钟之内愿意花费数十万美元抢注这些域名。与其同时,先前的研究都是先确定分析目标,比如浏览器扩展、恶意软件、CSP 策略等,属于自下而上的分析。本文采取的方式是自上而下,用类似攻击者的视角。

工作设计

整体系统架构如下所示:

  • 域名选择模块对 Domainmonster、DynaDot、NameJet、Pool 和 SnapNames 进行查询,获取即将到期的域名列表,从中选择目标域名进行注册。
  • 部署模块在主机上创建一个新容器并分配对应的 IP 地址,并对应创建 DNS Nameserver,使用 wildcard DNS 捕获对所有子域名的请求。创建配置相同、位于同一 IP 地址范围内、不与任何域名绑定的容器作为一般对照,并使用这些流量(这部分流量并非由于历史信誉产生的残余信任而来)进行过滤。监听常见服务端口的流量,包括 HTTP、HTTPS、SSH、Telnet 和 FTP。其中,HTTP/HTTPS 服务会收集浏览器指纹、HTTPS 服务使用 Let‘s Encrypt 的证书、SSH 服务使用中交互蜜罐、Telnet/FTP 服务使用低交互蜜罐。
  • 日志收集与流量分析模块对容器和蜜罐服务的日志进行收集,并且收集数据包的前 64 个字节。在后端进行深入分析

来自垃圾邮件、搜索引擎爬虫、漏洞扫描攻击的自动流量是需要被过滤掉的,通过黑白名单、请求特征等方法进行区分。例如在 HTTPS 流量上的过滤如下所示,图中 placebo 即为来自一般对照组的流量:

  • 构建自动流量可能会请求但用户浏览器不会请求的某些资源,如1×1大小的图片、HTML 注释、使用 JavaScript 加载页面后动态删除的内容、不显示的元素、从父级继承不可见属性的元素。自动流量不可能绕过所有这些“陷阱“,就连谷歌的爬虫也会触发陷阱,会被标记为 bot-path。
  • 使用扩展了 IP 定位功能的 FingerprintJS 进行指纹获取,一共从 5.2 万个 IP 地址上发现了将近 100 万个指纹,被标记为 bot-fingerprint 与 user-fingerprint。
  • 根据请求特征判断漏洞攻击(如路径遍历、CVE 等)、后门访问(如 /shell.php)、指纹识别、备份文件(/wp-config.old)等。
  • 手动整理域名下挂路径,被标记为 residual-path。
  • 使用 FireHOL、DNSBL(共计 52 个,包括 Spamhaus、SORBS 和 Barracuda Central)等黑名单。
  • 根据 Mirai 在数据包中的特点(TCP 序列号为 IP 地址,如 0x48c1af41 为 72.193.175.65),被标记为 mirai。
  • 区分凭证爆破和错误重试。


工作准备

使用 Farsight PDNS 数据库作为数据来源。根据域名过期前、活跃时解析次数来判断域名是否值得注册,而非与 Dropcatcher 相同的标准。

进行小规模实验评估确认:① 确定有价值的过期域名会接收到残余信任流量是否存在。② 判断域名是否有价值的 DNS 解析量级阈值。

2019 年 6 月 13 日在被弃用的两万个域名中按照 DNS 解析量进行排序,选择 10 个大流量域名、10 个小流量域名在公开注册后的数个小时后(确认)重新注册。还有 10 个不绑定域名的组为一般对照组,每组都放置在同一个 C 段子网中。

小流量组和一般对照组的流量差不多,不论 IP 与域名是否存在绑定关系,流量差别不大。但大流量组相比其他两组的流量则高出两倍还多,这说明即使是 Dropcatcher 认为无用的域名,仍然有大量不清楚域名所有权变更的第三方还在依赖。

2019 年 6 月 20 日对被弃用的域名 DNS 解析总量(A、NS、MX 和 SOA 记录)进行跟踪,比较域名过期时的解析量与重新注册后两周的解析量。

可以发现,重新注册后的解析量一般比过期前低一个数量级。筛选的阈值可以定在过期前解析量在 100 万的域名,这样保证在重新注册后解析量能过万。与此同时,限定顶级域名为 .com、.net、.org、.info 和 .biz。

工作评估

测试阶段注册了 29 个域名,在正式阶段从 2019 年 8 月 8 日开始注册了 172 个域名。由于查询配额限制,前 20 天随机选取域名进行查询,后 10 天查询所有域名。

手动过滤如 vvol1kans.com、vvol1ccan.com 等相似的域名,只选流量最大的域名。正式阶段确定了 550 个感兴趣的域名,其中 321 个域名(58%)与其他高度相似被排除在外,57 个域名(24%)无法注册,其余 172 个被顺利注册。

2019 年 8 月 1 日至 2019 年 12 月 1 日,四个月内通过 201 个域名收集了来自 22744 个自治系统的 5540379 个 IP 地址发起的 650737621 个请求。各服务分布情况如下所示:

流量较少的一般对照组和流量较少的域名的 IP 地址数量相仿,流量较多的域名要比流量较多的一般对照组多一个数量级以上。

不只是一般对照组与域名组之间存在差异,域名本身之间也存在巨大差异。对数据包来说,流量最大的服务是 tianxingmeng.com,接收到大量的 6600/8000 端口流量。对日志来说,ipv6tracker.org 收到的服务请求最多,此前其 80 端口部署了一个种子跟踪服务。

统计每个容器流量最多的五个端口(有序),查看每个容器间入站流量端口的加权 Jaccard 相似度,颜色越深表示两个容器间的入站流量端口序列越相似。

一般对照组容器常见端口为 [22,80,23,25,2222],A 点的常见端口为 [23,22,445,80,8089] 这应该是个个例,仅此一例。B 点为安全公司曾经使用的水坑域名,C 点为一个大流量 DNS 服务器,D 点为接收 8000 和 6600 端口大量流量的两个域名。

缺乏服务和交互并不影响某些客户端的请求,非蜜罐的服务中既包含 DNS/SMTP 的标准化端口,也包括替代 HTTP 的 8000 端口等。

选中的 201 个域名中,20.9% 是赌博网站,16.42% 与犯罪有关(贩卖违禁药品、C&C 服务器等)。

大多数域名都没有大量的 trust 流量,标记为 bot 和 trust 的累积分布函数是对称的。

在 HTTP/HTTPS 流量中至少 50.88% 的 IP 地址不知道所有权发生变化,将流量发送到新服务。大约 43.59% 的 IP 地址表现出类似 Bot 的行为,5.82% 不能归类。

统计每日独立 IP 数量如下所示,可见在很多域名过期后几个月内仍然有很多流量持续请求且不随着时间的推移而衰减,例如labstats.go 等。而有些域名在过期后流量只持续了一段时间,例如 新闻网站 paratrok.info 等。

案例研究一

下图是 trust 流量比例较高的域名情况:

  • ipv6tracker.org 是一个 torrent tracker,产生了非常大量的数据,甚至导致后端在九月初出现了中断。出于资源与性能考虑,后续停用了该服务。运行时,每天的请求超过 700 万次。来自各种客户端,如 uTorrent、BitTorrent 和 qTorrent。控制这样一个访问量巨大的来源,有可能会影响超过 250 个 IP 地址。
  • labstats.go 是一个跟踪学生使用计算机实验室资源的平台,有一千多所大学使用该平台的服务。fgmail.com 是一个电子邮件跟踪工具。avantmobile.com 是一个用户安卓平台的 API,似乎被多个安卓应用程序所使用。对这些域名的控制很有可能会产生隐私泄露。
  • facecommute.com 此前被当作 C&C 服务器,请求的路径包括 /bots/{log,install-failure,update additional-data} 和 /api/{poll,log}。另一个域名 gbox-data.net 与名为 Guardbox 的恶意家族有关。获取域名的控制权可以以较低的成本接管僵尸网络。

案例研究二

下图为大流量非蜜罐服务的统计情况:

  • 其中两个 Name Server 还曾经归属于一个与许多运营商签约阻断 DoS 攻击的安全公司。
  • 水坑通常用于接收失陷主机与 C&C 服务器的请求。
  • tianxingmeng.com 此前为一个互联网广播平台,控制该域名可以对内容进行操纵。
  • ctnetload1.com 上部署了一个 JavaScript 文件,被多个加密货币博客使用。包括 smartereum.com、forklog.media 与 profitgid.ru,甚至在重新注册后六个月仍在使用。

工作思考

研究人员展示了一种低成本的攻击方式,通过 Passive DNS 识别有价值但被弃用的域名,注册这 201 个域名只需花费 1464.64 美元。但这种潜在的攻击方式实际上可能并不会有在野利用,看情况其实主要的问题还是偏重在隐私泄露和虚假信息上,而实际能造成控制的攻击场景构造起来似乎相当困难。

从防御的角度来说,应当根据 ICANN 的域名过期处理规范,在域名解析停止三十天后再开放注册。这样也可以留出缓冲时间,让残留信任的流量降下来。