Nat Slipstreaming v2.0 漏洞可远程访问任意 TCP/UDP 服务
速览
Nat Slipstreaming v2.0 是一种针对网络地址转换(NAT)的旁路攻击技术,攻击者可通过精心构造的数据包,使受害者设备将内部服务暴露给外网。该漏洞影响大量使用 NAT 的设备,包括路由器、防火墙等,可能造成内网服务被远程控制或数据泄露。目前尚无官方补丁,用户需加强网络监控。
AI 深度解读
背景
NAT(网络地址转换)和防火墙是现代网络基础设施的核心组件,它们通过将内部私有IP地址映射到公网IP,并限制外部对内部网络的直接访问,来保护内网设备和服务。然而,许多NAT设备和防火墙支持一种称为ALG(应用层网关)的连接跟踪机制,这是为了正确处理多端口协议(如SIP、H.323、FTP、IRC DCC等)而设计的。ALG会动态地打开额外的端口,允许数据通道的通信。
2020年10月,安全研究员samy kamkar发布了NAT Slipstreaming v1攻击,展示了如何利用浏览器、ALG漏洞以及TCP/UDP协议特性,远程绕过NAT/防火墙,访问内网中任意绑定的TCP/UDP服务。2021年1月,samy kamkar与Armis公司的Ben Seri和Gregory Vishnipolsky合作发布了v2版本,改进了攻击手法,引入了新的协议混淆和端口绕过技术。本文基于Hacker News上的技术文章,对v2攻击进行深度解读。
核心内容
NAT Slipstreaming攻击的核心思想是:受害者只需访问一个恶意网站(或包含恶意广告的网站),攻击者就能远程打开受害者NAT/防火墙上的任意端口,从而直接访问内网中任何主机上的任何TCP/UDP服务。攻击利用了浏览器、ALG机制以及TCP/UDP协议栈的多个漏洞,通过一系列精心设计的步骤实现。
攻击步骤概述
-
获取受害者内网IP:
攻击者的网站首先尝试通过浏览器获取受害者的内网IP地址。- 优先使用WebRTC数据通道(仅HTTPS环境下暴露本地IP)。如果攻击需要HTTP环境,则先重定向到HTTPS版本获取IP,再回到HTTP。
- 如果WebRTC不可用(如Safari,或IE11及更早版本),则使用基于TCP的定时攻击:通过隐藏的
<img>标签加载常见网关IP(如192.168.0.1),根据onerror/onsuccess事件的响应时间推断子网,然后扫描整个/24子网,最快响应者即为内网IP候选。
-
发现MTU与TCP/UDP分段控制:
- 通过隐藏表单向攻击者的HTTP服务器(非标准端口)发送大TCP数据包(beacon),服务器利用TCP选项中的最大分段大小(MSS)调节受害者的出站包大小,从而精确控制浏览器发出的TCP包边界。
- 对于UDP,利用WebRTC的TURN认证机制向攻击者服务器的非标准端口发送大UDP数据包,通过填充
username字段引发IP分片,从而控制UDP包边界。 - 攻击者服务器根据收到的数据包检测受害者的MTU、IP头部大小、TCP头部大小、TCP分段大小等信息,并返回给浏览器,用于后续的“填充”操作。
-
构造ALG触发包:
- v1(SIP):通过隐藏表单生成一个虚假的SIP REGISTER包,其中包含受害者的内网IP。然后通过HTTP POST将数据发送到TCP 5060端口(SIP端口),但该端口在浏览器受限端口列表中,v1利用浏览器对某些端口的限制绕过(实际上HTTP POST可以发送到受限端口,只要数据包格式正确)。浏览器将POST数据分片,攻击者通过前一步的包大小控制,使得SIP包恰好落在单独的一个TCP包中,不带任何HTTP头部。
- v2(H.323 + STUN):v2改为使用基于TCP的STUN(用于WebRTC的NAT穿越协议)来构造H.323呼叫转发包。STUN协议本身不受浏览器端口限制列表影响,因此可以发送到TCP 1720端口(H.323端口)。同样,攻击者将H.323包填充到精确的TCP分段边界,使其独立出现在一个TCP包中。v2的H.323呼叫转发包可以重定向到网络中的任意其他主机,不仅仅是受害者自身。
-
触发ALG打开端口:
- 受害者的NAT/防火墙收到一个看起来合法的SIP REGISTER包(v1)或H.323呼叫转发包(v2),且该包不包含HTTP数据,因此ALG机制被触发。ALG解析包中的内网IP地址,并根据协议规则(如SIP的REGISTER或H.323的呼叫转发)动态打开回程的端口。
- 在v2中,H.323呼叫转发允许将呼叫指向网络中的任意IP,因此攻击者可以指定目标为内网中任何其他主机,触发NAT将端口转发到该主机。
- NAT会重写SIP/H.323包中的内网IP为公网IP,这一行为也向攻击者确认了攻击成功。
-
远程访问:
- 一旦ALG打开了端口,攻击者就可以绕过NAT/防火墙,直接连接到内网中任意主机上的任意端口。原本被保护的内网服务(如数据库、文件共享、远程桌面等)暴露在公网中。
攻击的额外细节
- 浏览器兼容性:该攻击在所有主流现代浏览器(以及旧版本)上均有效,因为浏览器本身并非漏洞源,而是被利用作为协议数据发送工具。
- 非恶意用途:该技术也可以作为正向用途——浏览器通过此方法获得完整的TCP/UDP套接字能力,可以通过云服务器抽象,与本地非Web友好的协议通信。
- VM测试提醒:如果在虚拟机中测试共享网络模式,数据包可能通过宿主主机发出,导致端口实际在宿主机上打开,而非虚拟机内。
- IP分片潜力:攻击者通过IP分片可以完全控制溢出UDP包中的UDP头部,包括源端口和目的端口,这暗示了更广泛的利用可能。
关键要点
- 攻击前提:受害者的NAT/防火墙必须支持ALG(通常用于SIP、H.323、FTP等协议),且该功能未禁用。
- 内网IP提取:通过WebRTC或TCP定时攻击获取内网IP,这是后续攻击的基础。
- MTU与分段控制:利用TCP MSS选项和UDP IP分片,精确控制浏览器发出的数据包边界,使得恶意协议包(SIP/H.323)独立出现在一个TCP/UDP包中,不包含HTTP头部。
- 协议混淆:浏览器发送的HTTP POST数据经过填充,其部分内容被NAT/防火墙误认为是
