基于AI的DNS协议 C&C 连接检测 – 作者:新华三攻防团队

0. 摘要

为了防止攻击者利用DNS协议技术进行恶意活动,检测网络流量中的C&C通信,本文详细分析了不同的场景下C&C通信技术原理和特征,并给出了基于多种AI算法从多个维度进行检测的方法。

1. 前言

随着互联网全球化的发展,在利益的驱使下,黑客攻击者利用僵尸网络控制大量的主机,并利用这些感染病毒的主机进行大量的恶意活动,比如发送垃圾广告邮件、窃取用户信息等。僵尸主机利用DNS授权服务器来解析域名,目的是为了和C&C服务器创建通信通道,接着获取控制命令,继而进行一系列的恶意网络活动。

随着攻防的升级,以往通过建立黑名单来阻止黑客攻击的方法已经失效,攻击者通常会使用Domain-Flux或者Fast-Flux等技术手段来躲避黑名单的检测。例如在Domain-Flux的网络中,DGA域名一般是随机的字母和数字的组合,从字符分布上看DGA域名相比较于正常域名会有明显的异常,可以利用机器学习的方法提取不同的特征(例如域名等级,域名长度,字符距离等)来进行进一步的检测和识别。

为了检测网络流量中的C&C通信,我们针对例如Domain-Flux、Fast-Flux、和DNS隧道等不同通信场景,采用了不同的方法进行检测,具体的检测方法会在下文详细介绍。

2. DNS协议及C&C连接技术

(1)DNS协议介绍

DNS( Domain Name System)是“域名系统”的英文缩写,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS中保存了一张域名和与之相对应的IP地址的表,通过域名得到IP的过程叫做域名解析,域名到IP地址的解析是由分布在因特网上的许多域名服务器共同完成的,图1给出了DNS域名服务器树状结构图。

1622792777_60b9da49380f2ba1d93d5.png!small?1622792777603

图1:树状结构的DNS域名服务器

当用户想要访问某个域名时,计算机将首先查询其本地DNS 缓存。如果找不到结果,它将查询其配置的本地DNS 服务器。本地DNS 服务器将检查其本地缓存,如果没有缓存,它将查询根DNS服务器或其他上游DNS 服务器。然后,根DNS 服务器将查询DNS 服务器指向适当的顶级域DNS 服务器。然后,顶级DNS 服务器将指示查询DNS服务器到权威DNS 服务器,权威DNS 服务器将解析请求域名的IP 地址。图2给出了DNS查询的过程,主机向本地域名服务器的查询一般采用递归查询,而本地域名服务器向根域名服务器的查询通常采用迭代查询。

1622792844_60b9da8c5edabd471ce7d.png!small?1622792844661

图2:DNS查询过程

(2)Domain-Flux技术

Domain-Flux技术指的是不停的改变和分配多个域名映射到一个或多个IP的行为。在僵尸网络中,客户端的寻址是一个动态的过程,在这过程中域名与IP之间的对应关系是动态变化的,在规避域名黑名单的同时也可以实现有效通信。在这个过程中并不是单一域名到不同IP之间的解析,而是利用域名生成算法,例如算法基于当前的日期每天动态的生成大量的域名,并形成一个拥有大量域名的域名动态池。

为了躲避检测和封堵,提高自身的生存能力,灵活的控制各个被感染的主机,以及达到更好的隐藏效果,延长僵尸网络的存活时间,大量攻击者利用域名系统进行僵尸网络的组织和控制,该技术增加了安全人员对僵尸网络进行检测的难度。

(3)Fast-Flux技术

在正常的DNS服务器中,用户对同一个域名做DNS查询,在较长的一段时间内,无论查询多少次返回的结果基本上是不会改变的,而Fast-Flux技术是为一个域名配置多个IP地址,同时这些IP地址更换的频率非常的快,通过动态变化IP地址完成和域名的映射,这种情况下用户在每次访问某个域时实际访问的不是同一个主机。

攻击者将这些感染的主机仅仅作为代理将需求转发给实际的控制者,完成控制者和被控机器的通信。对于攻击者而言,利用Fast-Flux技术使得僵尸网络不易被追查,并且在控制过程中,从代理网络中剔除不可用以及服务能力较弱的代理,大大延长了僵尸网络的寿命。

(4)DNS隧道技术

DNS隧道(DNS tunnel)技术,就是利用DNS查询的过程建立起隧道并完成数据传输。DNS隧道通常由被控制端和控制端两部分组成,被控制端运行在内网主机上,负责将数据封装为对特定域名的请求解析报文,并通过互联网上多级域名服务器间层层转发,最后分发给DNS授权服务器。控制端程序分析并解码请求解析报文,将应答数据封装成为特定的DNS应答报文,再通过互联网多级域名服务器回送给被控制端,其基本架构如图3所示:

1622793351_60b9dc87e1108e273cdce.png!small?1622793352196

图3:DNS隧道基本架构

DNS协议之所以能被利用作为隐蔽隧道的一种通信协议,有2个原因:

DNS作为因特网的核心基础服务,大部分入侵检测设备和防火墙很少会过滤DNS流量;

DNS协议中定义的一些字段让DNS协议可以灵活的被应用,攻击者可以将恶意有效荷载存储在不同的资源记录中。

以上两点在应用DNS协议实现隐蔽隧道技术中起到了关键作用,可以利用它建立起C&C通信,实现命令与控制。

3. 基于AI的C&C连接检测方法

3.1 Domain-Flux检测

a) DGA域名检测

3.1.1 DGA恶意域名特征分析

域名特征提取是进行DGA域名检测的关键一步,特征选取直接关系到检测结果的准确性。首先我们针对正常域名和恶意域名的特征进行对比分析:

域名字符长度:正常的域名为了可以方便用户进行记忆,都不会使用太长的域名,而DGA域名通常是由DGA算法随机产生,同时为了避免和已有的域名冲突,一般DGA域名的长度普遍较大;

元音字母占比:正常域名通常采用单词或者名字的拼音来方便用户的记忆,正常域名往往会注入一定的元音字母让域名更加具有可读性。而DGA域名是由DGA算法随机产生,往往不考虑到域名的可读性。因此,DGA域名的元音字母的比例会比正常域名的少;

唯一字符数量:唯一字符是域名中不同字符的个数,例如“google”的唯一字符是4,“sina”唯一字符是4,由于DGA域名生成的算法决定了其具有很大的随机性,这会导致唯一字符数量会比较高。

3.1.2 DGA域名检测方法

人工特征提取:针对上述描述的DGA域名的典型特征,分别对域名的字符长度、元音字母占比、和唯一字符数量等特征进行统计分析,将统计结果向量化;

神经网络特征提取:LSTM的全称是Long Short-Term Memory,它是RNN(Recurrent Neural Network)的一种,而BiLSTM是Bi-directional Long Short-Term Memory的缩写,是由前向LSTM与后向LSTM组合而成,本文采用BiLSTM算法对输入的数据进行更深层次的特征提取;

特征融合:将人工提取的特征和神经网络提取的特征进行融合,将融合后的特征使用机器学习算法进行建模,并生成模型;

DGA域名检测:针对待检测的数据,调用上述训练好的模型,并输出初步的检测结果。本文就初步的检测结果设计了一个后处理过程来提高检测的准确性,在模型判断是DGA域名之后,结合响应IP对检测结果进行后处理,根据响应IP不同的返回值来进一步确认当前域名是否为DGA域名。

整体检测流程图如图4所示:

1622794106_60b9df7abb6f411f022aa.png!small?1622794106938

图4:DGA域名检测

b) Domain-Flux检测

3.1.3 Domain-Flux特征分析

Domain-Flux技术指的是不停的改变和分配多个域名到一个或多个IP的行为。在Domain-Flux中,僵尸主机访问的C&C域名是根据一定的算法动态生成,该方法在一段时间内会生成大量的新域名,相比较于正常域名,其有以下几个特征:

NX-Domain域名数量高:僵尸网络在利用Domain-Flux技术时,其所生成并使用的域名在子域名数量,新域名的出现和子域名活跃方面与合法的域名有着明显的区别,当一个域名被访问,即某一域名请求解析时,此域名在此时是活跃的,但是在僵尸网络中只有很少的域名会被注册成真实的活跃域名,在寻址的过程中会产生大量的NX-Domain域名,从主机角度来看,数量上比正常用户要高很多;

TTL普遍较低:很多僵尸网络利用多个二级域名或者三级域名为基础来生成子域名,即向域名注册机构申请多个二级或者三级域名,在此基础上生成多个子域名备用。对于生成的域名集合,根据需求将域名结合解析到一个或多个IP上去,为了保持可用性,其解析记录在配置时,会配置较低的TTL。

3.1.4 Domain-Flux检测方法

针对上述的基于Domain-Flux的僵尸网络的明显特征,我们采用AI基线引擎的方法对Domain-Flux进行检测。由于僵尸网络在利用Domain-Flux技术时会产生大量的NX-Domain报文,针对这一特点,我们首先从原始日志中查询出指定时间的DNS审计日志,并统计内网主机访问的NX-Domain个数,NX-Domain占主机访问总域名个数的比值,平均访问时间间隔,平均TTL值等;接着使用异常检测等AI算法处理特征数据并更新基线;最后进行基线检测,并将检测出的异常数据进行上报。

3.2 Fast-Flux检测方法

3.2.1 Fast-Flux特征分析

基于Fast-Flux的僵尸网络,最显著的特征就是IP的不停的变化。该类型的僵尸网络使用不断变化的C&C服务器,而这些服务器往往都是被感染的PC主机,PC主机的使用环境很有可能会导致IP地址的不稳定和IP地址分布的杂乱等情况,相比较于正常网络,其特征体现在以下两个方面:

返回的IP数量:通常合法网站的域名查询返回的IP是固定不变、规模有限的集合,而Fast-Flux网络返回的IP地址是不断变化的,或者在一次DNS查询中给出多个IP地址并使用轮询调度的方法分配IP,并且僵尸网络会每隔一段时间更新其代理机器,因此,在一段时间内,Fast-Flux僵尸网络域名查询得到的IP地址数量会持续增加。

IP所属国家特征:采用Fast-Flux技术的僵尸网络,由于受感染主机的不同区域分布,用来作为代理的主机会分布在不同的国家(对应不同的时区),一般来说,基于Fast-Flux技术的僵尸网络的IP地址分布在不同的国家(对应不同的时区),而正常的域名IP一般都在一个国家或者少数几个国家中,我们提取返回IP的国家属性特征或者对应的时区特征。

3.2.2 Fast-Flux检测方法

针对上述的基于Fast-Flux的僵尸网络的明显特征,我们首先考虑从输入的数据中统计每个域名响应的IP地址序列和对应的时区数据,并将每一个域名的统计结果(响应IP数量以及时区的熵值)和上一个周期进行累加更新,最后使用AI算法对数据进行异常的检测,并将检测到的异常结果进行上报。

3.3 DNS隧道检测

3.3.1 DNS隧道特征分析

DNS隧道会在以下几个特征上体现出差异:

域名长度:为了尽可能多的传递数据,DNS隧道中的请求域名长度相比较于正常DNS的更长。为了方便记忆和理解,在正常的DNS数据包中,域名长度一般远小于规定的字符上限。而在DNS隧道中,在数据传输的过程中往往会出现大量的超长请求域名。

域名熵值:常见域名是以日常中的单词或者一些有规律的词组命名,所以正常域名熵值低。然而DNS隧道为了增强隐蔽性,提高抗字符分析能力,一般会均匀的使用各个字符编码,这就使DNS 隧道的域名的混乱程度较大,熵值较高。

时间间隔:时间间隔指的是同一个客户端上该DNS请求数据包和上一个DNS请求数据包之间的时间间隔,正常DNS请求数据包的平均时间间隔和最大时间间隔都远大于DNS隧道请求数据包的时间间隔。

TTL均值:DNS 服务有缓存机制,DNS 查询时的返回数据中包含TTL值,表示本次查询记录在缓存中的可存在时间。正常的域名由于要提高DNS 查询速度, 会设置一个较高的TTL,且查询域名一般情况下不会改变。但是DNS隧道的通信方式决定了每次用于通信的域名都是不同的,因此DNS 隧道数据包中的TTL均值都很小。

不同子域名数:正常流量中的域名一般都是固定的,DNS 隧道流量将每次通信的信息放在域名中,因此与正常域名相比,隧道域名的子域名个数明显增多。相应的,不同子域名数占总域名数个数的占比也会很大。

3.3.2 DNS隧道检测方法

DNS隧道检测采用单个域名,在较短时间窗会存在大量的误报,漏报。针对以上情况,采用在一个较长的时间窗口中,将每个主机的一级域名对应的子域名组成一个集合,结合较长的历史数据组成的集合,提取比较突出的特征,充分考虑了连续的行为特征。

以下分别从训练和预测两个维度对本文提出的检测方法进行介绍,整体检测流程图如图5所示:

训练:首先基于主机IP,在一个时间窗口内,取出每个一级域名对应的全部子域名,并组成一个集合,分别针对上文描述的特征进行对应的提取;然后使用机器学习方法对输入的特征数据进行建模,并输出训练好的模型;

预测:将训练好的模型部署到系统中,对待检测数据进行模型预测,并将预测的结果进行上报。

1622794921_60b9e2a9aadc095a5e96a.png!small?1622794921946

图5:DNS隧道检测

4. 结束语

黑客攻击者利用僵尸网络或者DNS隧道技术对感染病毒的主机进行了大量的恶意活动,给互联网的使用者带来了很大的不安全因素。本文基于对DNS域名数据分析的基础上,详细分析了不同攻击情形下的攻击特点,并从这些特点出发结合现有的人工智能算法给出了相应的攻击检测方案。

因为研究时间有限,方案仍有待改进的地方,例如可以更深层次的挖掘一些还未被使用的特征、对域名的请求响应解析等行为进一步的分析等。后续我们将继续努力,使技术方案更加完善。

来源:freebuf.com 2021-06-04 18:05:13 by: 新华三攻防团队

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论