【转】DNS隧道检测特征

news2024/12/23 11:00:39

原文链接:DNS隧道检测特征总结 - 知乎

一、摘要

企业内网环境中,DNS协议是必不可少的网络通信协议之一,为了访问互联网和内网资源,DNS提供域名解析服务,将域名和IP地址进行转换。网络设备和边界防护设备在一般的情况下很少对DNS进行过滤分析或屏蔽,因此将数据或指令藏匿于DNS协议中进行传输是一种隐蔽且有效的手段。在实际场景中,当攻击者拿下某台服务器权限,或服务器被恶意软件、蠕虫、木马等感染之后,通过建立DNS隧道从而达到敏感信息盗窃、文件传输、回传控制指令、回弹Shell等目的。

DNS隧道,即利用DNS请求和响应来承载经过编码或加密的数据内容,攻击者需要接管某个域名的NS服务器,使得对该域名的所有子域解析请求最终到达该台NS服务器上,最终,一条通信信道将在受控机器和攻击者的NS服务器之间建立(中间可能经过更多的NS节点),信道的建立、维持和通信基于DNS查询的请求和响应。

目前安全产品多是基于监控终端请求异常长度的域名等规则方式进行DNS隧道检测,攻击者可以使用商业渗透套件如Metasploit、Cobalt Strike等,或一些开源软件iodine、ozymandns、dns2tcp、dnscat2等快速轻易地构建DNS隐蔽隧道,并且可以通过修改域名长度、请求频率等特征轻易绕过传统基于规则的DNS隧道的检测模型。相比于基于规则的静态阈值检测误报高,易被绕过等问题,可以使用机器学习技术从历史数据中学习出一个DNS隧道模式用于检测。

二、特征分析

(一)、基于请求响应的实时检测

1、齐夫定律

Detecting DNS Tunnels Using Character Frequency Analysis论文中,证明了还可以通过词频的检测识别DNS Tunneling的流量,根据Zipf定律,在自然语言的语料库里,词频往往会集中于某些小子集中,并且高频词到低频次的频率逐渐下降。而在这篇论文中,证明了DNS Tunneling中由于域名做了编码,不符合Zipf定律(例如dns2tcp),整个分布趋于平稳。

齐夫定律很容易用点阵图观察,坐标为log(排名)和log(频率)。比如,“the”排名第1,评率为69971,用上述表述可以描述为x = log(1), y = log(69971)的点。如果所有的点接近一条直线,那么它就遵循齐夫定律。

齐夫定律

2、请求响应时间间隔

根据安全知识,正常DNS由于有RTT控制(Round-Trip time 往返时延)的本地缓存机制,请求包和响应包时间间隔通常较短。DNS隧道每次请求的subdomain都有变动,不会命中本地缓存。安全专家会将DNS的req/res时间间隔可作为鉴别依据,进一步在已经构建的数据集(正负样本均30万条左右)做统计分析结果如下图所示,正常DNS流量req/res时间间隔的均值和方差都低于DNS隧道的req/res时间间隔的均值和方差,因此req/res时间间隔可以作为一个机器学习模型特征。

TCP会话在建立通信过程中存在“三次握手”和断开连接的“四次握手”行为,因此TCP会话可以计算会话时长。

DNS会话属于 UDP 会话的其中一种,由于UDP无连接的特性,DNS没有会话时长的严格定义。定义在一次DNS会话中,最后一个DNS报文的时间和第一个DNS报文的时间差就作为这个 DNS会话的时长。

正常情况下,一次DNS解析过程首先由客户机在本地随机开启一个 UDP 端口,然后向指定的DNS服务器53端口发送DNS请求报文,两者由此建立一个 UDP通道。客户机一旦得到相应DNS回复报文,这个 DNS解析过程就结束了,如果没有后继的DNS解析任务,创建的 UDP套接字会保存一段时间然后关闭,完成一次 DNS 会话,再次进行DNS解析的时候,再随机开启另一个UDP端口,重复上述过程。因此,正常域名解析DNS会话的时间短

3、查询/响应域名长度

根据安全知识,正常DNS请求包中会提交查询域名,此域名是正常网站访问域名,长度适中。DNS隧道为了最大效率使用带宽传输更多信息,通常DNS隧道的请求包域名较长。安全专家会将DNS查询域名长度作为鉴别依据,进一步在已经构建的数据集(正负样本均30万条左右)做统计分析结果如上图所示,正常DNS流量请求域名长度的均值和方差都低于DNS隧道的请求域名长度的均值和方差,因此DNS请求域名长度可以作为一个机器学习模型特征。

4、回答RR数/问题数之比 (Answer RRs / Quentions) (待确认)

DNS查询IP地址(A)可能会响应多个域名服务区别名(CNAME),因此一个请求可能就收多个响应。DNS隧道一个请求对应一个响应数。

5、查询域名熵(有效载荷部分是否加密, 同特征一)

DNS协议是一种明文传输协议,DNS隧道木马出于提高通信内容隐蔽性的需要,往往会对通信数据进行加密,因此把加密的DNS数据作为可疑的DNS隧道木马通信的一个特征。为了提高特征工程速度,我们可以使用信息熵作为是否存在加密的衡量标准。

根据安全知识,正常DNS查询中的subdomain的编写规范通常符合RFC规范,以字母开始以字母或数字结尾,中间可以出现格式包括:小写字母 a-z,大写字母A-Z,数字0-9,以及分隔符’-‘共63种字符。在DNS隧道中,通常会对传输数据做加密处理(如base64、base32、base128、RAW等),并且会大量使用63种字符集以外的字符。安全专家会将这种编写规范性作为鉴别依据,进一步使用熵去度量subdomain的编写规范性并在已经构建的数据集(正负样本均30万条左右)做统计分析结果如下图所示,图中分别展示了使用unigram、trigram、bigram做单元切分后熵值计算的均值和方差,从图可知正常DNS的subdomain熵均值相比于DNS隧道subdomain熵均值要低很多。

6、n-gram文本统计特征(DNS隧道)

通过2-gram/3-gram提取恶意DNS query的文本特征,参与训练。

7、总的Query 报文Payload载荷量(Data Length)

查询类型为A(IPv4地址),则Data Length固定为4,但是DNS隧道 Data Length普遍比较大,且使用A记录类型的也比较少。 若含有多个Respond,计算平均长度 。

同时,如果是正常的DNS交互,在一个会话中的总的数据data总量应该不会非常大。但是由于DNS隧道需要进行指令和数据的传输,因此总的数据载荷会远大于正常水平。

8、可读性(数字比、元音比、辅音比、重复字符比、特殊符号比、马尔科夫转移概率)

使用DGA检测时使用的一些特征提取子域名的可读性特征。

9、记录类型

在正常的DNS流量中。A记录类型的流量占20%-30%,CNAME记录为38%-48%,AAAA记录占25%,NS记录只有5%,TXT记录只有1%-2%。然而为了获取更高的带宽,一部分的DNS隐蔽信道工具如Iodine。在默认配置下会使用TXT或NULL等不常用的记录类型。

10、有效载荷的上传下载比 (Query Subdmain / Data Length)

DNS会话报文中的有效载荷是指DNS报文中除去DNS报文头部剩下的queries字段和answers字段、授权和额外信息字段的内容。

DNS隧道木马在和控制端交互通信时,DNS隧道木马控制端向被控端发送少量的控制命令,被控端需要回传大量的本机敏感资源文件数据。

然而,正常DNS解析情况刚好相反,客户端DNS请求报文通常短小,而DNS服务器返回的数据信息比较多。因此DNS隧道木马会话的上传下载比例比一般正常的DNS会话大。


(一)、基于时间窗的非实时检测

11、Query/Answer的长度特征

DNS隧道工具产生的DNS query会比较长,因为要附带客户端的信息回传;而DNS answer会比较短,因为只要传输指令,甚至指令action code即可。

Query长度特征

AVG(len(query_name))
MAX(len(query_name))
MIN(len(query_name))
Answer长度特征
AVG(len(anwser_name))
MAX(len(anwser_name))
MIN(len(anwser_name))

12、域名对应的主机名数量

对于DNS隧道木马而言,控制端要不断借助DNS qury的query_name来承载要传输的内容,所以从主机数量这个维度来看,在一个DNS tunnel会话中,域名对应的主机名数量会明显大于正常的DNS通信。

13、FQDN数异常检测

域名有全称和简称的区别。全称的域名,直译为"完全的合格的域名"(FQDN,Fully Qualified Domain Name),表现为由 "·" 隔开的点分式层次结构,叫名称空间, 它指定了一台主机和它所属域的隶属关系,而简称通常就是这台主机的计算机名,在域名的最左边。

可以这么说FQDN(完全合格的域名),是域加计算机名的总称。比如: http://www.microsoft.com 这个FQDN 中,www 是主机名,http://microsoft.com 是域。 www+http://microsoft.com 组合在一块就成了一个完整的域名(FQDN)。

可以通过分析一定时间窗口内所产生的FQDN数,通常DNS Tunneling的FQDN数在一定时间窗口内会远高于正常的DNS流量。

14、DNS会话中数据包总数

因为DNS隧道木马的会话一般随着木马生命周期的结束而结束,在整个木马的生命周期里会向外发送心跳报文、传输本机敏感信息、资源文件等,控制端会下达相关的远程控制指令等。所以在 DNS 隧道木马会话中 DNS报文数量大。然而,正常客户端产生的DNS会话随着一次DNS解析任务结束而结束,DNS会话比较简短。大多数情况是2个,由1个DNS请求报文和1个DNS响应报文组成。

15、“上行大包”占请求报文总数的比例

在DNS请求报文中,如果queries字段字节数大于50,那么定义该DNS请求报文为上行大包。DNS隧道木马被控端把要传输的内容封装在queries字段的域名中,DNS隧道木马为了在一次传输过程中携带尽可能多的隐蔽信息,往往造成queries字段中的域名长度偏长。与正常DNS会话相比,DNS隧道木马会话中“上行大包”占请求报文总数的比例较大。

另一方面,如果攻击者为规避检测,强制split拆分构造相对短小的域名,从而减少每次发送的报文携带的隐蔽通信内容。当被控端传送某一固定的敏感资源文件,由于传送的资源文件大小是固定的,如果牺牲一次携带的隐蔽信息的内容,势必造成整个DNS会话的DNS报文总数的增加。

可知,在一次 DNS隧道木马的会话中,DNS报文总数和DNS报文长度是负相关的。因此我们基于该规律构造复合特征,即 DNS报文总数 * 平均报文长度 = 总的报文length。

16、“下行小包”占响应报总数的比例

我们定义如下:将 DNS应答报文中answers字段字节数小于50的数据包称为“下行小包”。

DNS隧道木马在交互过程中,控制端发送的控制命令一般有特定含义,且短小精简,因此DNS隧道回复报文一般是“下行小包”。对于正常本机DNS解析请求而言,客户机是资源请求者,DNS服务器返回的数据除了answers字段外,还经常返回授权和额外信息字段信息,因此正常的 DNS响应报文相对较大。

三、附加

1、基于多个DNS报文分析(基于无监督的分析)

在网络通信中,由【源IP地址、源端口、传输层协议、目的IP地址、目的端口】这5个量组成的一个集合,称之为五元组,任意一个数据包都可以将其表示为五元组。五元组能够区分不同会话,并且对应的会话是唯一的。

研究单个DNS报文并不能从时间区间维度刻画出完整的DNS隧道木马的行为,我们可以通过对五元组进行归并聚类,从DNS会话的角度分析隧道木马流量。

其依据是DNS隧道木马在通信过程中通信双方所扮演的角色和通信模式与正常DNS解析行为具有显著的差异性(数据中包含一定的规律)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/25947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++:内存管理:C++内存管理详解

C语言内存管理是指:对系统的分配、创建、使用这一系列操作。在内存管理中,由于是操作系统内存,使用不当会造成很麻烦的后果。本文将从系统内存的分配、创建出发,并且结合例子来说明内存管理不当会造成的结果以及解决方案。 一&am…

【Spring】Spring AOP的实现原理

目录 什么是AOP AOP的作用 AOP的优点 AOP框架 Spring AOP AspectJ 术语 1.Target ——目标类 2.Joinpoint ——连接点 3.Pointcut——切入点 4.Advice——通知/增强 5.Weaving——植入 6.Proxy——代理类 7.Aspect——切面 底层逻辑 开发流程 1.导入依…

八、手把手教你搭建SpringCloudAlibaba之Sentinel服务降级之慢调用

SpringCloud Alibaba全集文章目录: 零、手把手教你搭建SpringCloudAlibaba项目 一、手把手教你搭建SpringCloud Alibaba之生产者与消费者 二、手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心 三、手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心 …

贪心算法应用

1. 算法思想 贪心算法一般分为如下四步: 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 即选择每一阶段的局部最优,从而达到全局最优。 2. 最大自序和 题目描述 题目链接 给你一个整数数组 n…

用Servlet 编写hello world

第一次接触 Servlet,使用 Servlet 编写代码并配合 Tomcat 在浏览器中展示代码效果,也算是自己这么长时间学习java的一次飞升吧。 本文总结了六步使用 Servlet 编写 helloworld步骤,希望给初学Servlet的同学一些帮助。 0、准备工作 1&#xff…

Python 随机函数random详解

介绍这7个随机数的方法应用&#xff1a; 1、random.random&#xff08;&#xff09;查看源码 说明&#xff1a;用于生成一个0到1的随机符点数: 0 < x < 1.0 import random for i in range(10):print(random.random()) 2、random.uniform&#xff08;&#xff09;查看源码…

深度学习(14)—— 关于Tensorboard

深度学习&#xff08;14&#xff09;—— 关于Tensorboard 文章目录深度学习&#xff08;14&#xff09;—— 关于Tensorboard前言1. “一参数一图”2.“多参数一图”3. “一栏一图”4. “一栏多图”在模型训练过程中loss和acc都会发生变化&#xff0c;常常需要记录这些值&…

Spring Security(2)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 前面已经把需要的环境准备好了&#xff0c;包括数据库和SQL语句&#xff0c;现在再来写代码。至于安装MySQL什么的就跳过去了&#xff0c;娘度子里面一大把。 先…

保护Excel表格的4种常用方法

今天来说说&#xff0c;根据不同需求&#xff0c;我们可以给Excel表格设置保护的4种常用方法&#xff0c;记得保存收藏&#xff0c;总有一个适合你。 方法一&#xff1a; 如果不想Excel表格被他人随意打开&#xff0c;可以设置“打开密码”&#xff0c;这样只有输入设置的密码…

OpenSergo 流量路由:从场景到标准化的探索

流量路由&#xff0c;顾名思义就是将具有某些属性特征的流量&#xff0c;路由到指定的目标。流量路由是流量治理中重要的一环&#xff0c;多个路由如同流水线一样&#xff0c;形成一条路由链&#xff0c;从所有的地址表中筛选出最终目的地址集合&#xff0c;再通过负载均衡策略…

git ssh permission denied解决办法

git ssh permission denied解决办法 1. SSH配置 参考链接 SSH配置文档 2. ssh报错(permission denied) 解决方式&#xff1a; 找到git安装目录 进入etc/ssh文件夹内&#xff0c;找到ssh_config文件&#xff0c;在# Added by git-extra后面添加t替换代码具体参考下面图片 H…

2022强网拟态pwn-store

2022强网拟态pwn-store 这是一个综合题&#xff0c;io链接的构造&#xff0c;orw的系统位数的限制 首先是这个沙箱&#xff0c;64位只有r和w&#xff0c;一开始看的时候很纳闷多了32位的限制&#xff0c;64位还没有o&#xff0c;查了一下才知道这样的seccomp-tools是以64位的…

Design Compiler工具学习笔记(4)

目录 引言 知识储备 实际操作 设计源码 Vivado2018.3仿真 VCS2016仿真 Tcl脚本 约束脚本 MY_TOP.tcl 运行脚本 RUN.tcl 引言 本篇继续学习 DC的基本使用。本篇主要学习 DC 需要的环境约束。 前文链接&#xff1a; Design Compiler工具学习笔记&#xff08;1&#x…

【苹果推iMessage位置推相册共享推送】软件安装上传到appstore都是需要的Activity

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

maxcompute优化慢执行语句思路

maxcompute慢执行任务优化如何锁定慢执行任务&#xff1f;判断是何种类型的慢任务如何锁定慢执行任务&#xff1f; 第一步&#xff1a;如果是周期任务可以通过任务执行日志中的LogView 链接查看 &#xff0c;如果是临时任务则通过maxcompute命令行 执行wait instanceId instanc…

现代密码学导论-2-古典密码及其密码分析

目录 1.3 古典密码和密码分析 1.3.1 凯撒密码 Caesar’s cipher 1.3.2 移位密码 shift cipher 1.3.3 充分密钥空间原则 1.3.4 单表代换密码 mono-alphabetic substitution cipher 1.3.5 利用字母频率对移位密码的一种改进攻击 1.3.6 维吉尼亚密码(多表代换密码)Vigenere…

Ansys Zemax | 使用 OpticStudio 进行闪光激光雷达系统建模(上)

前言 在消费类电子产品领域&#xff0c;工程师可利用激光雷达实现众多功能&#xff0c;如面部识别和3D映射等。尽管激光雷达系统的应用非常广泛而且截然不同&#xff0c;但是 “闪光激光雷达” 解决方案通常都适用于在使用固态光学元件的目标场景中生成可检测的点阵列。凭借具…

教育行业数据可视化应用方案与实践

教育行业背景介绍 随着信息技术发展&#xff0c;教育领域中的学习方式、教学模式、教学内容均已发生重大变革&#xff0c;以云计算、人工智能、物联网、大数据等技术的结合&#xff0c;“智慧教育”的需求也变的紧迫&#xff0c;需要围绕“智慧教育”而产生的产品和解决方案也…

课程思政案例----简道云零代码应用开发实训平台

为了更好推动零代码开发课程的思政建设&#xff0c;在传递大数据相关知识和技能的同时帮助学生塑造正确的世界观、人生观和价值观。我们整理了与简道云平台结合的应用案例&#xff0c;开放给全国各大高校使用。 1、杨卫红&#xff1a;一位55岁不懂代码的农经员&#xff0c;为家…

Windows下将文件夹映射为磁盘

Windows下将文件夹映射为磁盘背景描述方法一&#xff1a;使用命令方法二&#xff1a;映射网络驱动器背景描述 公司发的新电脑&#xff0c;只有普通用户权限&#xff0c;所以可想而知磁盘只有一个C盘&#xff0c;但是以前习惯性的将一些软件啥的放在D盘中&#xff0c;所以把C盘…