NAT滑流,绕过攻击可访问任何TCP / UDP服务

著名安全研究员Samy Kamkar(以创建多个复杂的攻击设备而闻名,例如 USB 手机充电器中的键盘记录器)提出了一种名为“NAT 滑流”的新攻击技术。

该攻击允许攻击者在浏览器中打开网页后,从其服务器与用户系统上位于地址转换器后面的任何 UDP 或 TCP 端口建立连接。该攻击工具包已发布在 GitHub 上。

该方法依赖于欺骗地址转换器或防火墙中的 ALG(应用层网关)连接跟踪机制,该机制用于组织使用多个网络端口(一个用于数据,一个用于控制)的协议的 NAT 转发,例如 SIP、H323、IRC DCC 和 FTP。

该攻击适用于使用内网范围内的内部地址(192.168.xx、10.xxx)连接到网络的用户,并且允许将任何数据发送到任何端口(无需 HTTP 标头)。

要发动攻击,受害者只需执行攻击者准备的 JavaScript 代码即可,例如,打开攻击者网站上的页面或在合法网站上查看恶意广告。

在第一阶段,攻击者获取有关用户内部地址的信息,这可以通过 WebRTC 确定,或者,如果 WebRTC 被禁用,则可以通过暴力破解攻击,测量请求隐藏图像时的响应时间来确定(对于现有主机,由于在返回 TCP RST 响应之前需要等待时间,因此请求图像的尝试比请求不存在的主机更快)。

在第二阶段,受害者浏览器中执行的JavaScript 代码会向攻击者的服务器生成一个大的 HTTP POST 请求(无法在一个数据包中容纳),该请求使用非标准的网络端口号来启动对受害者 TCP 协议栈中 TCP 分片参数和 MTU 大小的调整。

作为回应,攻击者的服务器会返回一个带有 MSS(最大段大小)选项的 TCP 数据包,该选项决定了接收数据包的最大大小。对于 UDP,操作类似,但它依赖于发送一个较大的 WebRTC TURN 请求来触发 IP 层分片。

«通过利用时间攻击或WebRTC链接内部IP提取,自动远程IP和MTU的碎片发现,TCP,NAT滑流结合了内置在NAT,路由器和防火墙中的应用层网关(ALG)连接跟踪机制来利用用户浏览器数据包大小按摩,TURN身份验证的滥用,对数据包限制的精确控制以及浏览器滥用造成的协议混乱,” Kamkar在分析中说。

其主要思路是,在了解分片参数后,可以发送一个较大的HTTP请求,其尾部会落入第二个数据包中。同时,第二个数据包的尾部会被筛选出来,排除HTTP头部,并截断为完全对应于另一种支持NAT穿越协议的数据。

在第三阶段,使用上述操作,JavaScript代码将生成一个特殊选择的HTTP请求(或UDP的TURN)并将其发送到攻击者服务器的TCP端口5060,在将其分段后,它将分成两个数据包:带有HTTP标头和部分数据的数据包,以及带有受害者内部IP的有效SIP数据包。

用于跟踪网络堆栈中连接的系统会将此数据包视为 SIP 会话的开始,并允许将数据包转发到攻击者选择的任何端口,假设该端口用于数据传输。

无论使用哪种浏览器,攻击都可以进行。为了解决这个问题,Mozilla 的开发人员建议阻止向与 SIP 协议相关的网络端口 5060 和 5061 发送 HTTP 请求。

Chromium,Blink和WebKit引擎的开发人员还计划实施类似的保护措施。

来源:https://samy.pl


在 Google 中将其添加为首选来源