NAT Slipstreaming攻击使防火墙形同虚设


NAT Slipstreaming攻击使防火墙形同虚设文章插图
2020年10月31日安全研究员Samy Kamka发布了一种被称为NAT Slipstreaming的攻击颠覆了人们对防火墙中NAT安全性认知 。
NAT Slipstreaming , 利用诱骗了受害人访问可能受到黑客控制的网站后 , 则允许攻击者绕过受害人的网络地址转换(NAT)或防火墙安全控制 , 远程访问绑定到受害者计算机的任何TCP/UDP服务 。
NAT Slipstreaming攻击使防火墙形同虚设文章插图
NAT Slipstreaming结合了通过定时攻击或WebRTC链接内部IP提取 , 自动远程MTU和IP碎片发现 , TCP数据包大小按摩的内部IP提取 , 结合了内置在NAT , 路由器和防火墙中的应用层网关(ALG)连接跟踪机制 , 利用了用户浏览器 , TURN身份验证滥用 , 精确的数据包边界控制以及浏览器滥用造成的协议混乱 。 由于是打开目标端口的NAT或防火墙 , 因此绕过了任何基于浏览器的端口限制 。
这种攻击利用了对某些TCP和UDP数据包的数据部分的任意控制的优势 , 而没有包括HTTP或其他标头 。 该攻击会在所有主要的现代(和较旧)浏览器上执行这项新的数据包注入技术 , 并且是我自2010年起使用的原始NAT Pinning技术(在DEFCON 18 + Black Hat 2010上提出的)的现代化版本 。 此外 , 还包括用于本地IP地址发现的新技术 。
此攻击需要NAT /防火墙来支持ALG(应用级网关) , 这对于可以使用多个端口(控制通道+数据通道)的协议是必需的 , 例如SIP和H323(VoIP协议) , FTP , IRC DCC等 。
NAT Slipstreaming的工作方式如下:
1.受害者访问恶意网站(或带有恶意广告的网站)
2.首先必须通过浏览器提取受害者的内部IP并将其发送到服务器

  1. 尝试通过WebRTC数据通道通过https提取内部IP
  2. 有些浏览器(Chrome)仅通过HTTPS通过WebRTC泄露本地IP , 但我们的某些攻击需要HTTP , 因此我们首先重定向到攻击软件的HTTPS版本以提取本地IP
  3. 如果我们能够绕过其他跨域保护机制 , 则将其重定向到URL中包含本地IP的HTTP版本(显示的.local mDNS / Bonjour地址对攻击没有帮助)
  4. 如果内部IP未通过WebRTC(Safari)泄露或未通过WebRTC(<= IE11)泄露 , 则将执行基于Web的TCP定时攻击
  5. 隐藏到所有通用网关(例如192.168.0.1)的img标签在后台加载
  6. 附加到img标签的onerror /成功事件
  7. 如果网关(或SYN + HTTP响应)返回了任何TCP RST , 则表明我们检测到有效子网
  8. 在检测到的子网(/ 24)上的所有IP上重新执行定时攻击 , 以衡量发生错误/成功触发的时间
  9. 最快的响应可能是内部IP , 尽管所有响应都被视为内部IP候选者并受到攻击
3.大型TCP信标通过隐藏形式和自动HTTP POST发送给绑定到非标准端口的攻击者“ HTTP服务器” , 以强制TCP分段和受害者IP堆栈的最大MTU大小发现
  1. 攻击者TCP服务器发送“最大段大小TCP选项”以按摩受害者出站数据包大小(RFC 793 x3.1) , 从而可以控制将多大的浏览器TCP数据包
4.浏览器通过WebRTC TURN身份验证机制从浏览器发送到攻击者服务器的非标准端口的大型UDP信标 , 以强制填充TURN用户名字段的IP碎片
  1. 我们会执行与TCP分段类似的攻击 , 但是会通过UDP进行IP分段 , 并提供与TCP分段不同的值
  2. 服务器检测到并发送回受害者浏览器的受害者MTU大小 , IP标头大小 , IP数据包大小 , TCP报头大小 , TCP段大小 , 稍后用于数据包填充
5.以新的隐藏形式生成的“ SIP数据包” , 包含用于触发应用程序级别网关连接跟踪的内部IP
  1. 已启动到TCP端口5060(SIP端口)上的服务器的“ HTTP POST” , 避免了受限制的浏览器端口
  2. 将POST数据“填充”到确切的TCP段大小/数据包边界 , 然后通过Web表单附加和发布“ SIP数据包”
  3. 受害IP堆栈将POST分解为多个TCP数据包 , 将“ SIP数据包”(作为POST数据的一部分)保留在其自己的TCP数据包中 , 而没有任何随附的HTTP标头
  4. 如果浏览器由于任何其他原因更改了多部分/表单边界(Firefox)的大小或数据包大小更改 , 则大小更改会传达回客户端 , 并且客户端会以新大小自动重新发送
  5. 当打开UDP端口时 , 在特制的用户名字段内通过TURN协议发送SIP数据包 , 从而强制IP分段和精确的边界控制
6.受害者NAT在SIP端口上看到正确的SIP REGISTER数据包(没有HTTP数据) , 从而触发ALG将数据包中定义的任何TCP / UDP端口打开回受害者
  1. 受害者NAT重写SIP数据包 , 用公共IP替换内部IP , 暗示攻击者利用成功