0x01 前言
DNS是用来做域名解析的,是连接互联网的关键,故即使是企业内网,在防火墙高度关闭下,也有着很好的连通性,但是黑客却可以通过将其他协议的内容封装再DNS协议中,然后通过DNS请求和响应来传输数据和完成控制。
0x02 DNS隧道的方式
目前DNS隧道目前按照连接方式来分:直连隧道和中继隧道。
直连隧道:用户直接和控制服务器通过DNS连接,由于直连不经过其他DNS服务器,所以速度快,但是很多用户是对DNS服务器是有配置要求的,只能配置特定的服务器,配置其他的DNS服务器不准许;另外这种方式由于直接连接的,很容易暴漏攻击服务器。
中继隧道:利用DNS迭代查询方式,中间通过多个DNS服务器的跳转,跳转到最终的控制机,整个解析过程更长,所以性能没有直连好,还要防止DNS缓存。
在两种DNS 隧道中,用的最多的是中继方式,能让DNS服务器做递归查询,则需要每次查询均采用不同域名的,一句话是每次采用新域名的方式来保证走DNS查询,有较高的隐蔽性。
同时在大多数渗透场景中服务器端是无法连接到内网客户端的,因为防火墙或NAT内网原因,所以多是通过客户端定时连接服务器端来保持状态。
本次实验中,我们的关注点在Dnscat2所搭建的DNS隧道,故不作方式上的研究。
0x03 整体环境
本次我们采用攻击机-Windows DNS服务器-内网机
,由于是DNS隧道,故防火墙全开并不受影响。
0x04 安装部署
服务端配置
安装ruby,下载dnscat2,配置服务端依赖环境,通过ruby ./dnscat2.rb
测试是否安装成功。
如果不以root用户身份运行它,则可能无法侦听UDP / 53(可以使用--dnsport进行更改)。如果是这样,您会看到一条错误消息。
客户端配置
编译客户端应该非常简单-只需编译make / gcc
(对于Linux)或Cygwin或Microsoft Visual Studio(对于Windows)即可。这是Linux上的命令:
到这里的话,服务端和客户端基本上都配置好了,不过部分环境可能会出现依赖缺少的情况,通过以下命令可以补全
0x05 操作使用
首先,先启动服务端,服务端会进行监听端口
再启动客户端,此处先启动同样可行,不过需要注意的是–dns server=www.baidu.com
不可以填写成ns.baidu.com
,这里的参数是解析dns权威服务器,而不是上级委派服务器。
这时已经完成了连接,跳转至客户端可以看到已经成功连接上了。
我们在服务端输入ifconfig
进行测试,可以看到客户端信息,当然,可以做很多事情。
连接之后有诸多命令,以下记录了各个命令的使用,在command
中使用?
调出帮助。
加注:
本人在使用时,配置好的NS域名却在数据中发现走的是直连模式,也就是攻击机到受害机的DNS协议,结果发现是客户端命令用的直连模式,此处使用中继命令即可,不同的是直连命令下,只能只有ip或a解析,但中继模式下却能进行ns解析的二级域名,并且直连和中继是互通的。
__EOF__
本文链接:https://www.cnblogs.com/HOPEAMOR/p/16251105.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!