DNS协议隧道
- 防火墙禁止TCP出战访问流量
- SSH隧道、端口转发全部失效
- DNS的工作原理适合用于实现隧道
- DNS工作原理
- DNS隧道原理:注册受自己控制的DNS记录
DNS2TCP
- 利用合法DNS服务器实现DNS隧道
- C/S(dns2tcp/dns2tcpd)结构
- 通过txt记录加密传输数据(A记录长度有限)
- 隧道建立后保持连接
- 默认记录生存时间3秒
安装
apt-get install dns2tcp
- Kali默认安装
环境配置1(直接通过防火墙访问外网DNS服务器)
Win2003:安装DNS服务器;配置转发器;创建区域lab.com;指派二级域test.lab.com;NS记录指向Kali
防火墙:只允许UDP 53端口出站
客户端(Bodhi Linux)
dns2tcpc -c -k pass -d 1 -l 2222 -r ssh -z test.lab.com
- -c 启动压缩,提高网络效率
- -k 服务端配置文件中设置的密码,可以不设置。
- -l 本地侦听端口
- -r resources
- -z 服务端的域名
服务端(Kali)
- 服务端配置文件:
- /etc/dns2tcpd.conf
- .dns2tcprcd(也可以在当前用户主目录下创建这个文件,就不需要指定-f参数了)
- 资源可以是其它地址
- 启动
dns2tcpd -F -d 1 -f /etc/dns2tcpd.conf
- -F:前端运行
- -d:debug level 1-3
- -f :指定配置文件
- 服务端配置文件:
环境配置2(防火墙内DNS服务器访问指定外网DNS服务器)
- 同样的操作
资源访问
- 本地ssh资源
- socks代理
- 隧道嵌套
iodine
- 对下行数据不进行编码,因此性能优秀
- 支持多平台:Linux、BSD、MacOS、Windows
- 最大16个并发连接
- 强制密码支持
- 支持同网段 隧道IP(在客户端和服务器端分别创建虚拟网卡,分别绑定一个新的ip。这两个新ip处于同一网段,而这个网段与客户端服务端的网段都不同)
- 支持多种DNS记录类型
- 丰富的隧道质量检测措施
操作
服务端:
1 |
|
- 这里指定的是本地DNS服务器ip,也可以不指定,自己检测
curl --socks5 -hostname 127.0.0.1:7001
隧道网络接口
- 不基于资源的通用隧道,如同本网段内两台相邻的主机。
- 服务器端和客户端分别生成隧道网络接口dns0
- 隧道两端接口的IP地址应不同于客户端和服务端网段
- 隧道可以嵌套其它隧道,如ssh