DNS攻击检测与安全防护研究综述
2022-10-09章坚武安彦军邓黄燕
章坚武,安彦军,邓黄燕
(1. 杭州电子科技大学,浙江 杭州 310018;2. 浙江宇视科技有限公司,浙江 杭州 310051)
0 引言
随着物联网、AI、云技术的日益普及,传统互联网正向“互联网+物理设备”[1]、“互联网+AI”[2]和“互联网+云”[3]等“互联网+”逐渐演变,这些演变使连接人、物、应用和数据的网络迎来了一个全新的时代。2021年互联网域名系统国家工程研究中心主任毛伟表示,“互联网发展至今,域名系统(2omain name system,DNS)早已超越了简单的解析功能,成为涵盖‘网络空间’‘互联网关键基础资源’‘软硬件技术系统’在内的支撑全球互联网‘互联互通、共享共治’的重要基石”,并提出了下一代DNS的概念:从基础解析寻址向“全面感知、可靠传输、智能分析、精准决策”的新模式升级[4]。然而DNS的安全脆弱性[5]导致新模式下的DNS面临更加严峻的安全挑战。例如,随着万物互联的不断发展,智能医疗设备、穿戴设备涉及更多敏感隐私数据,攻击者通过DNS隐蔽信道不仅可以窃取其敏感数据,还可以通过恶意指令对数据进行更改,危害用户健康[6]。同时,DNS面临大规模DDoS(2istribute2 2enial of service)攻击的风险[7]。云环境中大量数据存储在云端,基于DNS欺骗和DNS隐蔽信道的数据泄露严重威胁云端数据安全,同时云环境下域名集中化管理,使云端DNS服务遭受DDoS攻击造成的损失更加严重[8]。新模式下的DNS涉及公共通信、信息服务、金融、电子政务、国防科技等重要领域,遭到攻击会丧失服务功能或者泄露重要数据,严重损害公共利益,甚至危害国民经济发展[9]。检测DNS攻击与加强DNS安全防护成为保障DNS平稳发展的必要手段。
DNS攻击检测与安全防护的研究意义在于:及时检测各种针对DNS的攻击,以保障DNS的正常运转;提升DNS自身安全的稳健性,以增强其对攻击的抵抗能力;有助于持续提升DNS在新模式下的功能多样性和覆盖领域广泛性。
在DNS攻击检测的研究过程中,研究人员通过引入机器学习技术,取得了较为显著的成就。机器学习在DNS攻击检测方面表现出不可比拟的优势。同时,为进一步提高DNS的安全性,大量相应的安全防护方案被提出,增强了DNS自身的稳健性。
1 常见DNS攻击
1.1 DNS欺骗
DNS欺骗,亦称域名欺骗,可将用户合法请求对应的IP地址替换为一个虚假、恶意的IP地址,从而将用户导向至钓鱼网站,以窃取隐私信息。DNS欺骗如图1所示,主要由两种方式组成:DNS缓存中毒和DNS信息劫持[10]。
图1 DNS欺骗
如图1(a)所示,在DNS缓存中毒攻击中,攻击者非法修改DNS服务器的缓存记录,将域名原本对应的IP地址替换为恶意IP地址,从而将用户访问转移到钓鱼网站。DNS缓存中毒极具传播性,如果其他DNS服务器从此处获得缓存信息,错误缓存将进一步扩散。与DNS缓存中毒不同,DNS信息劫持没有修改DNS服务器的缓存记录,而是在DNS服务器响应之前将用户请求导向恶意的IP地址,该过程如图1(b)所示。在域名解析过程中,DNS请求包与响应包通过序列号机制一一对应。攻击者通过监听用户和DNS服务器的通信过程,预测出DNS服务器响应包的序列号,并据此制作虚假响应包。该包在真实数据包到达之前返回给客户端,客户端解包,获得恶意的IP地址,从而将用户访问转移到钓鱼网站。
1.2 DNS隐蔽信道
Lampson[11]首次提出隐蔽信道的概念,并将其定义为“信道被设计的本意并不是为了传输信息”的通信信道。隐蔽信道违反互联网通信协议的规则,使用网络信息载体(网络协议、协议数据)秘密传递信息[12]。由于传统的入侵检测系统和网络防火墙对这些载体的检测力度较小,隐蔽信道传输的数据难以被发现,因此隐蔽信道也是信息隐藏技术的一个分支。
DNS隐蔽信道是一种报文封装技术,利用DNS数据包封装信息[13]。由于DNS原本并不是用于数据传输,人们总是忽视其也是恶意通信或数据泄露的潜在威胁[14]。此外,网络防火墙和入侵检测系统都会开放DNS服务,因为阻止DNS流量可能会导致合法的远程连接失败。因此,DNS隐蔽信道逐渐成为攻击者手中理想的命令和控制(comman2 an2 control,C&C)信道,被广泛用于秘密指令和数据的接收与发送。例如,发送恶意控制指令,窃取信用卡账号和登录密码或其他有价值的隐私信息等[15]。
1.3 DNS DDoS攻击
拒绝服务(2enial of service,DoS)通过耗尽网络服务的资源和带宽,使服务器没有额外的能力处理外部请求,从而使网络服务崩溃、瘫痪。DoS攻击是单一攻击者对单一对象发起的攻击,即一对一的攻击方式。DDoS是升级版的DoS攻击,其攻击原理和攻击后果与DoS攻击相同,但其攻击方式变为更具有破坏性的多对一的攻击方式[16]。如图2所示,DDoS攻击将成千上万个僵尸主机联合起来在同一时间内对同一目标发起攻击,这样的DDoS攻击流量可达到1.2 TB/s[17],大多数网络服务器没有能力应对如此规模的攻击流量,从而迅速崩溃。
与其他形式的DDoS攻击相比,DNS DDoS攻击具有更强大的破坏力,这是因为DNS的分布式结构具有单点失效性,一旦某根域受到攻击,该根域下的整个网络便会瘫痪。此外,DNS DDoS攻击还可以用来发起针对性的攻击,如2016年发生的DNS DDoS攻击事件[18],其攻击目标是为3 000多家企业提供DNS地址解析服务的权威名称服务提供商Dyn,该攻击导致推特、亚马逊等知名网站在相当长一段时间内不可访问,造成巨大经济损失,Dyn也因此丧失8%的域名客户。
图2 DNS DDoS攻击
1.4 DNS反射放大攻击
DNS反射放大攻击利用DNS响应包比请求包大的特点,耗尽攻击目标的网络资源,本质上也属于DDoS攻击。DNS反射放大攻击与常规DNS DDoS攻击的差别是,攻击者不是直接向目标发起攻击,而是通过伪造IP地址,向开放DNS服务器发送请求,此时服务器会将数倍于请求报文的响应报文发送到受害方,形成间接的DDoS攻击,该过程如图3所示。据统计,DNS请求包的大小通常在40~60 byte,而开放DNS服务器响应报文的大小却可以达到4 000~6 000 byte,将攻击流量放大了近100倍。DNS反射放大攻击使得攻击者控制少量的僵尸主机,就可以达到超大规模DDoS攻击的效果,在较短时间内使受害方网络崩溃、瘫痪。
1.5 恶意DGA域名
近年来,恶意软件的数量不断增加,对网络安全造成较为严重的破坏[19]。通常情况下,恶意软件有一个固定的IP地址和一个固定的域名,在该恶意软件的生存周期内,此对应关系不会发生变化。恶意软件通过域名与特定服务器通信以实现C&C通信,这样的域名被标识为恶意域名后,只需通过黑名单过滤就可以解决该恶意软件的威胁。近年来,恶意软件为了逃避检测,使用域名生成算法(2omain generate algorithm,DGA)来不断更新域名。
DGA是一种排序算法,用于定期生成大量的域名。在发动攻击时恶意软件使用DGA快速生产大量的恶意域名。此外,攻击者还配合使用速变IP技术不断变化IP地址,使域名和IP地址都处在动态的变化中。在这种方式下,黑名单无法起到过滤DGA域名的作用,这是因为黑名单的更新速度永远跟不上DGA的变化速度,并且防御者需找出所有的DGA域名才能切断与恶意软件的C&C通信。DGA使恶意软件的检测变得更加困难,给网络安全造成了极大的威胁。
除上述5种常见的DNS攻击外,还存在一些特殊的DNS攻击。例如,漏洞攻击,攻击者利用DNS服务器缓存区溢出、访问权限等漏洞对DNS的安全性进行破坏[5];域名渗透攻击,攻击者在合法的顶点域下注册恶意子域名,从而获得顶点域的信任,进行网络钓鱼和窃取重要信息[20];蠕虫攻击,BannaCry蠕虫病毒通过特定域名控制勒索病毒的传播,受感染主机的文件被非法加密,需要支付一定的费用才可解锁[21]。
表1对上述DNS攻击的原理以及攻击造成的后果进行了总结分析。
图3 DNS反射放大攻击过程
表1 DNS攻击对比分析
2 常见DNS攻击检测技术
2.1 DNS欺骗检测技术
DNS欺骗的检测较为困难,这是因为DNS欺骗不会造成网络流量的明显变化,其数据包和普通的数据包在结构和内容上也极为相似。目前针对DNS欺骗的检测主要分为3种方式:被动监听检测技术、主动探测检测技术和交叉验证检测技术[10]。
(1)被动监听检测技术
被动监听检测技术通过统计DNS解析过程中每一个DNS请求包对应DNS响应包的数量来判断网络中是否发生DNS欺骗。通常情况下,一个DNS请求只会收到一个DNS应答,即便在一个域名对应多个IP地址的情况下也不会返回多个响应包,只是在应答报文中增加相应的应答域。但如果发生DNS欺骗,一个查询可能得到两个或者两个以上的响应包。被动监听检测的缺点是过于被动,不能积极主动地去发现一些隐藏的DNS欺骗。
(2)主动探测检测技术
主动探测技术是DNS主机自主发出DNS请求探测数据包,试探网络中是否有DNS欺骗发生。探测主机向非DNS服务方发送请求,理论上不会收到任何响应。而攻击者往往不会拒绝任何一个DNS请求,也不会检查数据包的有效性,从而返回一个欺骗响应包给探测主机。主动探测检测技术的缺点是需要发出大量的探测包,浪费带宽资源,加重网络负担;另外,DNS欺骗通常针对特定的域名,而DNS服务器中解析的域名有很多,因此该技术的检测效率往往较低。
(3)交叉验证检测技术
交叉验证技术基于DNS的反向查询功能。DNS主机首先通过域名查询获得IP地址,然后据此IP地址反向查询域名,如果二者匹配,说明没有发生DNS欺骗,否则说明欺骗攻击存在。但并不是所有的DNS服务器都支持反向查询的功能,该检测方法应用受限。
2.2 DNS隐蔽信道检测技术
目前国内外研究将DNS隐蔽信道的检测技术分为两大类:基于载荷特征的检测技术和基于流量特征的检测技术。由于DNS隐蔽信道利用DNS协议的载荷内容封装信息,载荷分析通过判断捕获的DNS报文特征和标准DNS报文特征是否存在差异来识别隐蔽信道。载荷分析的优点是原理简单,缺点是难以检测报文特征接近正常的隐蔽信道。
基于流量特征的检测技术通过宏观分析DNS流量的异常行为来检测隐蔽信道。隐蔽信道的报文特征可以造假,但流量特征是无法更改的,如某个IP地址下的DNS流量突然增多、大量DNS流量流向未知区域等。流量分析的优点是不受隐蔽信道构建技术的影响,通用性较好,缺点是需要对大规模的流量进行统计分析,是一项耗时、烦琐的任务。Farnham等[14]对常用的载荷特征和流量特征进行了总结,见表2。
表2 DNS隐蔽信道常用检测特征
随着机器学习技术的发展,目前DNS隐蔽信道检测大多综合使用载荷特征和流量特征训练机器学习模型,因此上述分类方法已经不太适用。本文从机器学习的角度出发,对近年来DNS隐蔽信道检测技术进行全面的分类和总结,并将其分为两大类:无监督学习和监督学习。监督学习又分为传统的机器学习技术和深度学习技术,深度学习又分为基于特征工程的深度学习检测技术和基于非特征工程的深度学习检测技术。最后按照分类结果的维度将每一项技术归为二分类或者多分类。
2.2.1 无监督学习
无监督学习主要通过DNS报文的载荷特征来检测隐蔽信道,并且主要的无监督学习方式是聚类。如Das等[22]提出一种基于TXT资源记录聚类的检测方法:首先从TXT记录中提取8维特征,例如字符串的熵、长度、字符比率、大小写字母的比率、数字比率等;然后对正常通信、隐蔽信道通信下的特征进行统计分析,得到每种特征的分布规律;最后依据此规律将正常流量和隧道流量聚类成不同的两部分。此方法的优点是,当样本差别较大时,不仅可以检测DNS隐蔽信道流量,还可以将不同的隐蔽信道进行分类;其缺点是,过程比较复杂,需要提前手动分析各个特征在正常流量中和隐蔽信道流量中的分布规律。除此之外,人工分析难免会发生各种误差,导致聚类的结果不理想,不能很好地达到检测的目的。因此无监督学习在DNS隐蔽信道检测上的应用不是很多。
2.2.2 监督学习
(1)传统的机器学习技术
在过去的十几年中,使用传统的机器学习技术检测DNS隐蔽信道[23-26]是非常热门的研究。如,Aiello等[23]提出了一种基于传统支持向量机(support vector machine,SVM)的检测方法,提取DNS查询和响应的数据包大小和时间间隔的统计值(如平均值、方差、偏度和峰度)作为特征,训练SVM分类器检测隐蔽信道流量;Almusawi等[24]改进了传统的SVM,并提出了一种多标签的分类器Multi-SVM,Multi-SVM不仅可以区分正常流量和隐蔽信道流量,还可以对不同的隐蔽信道流量进行分类。除SVM外,应用于DNS隐蔽信道检测的传统机器学习方法还包括随机森林(ran2om forest,RF)[25]、决策树(2ecision tree,DT)[26]等。这些方法只是在分类器的选择上存在差异,训练模型使用的特征大同小异,因此不对这些传统模型展开详细叙述。
为了进一步提高传统机器学习模型的准确性,Yang等[27]提出了一种堆叠模型,该模型将k-近邻(k-nearest neighbor,KNN)、SVM和RF结合起来生成了一个更加强大的分类器。实验结果表明,与单个KNN、SVM、RF相比,堆叠模型具有更好的准确率。堆叠模型是未来研究的一个重点方向,因为堆叠模型可以更好地学习数据集中的有效特性,从而提升检测准确度。
(2)深度学习技术
传统机器学习技术的一个共同缺点是不适用于大规模的数据集,检测精度会随着数据集的扩大而降低。深度学习可以有效地弥补传统机器学习的不足,近年来使用深度学习技术来检测DNS隐蔽信道已成为一种趋势[28-32]。本文将基于深度学习的DNS隐蔽信道检测技术分为两类:基于特征工程的深度学习检测技术和基于非特征工程的深度学习检测技术。
基于特征工程的深度学习检测技术[28-30]需要从数据集中提取感兴趣的特征并进行预处理,然后训练检测模型;而基于非特征工程的深度学习检测技术[31-32]无须人工提取特征,将数据集直接输入模型进行训练。卷积神经网络(convolutional neural network,CNN)在DNS隐蔽信道检测中被广泛使用。Bubnov[28]提出了一种多标签的CNN检测模型,并提取DNS资源记录和域名熵作为训练特征,对不同类型的DNS隐蔽信道进行检测。该模型具有非常简单的架构,仅使用单尺度卷积的CNN构建模型,检测精度不是特别理想。之后,Palua等[29]提出了一种多尺度卷积神经网络(multi-class convolutional network,MC-CNN)检测模型。与Bubnov[28]的模型相比,MC-CNN设计了不同尺寸的卷积核,可以从多个维度感知目标的特征,从而有效地提高检测精度。张猛等[30]提出了一种将DNS隐蔽信道检测与图像识别相结合的全新方法,首先将数据集中的特征输入灰度图像中,然后构建基于CNN的Lenet-5模型进行图像识别,从而达到检测隐蔽信道的目的。该方法开辟了一个全新的检测方向,突破了现有DNS隐蔽信道检测技术上的局限性。该方法的一个主要缺点是将隐蔽信道特征嵌入灰度图像时需要耗费大量的人力资源,增加了额外的工作量。
Bubnov[28]、Palua等[29]、张猛等[30]的方法都需要人工提取特征来训练模型,属于基于特征工程的检测技术。如今深度学习的数据量都非常大,提取特征并进行预处理是极其耗时的任务,而基于非特征工程的深度学习检测技术可以避免这一工作,有效地节省人力资源,所以该检测技术是最近的研究热点。
Liu等[31]提出一种BYTE-CNN检测模型,并将整个DNS数据包作为模型的输入。该模型的优点是没有依赖具体的检测特征,而是学习整个DNS数据包的结构信息,具有较高的检测灵活性。BYTE-CNN的缺点是当DNS数据包混杂过量无关信息时,检测性能难以保证。Chen等[32]提出了一种基于长短期记忆(long short-term memory,LSTM)网络的检测模型,识别DNS隐蔽信道域名。该模型同样没有依赖具体的检测特征,而是直接将域名输入LSTM进行训练。以上基于非特征工程的深度学习检测技术除可以节省人力资源外,另一个优点是模型的泛化性能好,因为没有依赖具体的特征,当攻击者修改编码机制时,可以避免重新训练一个检测模型。表3对上述基于监督学习的DNS隐蔽信道检测技术进行了对比分析。
2.3 DNS DDoS攻击检测技术
关于DNS DDoS攻击,研究人员不仅关心攻击的检测,也将研究重点放在如何缓解此攻击上。因为DNS DDoS攻击往往能造成严重的经济损失,缓解一部分攻击可以有效降低一些损失。本节按照DNS DDoS攻击的检测和缓解两个部分展开叙述。
表3 基于监督学习的DNS隐蔽信道检测技术
2.3.1 DNS DDoS攻击的检测技术
DNS DDoS攻击的检测技术可以分为两类:离线检测[33-34]和在线检测[35]。离线检测通过提取攻击期间的DNS数据包特征与正常DNS数据包特征训练机器学习分类器,将检测问题转换为分类问题。例如,Takeuchi等[33]通过训练贝叶斯分类器、Chen等[34]通过训练RF分类器对DDoS流量和正常流量进行分类。虽然这种方式可以识别DNS DDoS攻击,但是实际意义不是很大,因为DDoS攻击持续时间不是很长,攻击结束后再去进行分类也就失去了意义。
在线检测是近年来研究的重点方向,检测到攻击流量时,会设置报警信号提醒服务器采取相应的应对措施,在一定程度上降低损失。在线检测基于对流量的监控,即通过监控某一时间段内流量的变化情况来识别DDoS攻击。Trejo等[35]提出了一种KNN在线动态检测模型,将当前时刻的流量、与当前时刻在同1 h内的流量以及过去3 h内的流量作为一组训练数据。如果3个部分的流量都是相似的,则被认为是正常DNS流量,否则认为出现异常情况。在线检测的关键在于识别流量的异常变化,而真实网络环境中的正常流量也是时刻变化的,所以在线检测技术必须设置某种标准来区分流量的正常变化和异常变化。
2.3.2 DNS DDoS攻击的缓解技术
(1)响应缓存技术
响应缓存技术[36-38]利用服务器在受到攻击时可以为自己缓存中的域提供服务的特性,保证在DDoS攻击期间,部分服务可以正常运行。Ballani等[36]和Bei等[37]提出DNS解析器不要完全清除已过期的TTL(time to live)记录,而是将其转存在一个单独的“过期缓存”列表中。当DNS权威名称服务器受到攻击,其相应的解析器收不到任何响应时,DNS解析器从“过期缓存”的TTL记录中响应查询。Ballani等[36]提出的方法的局限是,该“过期缓存”列表是不更新的,长时间不访问该服务的记录仍保留在缓存中,导致“过期缓存”的响应效率较低。Mahjabin等[38]在“过期缓存”中引入一种更新机制,不断去除一些陈旧的访问记录,使“过期缓存”列表保持动态更新,大大提高DDoS攻击期间“过期缓存”机制的接入效率。
(2)负载均衡技术
负载均衡技术[38-40]基于合作的思想,在若干服务器之间共享资源。在攻击期间,受到攻击的服务器将资源解析任务转移到没有受到攻击的服务器上,有效缓解DDoS攻击的威胁。Anycast[39]是一种被广泛应用的网络路由方式,允许位于不同地域的一组服务器使用相同的IP地址。当DDoS攻击被发起时,攻击流量被发送到与它最近的DNS服务器,使攻击流量被分散,网络中不会出现单点瓶颈,从而有效缓解DDoS攻击。
Mahjabin等[38]提出了一种动态负载均衡解决方案,在DDoS攻击之前只有1~2个服务器为单一域名提供服务,在攻击期间其他服务器根据资源占用情况决定是否为该域名提供解析服务。这种方式下DNS服务器的数量不是固定的,可以随着攻击量的变化而变化,动态负载均衡技术极大提高了资源的利用率,节约了服务器成本。Bang[40]提出一种基于域重定向的负载均衡技术,其核心思想是将DNS查询重定向到备用服务器,从而防止DNS服务器过载。该技术首先将若干DNS服务器组成一个重定向链,当链中的某一个节点被大量查询流量淹没时,会通过DNAME记录(将属于某一个域的查询转移到另一个域,即跨域重定向),将查询流量重定向到其他相关的服务器上,从而实现重定向链中节点之间的流量被重新分配,有效缓解了DNS服务器流量过载的情况。
(3)其他通用技术
近年来,研究人员都致力于研究与开发一些防御DDoS攻击的通用技术,如软件定义网络(software 2efine2 network)[41]、网络功能虚拟化(network function virtualization)[42]和信息中心网络(information-centric networking)[43],这些技术也通过检查攻击流量和资源共享来缓解DDoS攻击。
2.4 DNS反射放大攻击检测技术
DNS反射放大攻击的本质也是DDoS攻击,其检测方式与上述DNS DDoS攻击检测方式相似,此处不再赘述。本节介绍DNS反射放大攻击的缓解策略,包括对开放DNS服务器的保护,过滤伪造源IP数据包以及稀释和清洗攻击流量[44]。
(1)对开放DNS服务器的保护
开放DNS服务器极容易被攻击者利用,充当攻击过程中的流量放大器,因此加强对开放DNS服务器的保护可以有效缓解DNS反射放大攻击。首先,可以考虑关闭一些不必要的DNS服务,同时加强请求服务的鉴权和认证;其次,加强防火墙、路由器的管控力度,判断流量的源IP地址,对不属于内部子网的IP地址进行阻断;最后,按照数据包大小对来自外部的DNS响应包进行过滤,并将超大的数据包直接丢弃。
(2)过滤伪造源IP数据包
反射攻击的源头是攻击者发送的伪造DNS请求数据包,如果互联网服务提供商可以检查数据包的合法性,对伪造数据包进行过滤,就可以限制DNS反射放大攻击。RFC2827/BCP38规则中建议使用数据包入口过滤技术,以避免攻击者构建虚假的伪IP数据包发起DNS反射放大攻击。但出于成本考虑,遵守这一建议的网络服务提供商较少,导致该方法没有被广泛应用,DNS仍面临虚假IP数据包的严峻挑战。
(3)稀释和清洗攻击流量
稀释、清洗DNS反射放大攻击的流量主要用到Anycast技术。在攻击期间,反射放大流量被发送到最近的Anycast数据清洗中心进行流量清洗过滤,将大规模的反射放大流量进行稀释、分散,从而有效防御反射放大攻击。
2.5 恶意DGA域名检测技术
2.5.1 基于黑名单的检测技术
黑名单技术在网络安全领域被广泛使用,将恶意域名列入黑名单是早期DGA域名研究中最常用的方法。另一种类似于黑名单的技术是使用逆向工程,即通过研究DGA的规律,在攻击之前提前抢注域名并列入黑名单,以阻止与恶意域名通信。但DGA域名通常在攻击发起时临时产生,在攻击结束时消亡,生命周期很短,将这样的域名列入黑名单是无效的。另外,网络安全人员必须不断更新黑名单以应对DGA域名的不断更新,所以黑名单技术需要耗费大量的人力资源,应用比较受限。
2.5.2 基于语言特征的检测技术
DGA域名一般比正常域名要长很多,所以长域名是DGA域名的一个关键特征,以长度检测为中心的研究也是之前的热点[45],而基于黑名单的检测方法难以检测长度较短的DGA域名。为此,基于语言特征的检测方法被提出。人为设计的域名通常具有一定的意义,而DGA域名是随机生成的,不具有实际意义,也难以发音与记忆。Ahluwalia等[46]根据词汇特性和语言特征,计算了域名的信息论度量,从而检测出长短不同的DGA域名。Agyepong等[47]通过查看域名中单个字符(unigram)以及双字符(bigram)的分布情况,计算KL距离、编辑距离和Jaccar2系数来检测恶意域名。随着编码技术的发展,许多DGA域名与正常域名已体现出很大的相似性,仅分析域名的结构特征很难达到准确的检测效果,且容易被对手规避。 2.5.3 基于流量分析的检测技术
DGA域名在一定程度上会造成DNS流量出现异常情况,例如,使域名解析器生成大量的域名不存在(non-existent 2omain,NXDOMAIN)流量。NXDOMAIN流量表明解析器没有该请求域名的相关记录。Antonakakis等[48]基于这一原理提出了一种利用NXDOMAIN流量检测DGA域名的方法。Zhou等[49]发现同一DGA域组中的每个域名具有类似的查询风格,如果能够确定某个域名为DGA域名,然后在DNS流量中寻找与该域名类似的流量,可以同时过滤掉同一恶意软件生成的DGA域组。
基于流量分析的检测技术虽可以达到较好的检测效果,但是在实际研究中这种方法并不常用,因为DNS报文中包含太多与所需信息无关的内容,分析流量规律是一项极其耗费时间的任务,导致检测效率较低。
2.5.4 基于机器学习的检测技术
基于机器学习的DGA域名检测技术是近年来的研究热点,其相关检测技术与DNS隐蔽信道检测相似,唯一的差别在于,DGA域名检测中涉及了数据样本不平衡时的解决方案,即代价敏感(考虑了数据不平衡问题)和非代价敏感的检测技术(没有考虑数据不平衡问题)。
在无监督学习中,DGA域名检测主要使用聚类算法,利用正常域名和DGA域名在语义特性和结构特性上的差异进行聚类,最常用的聚类算法为K-means聚类[50-51]。
在监督学习中,利用传统机器学习技术检测DGA域名的通用方法是提取域名的结构特征,如域名长度、熵、元音字符、辅音字符、数字字符的比率等,然后训练RF[52-53]、DT[54-55]、KNN[56]、SVM[57]等分类器达到检测目的。传统的机器学习技术依赖于特征提取,检测的灵活性较差。
在监督学习中,利用深度学习技术检测DGA域名的优势是不依赖具体的人工提取特征,有效提高了检测的准确性和灵活性。LSTM具备长期学习能力以及优秀的文本特征学习能力,是DGA域名检测中最受欢迎的神经网络。但是Boo2bri2ge等[58]发现了LSTM在多分类任务中对数据不平衡非常敏感,很难检测出域名结构特殊且样本数量较少的DGA域名。之后Tran等[59]、Chen等[60]针对这一问题,提出了一种代价敏感的解决方案,其核心思想是通过分配动态权重,提高特殊样本在分类中所占的权重,从而提升特殊样本的检测率。循环神经网络(recurrent neural network,RNN)[61]、生成对抗网络(generative a2versarial network,GAN)[62]也是DGA域名检测中较为常用的检测网络。王媛媛等[63]总结了RNN、LSTM、GAN在DGA域名检测中的优势与缺陷,具体见表4。最后将上述DGA域名检测技术进行总结,见表5。
3 DNS安全防护
基于DNS可发起多种类型的攻击,单纯的检测防御难以有效抵御各种DNS风险,因此多种提高DNS自身稳健性的安全防护方案被提出。本节从DNS去中心化、DNS加密认证、DNS解析限制3个方面对近年来的DNS安全防护方案进行总结与分析。
表4 RNN、LSTM、GAN优缺点对比
表5 基于监督学习的DGA域名检测技术
3.1 DNS去中心化
DNS的树状分布结构以及根域管理模式,导致其具有单点失效的问题。有效加强DNS安全稳健性的方法之一是改变其中心化的拓扑结构。目前关于DNS去中心化的技术方案主要包含以下3个方面。
(1)基于P2P网络的DNS去中心化
基于P2P(peer to peer)网络负载均衡的特点,研究人员提出P2P模式下的DNS解析系统。P2P网络中不存在中心节点,每个节点相互平等,网络资源和服务分散在每一个节点上,没有单点失效问题,对DDoS攻击具有高弹性,如基于Chor2的动态域名服务(2ynamic 2omain name service,DDNS)网络[64]、基于Ka2emlia的P-DONAS网络[65]。在DDNS和P-DONAS网络中,DNS域名记录的存储和检索利用分布式哈希表(2istribute2 Hash table,DHT)完成,所以这两种网络继承了DHT的良好容错特性,即DHT上的一个DNS服务器受到攻击宕机时,其数据会自动向相邻服务器转移,只有当所有服务器都瘫痪时,数据才会丢失,造成DNS解析失败。
基于P2P的DNS去中心化方案虽然能有效解决DNS单点失效的问题,但是也存在一些局限性。
· 数据延迟,P2P网络的数据需多次转发才能到达所有节点,当网络波动时,一条DNS查询可能在多个大时延的P2P网络节点上进行传输,DNS解析效率明显下降。
· 数据伪造,P2P网络缺乏验证数据真实性的机制,容易遭受DNS欺骗攻击。
· 数据冗余,P2P网络的每个节点都要进行
数据的转发,同一节点会多次收到同样的
数据,造成数据冗余。
(2)基于区块链的DNS去中心化
区块链是在不可靠环境下提供可靠决策的分布式账簿技术,具有去中心化、防篡改等特点[66]。区块链去中心化的特性使DNS可以有效抵御DDoS攻击;防篡改的特性保证DNS记录难以被篡改,从而有效抵御DNS欺骗攻击。目前较为流行的基于区块链去中心化的DNS是基于Bitcoin开发的Namecoin[67]和Blockstack[68]。Namecoin是Bitcoin的第一个衍生系统,使用虚拟顶级域名.bit提供DNS服务。Namecoin保留了Bitcoin的绝大多数功能和特性,只是将Bitcoin链上存储的交易数据替换为.bit和IP地址的对应关系,该对应关系被永久写入区块链,保证相应的域名可以一直被访问。然而,Namecoin将域名记录信息和控制信息都存储在链上,整个系统面临的数据存储压力很大,导致其在扩展性上存在一定的局限性。为了解决这一问题,将域名信息和控制信息分层存储的Blockstack系统被提出。Blockstack在区块链中仅保存少量的控制信息用于协议注册、创建域名、哈希绑定和密钥绑定,大量的域名记录信息存储在外部数据库中,实现了数据平面和控制平面的分离,提高了区块链DNS的扩展性。
基于区块链的DNS去中心化方案也存在一些局限性。与传统DNS不兼容,用户必须安装特定的解析插件才能与实际的DNS通信;面临51%攻击的风险,基于区块链的DNS,如果被控制了整个系统51%的算力,即超过一半的DNS记录可以被恶意更改,整个系统的安全性将无法保证。
(3)基于根联盟的DNS根去中心化
庞大的互联网系统仅包含13个根服务器,网络的接入和通信都以这些根为中心。DNS根中心化蕴含权力滥用的风险,可以通过DNS根区对特定的群体、组织、甚至国家发起针对性攻击,因此研究人员提出DNS根域去中心化的方案。基于根联盟的DNS根去中心化的方式主要包括如下 4种[69]:递归根,在本地递归解析服务器上直接进行根域解析,相当于在本地建立一个根服务器;伪装根,将部分根域的查询导向到该根域的伪装镜像进行解析,以降低根域的解析垄断性;开放根,建立独立运作的根服务器,打破根服务器地理分布不均衡以及根区管理被少数国家操纵的现状;全球根,添加根服务器的数量,将13个根服务器扩增到更大规模,通过Anycast技术实现对特定根区的解析。
基于根联盟的DNS根去中心化的本质是削弱根的权威性,将根服务器的解析权限分散到各个子根,在一定程度上可以缓解针对特定域的攻击。该方案的缺点是没有达到完全的DNS去中心化,根区数据仍来源于互联网数字分配机构(Internet Assigne2 Numbers Authority,IANA),根权力滥用的风险只是被降低,仍然存在。
3.2 DNS加密认证
传统开放式的DNS解析过程缺乏对数据真实性的验证和对完整性的保护,导致DNS容易遭受欺骗攻击。随着密码技术的发展,将加密技术引入DNS来保障数据传输过程的真实性和完整性受到广泛关注。目前DNS加密认证技术主要包括如下几种方式。
(1)DNSSEC加密认证
国际因特网工程任务组(Internet Engineering Task Force,IETF)提出基于数字签名和密钥加密认证的DNSSEC(2omain name system security extensions)方案[70]以确保DNS解析结果的真实性。DNSSEC为DNS根域名添加存储密钥和验证密钥是否有效的安全记录,并且从最高级别的根域名开始逐级为域名提供签名认证,从而建立一条从根区开始逐级认证的信任链。在DNS解析过程中,DNSSEC沿着信任链自顶向下解析,通过签名认证每一级子域的数据都真实可靠,从而保证DNS解析的结果难以被篡改,有效抵御DNS欺骗攻击。
(2)DNSCurve加密认证
DNSSEC并不对DNS数据本身进行加密,只是通过签名验证DNS数据的真实性,如果DNS报文被恶意抓取,会造成严重的信息泄露。为了保证DNS数据包在传输过程中的保密性,研究人员提出一种基于椭圆曲线加密算法的DNSCurve系统[71]为DNS提供链路层的安全防护。DNSCurve保证DNS请求被正确解析的机制与DNSSEC类似,差别在于DNSCurve在验证DNS数据包的真实性后还需对数据包进行加密。因此即使DNSCurve系统下的DNS数据包被恶意分析,但由于加密算法的保护,攻击者仍难以获取有效信息。
(3)协议加密认证
传统DNS基于用户数据报协议(user 2atagram protocol,UDP)传输数据,UDP在网络上明文传输,无法保证数据的安全性。此外,UDP是无连接的协议,通信双方无法验证对方的身份,容易遭受欺骗攻击。因此对DNS传输层协议进行安全增强来提升DNS安全性的方式受到广泛研究。目前最安全有效的方式是DOT(DNS over TLS)和DOH(DNS over HTTPS)方案。DOT使用传输控制协议(transmission control protocol,TCP)和传输层安全(transport layer security,TLS)协议传输数据,数据传输前DNS解析器和服务器建立TCP连接验证双方的身份,防止虚假数据包入侵;数据传输过程中使用TLS协议对DNS数据进行加密,防止数据内容被篡改和泄露。DOH的原理与DOT类似,区别在于DOH基于超文本传输安全协议(hypertext transfer protocol secure,HTTPS)进行封装,格式更加通用。
3.3 DNS解析限制
(1)设置开放服务器查询权限
开放DNS服务器提供响应外部资源请求的功能,但是网络防火墙和入侵检测系统对开放DNS服务器的保护力度不足,导致其容易被攻击者利用,实施DNS反射放大攻击、DNS信息劫持、DNS缓存中毒等恶意攻击。因此研究人员提出对开放DNS服务器设置接入权限[5],以减少网络中恶意DNS请求的数量。
(2)设置权威服务器响应速率
权威域名服务器可以统计相同来源DNS查询的频次,据此可以设置一个响应计数阈值来限制响应的数量。在一定的时间段内,DNS响应次数达到设定的阈值,权威域名服务器停止响应,以降低其遭受DDoS攻击和反射放大攻击的风险。
4 未来研究方向
4.1 DNS攻击检测方面
随着攻击技术的发展,检测技术也需不断改进,目前DNS攻击检测技术存在如下局限性待解决。
(1)检测模型的更新往往落后于攻击技术的变化,难以应对变型攻击。如恶意DGA域名的检测技术往往落后于DGA域名变化的速度[72],导致恶意域名不能被及时发现,造成安全隐患。
(2)缺乏对特殊攻击的深入研究。目前大多数检测技术缺乏对特殊攻击的深入研究,如低吞吐量下的DNS隐蔽信道,此类型的DNS隐蔽信道虽然降低了信息泄露的速率,但即便一个DNS数据包只泄露1 bit的信息,在一年后泄露的信息量可以达到26 GB[73]。特殊类型的攻击应引起足够的重视。
(3)检测的时效性难以满足。目前多数检测系统只关注检测的准确性和鲁棒性等指标,然而检测效率对检测系统同样重要。隐私泄露、DNS欺骗、DDoS攻击等具有严重后果的攻击如果不能及时被发现,会造成严重的后果,因此未来的检测系统需不断提高检测的时效性。
4.2 DNS安全方面
针对DNS安全问题,目前已经涌现了大量研究成果,但是DNS攻击事件仍不断发生,这是由DNS自身安全脆弱性造成的,检测与缓解技术难以应对各种攻击方式。因此未来研究应重点提升DNS自身的稳健性来降低遭受攻击的风险,未来DNS安全防护可以关注以下几个方面。
(1)加大去中心化DNS研究力度。基于区块链的DNS可以有效兼容区块链技术的各项优点,是未来DNS去中心化的重要研究方向。目前基于区块链的DNS设计面临如下挑战。
· 兼容性有待提高。基于区块链的系统与DNS是各自独立的两部分,兼容性差[74],需要安装特定的解析插件才能访问域名系统,只有不断提高两者的兼容性,才能使基于区块链的DNS被广泛部署。
· 共识算法的效率有待提高。DNS的数据需要不断更新和维护,数据需要在整个链上达成共识一致更新。然而目前主要的共识算法的效率较低,难以满足DNS数据实时更新的需要[75],如工作量证明、权益证明等,因此结合DNS场景需求设计高效的共识算法是基于区块链DNS去中心化的重要课题。
(2)提高DNS加密方案部署覆盖率。基于加密技术和签名认证技术实现了对DNS资源记录完整性和可靠性的保护,可以有效地解决DNS欺骗攻击,保护DNS的安全,然而该技术的部署覆盖率却不是很高,如DNSSEC在顶级域的部署率为89%,而在二级域的部署率仅为3%,这是因为目前大多数DNS加密方案普遍存在如下问题。
· 兼容性差。目前绝大多数的加密方案需要对DNS协议进行修改,且难以与DNS兼容运行,造成这些研究成果难以在实际中被广泛推广,如何提高加密防护方案与DNS的兼容性是未来DNS加密技术研究的首要方向。
· 网络资源开销大。基于加密技术的DNS中,DNS数据包会携带大量的数字签名消息,耗费额外的网络带宽资源。这一特点一旦被攻击者利用,会增加DNS受到放大攻击的风险[69]。因此需要进一步地研究DNS加密技术的安全性与资源消耗的平衡。
4.3 云环境下的DNS安全
云服务的蓬勃发展使DNS服务逐渐向云端迁移,云环境相较于传统的互联网更加复杂,云安全面临更加严峻的挑战。据调查,在云服务对象中,有42%的组织受到了来自DNS云应用的宕机攻击,云环境下的DNS安全同样面临严峻的挑战[76]。
(1)云环境下基于DNS的数据泄露。云服务伴随着数据的海量存储,越来越多的数据在Internet上传输,传输的信息越重要,发生泄露后造成的影响越大,如利用DNS隐蔽信道进行隐私数据的传输和窃取[5]。云环境下基于DNS的数据泄露需引起高度关注。
(2)云环境下的DNS欺骗。网络钓鱼和恶意软件欺诈在云环境中依然有效[77],缓解云环境下的DNS欺骗是一个重要的研究方向。
(3)云环境下的拒绝服务攻击。云环境下域名解析服务集中到少数云服务提供商。文献[78]表明91%~93%的二级域共享同一个权威名称解析服务器,因此云环境下的DDoS攻击一旦成功,会造成更加严重的后果。云环境下DNS服务的集中化发展已成趋势,如何有效检测DDoS攻击和缓解集中化后遭受DDoS攻击的风险,亟待进一步研究。
5 结束语
DNS功能的多样性使其遭受攻击时造成的后果愈发严重,因此提高DNS攻击检测能力与加强DNS安全防护是保障DNS功能扩展的必要前提。本文详细介绍了常见DNS攻击的检测技术以及增强DNS安全性能的防护方法,并对未来DNS安全的研究方向进行了展望。希望本文可以为相关领域的研究人员提供一定的参考。