BadTunnel 这个缝隙出来现已近一个月了,笔者在刚刚迸发这个缝隙的时分对其进行了剖析,而且写出了POC,最近闲来无事,又从头翻起这个缝隙,改进了进犯脚本,使之成为一个实践浸透测验中可用的一个东西。
原理:
1. Badtunnel缝隙的原理是,当某台主机(受害主机)给一个指定IP的主机发送一个SMB同享衔接恳求时,由于该指定主机的默许同享端口445、139不可达(超时或回绝衔接),则该主时机向这个指定IP的主机发送一个意图端口为137的NetBIOS NB STATE包。一旦发送这个数据,且网络中心部件(防火墙、NAT网关等)答应经过,那么就必定答应在必定的时间内经过该地道(即Badtunnel)回来数据。而这个NetBIOS包运用的协议是无衔接状况的UDP,其源端口和意图端口用且只用137端口。这就表明这样一段时间内,处于外部网络的机器能够结构一个源端口为137,意图为该IP的137端口,发往受害主机,且该网络必定是可达的。
2. Badtunnel中一共用到了2种NetBIOS数据包,第一种是受害主机向意图主机UDP的137端口发送的NetBIOS NB STATE包,第二种则是从意图主机137端口源源不断地回来的NetBIOSNAME RESPONSE包。发送第二个包的意图是什么呢?其实便是在当这个Badtunnel构建起来后,假定方针再未来的一段时间内,必定会向自己的局域网内播送一个NetBIOS NAME QUERY的恳求包,用来恳求某一个不知道的域名或许机器名的IP地址(留意这个播送报是不能经过Badtunnel发送给黑客的服务器的,即黑客是看不到这个播送包的)。这个恳求包内部其实是一个DNS协议的报文,可是和DNS协议不同的是,它的Trasaction ID不是随机,而是递加的!而且这个ID还和之前发送的NetBIOSNB STATE数据包的ID享受同一个计数器!也便是说,在受害主机给一个指定的主机发送一个NetBIOSNB STATE包时,这个ID就现已泄露了。只需受害主机接收到ID匹配的RESPONSE,那么它就会更新自己本机的NetBIOS缓存。
3. 当Badtunnel构建起来今后,能够不断地经过这个tunnel给受害主机发送一个NetBIOSNAME RESPONSE包,不断地告知受害主机:WPAD(或许其他域名)的IP地址是xxx,这个xxx一般是进犯者自己的WEB服务器,用来给受害者主机发送wpad.dat文件,然后更改受害主机的网络署理设置。而发送的这个NetBIOSNAME RESPONSE包,运用的ID号必定是大于之前收到的NB STATE的ID号,且一般不会大许多。经过不断地发包彻底能够“蒙”对。
4. 触发这个缝隙确实很简单,可是门槛也不是那种受害者彻底不知情就能绑架的。依据1,受害者需求拜访一个SMB的UNI PATH,即相似”123.123.123.123”的地址,一个仅仅放在资源管理器的快捷方法、或许翻开一个网页、翻开一个文档都能够触发,可是这仍是有必定门槛的,尽管并不是很高。即使成功地触发,部分运营商好像在网络层就现已屏蔽了udp的137端口,这样这个Tunnel仍是构建不起来。
5. Badtunnel缝隙的中心在于这个Tunnel,而不是WPAD。WPAD(即网络署理自发现协议 – Web Proxy Auto-Discovery Protocol)仅仅依据这个Tunnel的一个现在发现的比较好的运用方法罢了(其实还有一个潜在的更好的运用方法,这儿笔者卖个关子,尚待研讨)。事实上,在部分内网中,许多Web衔接数据库是经过机器名来衔接的,也便是说,在Web服务器刚发动的初始化阶段,或许衔接超时今后从头建议衔接的阶段,它也会在内部网络发送一个NetBIOS NAME QUERY播送,只需能够知道这个主机名,相同能够经过Badtunnel来诈骗数据库客户端主机,运用Metasploit的MYSQL Capture或许MSSQL Capture模块就能捕捉到数据库的暗码。
运用
Metasploite中的运用代码,其实并不能算是一个真实的Badtunnel运用代码,由于它会遍历0-65535号的Trasaction ID。依据我之前所说,这个ID是能够被猜测而且准确进犯的。因而Metasploit中的运用代码功率低、成功率不高。
笔者运用Python编写了一个真实的BadTunnel运用东西,该东西能够精准的诈骗受害主机,重定向一个指定的域名(默许是WPAD)到一个指定的IP地址。还有NetBIOS探针形式、混合形式(构建Badtunnel,经过Badtunnel重定向WPAD而且探针局域网内NetBIOS NAME QUERY),主动诈骗形式(主动诈骗局域网内一切的NetBIOS NAMEQUERY,把恣意域名定向到一个指定IP)。其间探针形式、主动诈骗形式不支持跨网段。能够幻想以下进犯场景,留意构建BadTunnel需求首要封闭445和139端口,Linux中默许是smbd服务和nmbd服务,Windows能够设置防火墙制止经过:
1. 绑架QQ老友、长途/局域网络的流量:
准备好环境。最便利的是直接运用burpsuit来敞开一个署理端口,留意需求监听在一切接口上(即监听0.0.0.0),然后运用metasploit的server/wpad模块来快速建立一个80端口下的HTTP服务器,来回来wpad配置文件。
1)运用QQ、邮件发送一个带有SMBURI PATH的文档、快捷方法,或许一个网页,留意网页中的标签应该是src=”123.123.123.123”这种;快捷方法能够用metasploit生成。假如处于同一个局域网,则不需求任何作业。
2)发送给朋友或许妹子,最好做点其他功课,你懂的。直接运用东西的默许形式即可。
[1] [2] 黑客接单网