閱讀筆記:Poison Over Troubled Forwarders: A Cache Poisoning Attack Targeting DNS Forwarding Devices

清一與你發表於2020-11-21

注意:閱讀本筆記需要有 D N S DNS DNS域名解析的基本知識,瞭解其詳細的解析過程(可檢視我的另一篇部落格:最全 D N S DNS DNS域名解析流程及域名註冊(細節!))。

攻擊名稱: C a c h e   P o i s o n i n g   A t t a c k   T a r g e t i n g   D N S   F o r w a r d i n g   D e v i c e s Cache~Poisoning~Attack~Targeting~DNS~Forwarding~Devices Cache Poisoning Attack Targeting DNS Forwarding Devices

攻擊可行性:即 D N S DNS DNS轉發器的缺陷。相當數量的 D N S DNS DNS轉發器無法對 D N S DNS DNS響應進行驗證,像 D N S DNS DNS交易 I D ID ID、源 I P IP IP地址和目的埠號,並且容易受到 c a c h e   p o i s o n i n g   a t t a c k cache~poisoning~attack cache poisoning attack D O S DOS DOS

攻擊方法:敵手使用一個受控域名和權威域名伺服器來注入任意域名的記錄。該攻擊還繞過了廣泛部署的防禦措施,包括隨機臨時埠號和 0 x 20 0x20 0x20編碼。

攻擊實驗:家庭路由器和 D N S DNS DNS軟體

結論: D N S DNS DNS轉發器可以成為 D N S DNS DNS基礎設施中的一個軟肋。

啟發:本研究的發現要求部署快取中毒防禦,如隨機埠號, 0 x 20 0x20 0x20編碼和 D N S S E C DNSSEC DNSSEC

針對本攻擊的防禦措施:響應驗證、按照響應進行 D N S DNS DNS快取、在 D N S DNS DNS記錄上進行 0 x 20 0x20 0x20編碼、隨機化 I P I D IPID IPID值。

事實上,DNS標準沒有詳細說明哪個快取行為(按記錄快取或按響應快取)應該被採用,但是,通過我們的測試發現,大多數實現按記錄進行快取。


關鍵詞解析

D N S   F o r w a r d e r DNS~Forwarder DNS Forwarder D N S DNS DNS轉發器。

D N S DNS DNS轉發器出現的時間比名稱伺服器和解析器都要晚。隨著生態系統的發展,它現在包含多層伺服器,包括轉發裝置。雖然目前使用的 D N S DNS DNS轉發器很普遍,但在標準檔案中仍然缺乏關於其實施細節的具體指導方針。

​ 經整理分析,有兩種對轉發器的定義:

​ **一、充當遞迴解析器的上游伺服器。**這些裝置用於訪問權威伺服器,通常具有更好的網際網路連線能力或更大的快取能力,它指的是一個權威的區域從伺服器向其主伺服器轉發更新訊息。( R F C   2136 RFC~2136 RFC 2136 R F C   2308 RFC~2308 RFC 2308 R F C   7626 RFC~7626 RFC 7626檔案均有提到)

​ **二、位於客戶端和遞迴解析器之間。**這些裝置從客戶端獲取查詢訊息,將查詢訊息轉發給其他的伺服器,而不是進行解析。( R F C   3597 RFC~3597 RFC 3597 R F C   7871 RFC~7871 RFC 7871 R F C   5625 RFC~5625 RFC 5625檔案均有提到)

​ 最新的檔案( R F C   8499 RFC~8499 RFC 8499)對轉發器的定義是:位於存根解析器與遞迴解析器之間

​ 所處位置:見下圖 1 1 1
在這裡插入圖片描述

圖1 轉發器在DNS基礎設施中的位置

​ 主要工作: D N S DNS DNS轉發器收到查詢時,它不是遞迴地執行解析,而是簡單地將查詢轉發給上游遞迴解析器。

​ 其與遞迴解析器的區別:
遞迴解析器就是“以遞迴形式進行解析”的解析器,遞迴解析器應該處理給其他伺服器的引用,以及其他名稱的別名,並將資源記錄聚合成一個最終答案。它還應執行完整性檢查,像 B a i l i w i c k Bailiwick Bailiwick檢查和 D N S S E C DNSSEC DNSSEC驗證。

D N S DNS DNS轉發器不遞迴的解析查詢,它不處理引用,並且通常不能夠驗證響應**(致命弱點)**,完全依賴於上游伺服器去執行響應驗證,正是由於這個致命弱點,攻擊者可以注入包含有其他域名的欺騙碎片並欺騙轉發器將它快取下來。例如,我們測試的家庭路由器都沒有驗證響應中的 C N A M E CNAME CNAME鏈。結果,易受攻擊的 D N S DNS DNS轉發器無法區分惡意響應,這些響應在被上游解析器檢查後被篡改。但是,如果 D N S DNS DNS轉發器執行響應認證來使攻擊無效(例如,通過“ r e − q u e r y re-query requery”或完全 D N S S E C DNSSEC DNSSEC驗證),它將以遞迴模式執行,由於效能開銷,這是不需要的。

  1. 對於本地網路中的 c l i e n t s clients clients,使用 D N S DNS DNS轉發器可降低安全風險,因為它不會直接暴露給網際網路攻擊者。
  2. 實際上超過 95 95 95%的開放 D N S DNS DNS解析器都是 D N S DNS DNS轉發器,它們中的大多數執行在家用網路裝置中。
  3. 但是目前對 D N S DNS DNS轉發器的理解和安全狀況的研究很少。

先前的 D N S   C a c h e   P o i s o n i n g   A t t a c k DNS~Cache~Poisoning~Attack DNS Cache Poisoning Attack

D N S DNS DNS快取中毒攻擊由來已久,對網際網路使用者產生了嚴重的威脅。以下是兩種主要的攻擊方法,但是都有其侷限性。

∙ \bullet F o r g i n g   A t t a c k s Forging~Attacks Forging Attacks(偽造攻擊)

​ 攻擊目標:精心製作一個惡意 D N S DNS DNS響應,欺騙解析器接受它。

​ 攻擊成功標誌:在經過身份驗證的響應到達之前,如果攻擊者偽造了帶有正確後設資料的 D N S DNS DNS響應,解析器可以接受惡意響應,攻擊就會成功。

後設資料:此處指的是 q u e s t i o n   s e c t i o n question~section question section D N S   t r a n s a c t i o n   I D DNS~transaction~ID DNS transaction ID s o u r c e / d e s t i n a t i o n   a d d r e s s source/destination~address source/destination address p o r t   n u m b e r s port~numbers port numbers

正確後設資料的意思就是,響應中的這4個後設資料與查詢訊息中的後設資料相匹配。

​ 具體例項: K a m i n s k y   A t t a c k Kaminsky~Attack Kaminsky Attack 2008 2008 2008年。

侷限性:減輕偽造攻擊的關鍵是增加 D N S DNS DNS查詢包的隨機性。根據 R F C   5452 RFC~5452 RFC 5452的要求,對於解析器的實現,現在必須使用隨機的臨時埠號和 D N S   t r a n s a c t i o n   I D s DNS~transaction~IDs DNS transaction IDs。同時,解析器還採用 0 x 20 0x20 0x20編碼來混合 q u e s t i o n   s e c t i o n question~section question section名稱的大小寫。因此,廣泛部署的防禦措施大大增強了解析器對偽造攻擊的抵抗力。

∙ \bullet D e f r a g m e n t a t i o n   A t t a c k s Defragmentation~Attacks Defragmentation Attacks(碎片整理攻擊)

​ 一種基於 I P IP IP碎片整理的新型 D N S DNS DNS快取中毒攻擊。

F r a g m e n t a t i o n Fragmentation Fragmentation一直以來都是一個問題,最早的報告可以追溯到 1987 1987 1987年,它表明了碎片化會導致效能差和完全通訊失敗, I P IP IP碎片還會導致頻繁的資料損壞。在最近的研究中, I P IP IP碎片可用於規避 D N S DNS DNS快取注入防禦,或導致 C A s CAs CAs頒發欺詐性證書。由於各種安全問題,一直在討論完全避免碎片化行為。

這篇論文就採用了這些措施成功完成了攻擊。

​ 攻擊可行性:分段的 D N S DNS DNS響應資料包的第 2 2 2個片段不包含 D N S DNS DNS U D P UDP UDP報頭或 q u e s t i o n   s e c t i o n question~section question section,因此它可以繞過針對偽造攻擊的基於隨機的防禦。
在這裡插入圖片描述

圖2 針對遞迴解析器的碎片整理快取注入攻擊

​ 大致的攻擊過程:攻擊者首先利用惡意 D N S DNS DNS記錄偽造第 2 2 2個片段,並對受害域名進行 D N S DNS DNS查詢。來自權威域名伺服器的響應被攻擊者強制分割(通過提前的單獨過程)。在遞迴解析器中,合法的第 1 1 1個片段與欺騙的第 2 2 2個片段重新組裝,這產生了惡意的 D N S DNS DNS響應。因此,惡意記錄被遞迴解析器快取,攻擊成功。

​ 攻擊的挑戰:其核心挑戰是迫使 D N S DNS DNS響應碎片化。

​ 方法一: P M T U − b a s e d   d e f r a g m e n t a t i o n   a t t a c k PMTU-based~defragmentation~attack PMTUbased defragmentation attack
​ 降低遞迴解析器和權威域名伺服器之間的 P M T U PMTU PMTU(路徑最大傳輸單元)

​ 方法二: D N S S E C − b a s e d   d e f r a g m e n t a t i o n   a t t a c k DNSSEC-based~defragmentation~attack DNSSECbased defragmentation attack
​ 傳送 D N S S E C DNSSEC DNSSEC查詢請求以擴大 D N S S E C DNSSEC DNSSEC記錄的 D N S DNS DNS響應,以便它們達到最大傳輸單位的限制(例如,乙太網為 1500 1500 1500位元組),並將被分段。

侷限性:先前的碎片整理對權威服域名務器以及受害域的 P M T U PMTU PMTU行為有很高的要求,基於 P M T U PMTU PMTU的碎片整理要求攻擊者向權威伺服器傳送特製的 I C M P   f r a g m e n t a t i o n   n e e d e d   e r r o r ICMP~fragmentation~needed~error ICMP fragmentation needed error訊息,聲稱有一個小的 P M T U PMTU PMTU,並欺騙它降低特定解析器的 P M T U PMTU PMTU然而,這在大多數情況下是不切實際的。 D N S S E C − b a s e d   d e f r a g m e n t a t i o n   a t t a c k DNSSEC-based~defragmentation~attack DNSSECbased defragmentation attack要求無驗證解析器和能夠通過適合的 D N S S E C DNSSEC DNSSEC部署和驗證來減輕。而且,該攻擊只工作於簽了名的 D N S S E C DNSSEC DNSSEC受害域名。目前, D N S S E C DNSSEC DNSSEC部署在域名中的比例仍然很低(例如, 2017 2017 2017年流行域名的比例不到 1.85 1.85 1.85%),因為它只適用於有限的領域和伺服器。此外,這種情況下的 D N S DNS DNS轉發器也需要支援 D N S S E C DNSSEC DNSSEC。否則,上游遞迴解析器甚至不會傳送 D N S S E C DNSSEC DNSSEC響應。因此基於 D N S S E C − b a s e d   d e f r a g m e n t a t i o n   a t t a c k DNSSEC-based~defragmentation~attack DNSSECbased defragmentation attack的目標是有限的。


針對 D N S DNS DNS轉發器的碎片整理攻擊

目的是將分裂做的更加可靠、確定,並且,攻擊是針對 D N S DNS DNS轉發器的,而不是遞迴解析器。

​ 大致過程如下圖 3 3 3所示:
在這裡插入圖片描述

圖3 碎片整理快取中毒攻擊,目標是同一區域網中的DNS轉發器

​ 條件說明:攻擊者與 D N S DNS DNS轉發器位於同一區域網內,權威伺服器在攻擊者的控制之下(這樣,伺服器就可以故意地傳送超長的響應)。

​ 圖 3 3 3的流程說明:在探測當前解析器的 I P I D IPID IPID之後,攻擊者向受害者 D N S DNS DNS轉發器提供包含惡意 D N S DNS DNS記錄的第 2 2 2個欺騙片段,並啟動 D N S DNS DNS請求。當離開遞迴解析器時,來自攻擊者權威伺服器(過大,大於乙太網 M T U MTU MTU)的聚合最終響應被分段,並在 D N S DNS DNS轉發器處進行碎片整理。特別是,在碎片整理時,合法的第 1 1 1個片段與假冒的第 2 2 2個片段重新組裝,產生惡意響應。因此,惡意 D N S DNS DNS記錄隨後被寫入轉發器的快取(因為轉發器無法驗證上游響應),並被移交給下游裝置。

​ 此處的新攻擊可以克服先前碎片整理攻擊中的關鍵限制——強制碎片化很困難。

關鍵步驟 3 b 3b 3b

​ 先前強制分片的方法:
​ 法一:減少 P M T U PMTU PMTU——針對 D N S DNS DNS轉發器攻擊無效
​ 法二:使用 D N S S E C DNSSEC DNSSEC擴大 D N S DNS DNS響應——針對 D N S DNS DNS轉發器攻擊更加無效

​ 解決方法:**使用 C N A M E CNAME CNAME超大 D N S DNS DNS響應。**攻擊者控制的權威域名伺服器可以故意建立大於乙太網 M T U MTU MTU(即,大於 1500 1500 1500位元組)的超大 D N S DNS DNS響應,這樣它將總是在遞迴解析器處被分段。

​ 建立如此大的響應的方法是通過一系列 C N A M E CNAME CNAME記錄,然後是一個最終的 A A A記錄。當處理這個查詢時,遞迴解析器將查詢鏈中的別名(參見圖3,步驟2d),並將 C N A M E CNAME CNAME記錄聚合到最終響應中。
在這裡插入圖片描述

圖4 使用CNAME的超大DNS響應

​ 在欺騙的第 2 2 2個片段(傳送到 D N S DNS DNS轉發器)中,攻擊者通過將最後一個 C N A M E CNAME CNAME記錄指向受害者域( v i c t i m . c o m victim.com victim.com)來“篡改”該記錄,並通過將最後一個A記錄指向惡意地址( a . t . k . r a.t.k.r a.t.k.r)來“篡改”該記錄。在轉發器對響應進行碎片整理後,惡意 A A A記錄將被快取。

​ 關鍵點:遞迴解析器只看到來自權威域名伺服器的合法的超長響應,並且沒有違反 B a i l i w i c k Bailiwick Bailiwick規則(它定義了能夠被遞迴解析器接受的響應規則)。因此,它將嘗試將此響應作為一個整體轉發回 D N S DNS DNS轉發器,並帶有分段。然而,轉發器在其末端看到的實際上是一個被篡改的響應,這是由於被欺騙的第二個片段被提前注入。如果解析器看到這樣的響應( a t t a c k e r . c o m attacker.com attacker.com最終指向 v i c t i m . c o m victim.com victim.com),它將在 C N A M E CNAME CNAME的遞迴查詢期間拒絕該響應。這正是我們的攻擊目標是 D N S DNS DNS轉發器的原因,因為它們無法執行驗證。

該攻擊模型的一個擴充套件

​ 將我們的攻擊模型擴充套件到開放 D N S DNS DNS轉發器。具體模型見下圖:
在這裡插入圖片描述

圖5 本論文提出的新攻擊的一個擴充套件模型

​ 在這個擴充套件模型中,作者取消了攻擊者和 D N S DNS DNS轉發器必須位於同一區域網的要求。即,對網際網路上開放的 D N S DNS DNS轉發器的攻擊也是可能的。

​ 擴充套件模型和原模型有一個區別:攻擊者很難預測從解析器到 D N S DNS DNS轉發器的 I P I D IPID IPID,除非解析器使用全域性遞增的 I P I D IPID IPID計數器,這樣的話,顯而易見,這種開放的 D N S DNS DNS轉發器很容易受到攻擊。在基於雜湊的 I P I D IPID IPID計數器的情況下,遞迴解析器可能會為轉發器和攻擊者提供兩個獨立的 I P I D IPID IPID計數器(取決於是否存在雜湊衝突)。因此,攻擊者很難預測傳送給轉發器的解析器響應資料包的 I P I D IPID IPID值。

​ 然而,儘管攻擊者使用其自己的 I P IP IP地址傳送探測,先前的碎片整理攻擊已經提出了諸如 m e e t − i n − t h e − m i d d l e meet-in-the-middle meetinthemiddle的技術可以推斷當前的 I P I D IPID IPID計數器。最近的一項技術還表明,控制多個 I P IP IP地址的攻擊者可能會強制進行雜湊衝突,在這種情況下,攻擊者仍然會成功。我們相信這樣的攻擊是有希望的,並且會影響更多的使用者。

​ 由於一些道德問題,擴充套件模型進行實際測試還需要一些時間。


製作欺騙的片段

​ 對於分段的 D N S DNS DNS響應,只有第 1 1 1個片段包含 D N S DNS DNS U D P UDP UDP報頭,因此,要製作假冒的第 2 2 2片段,只需要偽造以下幾個 I P IP IP頭部欄位。

​ ①== I P IP IP標識( I P I D IPID IPID)==是 I P IP IP報頭中的一個 16 16 16位欄位,用於確定片段屬於哪個資料包。對於成功的碎片整理,欺騙的第 2 2 2個片段和合法的第 1 1 1個片段(來自上游解析器)的 I P I D s IPIDs IPIDs應該一致。因此,攻擊者應該能夠預測上游解析器的 I P I D IPID IPID分配(已有技術可以做到)。

I P I D IPID IPID分配演算法:

1 1 1、全域性 I P I D IPID IPID計數器:每傳送一個資料包就增加一個,這是高度可預測

2 2 2基於雜湊的 I P I D IPID IPID計數器:首先使用雜湊函式將輸出資料包對映到 I P I D IPID IPID計數器陣列中的一個,然後將選定的計數器隨機增加一個值,該值從 1 1 1到自上次使用相同計數器的資料包傳輸以來的系統節拍數(通常為毫秒)之間的均勻分佈中選擇。如果兩個探測器在時間上足夠接近,那麼響應的 I P I D IPID IPID增量是非常可預測的。雜湊函式根據傳送資料包的源和目標 I P IP IP地址確定使用哪個 I P I D IPID IPID計數器(因此,相同的源和目標 I P IP IP對將始終導致選擇相同的 I P I D IPID IPID計數器)。

3 3 3、隨機 I P I D IPID IPID賦值

​ 在本論文的攻擊中,攻擊者可以首先探測上游解析器的當前 I P I D IPID IPID值,並使用一個或多個預測的 I P I D IPID IPID來放置欺騙的第 2 2 2個片段。探測響應(見圖 3 3 3,步驟 0 b 0b 0b)和第一個片段(見圖 3 3 3,步驟 3 b 3b 3b)都被髮送到區域網的“ N A T − e d NAT-ed NATed”公共地址( N A T NAT NAT:網路地址轉換),因此它們保證在上游解析器上使用相同的 I P I D IPID IPID計數器。當攻擊者啟動整個資料包序列並控制這些資料包的定時時,它可以確保初始 I P I D IPID IPID和後一個(在解析器的響應中)之間的間隔足夠小,因此是可預測的(因為它們在時間上是很接近的,例如相隔幾毫秒)。

​ 作業系統:通過設定虛擬機器和探測它們的 I P I D IPID IPID分配,確認最新版本的 W i n d o w s   10 Windows~10 Windows 10(專業版, 1909 ( 18363.657 ) 1909 (18363.657) 1909(18363.657) U b u n t u ( 5.3.0 − 29 Ubuntu(5 . 3 . 0-29 Ubuntu(5.3.029-普通版)都使用基於雜湊的 I P I D IPID IPID計數器。由於網際網路上的大多數伺服器(包括遞迴解析器)都配備了 W i n d o w s Windows Windows L i n u x Linux Linux,我們相信這種技術覆蓋了大部分領域。

​ 利用 2020 2020 2020 1 1 1 8 8 8 C e n s y s Censys Censys的開放 D N S DNS DNS解析器掃描結果。在對三個查詢都響應的解析器中, 84.9 84.9 84.9%的解析器使用了增量 I P I D IPID IPID計數器,故可在攻擊中利用這些計數器。

​ 公共 D N S DNS DNS服務通常使用任播來實現負載平衡。例如,對谷歌 8.8.8.8 8.8.8.8 8.8.8.8的域名系統查詢可以從數百個“出口”解析器中退出(例如, 74.125.19. ∗ 74.125.19.* 74.125.19.)。從客戶的角度來看,由於域名系統響應來自不同的出口解析器,公共域名系統服務似乎使用隨機 I P I D IPID IPID分配。然而,在我們的碎片整理攻擊中,由於權威伺服器處於攻擊者的控制之下,攻擊者可以通過只響應一個選定的出口解析器地址來破壞負載平衡。如果選定的出口解析器使用增量 I P I D IPID IPID計數器,攻擊仍然是可能的。

​ 為了開始測量,我們為自己的域名( e c h o . d n s a d d r echo.dnsaddr echo.dnsaddr)構建了一個定製的權威伺服器。在接收到 D N S DNS DNS查詢( [ n o n c e ] . e c h o . d n s a d d r [nonce].echo.dnsaddr [nonce].echo.dnsaddr)時,權威伺服器記錄 D N S DNS DNS查詢的源 I P IP IP地址(即出口解析器地址),並通過 D N S DNS DNS響應中的 A A A記錄來回顯解析器地址。使用這種技術,可以分離從不同出口解析器傳送的 D N S DNS DNS響應,並分別觀察它們的 I P I D IPID IPID分配。

​ ②片段偏移量:被欺騙的第 2 2 2個片段中的片段偏移量應該指示它在原始資料包中的正確位置。由於超大域名系統響應的內容完全由攻擊者控制,因此可以計算第 2 2 2個片段的偏移量。

​ ③== I P IP IP源地址==:偽造的第 2 2 2個片段應該來自上游遞迴解析器的偽造地址。為了瞭解上游遞迴解析器的地址,攻擊者可以在我們的公共 D N S DNS DNS服務測量中利用 e c h o . d n s a d d r echo.dnsaddr echo.dnsaddr方法(即向 D N S DNS DNS轉發器傳送 e c h o . d n s a d d r echo.dnsaddr echo.dnsaddr的查詢,並檢查 D N S DNS DNS響應中編碼的解析器地址)。在住宅裝置網路(即區域網)中,通常允許 I P IP IP欺騙。

​ ④安裝 U D P UDP UDP校驗和 U D P UDP UDP校驗和(在合法的第 1 1 1個片段中)是根據 I P IP IP報頭、 U D P UDP UDP報頭和整個 U D P UDP UDP有效負載計算的。篡改偽造的第 2 2 2個片段中的記錄會產生校驗和不匹配,因此攻擊者還應該調整偽造的第 2 2 2個片段中的其他位元組以適應原始校驗和。事實上,這個任務很簡單,因為在我們的模型中, D N S DNS DNS響應的內容完全由攻擊者控制,因此 D N S DNS DNS響應的原始校驗和是已知的。因此,攻擊者可以通過簡單的計算調整欺騙的第 2 2 2個片段中的其他位元組,以適應 U D P UDP UDP校驗和。

D N S DNS DNS包頭部
在這裡插入圖片描述

圖6 DNS包頭部欄位
支援$IP$分段和重組的IP頭部的幾個欄位:$Identification(IPID)$、$Don`t~Fragment~bit(DF)$、$More~Fragment~bit(MF)$、$Fragment~Offset$。

為了正確重組,一個 I P IP IP資料包的片段具有相同的 I P I D IPID IPID值。

公開 D N S DNS DNS裝置的 I P I D IPID IPID值分配

​ 從圖中可以看出,當每提高 100 100 100秒的 D N S DNS DNS查詢速度, I P I D IPID IPID值隨著時間的推移變得越來越線性。
在這裡插入圖片描述

圖7 四種出口解析器的IPID分配

說明: a ) C l o u d f l a r e   D N S a)Cloudflare~DNS a)Cloudflare DNS b ) Q u a d 9   D N S b)Quad9~DNS b)Quad9 DNS c ) O p e n D N S c)OpenDNS c)OpenDNS d ) C o m o d o   S e c u r e   D N S d)Comodo~Secure~DNS d)Comodo Secure DNS,從一個有利的角度觀察。每行代表一個出口解析器,每個點標記一個 D N S DNS DNS響應包。

N o r t o n Norton Norton只對分段的 D N S DNS DNS響應使用基於雜湊的 I P I D IPID IPID計數器,並且在沒有分段時使用零 I P I D IPID IPID值。這種設計使得 I P I D IPID IPID預測變得更容易,因為網際網路上的大多數 D N S DNS DNS資料包不是碎片,所以 I P I D IPID IPID計數器幾乎不會因正常響應而增加。
在這裡插入圖片描述

圖8 DNS響應中的Norton ConnectSafe DNS的IP分配

​ 由上圖可知,谷歌使用隨機 I P I D IPID IPID分配。 I P I D IPID IPID值呈無規律顯示,故作為上游解析器,這兩種服務不能在攻擊中被利用。
在這裡插入圖片描述

圖9 谷歌公開DNS的IPID分配

成功實施攻擊所需滿足的條件

​ 為了攻擊成功, D N S DNS DNS轉發器需要滿足以下幾個條件:

①== E D N S ( 0 ) EDNS(0) EDNS(0)支援==: E D N S ( 0 ) EDNS(0) EDNS(0)允許通過 U D P UDP UDP傳輸大型 D N S DNS DNS資料包。

不截斷 D N S DNS DNS響應:從測試中發現,在支援條件①的轉發器中,即便沒有達到乙太網 M T U MTU MTU,該轉發器也會主動截斷大型 D N S DNS DNS響應。截斷後就不會被分段,碎片整理攻擊就會失敗。

沒有 D N S DNS DNS響應的驗證:聚合的超大 D N S DNS DNS響應由 C N A M E CNAME CNAME鏈組成,攻擊者篡改最後兩個記錄。為了檢測惡意記錄,一種可能的解決方案是, D N S DNS DNS轉發器在聚合響應中“重新查詢”域和別名(即, ∗ . a t t a c k e r . c o m *.attacker. com .attacker.com v i c t i m . c o m victim.com victim.com)(即,執行遞迴查詢)。或者,如果受害者域是 D N S S E C DNSSEC DNSSEC簽名的,它也可以執行完全的 D N S S E C DNSSEC DNSSEC驗證。然而,這違背了轉發器的目的,因為它大大增加了工作量。

④== D N S   c a c h i n g   b y   r e c o r d DNS~caching~by~record DNS caching by record==: D N S DNS DNS轉發器要麼通過作為一個整體的響應(整個響應形成一個快取條目)要麼通過記錄(每個資源記錄形成單個快取條目)來快取 a n s w e r answer answer。例如,當圖 4 ( b ) 4(b) 4(b)中經過碎片整理的 D N S DNS DNS響應被響應快取時,它只為 a . a t t a c k e r . c o m a.attacker.com a.attacker.com形成一個快取條目。因此,查詢 v i c t i m . c o m victim.com victim.com不會命中快取,因此不會返回欺騙的記錄。相反,當它被記錄快取時,查詢響應中的任何名稱(例如, y . a t t a c h e r . c o m y. attacher.com y.attacher.com v i c t i m . c o m victim.com victim.com)都會命中快取。因為受害者域僅位於響應的最後一條記錄中,所以攻擊要求 D N S DNS DNS轉發器按記錄進行快取。按記錄快取具有效能優勢,因為在單個響應中將快取更多的記錄。


易受攻擊的 D N S DNS DNS轉發器軟體

在進行攻擊之前,會先測量家庭路由器和 D N S DNS DNS軟體的 D N S DNS DNS轉發行為,以檢查它們是否符合我們的攻擊條件。然後,執行實際的碎片整理攻擊,以確認它們的漏洞。

①家庭路由器

​ 總共對來自不同供應商的 16 16 16種路由器型號進行了測試,對於每臺路由器,測試它是否符合“成功攻擊的條件”部分中的 4 4 4個條件。
在這裡插入圖片描述

圖10 家庭路由器的DNS轉發行為

​ 正如預期的那樣,沒有發現任何路由器模型通過“ r e − q u e r y re-query requery”名稱來驗證 D N S DNS DNS響應。

測試是在真實的家庭路由器(官方網站購買)中進行。

D N S DNS DNS軟體

​ 總共對 7 7 7種主流 D N S DNS DNS軟體進行了 D N S DNS DNS轉發行為測試。
在這裡插入圖片描述

圖11 DNS軟體的DNS轉發行為

攻擊的證明

​ 使用測試出的符合攻擊條件的裝置,在受控環境中發起了真正的攻擊。

實驗環境構建:根據攻擊模型構建測試環境(見圖 3 3 3)。攻擊者和 D N S DNS DNS轉發器位於同一個區域網中。我們將 D N S DNS DNS轉發器配置為使用遞迴解析器(對此我們使用 U n b o u n d Unbound Unbound)作為上游,該解析器不對公眾開放。此外,我們構建了攻擊者的權威伺服器(位於區域網之外),並根據圖 4 4 4建立了一個超大的 D N S DNS DNS響應。

複雜的網路實驗:在更復雜的環境中(如,嵌入式作業系統、客戶端增加到13個等條件)進行測試,以確認攻擊在現實世界中是可行的。實際測試得出可行。


將測試範圍擴大到全國

​ 從 20113 20113 20113個移動使用者,包含 31 31 31個省份, 300 300 300個城市, 127 127 127個匿名系統中進行測試。排除掉不滿足攻擊條件的移動使用者,對於剩下的 20.7 20.7 20.7%( 4172 4172 4172)位移動使用者,檢查他們重複 D N S DNS DNS查詢的平均查詢時間。

​ 做這個測試的目的就是保留從 D N S DNS DNS轉發器快取中獲取響應的移動客戶端,排除從遞迴解析器快取中獲取響應的移動客戶端。為此,藉此機會測量無線客戶端探測其上游遞迴解析器的快取通常需要多長時間。上游解析器地址需要從路由器配置頁面手動學習。

​ 在被測試的 D N S DNS DNS轉發器中,有 6.6 6.6 6.6%的 D N S DNS DNS轉發器是易受我們的攻擊的。

故,可以得出:當 D N S DNS DNS查詢時間變長時,響應不太可能來自 D N S DNS DNS轉發器快取。

​ 我們的攻擊條件更多的關注於 D N S DNS DNS轉發器的行為和配置,對哪個域名可以被攻擊沒有限制。反而,對哪個客戶端所處的網路可以進行攻擊有限制。我們估計,易受攻擊的 D N S DNS DNS轉發器的數量將會增加,從本次研究的結果表明,為滿足的主要攻擊條件是—— E D N S ( 0 ) EDNS(0) EDNS(0)支援( 40.8 40.8 40.8%)和正確處理過大的響應( 28.3 28.3 28.3%)。隨著 D N S DNS DNS的新功能得到推廣和越來越多的供應商的支援,更多的使用者將受到影響。


緩解措施

響應驗證 D N S DNS DNS轉發器驗證超大DNS響應。比如,再次查詢 C N A M E CNAME CNAME鏈中的所有名稱和別名,或者執行完全 D N S S E C DNSSEC DNSSEC驗證。然而,這種方法要求 D N S DNS DNS轉發器應該能夠執行遞迴查詢,這在某些用例中是不需要的。

按照響應進行 D N S DNS DNS快取:這種方法很實用,因為它只需要對轉發器本身進行更改。然而,由於轉發器角色的不確定性,不清楚它們的預期行為應該是什麼(因為 R F C RFC RFC沒有指定這一點),也不清楚通過響應進行快取是否會損害效能。

D N S DNS DNS記錄上進行 0 x 20 0x20 0x20編碼:由於第二個片段缺少 D N S DNS DNS U D P UDP UDP後設資料,其熵可以通過對 D N S DNS DNS記錄進行編碼來增加。在這裡我們需要遞迴解析器來對超大響應的 a n s w e r answer answer部分的所有記錄中的名稱和別名進行編碼。與此同時, D N S DNS DNS轉發器在接收 D N S DNS DNS響應時也應該檢查每個記錄的情況。這種緩解的缺點是它需要來自上游遞迴解析器的更改,因此不能很快部署。

隨機化IPID值:由於我們的攻擊需要預測 I P I D IPID IPID值,所以將 I P I D IPID IPID值隨機化可以緩解這個攻擊。在任何情況下,隨機 I P I D IPID IPID值都不是不可能猜測的,特別是考慮到攻擊者可以放置 64 64 64個猜測值。此外,如果攻擊者重複攻擊多次,成功的可能性也會增加。因此,它不是一種防彈的緩解措施。

相關文章