DoH这个词对于很多安全从业人员并不是个新词,但对其前世今生能洞若观火的却不多。本期前瞻洞察将从DNS的隐私与安全问题出发,讲述DoH为什么诞生,DoH的出现到底利弊几何,对其弊端如何应对。为了便于读者理解,对于“何为隐蔽隧道?”、“DoH如何成为隐蔽隧道的利器?”这些基础性的问题也进行阐述。
一、传统DNS的隐私与安全问题催生安全DNS技术
DNS应该是家喻户晓的一个名词了,中文名叫作域名系统,用来实现域名和IP地址的映射,是互联网不可或缺的基石。DNS明文传输机制便于防火墙等安全设备进行安全检查和审计,但导致了严重的隐私问题和新的安全问题。先说说隐私问题,由于我们日常的DNS请求都经过运营商(ISP),明文传输的DNS信息在运营商那里都是全部公开透明的,用户毫无隐私可言。即使我们无条件相信运营商不会滥用我们的隐私数据,那么在整个互联网里明文传输的DNS信息也难免被第三方合法地、非法地窃听,后果难以意料。除了隐私问题,明文DNS还存在安全问题,比如域名劫持、重定向、钓鱼等。比如,你明明在浏览器输入的是招商银行,但却有可能被劫持到一个外观同招商银行一样的钓鱼网站。已经有充分的证据表明 [1],DNS流量被用于非安全目的的过度审查、监管和其他非法目的。
由于安全性和隐私性的考量,对DNS进行加密的技术和方案并不少见。最早的有DNSSEC和DNSCrypt。
DNSSEC [2]通过增加签名验签机制以保护DNS数据的完整性,从而防止中间人攻击,但是DNS数据在网络流量中依然是明文格式,不能解决DNS数据机密性的问题。
DNSCrypt[3] 通过开源社区发起,同时解决了DNS数据的完整性和机密性,但是并没有提出RFC标准建议,且网络应用对其支持非常有限。
DNS over TLS (DoT) [4]于2016年正式提出并发布了RFC标准,DoT通过TLS协议对DNS请求和响应进行加密和封装,并工作于853端口。由于DoT在专门的端口提供服务,很容易被防火墙和其他安全设备识别、审查和阻断,可用性方面存在缺陷。
更引人注目和被寄予厚望的是本文的主角DNS over HTTPS (DoH)。这个方案获得IETF正式支持,于2018年10月发布了RFC 8484[5] 。DoH把DNS请求和响应数据包用HTTPS加密,从而防止第三方对明文DNS数据包的窃听和篡改。目前,DoH已经得到包括Cloudflare、Google、Quad9、阿里巴巴等代表性的公开DNS解析商的支持。主流浏览器(包括Chrome、Firefox、Edge等)和Windows11也正式支持了DoH。可以预计,尽管有监管机构和反隐私组织的反对和阻挠,DoH的使用率在未来依然会稳步提升。
二、DoH如何工作
DoH之所以被寄予厚望,主要原因是能良好融合到HTTP生态,网络应用对DoH的支持也更容易。得益于HTTP/2的特点,DoH可以允许服务端先发地把DNS响应push给客户端(早于客户端发起DNS请求),降低了DNS服务的时延,改善网络应用的性能。DoH将DNS请求和响应封装到HTTP请求的主体,客户端跟递归服务器之间建立一个TLS会话,通过HTTPS协议传输封装了DNS请求的HTTP请求。DoH的封装示意图见图 1。
DoH的工作示意图见图 2。跟传统DNS相比,DoH 通过 443 端口的加密 HTTPS 连接接受 DNS 查询将其发送到兼容 DoH 的 DNS 服务器(解析器),而不是在 53 端口上发送纯文本。这样,DoH 就会在常规 HTTPS 流量中隐藏 DNS 查询,因此第三方监听者将无法嗅探流量,无法获悉用户的 DNS 查询,也就无法推断他们将要访问的网站。
图 2 DoH工作示意图
三、DoH成为隐蔽隧道攻击的利器
成也萧何败也萧何。DoH虽然具备绝佳的隐私保护能力和安全能力获得用户的青睐,也由于DoH被用于隐蔽隧道攻击而遭到政府机构和安全机构的警惕关注。
将DoH隐蔽隧道攻击之前,先说说DNS隐蔽隧道攻击。
由于几乎所有的网络应用都依赖于DNS作为前置条件,防火墙通常开放53端口供DNS服务正常运行,客户端可以连接到内部的DNS服务器或者外部DNS服务器。这就从根源上导致了DNS被攻击者视为天然的、优质的隐蔽通道。
一个简单的DNS隧道攻击流程,见图 3:攻击者首先接管控制一个目标域名的Name Server(NS);客户端把C&C数据(命令与控制)或目标数据通过编码、加密、混淆等方法嵌入到一个DNS请求的子域名中;在一个TTL窗口中(窗口大小由递归服务器确定),发起的DNS请求的域名的子域名只要是不重复的,那么递归服务器就查询不到缓存数据,就会把请求转到权威域名服务器,并通过NS指派解析到攻击者所控制的域名服务器,攻击者就能收到C&C数据或者目标数据;攻击者在DNS响应数据包里同样可以嵌入C&C数据或者目标数据,并送达客户端。见图 4、图 5示意。
图 3 DNS隧道拓扑图
图 4 通过DNS隧道获取控制命令示意
图 5 通过DNS隧道回传窃密信息示意
DNS 隧道可以利用多种记录类型来传输数据,例如 A、MX、CNAME、TXT、 NULL 等,见表 1。
表 1 资源记录类型
DNS 隧道的实现工具有很多,表 2介绍了三种常见的。
表 2 DNS隧道工具
当DoH技术出现后,为上述的DNS隧道攻击提供了新的利器。基于DoH协议构建隐蔽隧道,不仅通信内容可基于HTTPS协议加密,而且与高可信DoH服务的通信(而非本地DNS服务器)不会引发异常行为,避免了基于DNS的恶意行为检测机制。
随着DoH的使用范围日益扩大,基于DoH的隧道攻击势必成为网络安全领域十分棘手的问题。这个威胁并不是针对未来形势耸人听闻的预判,而是已经成为现实的威胁。利用DoH隧道实施数据外传的首款恶意软件Godlua在2019年被披露[6];利用DoH实施数据外传的APT组织(APT34)在2020年被披露[7];其他利用DoH隧道技术进行攻击的研究和开源项目参考[8][9][10]。
四、DoH流量识别技术
为了检测DoH隐蔽隧道攻击,需要做两件事。由于DoH流量隐藏在HTTPS加密流量中,首要任务需要把DoH流量识别出来。
来自SANS协会的Hjelm [11]提出了一种识别DoH行为模式的RITA框架,这种方法不采用网络流量,而是采用Zeek IDS的用户日志;作者认为DoH具备规律的行为模式。
图 6 RITA实验环境示意图
但是,这个成果经过其他研究人员[12]进行复现发现,RITA并不能从HTTPS流量中识别DoH流量。
Patsakis等人[13]的研究主要集中在基于DNS隧道的DGA和僵尸网络的检测,也提到了DoH和DoT。作者利用Hodrick-Prescott滤波(H-P滤波)检测出基于DoH/DoT的僵尸网络规律的行为模式,并取得很好的效果,见图 7。但是,DoH往往不局限于僵尸网络场景,对于更一般的通用场景下,识别DoH流量更有迫切需求和研究价值。
图 7 基于DNS隧道的DGA和僵尸网络的检测
Bushart等人[14]的研究聚焦于识别DoH流量,但局限在于仅仅通过已知的DoH服务商的IP地址进行识别。目前,越来越多的DNS服务商也开始提供DoH服务,且标准DNS和DoH服务都使用一致的IP地址,如谷歌的8.8.8.8、Cloudflare的1.1.1.1。这就使得这种基于IP地址的识别方法不再有效。
图 8 基于已知DoH服务商IP地址的识别
五、DoH隧道攻击检测技术
把DoH流量从浩瀚的HTTPS加密流量中识别出来之后,还需要进一步区分这些DoH流量是良性的还是隐蔽隧道攻击。
针对DoH隧道检测技术的研究并不多,大部分研究集中在传统的DNS隧道检测方面。
一些具备代表性的研究成果有:Paxson等人[15]研究开发了一种DNS隧道检测工具,计算DNS请求和响应数据包传递的信息量;Liu等人[16]利用DNS数据包的时间间隙、请求包大小等4个特征训练分类器,实现对DNS隧道的检测;文献[17]提出了一种称为Byte-level CNN的深度神经网络实现检测;Luo等人[18]提出一种可以检测利用A和AAAA资源记录的隧道攻击;Wu等人 采用一种半监督学习的自编码器实现流量特征自动提取,并检测隧道攻击。上述研究成果仅仅针对传统的、明文的DNS数据包发起的隧道攻击。
DoH流量的特征分析可以分为两个阶段:HTTPS客户端-服务端握手阶段、加密传输DNS请求应答阶段。在第一阶段的握手过程中,客户端和服务端之间有少量的数据包交互,且这些数据包包含了明文信息,可用于识别是什么应用发起了HTTPS连接。这个称为TLS指纹的一类技术是实现DoH识别、DoH隧道检测的基础性技术。
TLS指纹技术方面的研究成果颇丰。最具代表性的是Cisco的一些列研究成果[19][20][21][22],通过对大规模TLS流量的分析,得到恶意软件、企业应用如何使用TLS的模式,提出一种基于目的地上下文和先验知识的精确的TLS指纹生成方法。
考虑到互联网实际场景的复杂性、客户端到递归服务器链路的多样性,基于TLS指纹技术的分类器性能会存在下降。另外,从攻击者视角,攻击者会想方设法逃逸检测。因此,需要构建模拟一些实验场景,通过放大攻击者的逃逸能力从而寻找到DoH隧道检测性能的下确界。如果攻击者需要付出极高代价才能进行逃逸,就能说明DoH隧道检测的有效性。
为数不多且有一定代表性的针对DoH隧道检测的文献,是来自加拿大University of New Brunswick的研究[23],利用DoH流量特征和神经网络实现了99%的检测准确性。
图 9 DoH隧道检测技术框架
六、总结——强盾在何方?
DoH的提出是隐私保护和安全提升的一个里程碑。但是,对于攻击者而言,把攻击活动隐藏到加密的DNS流量是个不错且必然的选择。由于DNS请求和响应的内容不再可见,现有基于域名特征的DNS隧道检测技术几乎全部失效。
构筑DoH隧道攻击的强盾,思路应聚焦于对加密DoH流量的特征分析。具体是采用各种机器学习模型,尤其是深度神经网络,对DoH流量的统计特征、时序特征进行分类。
需要强调的是,根据文献[24]的研究结论,对HTTPS加密流量进行代理解密会大幅降低连接的安全性。这种简单粗暴的代理解密方法难以持续。因此,采用中间人代理的方式对DoH流量进行解密从而把DoH隧道检测问题降级为传统DNS隧道检测的思路并不可行。
参考文献