一、DNS 隧道技术解析

1.1 DNS协议解析过程

DNS协议解析过程分为两种,迭代查询和递归查询。

1.1.1 迭代查询

本地域名服务器向根域名服务器发送请求报文,根域名服务器要么给出ip地址要么告诉本地域名服务器下一步应该去查询另一个域名服务器(假设这个域名服务器为A)。本地域名服务器会向A域名服务器发送请求报文,A域名服务器要么给出ip地址要么告诉本地域名服务器下一步应该去查询B域名服务器。过程以此类推,直到查找到ip地址为止。

1.1.2 递归查询

客户机向本地域名服务器查询,如果本地服务器的缓存中没有需要查询的ip地址,那么本地域名服务器会以客户机的身份(代替本机查询),向根域名服务器发送请求报文。递归查询返回的结果要么是查询到的ip地址,要么报错。客户端只发一次请求,要求对方给出最终结果。

  • 本机查询本地域名服务器,这部分属于递归查询。
  • 本地域名服务器查询根域名服务器,这部分属于迭代查询。

1.2 DNS隧道

DNS隧道是隐蔽信道的一种,通过将其他协议封装在DNS协议中进行通信。封装由客户端完成,将DNS流量还原成正常的流量由服务器完成。

1.2.1 DNS隧道攻击实现流程

大多数防火墙和入侵检测设备对DNS流量是放行的。而隧道攻击正式利用了放行的特点以及协议解析流程来实现的。

IP直连型DNS隧道:

直连也就是客户端直接和指定的目标DNS Server(Authoritative NS Server)连接,通过将数据编码封装在DNS协议中进行通信,这种方式速度快,但是隐蔽性比较弱,很容易被探测到,另外限制比较高,很多场景不允许自己指定DNS Server。客户端使用UDP socket建立连接,实际上是基于UDP的,但是利用53端口。

域名型DNS隧道(中继):

通过DNS迭代查询实现的中继隧道,比较隐蔽,但同时因为数据包到达目标DNS Server前需要经过多个节点,所以速度上较直连慢很多。

step 1 : 受控PC机将数据封装进DNS数据包里,向局域网内部的本地域名服务器请求查询aaa.com。

step 2:本地域名服务器透过防火墙向根域名服务器发送查询请求。

step 3:经过大量重定向,查询请求最终要aaa.com的权威域名服务器。

step 4:aaa.com权威域名服务器是在攻击者的控制下,解析发送过来的DNS数据包并发送回应包。

Step 5:DNS回应包穿透防火墙

Step 6::DNS回应包进入内网

Step 7:本地域名服务器将回应包返回给受控PC机

Step 8:受控PC机解析DNS回应包里的数据,得到新的指令

1.2.2 典型恶意程序

  • Trojan.Win32.Ismdoor.gen:使用了多层C&C通信协议结构,使用了DNS隧道技术,C&C服务器的命令会被协议为IPv6地址。
  • Backdoor.Win32.ClIEcker:允许恶意程序从服务器接收随机类型的DNS数据包,该木马没有逻辑上的子协议,只有发送和接收数据包的请求。
  • Backdoor.Win32.Denis:该恶意程序只使用一个DNS格式的数据包与DNS服务器通信,这种格式汇总,回应的大小被限制为只有4个字节,这只是一个常规的木马下载器,而且下载文件的速度很慢。
  • PlugX远控变种: 该后门木马结合DNS隧道传输技术和PlugX远控程序,通过建立的DNS隧道进行攻击控制。利用DNS请求应答机制作为攻击渗透的命令控制通道,把C&C服务器指令封装到DNS相应报文中,以此控制被控端主机。并且依托DNS协议的特性,该木马可以有效穿透防火墙,躲避常规的安全检测。

1.2.3 经典的攻击事件

  • 2016年5月,Palo Alto曝光了一起APT攻击,Webky团队利用DNS请求应答作为攻击渗透的命令控制通道。攻击者把CC服务器的指令封装在DNS响应报文里。
  • 2017年3月,思科Talos团队发现一起名为DNSMessenger的攻击,该恶意软件的所有命令与控制通信都经过DNS TXT类型查询和响应。以此来躲避检测

早在2012的RSA会议上,基于DNS协议的远程控制恶意软件就被视为未来六种最危险的攻击之一。

二、DNS隧道攻击实现以及流行工具展示

DNS隐蔽隧道主要是封装其他协议流量来完成传输。

从2004年Dan Kaminsky在Defcon大会上发布的基于NSTX的DNS隐蔽隧道工具,目前来看,基于DNS隧道的木马分成两种类型:IP Over DNS(允许通过隐蔽隧道传输IP数据包)和TCP Over DNS(提供单一的TCP通信的隐蔽隧道)两大类。

IP Over DNS 是将IP数据包封装到DNS报文的构造技术,在构建DNS隐蔽隧道时,通信双方需要解决数据分片,封装,重组等问题。IP Over DNS通用使用TUN/TAP设备(操作系统内核中的虚拟网络设备)将数据包重定向到指定的虚拟网卡中来解决发送端数据分片和接受数据的问题。

DNS域名中的字符限定在字母a-z,A-Z,0-9以及’-’共63个字符,一般采用base32,base64来封装要传输的信息,域名长度最大为255。每一个子域最长为63个字符。发送端将隐蔽数据信息切分并且编码后封装到DNS报文域名中进行传输,接收端收到DNS报文后提取域名中的隐蔽信息字段进行解码重组还原得到IP报文。主要的工具有DNSCat,Iodine等。

TCP Over DNS只有将TCP作为传输协议封装在隐蔽隧道中。由于DNS采取的是不可靠的UDP协议,为了保证传输过程中的数据不丢失不乱码,还要兼顾传输效率,保证通道稳定可用。一般利用SSH的端口重定向技术或者SOCKS代理技术将TCP信道重定向到DNS通道中来。除此之外,TCP Over DNS涉及的编码,数据分割,重组和IP Over DNS类似。主要的工具有OzyManDNS,DNS2TCP等。

DNS 隧道通信特征与检测相关推荐

  1. ICMP隧道通信原理与通信特征

    一 ICMP 隧道技术解析 ICMP协议 ICMP(InternetControl MessageProtocol)Internet控制报文协议.它是TCP/IP协议簇的一个子协议,用于在IP主机.路 ...

  2. dns隧道攻击原理及常用工具流量分析

    今天看到一个关于Lyceum组织的文章,这个组织擅长使用dns隧道攻击,这种攻击方式还是头一次听说,于是搜集了一些文章来看看. 原文https://www.cnblogs.com/HighnessDr ...

  3. 【网络安全】ICMP隐蔽隧道通信与检测

    ICMP隐蔽隧道通信与检测 技术背景 在一些网络环境中,如果攻击者使用各类上层隧道(例如HTTP隧道,DNS隧道,正反向端口转发等)进行操作均失败.那么可以尝试使用ICMP建立隧道,ICMP协议不需要 ...

  4. 一次误报引发的DNS检测方案的思考:DNS隧道检测平民解决方案

    摘自:http://www.freebuf.com/articles/network/149328.html 通过以上分析得出监控需要关注的几个要素:长域名.频率.txt类型.终端是否对解析ip发起访 ...

  5. 红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

    文章目录 隧道应用 reGeorg内网穿透 SSH本地转发(正向) 场景一 场景二 SSH远程转发(反向) Earthworm Socks5代理 正向代理 反向代理 Tunna正向代理 ICMP隧道 ...

  6. DNS 隧道数据集调研

    调研了一圈发现DNS隧道的数据集,基本上都是工具构建的,刚刚开始的时候,以为国内学术界是这样的,后来发现,国外学术界也是这样的,心照不宣.我开放了一套DNS隧道数据集,包括dnscat2.dns2tc ...

  7. dnscat2搭建dns隧道

    域名购买网站:https://dcc.godaddy.com/ 购买域名,并且注册网站,应用该模块 安装服务端: apt-get install gem apt-get install ruby-de ...

  8. 【内网安全-隧道技术】SMB、ICMP、DNS隧道、SSH协议

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

  9. 基于DNS数据分析的恶意域名检测

    本文主要参考的是Zhauniarovich Y, et al[1]的工作,发表在Acm Computer Surveys上的一篇较为系统地阐述了基于DNS数据分析来进行恶意域名检测的研究背景,研究过程 ...

  10. DNS隧道技术绕过上网认证限制

    Author:Pax.Mac Team核心--Conqu3r 在OWASP2013的沙龙上,某牛分享了一个好的tips.记录了下来,回来学习了下,然后分享出来,知道这是干什么用的同学,可以学习下. 一 ...

最新文章

  1. 孙剑亲自撰文:我在 Face++ 的这半年
  2. ARM 之十四 ARMv9 架构前瞻
  3. Boost:宏BOOST_TEST_GT的使用实例
  4. SAP WebClient UI页面标签的决定逻辑介绍
  5. sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别
  6. permutation 1(HDU-6628)
  7. 学术圈「超级内卷」:“青椒”难!
  8. go 的基本数据类型
  9. c语言递归解决汉诺塔问题
  10. Unicode 编码表下载
  11. Ubuntu关闭cups打印机服务
  12. 高频头极化角调整+用什么本振的高频头
  13. 硬改TP-WR886N v5 路由器刷入源码编译的openWRT/LEDE系统
  14. 车市冷车道 这6款紧凑车苦坐板凳寻伯乐(一)
  15. 微软官方提供的免费正版的虚拟机
  16. 2004年秋浙江省计算机等级考试二级C 编程题(2)
  17. C# npoi读execel 未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neut al, PublicKeyTok
  18. 东方mmd巨大化_有什么东方mmd非常值得一看?
  19. Composer入门教程 - 基本用法
  20. 如何让电脑微信双开呢,两行代码解决问题

热门文章

  1. 如何屏蔽移动垃圾短信10658464
  2. w ndows无法完成格式化,windows 无法完成格式化2种解决方案
  3. Another exception was thrown: The PrimaryScrollController is currently attached to more than one Scr
  4. java----判断闰年和平年
  5. 软件-未能加载文件或程序集.HRESULT:0x80131515解决方法
  6. 设计一个简单的基于三层交换技术的校园网络——计算机网络课程设计
  7. 知码开门的奇葩编译器
  8. linux的sssd服务,Linux sssd 认证
  9. 工具 · GIF录屏licecap for Mac
  10. 21.0425开课吧开课前学习