介绍:
DNS隧道,是隧道技术中的一种。当我们的HTTP、HTTPS这样的上层协议、正反向端口转发都失败的时候,可以尝试使用DNS隧道。DNS隧道很难防范,因为平时的业务也好,使用也罢,难免会用到DNS协议进行解析,所以防火墙大多对DNS的流量是放行状态。
使用场景:
机器不出网,但是可以做dns查询。
1、外部访问内部资源(内部不出网)
目标是内网,并且只有dns出网的情况下,通过自己的公网服务器搭建到目标的dns隧道,从而通过公网服务器代理进入目标内网,遨游目标内网。
2、内部访问外部资源(内部不出网)
自己在一个内网里面,自己所处的环境不出网,但是dns可以出网,就可以用过dns2tcp搭建一个dns隧道,从而可以访问到互联网环境。
典型环境:在学校连接到wifi之后,必须要认证登陆,不然不能上网,但是浏览器又能加载出登陆界面,此情况就是dns出网,可以通过dns2tcp搭建dns隧道绕过认证登陆。
实操:
原理讲解:
先使用dns建立一个隧道,然后使用frp打通,使用vps作为一个代理服务器,帮我们去请求外部资源,这里从而实现了破解的效果
绕过校园网:(内部访问外部资源)
(前面的域名这些步骤就不做多说,可以看下面的参考文章
准备:
window、vps、iodine、frp、tap(虚拟网卡)
1、连接校园网使用cmd查看是否能解析域名
nslookup
2、先需要在windows上安装tap虚拟网卡,这样才可以使用iodine构建在内网中
3、在vps开启iodined服务端
iodined -f -c -P hjw123 192.168.100.1 ns.cn-dragon.cn -DD
4、在windows上开启iodine客户端
iodine -f -P hjw123 -M 200 123.60.79.153 ns.cn-dragon.cn
这个指令是在windwos上的,如果是在linux上使用下面这条
iodine -f -P hjw123 ns.cn-dragon.cn -M 200
这也是经过了一段时间摸索出来的,也不知道啥原理,如果不这样总是报错
5、成功后查看ip地址发现会有新的ip地址
ipconfig
ifconfig
6、这时候校园网内的主机就和vps在同一内网下,可以使用frp建立代理隧道,或者使用ew来
7、windows校园网主机使用frps,在frps.ini里进行配置
[common]
bind_port = 7000
8、在vps中使用frpc,在frpc.ini里进行配置
[common]
server_addr = 192.168.100.2
server_port = 7000
tls_enable=true
[socks5_xm]
type = tcp
remote_port=52013
plugin=socks5
9、启动frp之后就可以构建一个隧道
10、给windows本地设置192.168.100.1:52013的代理
外部访问内部资源
这里其实也很简单,我们将frp的两端交换,这里可以达到外部访问内部的资源,这时我们将服务器的52013作为代理端口
由于这是在两台电脑上进行操作的,无法截图,只能将流程原理介绍一遍,参考文章中有很详细的讲解。看完之后再回头看这篇文章会更加的理解
参考文章:
一文读懂DNS隧道-dns隧道 cobaltstrike