MITM6:用IPv6攻陷IPv4网络的工具

随着IPv6概念的提出,互联网上针对IPv6协议的使用也日渐增多,但即便如此IPv6在公司内部却并不受欢迎,很少会有公司使用IPv6。然而,大多数公司可能都忽略了一个问题,虽然IPv6可能没有被我们主动启用,但自Windows Vista以来的所有Windows版本(包括服务器版本)都默认启用了IPv6,并且优先级高于IPv4。

在本篇博文中,我将为大家介绍一种针对IPv6的攻击:即利用Windows网络中的默认IPv6配置,伪装DNS服务器来欺骗DNS reply,并将流量重定向到攻击者指定的端点。接着,我还会为大家提供一种新的利用(臭名昭着的)Windows代理自动发现(WPAD)功能,来传递凭证并对网络中的各种服务进行身份验证的 方法。Fox-IT在GitHub上创建了该工具并命名为mitm6,大家可以在 这里下载到。

IPv6攻击

与IPv6的发展速度缓慢一样,网上关于针对IPv6渗透测试的资料也少的可怜。尽管市面上有不少相关书籍也都或多或少的提到了诸如ARP欺骗之类的东西,但却很少涉及IPv6,而可用于测试或利用IPv6配置的工具则更稀缺。这里我要提及的一款工具是 THC IPV6攻击套件,这也是mitm6灵感的来源。本文中描述的攻击是SLAAC攻击其中的一个版本,最早是由 Infosec研究所的Alex Waters在2011年提出的。SLAAC攻击通过建立一个流氓IPv6路由器,并设置各种服务对网络中的所有流量实施中间人攻击。之后,Neohapsis为这种攻击开发了一个自动化工具名为 suddensix。

对于SLAAC攻击也有其弊端,由于SLAAC攻击会尝试在现有的IPv4网络为当前所有设备创建一个覆盖网络。而在这渗透测试中并不是一个理想的情况,因为这么做会导致网络稳定性受到明显的影响。此外,攻击者还需借助相当多外部的软件包和服务才能正常执行攻击操作。mitm6专注于更快更好的解决方案,测试人员可以根据需求选择攻击主机和欺骗DNS reply,同时能最大限度的减少对网络正常运行带来的影响。而且mitm6使用起来也非常简单,几乎不需要进行配置,并可在几秒内执行攻击。当攻击任务完成后,则会根据工具中默认设置的超时时间,在较短时间内将网络恢复到之前的状态。

mitm6攻击

攻击阶段1 – 主DNS接管

首先让mitm6开始在攻击者机器的主接口上侦听,并通过DHCPv6向 Windows客户端请求IPv6配置。默认情况下,自Windows Vista之后,每台Windows计算机都会定期向该配置发起请求。我们可以通过Wireshark抓包来进行查看:

MITM6:用IPv6攻陷IPv4网络的工具_第1张图片

mitm6将会应答这些DHCPv6请求,并为受害者分配本地链路范围内的IPv6地址。而在实际的IPv6网络中,这些地址由主机本身自动分配,不需要由DHCP服务器来配置,这使得我们有机会将攻击者IP设置为受害者的默认IPv6 DNS服务器。需要注意的是,mitm6目前只针对基于Windows的操作系统,因为像macOS和Linux等其他操作系统,不使用DHCPv6来分配DNS服务器。

mitm6不会对外宣称自己是网关,因此主机不会尝试与本地网段或VLAN之外的IPv6主机进行通信。mitm6也不会尝试对网络中所有流量的中间人,而是选择性地欺骗主机(在运行mitm6时可以指定过滤的域),这样做也减少了对网络造成的影响。

以下截图显示了mitm6的攻击过程。该工具自动检测攻击者计算机的IP配置,并以包含攻击者IP作为DNS服务器的DHCPv6应答回复网络中客户端发送的DHCPv6请求。它将周期性的发送通告路由器(RA)消息来提醒客户端存在IPv6网络,并且客户端应该通过DHCPv6请求IPv6地址。这在某些情况下会加快攻击速度,但这并不是必须要做的工作,我们可以在具有SLAAC攻击防护的网络上执行此攻击。

MITM6:用IPv6攻陷IPv4网络的工具_第2张图片

攻击阶段2 – DNS欺骗

在受害者机器上,我们看到我们的服务器被配置为了DNS服务器。由于Windows对IP协议的偏好,IPv6 DNS服务器将优于IPv4 DNS服务器。IPv6 DNS服务器将会 被用于查询A(IPv4)和AAAA(IPv6)记录。

MITM6:用IPv6攻陷IPv4网络的工具_第3张图片

接着我们要做的是让客户端连接到攻击者机器,我们的最终目标是让用户或浏览器自动向攻击者机器进行身份验证,这就是为什么我们要欺骗内部域testsegment.local中URL的原因。在步骤1的截图中你可以看到,客户端在分配了IPv6地址后立即开始请求有关wpad.testsegment.local的信息。这是我们在这次攻击当中将要利用的一部分。

WPAD利用

WPAD利用的简短史

Windows代理自动检测功能一直以来都存在着巨大争议,而且多年来一直被渗透测试人员所利用。它本意的用途是用于在企业环境中自动检测用于连接到互联网的网络代理。历史上,提供wpad.dat文件的服务器地址(提供这些信息)将使用DNS解析,如果没有条目返回,地址将通过不安全的广播协议解析,如链路本地多播名称解析 (LLMNR)。攻击者可以回复这些广播名称解析协议并对其进行欺骗,让其认为WPAD文件位于攻击者服务器上,然后提示进行身份验证以访问WPAD文件。这种认证是Windows默认提供的,无需用户交互。这将会向攻击者提供登录在该计算机上的用户的NTLM凭据,可被用于在 NTLM中继的过程中对服务进行认证。

然而在2016年微软发布了安全公告MS16-077,通过增加两项重要的保护措施来缓解这一攻击:

WPAD文件的位置不再需要通过广播协议请求,而只能通过DNS;

即使服务器请求,也不会自动进行认证。

虽然在网络中,我们仍能碰到一些未完全修复的机器仍在通过LLMNR请求WPAD并自动进行认证,但我们也发现越来越多的公司开始开始注意到了这点并进行了很好的改善。

MS16-077之WPAD的利用

针对微软的第一个安全措施仅通过DNS,mitm6可以帮助我们轻松绕过。一旦受害者机器将攻击者设置为IPv6 DNS服务器,它将开始查询网络的WPAD配置。由于这些DNS查询被发送给了攻击者,它只能用自己的IP地址(是IPv4或IPv6取决于受害者机器请求的是什么)进行回复。

要想绕过第二个防护,我们需要做一些更复杂的操作。当受害者请求一个WPAD文件时,我们将不会请求验证,而是提供一个攻击者机器上设置作为代理的有效的WPAD文件。此时,当受害者运行任何使用Windows API连接到互联网的应用程序或是浏览网页,都将使用攻击者机器作为代理。这在Edge,Internet Explorer,Firefox和Chrome中都可以使用,因为默认情况下它们都遵循WPAD系统设置。

现在当受害者连接到我们的代理服务器,我们可以通过CONNECT HTTP或GET后的完整URI识别,我们使用HTTP 407代理身份验证进行回复。这与通常用于请求验证的HTTP代码HTTP 401不同。

IE/Edge和Chrome(使用IE设置)将自动向代理进行身份验证,即使在最新的Windows版本上也是如此。在Firefox中,可以对该配置进行设置,默认情况下是启用状态。

MITM6:用IPv6攻陷IPv4网络的工具_第4张图片

此时,Windows将会毫无防备的将NTLM challenge/response发送给攻击者,攻击者可以将其转发给不同的服务。通过这种中继攻击,攻击者可以对服务进行身份验证,访问网站和共享信息,如果受害者的权限足够大,攻击者甚至可以在计算机上执行代码,并接管整个Windows域。关于NTLM中继的相关内容,在我之前的博文中有过介, 点击这里查看。

完整的攻击

在前面的几节内容我对该类攻击做了一个大致的描述和解释。执行此攻击本身非常简单。首先我们启动mitm6,它将开始中继DHCPv6请求,然后开始在内部网络中向DNS查询请求名称。在攻击的第二部分,我们将使用到中继工具ntlmrelayx。这个工具是Core Security impacket Python库的一部分,是smbrelayx工具的一个改进版支持多种协议。Core Security和Fox-IT最近共同改进了 ntlmrelayx,增加了几项新功能(其中包括)使其能够通过IPv6进行中继,提供WPAD文件,自动检测代理请求并提示受害者进行正确的身份验证。如果你想进一步的了解这些新功能,请点击 relay-experimental分支查看。

要提供WPAD文件,我们需要在命令提示符中-wh参数后添加主机,并指定WPAD文件所在的主机。由于mitm6让我们可以控制DNS,因此受害网络中的任何不存在的主机名都可以执行。为了确保ntlmrelayx在IPv4和IPv6上侦听,我们可以使用-6参数。以下截图为我们展示了两个工具当前的运行情况,显示了两个工具正在运行,mitm6有选择地欺骗DNS回复,ntlmrelayx服务于WPAD文件,然后将身份验证转发到网络中的其它服务器。

MITM6:用IPv6攻陷IPv4网络的工具_第5张图片

MITM6:用IPv6攻陷IPv4网络的工具_第6张图片

防御和解决方案

对于上述的这类攻击,目前唯一的解决办法是禁用IPv6。这将阻止Windows客户端DHCPv6服务器查询,并使攻击者无法通过上述方法接管DNS服务器。

对于WPAD漏洞,最好的解决方案是通过组策略禁用代理自动检测功能。如果您的公司内部使用代理配置文件(PAC文件),建议显式配置PAC网址,而不是依靠WPAD自动检测。

在写这篇博文时,Google的Project Zero团队也发现了WPAD中的漏洞, 其博文中提到禁用WinHttpAutoProxySvc是禁用WPAD的唯一可靠方式。

最后,阻止NTLM中继的唯一完整解决方案是完全禁用它并切换到Kerberos。 更多关于NTLM中继攻击的解决方案可以参考我们之前的博文。

工具获取

文中提及的相关工具可在 Fox-IT GitHub和 impacket repository获取。

*参考来源: fox-it,FB小编 secist 编译,转载请注明来自FreeBuf.COM

你可能感兴趣的:(工具,MITM6)