主要包含DNS劫持实验以及DNS隧道穿越网关进行免认证上网实验
•DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。本次实验主要使用网络行为管理软件:Panabit来对DNS进行劫持实验。
Panabit是基于Linux版本FreeBSD操作系统开发的流控系统,具备集成路由,负载均衡,认证,依托N检测,移动终端识别,移动终端识别,DNS管控,HTTP管控,日志审计等功能。
Panabit主要工作在应用层上,采用应用层协议识别的通用技术DPI/DFI。
- DPI:深度包检测
- DFI:深度流检测
Panabit采用DPI对应用蹭协议特征进行识别判断,并采用独有的“节点跟踪技术+加密协议深度识别引擎”来探测P2P拓扑结构、识别P2P节点。(特别地,对采用模糊或加密协议的eMule、skype、迅雷、BT等P2P应用,如果单纯地根据协议特征来判断已经难以保证识别的准确性,而Panabit独有的“节点跟踪技术+加密协议深度识别引擎”则可以很好地解决这个问题,对于改变端口、伪装端口、加密通讯的各类P2P应用协议保持极高的识别率和准确性。)
基于特征识别,Panabit使用了两个条件判断:连接建立的过程被监控到、并且特征包能够被监控到,防止判误。
基于Panabit这些优秀的功能,所以Panabit才可以精确地识别流量中的各项信息。
DNS Tunneling可以分为直连和中继两种。直连也就是Client直接和指定的目标DNS Server(Authoritative NS Server)连接,通过将数据编码封装在DNS协议中进行通信,这种方式速度快,但是隐蔽性比较弱,很容易被探测到,另外限制比较高,很多场景不允许自己指定DNS Server。而通过DNS迭代查询而实现的中继隧道,则更为隐秘,但同时因为数据包到达目标DNS Server前需要经过多个节点,所以速度上较直连慢很多。
中继过程中的一个关键点是对DNS缓存机制的规避,因为如果需要解析的域名在Local DNS Server中已经有缓存时,Local DNS Server就不会转发数据包。所以在我们构造的请求中,每次查询的域名都是不一样的或者是已经是过期的。
本次实验主要是基于iodine建立DNS隧道:
iodine支持直接转发和中继两种模式。客户端和服务端建立通信后,可以看到客户机上多出一块名为dns0的虚拟网卡。iodine支持NULL,TXT,SRV,MX,CNAME,A等多种查询请求类型,并且支持EDNS,支持base32,base64,base128等多种编码规范。iodine在直连模式下,速度相当可观,我试过建立隧道后,用ssh做代理转发,可以流畅播放youtube 1080p,原理暂未分析。在中继模式下,使用谷歌的dns,也是Dns Tunneling工具中速度最快的。更多使用方法和功能特性请参考官方文档。