1.前言
DNS是互联网和物联网(IOT)的“神经系统”,是连接网络的第一步动作,DNS系统是一个基于C/S结构的巨型分布式数据库系统,实现域名到IP地址的转换,对用户访问各种互联网应用至关重要。DNS协议设计之初的目标是提供一种一致的命名空间和灵活高效的解析服务,DNS系统有着良好的系统性能,同时作为一个开放的系统,也存在着诸多的安全问题和隐患。
DNS协议的数据报文不受限制地传输,使得DNS通讯作为隐蔽通道在整个攻击链多个环节被黑客们广泛应用,通过研究DNS流量或数据,可以发现网络的安全攻击以及异常行为。虽然很多企业正在全力以赴地应对网络安全威胁,以期能检测和规避网络攻击,但遗憾的是,大多数企业并没有对DNS安全起到足够的重视,至使企业的数据、资产和信誉都处在风险之中。思科2016年度安全报告指出,近91.3%的“已知不良”恶意软件被发现使用DNS作为主要手段,但68%的企业却忽略了这个问题,并没有对DNS解析进行监测,思科非常形象地把这称作“DNS盲点”——DNS是互联网上最常见的协议,但它却成为了最容易被忽视的。
恶意软件一般通过DNS实现命令与控制(Command and Control)信道、窃取数据和重定向流量等三个目的。除了恶意软件,还有很多网络攻击也离不开DNS,比如APT攻击、垃圾邮件、僵尸网络和挂马网站等,它们都在利用DNS伺机攻击企业的网络。
US-CERT(United States Computer Emergency Readiness Team,美国计算机应急小组)提出应控制企业内网到外网的DNS流量来保证DNS请求和响应的安全性:即只能向企业内部被授权的DNS缓存域名服务器发起请求和接收响应,不允许直接使用外网DNS系统。具体措施包括自建企业DNS缓存服务器,对企业DNS流量进行监控和过滤,除了内网DNS缓存域名服务器和授权域名服务器,对所有向53端口发送和接收的UDP和TCP流量进行阻止和过滤。一方面对DNS流量进行必要的监控和管理,这是检测潜在恶意网络活动的一个重要工具;另一方面对DNS数据报文进行分析和处理,阻断对恶意链接的访问,避免垃圾邮件、挂马网站、僵尸网络和钓鱼网站的侵害。DNS数据中有大量的信息可向企业提供网络内部发生的情况,在企业遭受基于DNS的安全威胁时,DNS就有了更多的用武之地,大量的DNS数据记录可帮助网络安全人员分提取有效信息、进行必要的取证和防护处理。
2.分析总体思路
域名在一定程度上反映了用户的网络访问行为,对一些用户而言,每天能监测到海量的域名信息,如何从这些海量信息中,抽取需要人工能确认或分析过来的信息至关重要。海量的域名信息,经过白域名库、黑域名的筛选,形成的灰域名数量可以大大减少,可以到达工具或人工的分析程度,同时分析的结果又可以反馈到名单库中。DNS数据分析总体思路如下图所示:
DNS协议虽然简单,但是流量抓到的内容比分析DNS服务器的Query Log可以获取更多的信息。本文的场景都以记录DNS流量作为输入,可以通过镜像或分流设备获取流量,也可以直接分析PCAP格式的抓包文件。
具体的检测方法,包括针对域名的词法特征检测和针对域名的行为特征检测。
(一).基于多元属性特征的检测方法(也称静态安全检测)
静态特征分类器的训练样本来自现有黑白名单,形成训练样本,样本依据黑白名单,总结域名的词法特征,将实际监测的域名标注为三类——“黑”、“白”、“灰”。
(二).针对域名的行为特征方面(动态安全检测)
动态安全检测是针对域名的行为特征进行识别,将域名的属性,域名请求的时空、频率,通信行为等多个维度的特征进行综合分析、相互进行印证。
利用机器学习技术可以从大量的随机生成域名数据中学习到正确有效的信息,从而检测到恶意域名。
3.安全分析场景
3.1隐蔽隧道的监测场景
(一)场景描述
DNS通道是隐蔽通道中最常见的一种类型,通过将其他数据封装在DNS协议中进行数据传输,由于大部分网络不会对DNS流量进行过滤,这就给DNS作为隐蔽通道提供了条件,从而可以利用它实现诸如远程控制、文件传输等操作,恶意软件正是利用了这一点,通过在DNS协议中构建隧道,进行命令控制和数据窃取,比如通过DNS响应来接收指令,并利用DNS查询请求,传送窃取到的数据,如用户或企业的敏感信息。DNS隐蔽通道也经常在僵尸网络和APT攻击中扮演着重要的角色。
DNS隐蔽隧道从提出到现在已经有了很多的实现工具,历史比较早的有NSTX,Ozymandns,目前比较活跃的有iodine,dnscat2,其他的还有DeNise,dns2tcp,Heyoka等。
(二)分析策略
我们主要通过以下几种方式进行分析:
请求和响应包的大小监测:DNS在查询域名或者反查IP地址的时候会将域名或者IP地址格式化为一个叫查询名的带有多个标签的序列,每个标签序列最大元素个数只能为64,但可以有多个标签序列。通常情况下每个标签序列是远远达不到64,当只有一个标签序列且标签元素正好为64的时候,DNS请求报文的应用层数据不超过100Byte;
DNS请求响应记录分布:通常DNS隐蔽隧道的FQDN数在一定时间窗口内会远高于正常的DNS流量,通过分析一定时间窗口内所产生的FQDN数,可以发现DNS的隐蔽隧道线索;
数据包关键字段异常的编码监测:通过数据包关键字段异常的编码监测,支持如下的DNS隐秘隧道发现:通过超长域名信息传递数据、通过txt请求传递数据、通过AAAA记录传递数据等。
(三)分析样例
我们在一些实际的网络环境的出口处捕获了众多的异常数据包,下面是其中的两个较为典型的情况。
(1)请求包异常,其中查询名中包含有非正常的请求域名:
(2)响应包异常,其中响应字段中包含大量的非正常域名或者IP字符串:
3.2恶意域名的访问分析
(一)场景描述
目前网络中有相当一部分已知木马采用域名关联的方式进行网络信息的窃取。当内网中的计算机被植入木马后,会主动的向木马的植入方所指定的域名源源不断的发送信息,而该域名所针对的IP往往会经常发生变化,很难捕捉到一个固定的IP。针对木马的这一特征,可以引入黑名单的概念,只要内网的计算机与黑名单中的域名发生连接时,可直接确认是异常行为,该机器可能被植入了一些恶意程序。通过DNS解析行为分析服务器或终端的异常行为。可以确认已知、未知的恶意软件、APT攻击以及实时监测内部的威胁。
(二)分析策略
本部分包括动态域名、C&C域名、钓鱼域名、DGA域名、木马域名等异常访问的监测。同时也包括对定期心跳域名访问的监测(通过白名单先进行筛选)。下面就动态域名、C&C域名、心跳域名为例进行说明。
动态域名分析是用于分析网络上是否存在木马活动行为的重要手段之一,网络上的一些通过域名进行窃密活动的木马中有相当一部分所使用的域名是动态域名,我们可以将网络上的存在的动态域名的解析的行为进行针对性的提取分析,通过动态域名分析、动态域名解析排名和动态域名访问排名等不同的角度对线索进行分析,从而发现网络上存在的异常行为。
依靠外部的C&C恶意域名列表,对所有的用户对外访问的DNS进行监测,一般内部用户不会直接访问C&C服务器,如果出现这些行为都代表内部用户确实出了问题,该访问都会通过颜色标识进行告警。
心跳域名可以检测一些使用域名解析状态作为心跳机制的后门或恶意软件,将之作为触发某些操作的条件。
(三)呈现样例
通过工具平台展现分析的结果:
3.3Visibility场景:解析的趋势分布
(一)场景描述
在信息安全领域,看见(visibility)的能力很重要,要知己知彼,其实异常行为是最关键的一条安全线索,先能看见,才能做好后续的风险控制。很多DNS隐蔽隧道使用TXT记录类型发送请求和响应,而在正常的DNS网络流量中,TXT记录的比例可能只有1%-2%,如果时间窗口内,TXT记录的比例激增,那么也意味着存在异常。
(二)分析策略
(1)元数据收集
通过部署流量捕获设备,对覆盖区域的DNS解析数据进行获取并分析,对访问的所有域名进行分析记录。记录的字段包括:query_datetime、response_datetime、qname、qtype、src_IP、src_port、dst_IP、dst_port、client_subnet、rcode、answer_num、authority_num、authority、direction、identification、additional、additional_num等。
(2)不同的维度趋势展示。
时间纬度:将域名解析记录在不同周期尺度上(每天、每周、每月)建立解析基线,计算当前周期与已有基线的偏离程度,以判定当前周期的域名请求内容、请求次数是否异常;同时,可以将当前周期判定确认的结果作为新的基线数据,加入到该域名的请求内容、请求次数基线中,以对基线进行修正,进一步优化判定结果。
不同记录维度:对dns解析中的不同记录的流量趋势进行展现,以便更精确的发现安全问题。相关的展现维度包括:Query Type Distribution、Return Code
Distribution、Top Queries、Top
Level Domains、Top Reverse Resolution Entries (PTR)、Top Errors、Slowest Transactions、Top Destinations、Top Sources、Request Count、DNS Packet Length等。
(三)呈现样例
以下为请求、响应的包的分布统计展示:
3.4用户行为分析场景
(一)场景描述
由于绝大多数应用都需要通过DNS,通过DNS可以清晰地了解谁在什么时间访问了什么域名,所以DNS还是一个很好的用户行为分析的数据源。
(二)分析策略
针对解析趋势,通过三个不同的维度进展展示。
域名统计模块:统计出所有域名的访问量,通过使用Top排名进行排序,支持多种不同统计方式如、排名统计、排名趋势、访问量趋势、A记录统计、MX记录统计。让管理员直观了解,哪个域名或网站请求量大,还可以自定义时间查询。Top排名和域名分析功能模块,有效的分析出网络热点,Top还可以列出网络热点排名前100位。
访问量(QPS)分析模块:支持客户端排名,帮助管理员快速找到访问量最多的用户,并详细列出该用户访问过的全部域名以及访问量。管理员通过访问量分析用户访问量过高的原因。
热点域名地理位置分析、类型分析
(三)呈现样例
3.5高风险主机检测分析
(一)场景描述
通过DNS解析行为分析服务器或终端的异常行为。可以确认已知、未知的恶意软件、APT攻击以及实时监测内部的威胁。
比如:源地址192.169.1.20曾经访问过aadeekijksadffs.f3322.org域名,而该域名在威胁情报系统中显示曾经与恶意软件有关联,表明192.169.1.20可能安装过恶意软件。内网源地址192.169.1.16曾经访问过liyongyong88.3322.org域名,通过网络搜索发现,该域名曾经被用做远控肉鸡的域名,证明内网主机192.169.1.16可能中过远控木马。源地址192.169.1.163、192.169.1.164曾经访问fushuqing.f3322.net域名,此域名曾经被用过钓鱼网站,现在被用来搭建了一个棋牌游戏网站。
(二)分析策略
在数据采集、存储分析及模型匹配的基础上,根据主机请求恶意域名特征建立数学模型,综合多维度检测结果及置信度,实现主机信誉度的排名,风险越高的排名靠前,从而帮助客户集中精力解决最危险的僵尸网络端点。
(三)呈现样例
3.6新增域名的监测场景
(一)场景描述
大多数用户的日常行为是可预测的,每天的日常活动都差不多,其域名访问行为95%以上是存在一致性的。恶意的内部人员在偷盗数据或搞破坏前一定有异常的行为。对于可疑的员工连接关键资产一定要引起足够重视。这种异常通常未必是一个确定的违规行为,但它可以作为重要的调查信息,及时发现存在的安全隐患或事件苗头。
(二)分析策略
定义一段时间的学习时间,当超过学习时间之后出现了解析新的域名则认为是有问题的,如果检测到黑名单(黑域名,钓鱼域名,僵尸域名,动态域名,DGA域名)则不要计入学习范围内。如果出现新的域名,则很大可能是可疑或恶意域名,需要进一步分析确认。
(三)呈现样例
显示学习时间过期之后的新增域名:
3.7DNS Server监测场景
(一)场景描述
在很多攻击场景下,攻击者会指定专门的DNS Server,通过控制的客户端和指定的目标DNS
Server连接,通过将数据编码封装在DNS协议中进行通信,这种方式速度快,是攻击者常用的一种方式。部分木马的客户端和服务器的dns通信,也采用专门的DNS
Server,目的是躲避常见的安全监测手段。
(二)分析策略
一般网络中都会指定专门的DNS server,或者采用自建的DNS
server,采集dns解析过程的Server信息,对不是白名单范围内的server解析行为进行监测预警。
(三)呈现样例
显示异常的DNS Server信息:
3.8Rdata数据的深入分析
(一)场景描述
所谓Rdata是指在DNS记录中与类型相关的数据部分。比如对于DNS的A记录中的IPv4地址或者MX记录中的主机名及其优先级。在分析DNS的数据过程中,常常能见到无法正常解析的各种不同种类的Rdata,对这些无效Rdata进行分析能挖掘出很多有价值的信息。
Nxdomain数据,即域名没有对应的IP地址及其他RR记录的请求进行分析。现在的DGA肉鸡往往查询大量的域名,这其中只有少数的域名成功解析到了C&C服务器的IP地址。因此,每一个感染主机都会有一些NXdomain应答的DNS查询,而这些NXdomain中有一部分同样也被其他感染主机查询过。存在大量的NXdomain应答的主机很有可能感染了恶意程序,同时检测与NXdomain相似的活跃域名可以进一步找出僵尸网络的C&C服务器的IP地址。
(二)分析策略
下面就Rdata两种类型数据进行说明:
域名解析失败或者域名解析超时:一个网站集群或者单位服务器区会解析的域名和数量有界的,会出现解析失败或者解析超时的域名和数量也是有界的,正常情况下会出现一部分解析失败或者超时的情况,但是不会一直有新增的解析失败和解析超时的事情发生,有些后门使用域名解析的状态来触发某些动作,有些后门会不断的尝试解析大量的域名直到有解析成功的为止。
域名解析指向环回或私有IP地址:域名的解析结果指向环回地址或者指向私有的IP地址,指向环回地址绝大部分是非正常的,指向私有IP地址需要进一步确认。
(三)呈现样例
单个解析超时的数据包:
单个解析NXdomain的数据包:
解析失败(NXdomain标志)的域名分布:
4.总结
DNS是互联网的“神经系统”,数据非常有价值。DNS协议的数据报文不受限制地传输,使得DNS通讯作为隐蔽通道在整个攻击链多个环节被黑客们广泛应用,基于DNS数据为基础,能够得到大量网络应用行为的信息,采用大数据分析和机器学习,通过静态特征检测、动态监测与验证,对这些数据深入挖掘,能够获得有恶意目的的网站、应用的使用、传播等信息。对这些信息利用,可以获得互联网络当前的安全现状、安全情报,配合网络上的防护设备,可以阻止恶意网站的访问、限制恶意应用的传播,以及打击僵尸网络,实现安全事件的分析预警防护功能。我们将在实践中不断挖掘数据的价值。
作者:迷路的指南针
声明:本文来自Sec-UN,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。