×

利用DNS隧道构建隐蔽C&C信道
  

新手275718 1992

{{ttag.title}}
无论是高级持续性威胁(APT)、僵尸网络(Botnet),还是勒索软件、后门等,命令与控制信道(C&C)都是其重要组成部分,尤其是APT和僵尸网络中的C&C信道决定了其威胁程度。学术界和工业界就C&C方面的研究已逐渐深入,目前网络战格局逐渐形成,公众对网络安全逐渐重视,网络空间中的攻防双方持续较量。
迫于当前形势,攻击者逐渐转向“低调”,近年曝光的多起大型APT攻击事件都倾向于构建隐蔽的的C&C信道。因此,我们必须从攻击者视角思考,哪些技术可以被恶意利用到构建隐蔽的C&C信道,从而在相应应对策略上取得先机。

一、DNS协议关于DNS协议详细文档可参考标准文档:RFC1034 和 RFC1035
1.1、类比理解DNS大千世界,如何证明我就是我?我首先想到的就是亮出我的身份证。身份证是我们每个人的身份凭证,而且身份证上记录有我的姓名和身份证号,同时它也是有权威机构发放,由此在需要验明正身的场合下我的身份证就可以证明我就是我。

DNS(Domain Name System,域名系统)也是一种域名(Domain)和网络地址(IP)一一对应的标准协议,实现这种协议提供DNS服务的称为DNS服务器。域名(如example.com)可以类比理解为名字,而网络地址(如10.0.2.10)则可以理解为身份证号。在显示生活中,我们认识和交朋友更趋向于记住她/他的名字而不是其身份证号。同样的为了实现用户友好,让用户记住具有特点的域名比看起来就让人头疼的一连串数字组成的IP地址要容易很多。

为了便于管理,身份证管理采用分级管理的策略,如同一个县出生的人在身份证号中的前面部分相同;类似的,域名系统在因特网中的命名也采用层次结构的命名方法。为了确保身份证的权威,办证单位必须是某公司门;在域名系统中也有权威的根域名服务器、权威域名服务器等。类似的相同点还有很多,但DNS中域名和IP的对应与身份证号和名字的对应理解中需要注意DNS协议要求域名和IP必须唯一确定,即一个域名唯一对用一个IP(不考虑最近的负载均衡技术),即现实生活中的同名问题在域名系统中是必须解决的,因为域名系统是整个因特网共用的,所以必须保持唯一性。

1.2、DNS的层次结构图解
注:具体的官方描述和介绍类知识请自行检索(太多了),以上仅为我的个人理解

1.3、DNS域名解析流程——本地DNS缓存+递归查询+迭代查询【递归查询】
用户本地域名服务器发出一次查询请求,就静待本地服务器反馈最终查询结果。本地服务器首先使用本地DNS缓存尝试应答用户的DNS查询请求,若失败则发起迭代查询。
【迭代查询】
本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它在根据结果逐层向下查询,直到得到最终结果。每次它都是以DNS客户机的身份去各个服务器查询,即迭代查询是本地服务器进行的操作。
【具体流程描述】
(1)、用户主机A先向本地域名服务器B递归查询abc.exmaple.com
(2)、B首先尝试使用本地DNS记录查询abc.exmaple.com若本地不存在abc.example.com的相关记录,则B以DNS客户机的身份发起迭代查询abc.example.com
(3)、B向一个根域名服务器C查询abc.example.com
(4)、根域名服务器C告诉B下一步到.com顶级域名服务器D去查询,并告知D的IP地址1.2.3.4
(5)、B向.com顶级域名服务器D进行查询
(6)、D告诉本地域名服务器B,下一步请到.example.com权限服务器E去查询,并告知E的IP地址2.3.4.5
(7)、B向.example.com权限服务器E进行查询(8)、E告诉本地域名服务器B所查询域名abc.example.com的主机是否存在,并告知其IP地址3.4.5.6(9)、本地域名服务器B向用户主机A反馈所查询的域名abc.exmaple.com对用的IP地址为3.4.5.6

1.4、DNS报文格式
重要部分说明:
会话标识:DNS报文的ID标识,区分DNS应答报文是哪个请求的响应
查询类型整理:
生存时间(TTL):资源记录的生命周期,一般以秒为单位。
【说明】
此部分为DNS相关基础知识,我只对相关知识进行搜集,并结合自己的理解整理所得。

*协议报文格式和查询类型图表源自明风的博客(CSDN)大神的DNS协议详解及报文格式分析一文。

二、DNS隧道2.1、DNS隧道原理概述
DNS隧道(DNS Tunneling)是将其他协议的内容封装在DNS协议中,然后以DNS请求和响应包完成传输数据(通信)的技术。当前某公司中的DNS是一项必不可少的服务,所以防火墙和入侵检测设备处于可用性和用户友好的考虑将很难做到完全过滤掉DNS流量,因此,攻击者可以利用它实现诸如远程控制,文件传输等操作,众多研究表明DNS Tunneling在僵尸网络和APT攻击中扮演着至关重要的角色。

DNS隧道依据其实现方式大致可分为直连和中继两类。

直连:用户端直接和指定的目标DNS服务器建立连接,然后将需要传输的数据编码封装在DNS协议中进行通信。这种方式的优点是具有较高速度,但蔽性弱、易被探测追踪的缺点也很明显。另外直连方式的限制比较多,如目前很多的企业网络为了尽可能的降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任DNS服务器之间的流量通过。

中继隧道:通过DNS迭代查询而实现的中继DNS隧道,这种方式及其隐秘,且可在绝大部分场景下部署成功。但由于数据包到达目标DNS服务器前需要经过多个节点的跳转,数据传输速度和传输能力较直连会慢很多。

实现DNS隧道的关键要点:
(1)、规避DNS缓存机制
(2)、可利用DNS查询类型及其载荷编码
(3)、如何应道域名系统采用的C/S机制,即Server不可能发起连接——Client会定时向Server发送请求,保证二者之间的通信状态。

2.2、DNS隧道工具
目前,DNS隧道技术已经很成熟,相关工具也很多,而且不同工具也各具特色。目前比较活跃的有iodine,dnscat2,其他的还有DeNise,dns2tcp,Heyoka。相关介绍请参考利用DNS隧道进行隐蔽通信和远程控制。

(1)、dns2tcp:支持直连模式的DNS隧道,只实现了简单的DNS隧道,相关命令和控制服务需要自行搭建,且已在kali系统中直接集成。(2)、iodine:最活跃、速度最快、支持直连和中继模式,且支持丰富的编码、请求类型选择(3)、Dnscat2:封装在DNS协议中的加密C&C信道,直接运行工具即可实现数据传输、文件操作等命令和控制功能。

打赏鼓励作者,期待更多好文!

打赏
2人已打赏

ie5000 发表于 2021-3-28 07:59
  
感谢楼主分享
新手589624 发表于 2021-4-30 08:24
  
坚持每天登陆论坛学习
发表新帖
热门标签
全部标签>
安全效果
每日一问
西北区每日一问
技术盲盒
【 社区to talk】
技术笔记
干货满满
产品连连看
新版本体验
技术咨询
标准化排查
信服课堂视频
每周精选
功能体验
自助服务平台操作指引
排障那些事
GIF动图学习
技术晨报
安装部署配置
运维工具
解决方案
2023技术争霸赛专题
秒懂零信任
故障笔记
技术圆桌
云计算知识
用户认证
技术顾问
资源访问
存储
技术争霸赛
「智能机器人」
以战代练
社区新周刊
畅聊IT
答题自测
专家问答
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
原创分享
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
地址转换
虚拟机
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
通用技术
卧龙计划
华北区拉练
天逸直播
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
高手请过招
升级&主动服务
高频问题集锦
POC测试案例
全能先锋系列
云化安全能力

本版达人

新手68983...

本周分享达人

零和一网络

本周提问达人