概述
DNS over HTTPS(DoH)由RFC8484定义,其目标之一是增加用户的隐私,通过 HTTPS 解析 DNS 查询。目前国外厂商如Adguard、Cloudflare、Google、Quad9等对公提供DoH服务,国内也有厂商陆续提供DoH服务。此外,也可以通过自建DoH服务器的方式进行DoH传输。以腾讯云DoH服务器(https://doh.pub/dns-query)为例,运用浏览器访问百度,同时进行抓包分析,结果如下:
- 解密前,只能看到与DoH服务器间的TLS Application Data消息,数据被加密。
- 解密分析:利用浏览器同步生成(Pre)-Master-Secret 日志对流量进行解密,第785个数据包的内容如下:
- 可以清晰看到DNS协议流量被封装进HTTP协议,并进一步经过TLS协议加密,形成了HTTPS流量。
DoH 的优点是显而易见的,该技术提高了DNS服务安全性并保护了用户隐私。但DoH也是一把双刃剑,传统的恶意DNS隐蔽隧道,同样可以通过利用DoH服务进行HTTPS协议加密封装,进一步增强自己的隐蔽性。我们经过试验,知名DNS隧道工具、热门黑客平台如Iodine、DNS2TCP、 DNScat2、Cobalt Strike等,都可以通过DoH服务将DNS隧道流量转换为HTTPS协议。这类利用DoH技术加密传输的恶意DNS隧道流量,给检测造成了新的挑战。
恶意DoH流量检测
与一般TLS加密流量检测相比,利用DoH技术加密传输的恶意DNS隧道流量(以下简称恶意DoH流量)检测的难度更高。恶意DoH流量完全可以利用正常DoH服务器进行中转,那么单纯从DoH服务的TLS协商过程中暴露的明文信息(如TLS握手信息、证书信息、背景DNS流量特征等)判定会造成较大误报,必须从更深层次寻求另外的维度进行判断。本次针对DoH恶意流量检测的研究,将重点放在与完成握手协商后的加密数据会话过程。研究过程包括数据搜集、特征工程、模型训练、实际测试几个环节。
1. 数据搜集
数据搜集分为公开数据搜集和自建环境搜集。因DoH协议比较新,所以公开数据集不是特别丰富。Canadian Institute for Cybersecurity (CIC)在2020年公开了一个DoH数据集DoHBrw-2020。我们对该流量集进行了处理,可以得到正常(以下简称白)DoH流量+正常HTTPS流量共514459次会话,恶意(以下简称黑)DoH流量共144167次会话。
DoHBrw-2020数据集主要针对国外厂商提供的DoH服务,另外数据集偏小。为了弥补数据集不足,我们搭建模拟环境针对国内主要DoH服务进行了白/黑DoH流量搜集,通过自建DoH服务器,同样进行了白/黑DoH流量的搜集。白流量主要通过脚本调用热门浏览器,利用DoH服务对常用网站进行访问进行捕获搜集。黑流量主要通过搭建Iodine、DNS2TCP、 DNScat2、Cobalt Strike等实验环境,利用国内DoH服务器、自建DoH服务器等进行流量搜集(所有数据搜集均在严格可控范围内进行,未对实验环境之外设施造成影响)。
2. 特征工程
特征工程是建立恶意DoH流量检测模型的重要步骤,直接决定了模型检出效果的好坏。如前所述,针对恶意DoH流量,无法单纯从服务端证书、背景DNS、SNI信息等方面进行检测,因此本次特征工程的重点放在加密数据会话过程,即TLS协议的Application Data消息交互阶段。基于长期从事加密流量检测的经验和对DNS隧道行为的深刻理解,我们设计了超过100项,大于1000维特征值,涵盖加密消息个数、长度、到达时间等重要加密会话行为信息。我们在黑白DoH流量集上对这些特征进行了分析。因特征众多,在这里简要列举几项。
- C_Total_Count/S_Total_Count:Client/Server端Application Data消息总个数(线性归一,归一化区间0-512):
- 通过数据统计可见,大约60%的白流量,Client端Application Data消息的总个数在0-0.01之间(约1-5个Application Data消息),而在这个区间的黑DoH流量仅占不到30%。大约45%的黑DoH流量个数在0.01-0.02之间(约6-10个Application Data消息)。在0.1-1区间(约大于50个Application Data消息)中包含了将近20%的恶意DoH流量,而本区间中的白流量仅占2.2%。Server端Application Data消息总个数分布与Client端相比有相似之处,但也有所不同,在此不再赘述。
- C_Len_Max/S_Len_Max:Client/Server端Application Data消息长度最大值(线性归一,归一化区间0- 16384):
- 通过数据统计,90%的黑DoH流量,Client端Application Data最大长度倾向小于约160字节,回传过程中,Server端Application Data消息的最大长度基本都达到了16384字节。尽管如此,也不能使用Server端回传大包这个单一因素进行判别,因为46%的白流量也会使用较长的Application Data消息进行传输。
- S_Intervel_Trans[100]_4:Server端Application Data消息到达时间间隔转移矩阵第五维:
- 我们在0-300秒时间内根据数据分布,划分为10个区间。将每两个Application Data消息到达时间间隔根据区间落点的转换,形成Application Data消息到达时间转移矩阵。转移矩阵为10*10,共100维。从流量集数据分析,在矩阵的第五维上,黑白流量获得了比较好的分辨度。
筛选较好特征后,我们随机选取了黑白流量各5000次会话,进行了PCA降维可视化分析。PCA算法降至3维:
- PCA算法降至2维:
- 由于降维过程中带来的信息损失,3维和2维散点图出现了少量合理的重叠。由特征工程以及可视化分析可知,我们选取的特征,可较好的分辨黑白流量集,为下一步训练模型提供了良好基础。
1. 模型训练和测试
选取Decision Tree、Logistic Regression、Random Forest、Linear Regression、Adaboost和SVM等算法进行模型训练和测试对比,相应结果如下:
- 从测试结果进行分析,综合考虑精确率、准确率和模型泛化能力,结合工程化实现等因素,选取随机森林算法作为产品使用的算法。
产品检出
观成瞰云-加密威胁智能检测系统目前已集成恶意DoH流量检测能力。产品检出截图如下所示:
- 从鱼骨图可以看出,虽然恶意DoH会话的SNI为知名白域名,但是上文所述的单流行为检测模型给出了较高的判断,另外恶意DoH会话的握手协商特征也与热门浏览器的TLS握手协商存在差异,系统最终综合决策评分为0.82,威胁标签为DNSTunnelOverHTTPS。