NAT Slipstreaming 攻擊使防火墻形同虛設
2020年10月31日安全研究員Samy Kamka發布了一種被稱為NAT Slipstreaming的攻擊顛覆了人們對防火墻中NAT安全性認知。
NAT Slipstreaming,利用誘騙了受害人訪問可能受到黑客控制的網站后,則允許攻擊者繞過受害人的網絡地址轉換(NAT)或防火墻安全控制,遠程訪問綁定到受害者計算機的任何TCP/UDP服務。

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并將其發送到服務器
a. 嘗試通過WebRTC數據通道通過https提取內部IP
b. 有些瀏覽器(Chrome)僅通過HTTPS通過WebRTC泄露本地IP,但我們的某些攻擊需要HTTP,因此我們首先重定向到攻擊軟件的HTTPS版本以提取本地IP
c. 如果我們能夠繞過其他跨域保護機制,則將其重定向到URL中包含本地IP的HTTP版本(顯示的.local mDNS / Bonjour地址對攻擊沒有幫助)
d. 如果內部IP未通過WebRTC(Safari)泄露或未通過WebRTC(<= IE11)泄露,則將執行基于Web的TCP定時攻擊
e. 隱藏到所有通用網關(例如192.168.0.1)的img標簽在后臺加載
f. 附加到img標簽的onerror /成功事件
g. 如果網關(或SYN + HTTP響應)返回了任何TCP RST,則表明我們檢測到有效子網
h. 在檢測到的子網(/ 24)上的所有IP上重新執行定時攻擊,以衡量發生錯誤/成功觸發的時間
i. 最快的響應可能是內部IP,盡管所有響應都被視為內部IP候選者并受到攻擊
3.大型TCP信標通過隱藏形式和自動HTTP POST發送給綁定到非標準端口的攻擊者“ HTTP服務器”,以強制TCP分段和受害者IP堆棧的最大MTU大小發現
- a. 攻擊者TCP服務器發送“最大段大小TCP選項”以按摩受害者出站數據包大小(RFC 793 x3.1),從而可以控制將多大的瀏覽器TCP數據包
4.瀏覽器通過WebRTC TURN身份驗證機制從瀏覽器發送到攻擊者服務器的非標準端口的大型UDP信標,以強制填充TURN用戶名字段的IP碎片
a. 我們會執行與TCP分段類似的攻擊,但是會通過UDP進行IP分段,并提供與TCP分段不同的值
b. 服務器檢測到并發送回受害者瀏覽器的受害者MTU大小,IP標頭大小,IP數據包大小,TCP報頭大小,TCP段大小,稍后用于數據包填充
5.以新的隱藏形式生成的“ SIP數據包”,包含用于觸發應用程序級別網關連接跟蹤的內部IP
a. 已啟動到TCP端口5060(SIP端口)上的服務器的“ HTTP POST”,避免了受限制的瀏覽器端口
b. 將POST數據“填充”到確切的TCP段大小/數據包邊界,然后通過Web表單附加和發布“ SIP數據包”
c. 受害IP堆棧將POST分解為多個TCP數據包,將“ SIP數據包”(作為POST數據的一部分)保留在其自己的TCP數據包中,而沒有任何隨附的HTTP標頭
d. 如果瀏覽器由于任何其他原因更改了多部分/表單邊界(Firefox)的大小或數據包大小更改,則大小更改會傳達回客戶端,并且客戶端會以新大小自動重新發送
e. 當打開UDP端口時,在特制的用戶名字段內通過TURN協議發送SIP數據包,從而強制IP分段和精確的邊界控制
6.受害者NAT在SIP端口上看到正確的SIP REGISTER數據包(沒有HTTP數據),從而觸發ALG將數據包中定義的任何TCP / UDP端口打開回受害者
a. 受害者NAT重寫SIP數據包,用公共IP替換內部IP,暗示攻擊者利用成功
b. 即使受害人NAT通常重寫源端口,ALG仍然會被迫轉發到攻擊者選擇的端口,因為它認為受害機器打開了該端口,并且攻擊者在到達的SIP數據包中看到了新的源端口。
c. 攻擊者現在可以繞過受害者NAT,并直接連接回受害者計算機上的任何端口,從而暴露以前受保護/隱藏的服務。
d. 非惡意使用:此技術實質上為瀏覽器提供了完整的TCP和UDP套接字功能,可以與系統上本地的任何協議進行通信;可以通過連接回去的云服務器來抽象連接,但瀏覽器只是與云服務器對話,就好像它是套接字一樣,使瀏覽器更強大,可以通過非Web友好協議進行通信
e. 如果在使用共享網絡的虛擬機(VM)中進行測試(用于通過將主機路由到主機,而不是直接將主機路由到網絡上來保護主機免受攻擊),如果數據包將其識別出來,則父主機就是端口最終被打開,而不是虛擬機
f. IP分段可以完全控制IP數據部分中的所有數據,這意味著可以完全控制UDP報頭,包括溢出數據包中的源/目標端口

參考鏈接:
原創:IRT工業安全紅隊
原文鏈接:https://mp.weixin.qq.com/s/4sGcJ5itDZO2ZKE...