2.4 域名系统测量研究综述
0x01 引言
DNS 测量的研究意义在于:
- 观察 DNS 中各组件运行情况, 有助于日常维护工作, 例如权威服务器的性能随时间变化状况 、随地理位置变化情况; 解析器解析选择偏好、持续可用性和有效性 .
- 发现利用DNS 或针对 DNS 的攻击行为, 有助于了解风险发展趋势以制定相应对策, 例如缓存下毒攻击和 DNS 隐匿信道.
- 考察新技术的应用效果, 有助于推动 DNS 持续改进, 例如任播部署方案, DNSSEC 安全扩展方案和 DoT、DoH加密方案
知识点
- DNSSEC(Domain Name System Security Extensions,域名系统安全扩展):允许域名所有者对DNS记录进行数字签名,签名DNS记录的私有签名密钥通常仅由合法域名所有者持有,因此可防止未经授权的第三方修改DNS条目。
- DNSCrypt:OpenDNS发布的加密DNS工具。与SSL将HTTP流量转换为HTTPS加密流量的原理相同,DNSCrypt也是将常规DNS流量转换为加密DNS流量,这样可以防止窃听和中间人攻击。它不需要对域名或它们的工作方式进行任何更改,只是提供了一种方法,安全加密客户端与DNS服务器之间的通信。在一定程度上,DNSCrypt比DNSSEC的保密性更强,因为DNSSEC只做数字签名的校验,而DNSCrypt既能加密DNS流量也能确保完整性。
- DoT(DNS-over-TLS):是一项安全协议,它可以强制所有和DNS服务器相关的链接都使用TLS。基于 TLS 隧道的域名协议,由于 TLS 本身已经实现了保密性与完整性,因此 DoT 自然也就具有这两项特性。DoT通过TLS协议及SSL/TLS证书(如:沃通SSL证书)实现安全加密和身份验证,实现保密性和完整性。工作在853端口,使用TCP作为基本的连接协议。旨在防止中间人攻击与控制DNS数据以保护用户隐私
- DoH(DNS over HTTPS):DNS over HTTPS则使用HTTPS标准端口443。使用HTTPS和HTTP/2进行连接,进行DNS解析请求,旨在避免原始DNS协议中用户的DNS解析请求被窃听或者修改
0x02 组件测量
DNS 中的组件按功能可分为 2 类: 权威服务器和解析器 (又称缓存解析器或递归服务器), 桩解析器 (又称用户或终端主机) 是 DNS 的用户. 桩解析器向解析器发起递归查询后, 等待解析器的应答; 解析器收到查询后, 向各级权威服务器发送迭代查询, 得到的权威应答后缓存并回复桩解析器; 权威服务器负责响应查询, 回复权威应答或子域权威服务器索引. 针对解析器的测量研究关注规模、时延、应答行为、缓存机制和选择机制等方面; 针对权威服务器的测量研究侧重关注性能情况、部署情况、数据有效性和一致性。
2.1 公共解析器
- 公共解析器 (public DNS resolver), 又称第三方解析器 (third-party DNS resolver), 是由云服务商、内容服务商、安全服务商等商业公司部署的对外提供开放域名递归解析服务的服务器.
- 近年来快速增长,与 ISP 解析器相比部署覆盖度仍显不足, 且解析时延偏高
2.2 开放解析器
- 开放解析器 (open DNS resolver) 是指对外提供开放域名解析的服务器. 公共解析器是它的子集, 仅特指因商业行为主动提供域名解析服务的行为.
- 当前互联网中绝大部分的开放解析器是由于错误配置、管理不当或被恶意操纵而对外提供域名解析服务, 其数量庞大, 生命周期短, 解析结果存在较大安全隐患.
- 应答行为不正确,生命周期短,抗缓存注入攻击能力差
2.3 解析器缓存
2.3.1 缓存命中率
- 缓存命中率受域名资源记录的缓存时间 (TTL 值) 影响.
- 缓存命中率随 TTL 值的变化呈对数分布, 当 TTL 值超过 600 s 后, 继续增加 TTL 值只能提高很少的缓存命中率.
- 测量发现 CNAME 类型查询的缓存命中率最低, 与剔除重放流量中的 CNAME 查询后相比, 使用 CNAME 查询会降低 10% 的缓存命中率, 并会使对根服务器的查询量增加 10 倍, 对顶级域权威服务器的查询量增加 2.8 倍.
2.3.2 否定应答缓存
- 测量解析器对否定应答缓存功能的支持情况, 存在未开启或不支持否定应答缓存, 这类解析器在各大洲的占比为 9.87%–14.89%
2.3.3 缓存滥用
- 缓存滥用是指违反 DNS 规范延长资源记录缓存时间的行为, 也称为缓存延期.
- 现有的检测DNS缓存滥用方法有:
- 基于用户流量的检测方法, 判断的依据是比较用户收到应答报文与后续 TCP/UDP 请求的时间差是否超过 TTL 值, 这种方法可以发现用户 (包含桩解析器和安装在用户终端的应用程序, 下同) 的缓存滥用行为.
- 基于服务端流量的检测方法, 判断的依据是查看用户是否会被 DNS 应答引导至特定的服务器, 未能向预设目标发起请求的用户将被判定存在缓存滥, 用这种方式可以发现解析器和用户的缓存滥用行为;
- 使用直接验证解析缓存的方法, 判断的依据是比较解析器收到的应答报文中资源记录的 TTL 与缓存值的 TTL 值是否一致.
- 滥用行为测量显示:
- 2004 年采用基于服务端流量的检测方法测量发现,47% 的用户使用延长缓存时长的 A 记录; 14% 解析器存在缓存延期现象, 其中 25% 的解析器缓存延期达 5 小时.
- 2012 年采用基于用户流量的检测方法测量发现,30.1% 的 TCP/UDP 连接使用了延长缓存时长的 A/AAAA 记录中的 IP 地址.
- 2013 年采用直接验证解析器缓存的检测方法测量发现, 35% 解析器平均缓存延期超过 1000s,
- 缓存行为分为四类:
- 解析器写入缓存的 TTL 值大于应答报文中的 TTL 值
- 解析器延缓 TTL 值在缓存中的衰减速度
- 解析器在缓存中不衰减 TTL 值
- 解析器增加本该随时间衰减 TTL 值
2.3.4 利用缓存测量
- 热度估算: 利用解析器缓存估算域名热度, 即通过测量域名在解析器缓存中的存在时间, 估算使用该域名的用户规模, 是一种服务无关、协议无关且不泄露用户隐私的通用测量估算方法,。
- 时延估算: 首先选取邻近 A、B 最近的 1 个公共解析器 A_Resolver 和 1 个权威服务器 B_Auth; 然后构造 2个查询, 使第 1 个查询确保 A_Resolve 缓存不命中且 B_Auth 应答 (步骤 1、2、3、4), 第 2 个查询确保 A_Resolve 缓存命中 (步骤 1、4), 通过计算两次查询时延的时间差计算 A_Resolver 和 B_Auth 间的时延, 以此作为 A、B 两点间时延的估算值. 但仍然存在如下局限性:
- B_Auth 可能有多个部署在不同地理位置的从服务器, 干扰准确性;
- A_Resolve 是转发解析器时, 时延估算结果将会偏大;
- 会给解析器 A_Resolver 插入大量不必要的缓存记录造成污染.
- 2008 年提出 T-King 方法对 King 存在上述 3 问题进行了改进, T-King 测量方法只需要消耗 King 测量方法一半带宽且减少了 King 方法造成的缓存污染几个数量级. 同时, T-King 维护了一个域名服务器列表, 排除了干扰准确性的权威服务器和解析器.
- 丢包率估算: 在 King 方法的基础上提出 Queen 方法估算任意主机间的丢包率. Queen 首先使用King 方法估计任意两点间的时延, 然后利用解析器内置的重传机制, 进而从观察到的过长时延推断解析器与权威服务器之间的丢包重传次数, 计算丢包率.
2.4 解析器选择策略
- 时延偏好: DNS 规范要求“解析器迭代查询时从权威服务器列表中选择认为最优的目标发起查询”,多数解析器将时延作为判断最优权威服务器的依据.
- 次优选择: 次优选择行为指解析器在未能选择时延最低的权威服务器发起查询.
2.5 权威服务器性能
2.5.1 时间波动
- 测量根服务器和顶级域权威服务器的性能随时间的变化情况, 通过比较查询量、响应时延、丢包率等指标随时间的波动情况, 推测造成根性能表现异常的原因.
2.5.2 地理差异
- 比较不同地理位置用户感知的权威服务器性能差异. 测量发现不同地理位置的域名解析平均时延在 0.95–2.31 s 之间, 极值相差 2.4 倍, 其中, 根查询时延在 0.063–1.41 s 之间; 顶级域查询时延在 0.037–0.89 s 之间.
- 基于用户感知时延可将所测的 10 个根服务器聚类到 4 个组中, 同组内的根服务器性能差异小到可以忽略不计. 测量发现欧洲和亚洲的根服务器负载过重导致时延过大, 解析器会因此舍近求远访问美洲的根服务器, 导致用户对根的感知时延偏高.
- 根在五大洲时延均小于 100 ms, 但时延差异依旧明显, 北美洲和欧洲最优而非洲最差, 两者最有 6 倍时延差.
2.6 权威服务器任播部署
知识点
任播(Anycast),又称为选播、泛播或任意播。Anycasting最初是在RFC1546中提出并定义的,它的最初语义是,在IP网络上通过一个Anycast地址标识一组提供特定服务的主机,同时服务访问方并不关心提供服务的具体是哪一台主机(比如DNS或者镜像服务),访问该地址的报文可以被IP网络路由到这一组目标中的任何一台主机上,它提供的是一种无状态的、尽力而为的服务。
2.6.1 性能、可用性、稳定性:
F 根于 2002 年率先使用跨地域任播部署方案, 随后两年内 C、K、M 根也实施任播部署.
- 2005 年从服务端视角被动测量 C、F、K 根的任播部署点并对其评估发现, 查询 C 根和 F 根的解析器中只有不到 2% 会在任播节点间跳转 (flipping), 表明任播部署对根的查询稳定性影响很小.
- 2004 年通过 400 个 PlanetLab探测点对比已任播部署的 F、K 根和未任播部署的 B 根在性能、可用性、稳定性上的差异. 测量发现:
- 任播根节点的平均查询时延显著降低, 非任播根的平均时延为 115 ms, 而任播根的平均时延为 75 ms.
- 任播根节点出现未应答查询, 导致解析不可用的比例小于 0.9%, 与未任播部署的根持平.
- 任播根节点与解析器间稳定性良好, K 根和 F 根只有不超过 0.006% 的解析器在任播根节点间跳转的现象.
2.6.2 抗 DDoS 攻击
任播根面临 DDoS 攻击时, 少数负责吸收攻击的任播根节点的会不堪重负 (丢包率>95%), 以保护大部分任播根节点免受 DDoS 攻击的影响 (丢包率<1%), 总体上降低了受影响用户数量.
2.6.3 任播节点发现
2011–2012 年使用测量平台 PlanetL ab和 Netalyzr对比多种发现任播节点方法,提出两种优化发现方案:
- 基于 CHAOS+Traceroute 探测非合作任播节点;
- 利用 30 万公共解析器作观测点扩大探测区域.
2.7 权威服务器托管
DNS 托管服务商在全球范围内部署 DNS 权威服务器为域名权威提供安全经济的域名解析服务.
- 同步效率:权威服务器间的资源记录的更新传播时延通常为十几秒, 时延最高的 Google Cloud 需 50 s
- 服务器共享:托管服务的流行使权威服务器逐渐向少数服务商集中. 这种集中的趋势对 DNS 鲁棒性造成威胁.
- 攻击影响: 利用 OpenIntel平台测量攻击对用户选择托管服务商的影响发现, 2016 年 5 月针对NS1 的攻击和 10 月针对 Dyn 的攻击会令用户同时使用多个托管解析服务商以分担风险.
2.8 权威服务器误配置
2.8.1 权威服务器误配置
- 2003 年测量 三类误配置:跛脚授权 (lame delegation)、冗余不足 (diminishedserver redundancy) 和循环依赖 (cyclic zone dependency),
- 2007 年测量 494 万二级域 (占 com 和 net 的 6.6%) 的区文件四类误配置:
- 使用无效、过时、未分配的资源记录类型
- 域名结尾缺少点号导致后缀重复
- 包含已授权给子域的域名
- 包含重复的域名
- 2009 年分析 300 万域名的误配置情况:
- 父域胶水记录中配置的子域权威服务器有 2.5% 不可用, 有 1.2% 只能做出非权威应答
- 0.095% 的区存在循环依赖
- 2009 年测量 6 个顶级域下 1.06 亿二级域的发现:权威服务器中 1.7%为孤儿服务器, 即在子域出现但在父域并不存在的权威服务器, 孤儿服务器平均只有 8–9 天的生存期, 不到 2% 的孤儿服务器存活超过 30 天
2.8.2 软件误配置
部分权威服务器未禁止非安全动态更新, 即权威服务器不限制动态更新请求的 IP 地址、也不验证身份密钥.
0x03 结构测量
3.1 解析器簇结构
解析器簇结构由桩解析器和为其提供解析服务的递归解析器组成. 相关研究关注解析器簇结构带来的负载隐藏问题 (hidden load problem)和发起人识别问题 (originator problem)
3.1.1 负载隐藏问题
-
解析器簇规模对权威服务器不可见, 导致服务点无法准确预估负载. 不同解析器簇中桩解析器数量差异巨大, 服务点负载不均衡.
-
2013 年通过大规模投放广告测量 1137 万桩解析器组成的 27 万个解析器簇发现:
- 解析器簇规模分布差异巨大, 超过 90% 解析器簇仅覆盖 1% 桩解析器, 少数大象簇拥有大量桩解析器;
- 解析器簇活跃度分布同样差异巨大, 最大的 10 个大象簇发出超过 80% 的桩解析器查询
3.1.2 发起人识别问题
- 桩解析器位置对权威服务器不可见, 导致桩解析器未被引导至最优服务点.服务点用解析器位置估算与桩解析器的距离时偏差较大.
3.2 解析器依赖结构
部分网络服务商仅在本地部署转发器, 将域名解析委托给上游的解析器. 随着域名解析任务被多级委托, 解析器之间形成复杂的依赖结构, 间接解析器专门用于为转发器提供服务且不为桩解析器提供服务
- 解析器间依赖
- 解析器池
3.3 域名解析依赖结构
- 传递依赖风险:域名之间通过授权 (NS) 和别名 (CNAME) 产生依赖关系. 当被依赖的域名不安全时, 威胁将会传递给依赖它的域名, 称为传递依赖风险.
- 域外依赖: 域外 (out-of-bailiwick) 权威服务器存在潜在的不可控因素, 使用域外权威服务器提升解析鲁棒性的同时会降低解析安全性.
0x04 流量检测
流量测量通常以被动测量的方式获取原生状态下的 DNS 流量, 以展示 DNS 的当前运行状态.
4.1 查询流量特征
重头长尾特征: 查询类型、域名热度、解析器查询频率等指标符合 Pareto/Zipf 分布规律 , 具有重头、长尾的分布特征。
4.2 根异常查询流量
4.2.1 无效查询流量
根给出否定应答的查询
- 无效查询原因分为以下3类:
- 查询类型未定义, 查询未定义的网络类型或资源记录类型
- 查询内容无效, 包括查询 IP 地址的 A 类型资源记录, 查询域名中包含无效字符, 查询的顶级域尚未由 IANA 授权, 查询私有 IP 地址的域名;
- 查询的 TCP/IP 头部字段错误, 例如使用私有 IP 地址做源 IP 地址, 使用端口号 0 做源端口号
- 无效查询占比。占比最大的 3 种无效查询类型是:
- 查询未授权的顶级域;
- 查询 IP 地址的 IP 地址 (A-for-A 查询);
- 私有 IP 地址发起的查询或查询私有 IP 地址的主机名
- 成因:
- 操作系统原因
- 解析器软件缺陷
- 浏览器代理配置错误或恶意软件导致(i2p,onion等)
4.2.2 冗余流量
冗余查询是指 name、type、class 字段相同的查询. 根据 TXID 字段是否也相同可进一步分为两类. 分析造成冗余查询的原因如下.
- 软件缺陷
- 解析器无法检测循环依赖, 解析器无法检测失效的权威服务器, 解析器未缓存否定应答.
- 权威服务器出现故障,windows 解析器默认不开启否定应答缓存
- 解析器过度查询现象普遍存在, 例如 Unbound 解析器的超时等待时间过短,仅等待一个 RTT 周期即重复查询
- GoogleDNS、OpenDNS 等公共解析器对短时间内相同递归查询请求所触发的迭代查询未做限制.
- 网络配置不当
- 包过滤器阻止来自网络外的 DNS 应答,网络内的解析器由于查询失败而重复查询.
- 恶意扫描攻击
- 一个攻击源利用根实施反射攻击,攻击者通过伪造源 IP 地址向根发送大量冗余查询, 迫使根频繁对 209.67.50/24 网段内的主机做出应答. 另一个攻击源向根连续发送大量不重复的反向域名解析查询, 推测攻击者正在扫描 IP 地址空间, 尝试发现部署了对外服务的 IP 地址.
4.2.3 幽灵流量
幽灵查询: 根服务器切换 IP 地址后, 旧 IP 地址仍意外收到的查询.
4.3 流量拦截
DNS 流量拦截行为普遍存在, 相关测量研究发现许多地区的网络中存在该现象。
流量测量工作通常以被动测量的方式发现 DNS 实际运行中的规律及问题. 表 5 对流量测量相关工作进行了总结和比较. DNS 查询呈现 Pareto/Zipf 分布规律, 意味着具有重头长尾的分布特征, 这一规律有助于对 DNS相关的服务进行优化.
0x05 安全测量
5.1 DNSSEC代价与隐患
DNSSEC 代价与隐患DNSSEC采用依托于 DNS 的层级结构认证和数字签名等密码学技术保护权威服务器应答的真实性和完整性, 但同时增加了 DNS 的复杂性和运行成本. DNSSEC 中的数字签名会增加 DNS 服务器计算开销和应答报文长度.
- 性能代价:从解析时延、CPU 负载、带宽、根的 ZSK (区签名密钥) 长度等方面测试
- 放大攻击隐患: 攻击者利用 DNSSEC 长应答报文实施分布式反射拒绝服务攻击. 反射型DDoS攻击。直接利用权威服务器实施放大攻击的效果比使用开放解析器更好, 可实现 50 至 179 的放大倍数.从实施攻击的持续性和难易度来看, 权威服务器通常比解析器具有更高的带宽, 且攻击者具有更广泛的二级域选择范围.
5.2 DNSSEC部署进展
DNSSEC 部署进展DNSSEC 的部署依赖于各级权威服务器、解析器以及网络中间盒 (middle-box, 如防火墙或 NAT 设备) 制造商和运营商之间协作.
- 权威服务器部署进展
- DNSSEC 于 2005 年 10 月开始在国家顶级se上部署。2017 年测量发现, 应用 DNSSEC 的二级域已达到 640 万个, 部署二级域数量最多的 3 个顶级域分别是 com、nl、se. 测量还发现 ECDSA 这种在保证加密强度但能使密钥更短的数字签名算法更加流行, 近两年使用率增加 8%. ICANN 于 2020 年 4 月的统计结果[124]显示 1 513 个顶级域中的 90.9% 已经部署.
- 解析器部署进展
- 中间盒部署进展
- DNSSEC 应答报文可能超过以太网最大传输单元, 此时若中间盒不能正确传输 IP 分片将导致解析失败.
- 信任孤岛
- DNSSEC 依赖自根向下建立的认证链提供安全防护, 因父区未部署 DNSSEC 导致已部署DNSSEC 但无法认证的子区称为 DNSSEC 信任孤岛.
- DNSSEC误配置
- 误配置将导致这些二级域无法被解析器验证.
5.3 加密 DNS 部署
- 全球加密DNS流量呈增长趋势
- 提供DoT解析的地址中,大型公共解析器服务器商 Cloudflare、CleanBrowsing 等覆盖了 75% 的 IP 地址
- Cloudflare 的 DoT 解析器解析失败比例约为 1%, 远低于其普通解析器的平均值
5.4 恶意域名检测
恶意域名是指攻击发起者和攻击执行者间用于建立隐秘信道的域名.
- 基于域名注册行为检测:通过发现域名注册行为的异常, 例如使用可疑注册服务商、高频率批量注册等行为识别恶意域名.
- 分析恶意域名在 com 域的注册规律发现, 恶意域名倾向于使用少量固定的注册服务商, 仅占新注册域名数量 20% 的 10 个注册服务商产生了多达 70% 的新垃圾邮件域名. 域名注册行为测量相关研究成果对此具有潜在应用价值.
- 2015–2016 年测量 5 个顶级域下 740 万域名注册行为发现, 规模大的顶级域 (com、net、org) 下二级域名的再注册比例要明显高于规模小的顶级域 (biz、name); 高龄二级域的再注册比率明显高于低龄二级域.
- 基于域名查询量变化检测:恶意域名的注册时间与首次使用时间间隔比正常域名的间隔更短.
- 2011 年测量恶意域名查询量变化发现, 超过 55% 的恶意域名注册后的 1 天内会被用于攻击, 3–4 天内查询量出现爆发增长.
- 分析 SIE 数据集证实, 超过 73% 的恶意域名会在注册当天投入使用, 95% 在注册 2 天内使用, 而正常域名仅有 33% 会在当天投入使用.
- 基于权威服务器特征检测: 权威服务器的 IP 地址特征可以作为检测恶意域名的依据.
- 2007 年测量3360 个实施诈骗活动的恶意域名发现, 恶意域名的 IP 地址及其权威服务器的 IP 地址的轮换速度远高于正常域名, 恶意域名使用的 IP 地址分布范围更广, 40% 的恶意域名中每个域名使用的 IP 地址覆盖 300 多个/24 网络.
- 权威服务器所在域通常注册时间小于 1 年;
- 恶意域名通常会选择自己域下的权威服务器进行解析 (又称“自解析”), 而非选择域外的权威服务器.
- 2011 年测量发现, 与正常域名相比恶意域名的权威服务器集中在少量 IP 地址段与自治域内, 其中一个自治域包含了30% 的恶意域名的至少一个 IP 地址.
- 计算域名信誉值检测
- 综合使用上述多个维度的特征计算域名的信誉值, 并基于信誉值发现恶意域名, 用计算信誉值的特征包括: 域名字面特征、IP 地址特征、TTL 值特征和查询量变化特征
- 相较1额外引入了域名黑名单作为修正信誉计算模型的依据
- 基于域名查询者的空间分布和用户特征, 再结合域名黑名单作为计算信誉值的依据
- 基于域名依赖关系和域名查询者的空间分布作为计算域名信誉值的依据, 该工作测量主干网中解析器与权威服务器的通信流量, 检测恶意二级域
0x06 未来研究趋势
6.1 DNS 测量评估标准化
DNS 测量领域一直存在一个具有挑战性的难题, 即如何根据不同场景提出标准化的测量方法和评估方法. 解决这个问题有利于相关研究成果的比较和分享.
6.2 IDN (internationalized domain name) 应用测量
IDN 将域名表达形式从 ASCII 字符扩展至更多语种, 例如阿拉伯文字符、中文字符甚至是 emoji 表情字符.IDN 相关标准在 2002 年就已经制定, 但 IDN 域名的注册近几年才开始成为趋势. 对于象形文字, IDN 域名的应用过程中存在同型异义词攻击, 即利用字符的视觉相似性实施欺骗攻击,
6.3 DNS 服务整合 (consolidation) 测量
云服务的兴起使 DNS 服务逐渐向云端迁移. 一方面, 大量域名的托管使得域名解析集中到少数云服务商所控制的服务器上. 研究表明有 91%–93% 的二级域存在共享权威服务器的情况. 另一方面, 公共解析器高速普及使用户的解析查询流量呈现集中化的发展趋势, 截止至 2011 年 12 月, 公共解析器服务已经覆盖了 8.6% 的互联网用户, 21 个月内增长 27%. 上述服务整合的发展趋势违背了 DNS 通过分布式管理提高系统可靠性的初衷, 某个云服务商出现故障会导致大量域名无法解析。目前, DNS 服务整合的趋势似乎已成定局, 如何测量并评估这种趋势的发展给 DNS 带来的潜在风险是值得研究的方向.

浙公网安备 33010602011771号