mitm6-通过IPv6攻破IPv4网络

大家好,我是小编

今天我的蛙儿子又出去旅游了

不知何时才能回来

小编又要开始攒草给儿子买好东西了

对于小编的氪金之路

大家是不是要转发支持一波呢?

前言

众所周知,尽管IPv6的采用量在不断增加,但它在内网的使用量依然很少。而实际上自Windows Vista以来的所有Windows版本(包括服务器版本),都默认启用IPv6。

在本文中,我们会介绍一款名为mitm6的工具。它可以利用IPv6的默认属性,通过DNS欺骗将流量重定向到攻击者指定的端口。之后,攻击者会设法拿到身份凭证,并将其传递给网络上的各种服务器。

IPv6攻击

这个工具是SLAAC攻击的一个局部版本。SLAAC是Alex Waters提出的一种攻击思路,它的主要思想是创建一个恶意IPv6路由器,通过各种服务对目标网络进行中间人(man-in-the-middle)劫持。

它的缺点在于,它试图通过IPv4网络,为所有设备创建一个IPv6覆盖网络。而且,它需要相当多的外部软件包和服务才能正常工作。

为了解决这种问题,mitm6应运而生。mitm6安装方便,可以有选择性地攻击主机、伪造DNS响应数据,同时也能最大限度地减少对目标网络的影响。

mitm6攻击

攻击阶段1 – 控制主DNS服务器

首先,mitm6会在攻击者主机的主接口上监听,并通过DHCPv6请求IPv6配置。从Windows Vista之后,每台Windows计算机都默认定期请求此配置信息,你可以从Wireshark抓取的数据包看到:

mitm6会响应这些DHCPv6请求,为受害主机分配本地链路范围内的IPv6地址。而实际上,在IPv6网络中,这些地址由主机自动分配,不需要由DHCP服务器配置。这使得我们有机会将我们的IP设置为默认IPv6 DNS服务器。

mitm6不公布自己作为网关,因此主机不会尝试与本地网段或VLAN之外的IPv6主机通信。同时,由于mitm6不会对网络中所有流量进行中间人劫持,而是只针对目标主机,所以它对网络的影响很小。

mitm6的攻击过程如下图所示。它自动检测攻击者主机的IP配置,应答本网络内客户端发送的DHCPv6请求报文,然后指定攻击者的IP为DNS服务器地址。它还有一个可选功能,即周期性地发送RA(Router Advertisment)报文,提醒客户端当前环境中存在一个IPv6网络,需要通过DHCPv6协议获取IPv6地址。一般情况下,如果目标网络中部署了诸如RA Guard之类的防御机制来防护SLAAC攻击,可以启用该功能。

攻击阶段2 - DNS欺骗

在受害主机上,你可以看到我们的服务器被配置为DNS服务器。由于Windows对IP协议的偏好,IPv6 DNS服务器的优先级高于IPv4 DNS服务器,因此IPv6 DNS服务器将用于查询A(IPv4)和AAAA(IPv6)记录。

利用WPAD

利用WPAD的历史

WPAD(Windows Proxy Auto Discovery :Windows代理自动发现)功能一直是一个很有争议的东西,多年来,它一直被渗透测试人员利用。

正常情况下,企业可以利用这一功能自动探测网络代理,通过该代理访问互联网。保存相关信息的wpad.dat文件由某个服务器提供,一开始,该服务器的地址需要使用DNS来解析。如果DNS无法解析这一地址,那么系统会通过不安全的广播协议(如LLMNR协议)解析服务器地址。

此时你可以应答这些广播协议,宣称WPAD文件位于他们控制的服务器上,要求身份认证来访问WPAD文件。而在默认情况下,Windows会自动进行身份认证,无需与用户交互。如此一来,你就获取到该主机上已登录用户的NTLM凭据。接下来,你可以通过NTLM中继攻击,利用窃取的凭证通过其它服务的身份认证。

MS16-077发布后WPAD的利用历史

2016年,为了缓解上述攻击,微软发布了安全补丁MS16-077,添加了两项重要的保护措施:

- WPAD文件的位置不再需要系统通过广播协议来解析,只需通过DNS协议完成。

- 即使服务器主动要求身份认证,系统也不会自动发送凭证。

更新补丁后,默认情况下Windows不再提供凭据,所以我们需要做更多的工作。在受害主机请求一个WPAD文件时,我们为受害主机提供一个有效的WPAD文件。在这个文件中,我们把自己的主机设置为代理服务器。接下来,只要受害主机访问网络,就会使用我们的主机作为代理服务器。

这种方法适用于大部分浏览器(诸如Edge、IE、Firefox以及Chrome浏览器等 ),因为它们都默认遵守WPAD系统设置。

现在,当受害主机连接到我们的“代理”服务器,我们可以通过使用CONNECT HTTP动作或者GET请求来识别。我们回复一个HTTP 407错误(需要代理验证),它与用于身份验证请求的代码HTTP 401不同。即使在最新的Windows版本上,IE / Edge和Chrome(使用IE设置)也会自动向代理发送身份验证请求。在Firefox中,你可以配置此设置,但它在默认情况下启用。

Windows频繁地把NTLM质询/响应发送给攻击者,你可以将其转发给不同的服务。你可以以受害者的身份对各个服务进行身份验证,然后访问网站和共享信息。如果受害者拥有足够的权限,你甚至可以在计算机上执行代码、接管整个Windows域。

完整攻击流程

整个攻击流程非常简单。首先,我们启动mitm6,它开始响应DHCPv6请求,然后向DNS请求内部网络中的名称。

接下来,我们使用中继攻击工具ntlmrelayx。这个工具是Core Security提供的impacket Python库的一部分,它是著名的smbrelayx工具的改进版,支持多种协议进行中继。Core Security和Fox-IT最近共同致力于改进ntlmrelayx,又增加了几项新功能,使其能够通过IPv6进行中继,提供WPAD文件,自动检测代理请求并提示受害者进行正确的身份认证。

为了提供WPAD文件,你需要把主机信息添加到命令提示符中:-whparameter。你还要指定WPAD文件所在的主机。为了确保ntlmrelayx在IPv4和IPv6上侦听,请使用-6。

以下截图显示了两个工具的运行情况,mitm6有选择地进行DNS欺骗,ntlmrelayx提供WPAD文件,然后将身份验证转发到网络中的其他服务器。

防御措施

学会了如何攻击,那么如何防御就手到擒来了~

对于这种攻击方式,唯一的防范措施就是禁用IPv6。这样可以阻止Windows客户端查询DHCPv6服务器,且无法通过上述接管DNS服务器。

对于WPAD漏洞,最好的解决方案是通过Group Policy(组策略)禁用the Proxy Auto detection(代理自动检测)。如果你的公司内部使用代理配置文件(PAC文件),我们建议你直接配置PAC网址,而不是依靠WPAD自动检测。

最后,完全禁用NTLM中继并把它切换到Kerberos

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180123A0WF9Z00?refer=cp_1026

扫码关注云+社区