技术详解|DNS 隧道及无监督异常检测
DNS 隧道介绍
DNS 隧道是一种隐秘的隧道,通过将其他协议封装到 DNS 协议中,建立传输通信的方式。
DNS 协议是网络中一种必不可少的基础服务,所以大部分防火墙和入侵检测设备不会对 DNS 流量进行拦截过滤,这就为 DNS 做隐蔽通信提供了有利条件,从而利用它实现如僵尸网络、木马等的远程控制通道、对外传输数据等威胁到企业安全的事件。
DNS 隧道运行原理可归纳为:“如果你不知道,请问别人”,即当 DNS 服务器收到解析地址的请求时,服务器开始在其数据库中查找,如果没有找到记录,服务器会向数据库中指定的域发送请求。

DNS 隧道攻击示例
僵死的主机会发起 URL 请求,比如域名为“Y3VyaW9zaXR5.example.com”,DNS 服务器收到此请求后,将首先尝试在本地查找域扩展名“.com”,然后查找“example.com”,当在其数据库中无法找到“Y3VyaW9zaXR5.example.com”时,它将会向公网服务器发送请求,并询问它是否知晓这样的名称,作为回应“example.com”预计将返回相应的 IP。值得注意的是,它可以返回任意字符串,包括 C&C(命令和控制)指令。

DNS 隧道 C&C 通信原理
影响及危害
如果主机已中毒,攻击者可以利用 DNS 隧道控制主机对外发起 DoS 攻击,可能存在被网安、网信办通报的风险。
如果主机已中毒,攻击者可以利用 DNS 隧道对外传输敏感数据,导致客户信息泄露。
通过 C&C 服务器对受害主机进行操控,C&C 服务器不仅可以收集被害主机的信息,如操作系统、应用软件和开放端口等,还可以向被害主机发送控制指令,指使它执行某些恶意行为。攻击者也可以将被害主机作为跳板,通过其感染更多网络内的主机,最终由 C&C 服务器进行统一控制。
因此,能够检测出 DNS 中有潜在风险的域名至关重要。
DNS 隧道攻击域名示例
恶意 DNS 查询请求示例:exfiltrated-data.attack.com
攻击流程说明
攻击者注册域名 attack.com
受害者的主机成功感染木马或病毒后,电脑上的恶意软件将加密信息放在子域名 exfiltrated-data.attack.com 中,构造这个查询请求
查询请求经过 DNS 传输到权威域名 attack.com 的主机
攻击者解析 DNS 的查询记录,解码 exfiltrated-data 信息
通过 DNS 应答报文,返回信息与恶意软件进行通信
DNS 隧道攻击域名特征
DNS 隧道机器学习检测模型,选取了域名长度、子域名长度、Label 最大值、大写字母数量、数字数量、熵值六个特征,通过无监督的孤立森林算法做分类检测。
恶意 DNS 查询请求示例

如上图所示,确定域名长度、子域名长度、Label 最大值、大写字母数量、数字数量、熵值这六个特征作为最终的检测特征。其实,也能够调研到 Label 的平均值、Label 的数量这两个特征,但通过对数据的分析与模型精度的验证,认为这两个特征对精度没有提升,故最终选择以上六个特征作为检测特征。
DNS 域名数据特征
示例域名:Gd.DFAtS6536396339303839663864393931666266.Domain.com
域名长度:通常来讲,99%的查询域名少于 80 个字符
子域名长度:子域名是携带加密信息的关键位置,且长度通常不会太长
大写字母数量:98%的查询域名不包含大写字母,只有 0.2%的查询域名可能包含 10 个以上的大写字母
数字数量:只有 1%的正常查询可能包含 30 个以上的数字
熵值:90%的查询域名熵小于 4,只有 0.1%的查询域名熵大于 5
Label 的最大值:90%的域名 Label 长度不超过 20 个字符,只有 1%的域名 Label 长度超过了 40 个字符
传统检测方式的缺陷
传统 DNS 隧道异常检测,一般会设定域名长度阈值以拦截过长的域名或设定请求频率阈值拦截短时间过多的域名请求,通常存在以下问题:
传统检测方式出结果较慢,当数据量较大时,很难快速发现 DNS 隧道的异常问题
已经有很多工具可以通过修改域名长度、请求频率等特征,轻易绕过传统方式基于 DNS 数据六大特征建立的单一规则或组合规则的检测模型
传统方式即便产出了检测结果,准确率也较低

日志易通过孤立森林算法实现无监督异常检测
基于 scikit-learn 库,训练 IsolationForest,将异常的点孤立出来。孤立森林算法在 sklearn 中已经封装好,直接使用即可。

分布稀疏且离群度较高的点会被孤立出来
孤立森林的特点线性时间复杂度
占用内存少
高精度
无监督的异常检测算法
异常点被定义为偏离主体的数据,通常有两大特点
数量很少,在整体数量中一定是少部分
异常与正常数据是有区分度的,异常数据与正常数据在所选的维度中有一定的区分(参考域名数据特征)
基于孤立森林算法,结合现有的域名信息,最终生成孤立森林算法模型。企业可以结合内部实际请求的 DNS 域名,快速检测出异常请求。
日志易实现 DNS 隧道异常快速准确发现和告警
DNS 隧道检测的场景中,异常数据占比少,且在六大特征上有一定区分度,每个样本由六个特征维度定义。使用孤立森林算法时,需要同时学习白数据加少量黑数据,训练阶段不需要打标签。由于场景特性,我们可以确定训练数据中黑数据的占比,大概控制在 10%即可。
模型训练后导入测试集,模型会根据每个测试集与正常样本超平面的距离生成一个异常分数,得分越高越正常,分数低到一定程度会被归类为异常样本。

利用日志易 SPL,结合黑数据、白数据生成模型(dns_tunnel_model)。首先,针对企业内部的 DNS 数据进行采集,获取 DNS 域名信息,然后结合生成的模型进行关联分析,基于六大特征产出得分情况。如下图,得分越小,说明域名信息的异常度越高。

通过以上结果,建立离群异常检测的告警,比如得分小于 0,即告警。

在使用隧道机器学习检测模型后,能更准确、快速地检测出 DNS 隧道,企业在各生产环境的数据统计日误报率均低于 0.5%,这种方式已经应用于日志易各行业头部客户中,获得高度认可。
案例价值
自动识别并提取特征数据,能够基于 DNS 原始数据的特征字段,自动识别出域名、子域名、大写字母数量、数字数量、熵值和 Label 值,无需人工手动抽取相关特征字段,大幅降低维护成本,可复用于多类型 DNS 数据的特征数据提取。
基于孤立森林异常检测算法原理,通过 DNS 数据测试集的周期性学习和训练,产生一种适用于 DNS 数据的无监督异常检测模型,此模型是不局限于行业的无监督异常检测模型,适配能力强,适用范围广,具备较强的行业可复制性。
通过实时采集获取 DNS 数据,结合异常检测模型,可以实现 DNS 数据异常访问威胁的快速发现,这种方法的优势在于:不需要人为调整检测模型及异常参数的阈值,即可完成对 DNS 数据的异常检测,有效解决了传统方式检测结果准确率低、误报率高、时效性差的难题。
北京优特捷信息技术有限公司是专注于机器大数据平台、服务和解决方案的开发商,致力于帮助各行业用户挖掘和利用机器数据价值,提升数字化运营质量,轻松应对 IT 及业务挑战。
公司推出日志易平台、SIEM 安全大数据分析平台、观察易、智能运维 AIOps、数据工厂、日志易大屏等系列产品,一站式解决机器数据采集、清洗、存储、搜索、分析、可视化等需求,帮助企业轻松实现查询统计、业务关联分析、监控告警、安全信息与事件管理 SIEM、用户与实体行为分析 UEBA、智能运维 AIOps、IT 可观测性等应用场景。
版权声明: 本文为 InfoQ 作者【日志易】的原创文章。
原文链接:【http://xie.infoq.cn/article/cd1fb32017585bf7e520921f0】。文章转载请联系作者。
评论