反射型 DDoS 攻擊的原理和防範措施

網易雲發表於2018-04-20

本文由網易雲 釋出


原文地址:反射型 DDoS 攻擊的原理和防範措施-網易雲部落格


隨著殭屍網路的興起,同時由於攻擊方法簡單、影響較大、難以追查等特點,分散式拒絕服務攻擊(DDoS,Distributed Denial of Service)得到快速壯大和日益氾濫。 成千上萬主機組成的殭屍網路為 DDoS 攻擊提供了所需的頻寬和主機,形成了規模巨大的攻擊和網路流量,對被攻擊網路造成了極大的危害。更加可怕的是 DDoS 並沒有徹底的解決辦法,只能依靠各種手段和各個層次的防護進行緩解。

1 背景

2015 年 12 月,國內一家雲廠商聲稱部署在其雲平臺上的一家知名遊戲公司遭遇了峰值流量達到每秒 453.8Gbps 的 DDoS 攻擊。 2016 年 9 月,為全世界範圍內提供網站託管服務的法國公司 OVH 的創始人兼 CTO 在 Twitter 上發出了一張截圖,圖中顯示了 OVH 的多個伺服器同時遭到了峰值接近 1Tbps 的 DDoS 攻擊。如下圖所示,可以發現這次 DDoS 攻擊中單一攻擊的吞吐量最高就可達每秒 9300 萬個包,即 799Gbps。
反射型 DDoS 攻擊的原理和防範措施
2016 年 10 月,黑客通過網際網路控制了美國大量的網路攝像頭和相關的 DVR 錄影機,然後操縱這些肉雞攻擊了美國多個知名網站,包括 Twitter、Paypal、Spotify 在內的網站被迫中斷服務,此次攻擊影響了大半個美國網際網路。
反射型 DDoS 攻擊的原理和防範措施
由此可見,DDoS 攻擊正變得越來越嚴重,動輒上百 Gbps 的攻擊都十分常見,並且,這樣的攻擊只會越來越大型。而且,隨著網路安全界和黑帽子掌握越來越多的網際網路資源,攻擊複雜性也一直在增加,相應的,業務和應用所面臨的網路 DDoS 挑戰也不斷增多。 因此,我們必須在 DDoS 威脅、影響關鍵業務和應用之前,對流量進行檢測並加以清洗,確保網路正常穩定的執行以及業務的正常開展。

2 反射攻擊

一般而言,我們會根據針對的協議型別和攻擊方式的不同,把 DDoS 分成 SYN Flood、ACK Flood、UDP Flood、NTP Flood、SSDP Flood、DNS Flood、HTTP Flood、ICMP Flood、CC 等各類攻擊型別。 每一種攻擊型別都有其特點,而反射型的 DDoS 攻擊是一種新的變種。攻擊者並不直接攻擊目標服務 IP,而是利用網際網路的某些特殊服務開放的伺服器,通過偽造被攻擊者的 IP 地址、向有開放服務的伺服器傳送構造的請求報文,該伺服器會將數倍於請求報文的回覆資料傳送到被攻擊 IP,從而對後者間接形成 DDoS 攻擊。 如下圖所示,這裡的攻擊者(Attacker,實際情況中更多的會利用傀儡機進行攻擊)不直接把攻擊包發給受害者,而是冒充受害者給放大器(Amplifiers)發包,然後通過放大器再反射給受害者。
反射型 DDoS 攻擊的原理和防範措施
在反射型攻擊中,攻擊者利用了網路協議的缺陷或者漏洞進行 IP 欺騙,主要是因為很多協議(例如 ICMP,UDP 等)對源 IP 不進行認證。同時,要達到更好的攻擊效果,黑客一般會選擇具有放大效果的協議服務進行攻擊。總結一下就是利用 IP 欺騙進行反射和放大,從而達到四兩撥千斤的效果。

3 Smurf 攻擊

Smurf 攻擊是經典的 DDoS 攻擊,Smurf 攻擊是以最初發動這種攻擊的程式名 Smurf 來命名。這種攻擊方法結合使用了 IP 欺騙和 ICMP 回覆方法使大量網路傳輸充斥目標系統,引起目標系統拒絕為正常系統進行服務。
反射型 DDoS 攻擊的原理和防範措施
攻擊的過程大致是這樣的:Attacker 向一個具有大量主機和因特網連線的網路廣播地址傳送一個欺騙性 Ping 包,而欺騙性 Ping 分組的源地址就是 Victim(9.9.9.9)希望攻擊的目標。路由器接收到這個傳送給 IP 廣播地址(1.1.1.255)的分組後,由於 ICMP 並不會進行握手而驗證源 IP 地址,路由器認為這就是廣播分組,進而會對本地網段中的所有主機(1.1.1.2,1.1.1.3,1.1.1.4,1.1.1.5,1.1.1.6) 進行廣播。網段中的所有主機都會向欺騙性分組的 IP 地址傳送 echo 響應資訊。如果這是一個很大的乙太網段,可能會有上百臺主機對收到的 echo 請求進行回覆,這些目標系統很快就會被大量的 echo 資訊吞沒,這樣就能輕而易舉地阻止該系統處理其它任何網路傳輸,從而達到拒絕為正常系統服務的結果。 這種攻擊不僅影響目標系統,還影響目標公司的因特網連線。那麼如何防止這種型別的攻擊? a. 阻塞 Smurf 攻擊的源頭。Smurf 攻擊依靠攻擊者的力量使用欺騙性源地址傳送 echo 請求,使用者可以使用路由器的訪問控制來保證內部網路中發出的所有傳輸資訊都具有合法的源地址,以防止這種攻擊。 b. 阻塞 Smurf 的反彈站點。使用者可以有兩種選擇以阻塞 Smurf 攻擊的反彈站點。第一種方法可以通過 ACL 阻止所有入站 echo 請求,這樣可以防止這些分組到達自己的網路。如果不能阻塞所有入站 echo 請求,使用者就需要讓自己的路由器把網路廣播地址對映成為 LAN 廣播地址。

4 DNS 反射攻擊

DNS 服務是整個網際網路的基礎服務,在我們連結網際網路的時候,需要通過 DNS 解析將域名轉化成對應的 IP 地址。理論上來說 ISP 的 DNS 伺服器只響應來自它自己客戶 IP 的 DNS Query 響應,但事實上網際網路上大量 DNS 服務的預設配置缺失,導致了會響應所有 IP 的 DNS Query 請求。 同時,DNS 大部分使用 UDP 協議,UDP 協議沒有握手過程讓其去驗證請求的源 IP。如下圖所示,攻擊者(實際上是攻擊者控制的傀儡機)傳送大量偽造了 Victim IP 的請求給 DNS 伺服器,DNS 伺服器成為放大器將 DNS 響應回覆給受害者。
反射型 DDoS 攻擊的原理和防範措施
下面再來看一下 DNS 如何將請求資料包進行放大,輸入(x.x.x.x為 DNS 伺服器 IP): dig ANY isc.org @x.x.x.x 返回結果,這裡為了節約篇幅,我們省略了大部分的響應內容。我們可以看到,響應的內容遠遠大於請求的資料包內容,這裡就產生了放大的效果。 ; <<>> DiG 9.7.3 <<>> ANY isc.org @x.x.x.x ;; global options: +cmd ;; Got answer: ………………………………….此處省略具體請求內容………………………………………… isc.org. 484 IN RRSIG A 5 2 7200 20121125230752 20121026230752 4442 isc.org. ViS+qg95DibkkZ5kbL8vCBpRUqI2/M9UwthPVCXl8ciglLftiMC9WUzq Ul3FBbri5CKD/YNXqyvjxyvmZfkQLDUmffjDB+ZGqBxSpG8j1fDwK6n1 hWbKf7QSe4LuJZyEgXFEkP16CmVyZCTITUh2TNDmRgsoxrvrOqOePWhp 8+E= 不幸的是,目前網際網路上存在大量的 DNS 伺服器可以被利用,黑客使用網路掃描器工具可以很容易的發現這些 DNS 伺服器並加以利用。這需要: a. 如果您是 DNS 的管理員,需要加固 DNS 伺服器,可以按照下面的配置關閉遞迴功能和限制可查詢的 IP 地址。 options { recursion no;}; options { allow-query {192.168.1.0/24;};}; b. 如果是受害者,首先可以通過網路層的 ACL 規則來防禦, 或者使用抗 DDoS 系統進行流量清洗,目前大部分的雲服務商都有這類功能。

5 NTP 反射攻擊

NTP 是網路時間協議(Network Time Protocol)的簡稱,是用來使計算機時間同步化的網路協議。NTP 包含一個 monlist 功能,也被稱為 MON_GETLIST,主要用於監控 NTP 伺服器,NTP 伺服器響應 monlist 後就會返回與 NTP 伺服器進行過時間同步的最後 600 個客戶端的 IP,響應包按照每 6 個 IP 進行分割,最多有 100 個響應包。我們可以通過 ntpdc 命令向一個 NTP 伺服器傳送 monlist 以及結合抓包來看下實際的效果。 ntpdc -n -c monlist x.x.x.x | wc -l 602 在上面的命令列中我們可以看到一次含有 monlist 的請求收到了 602 行資料,除去頭兩行是無效資料外,正好是 600 個客戶端 IP 列表,並且從上圖中的 wireshark 中我們也可看到顯示有 101 個 NTP 協議的包,除去一個請求包,正好是 100 個響應包。 a. 如果作為 NTP 管理員,需要加固 NTP 服務,NTP 伺服器升級到 4.2.7p26 或者更高的版本。關閉現在 NTP 服務的 monlist 功能,在ntp.conf 配置檔案中增加選項 disable monitor b. 如果是受害者,如何防禦 NTP 反射和放大攻擊?首先可以通過網路層的 ACL 規則來防禦, 或者使用抗 DDoS 系統進行流量清洗,目前大部分的雲服務商都有這類功能。

6 SSDP 反射攻擊

網際網路上家用路由器、網路攝像頭、印表機、智慧家電等智慧裝置普遍採用 UPnP(即插即用)協議作為網路通訊協議, 而 UPnP 裝置的發現是通過源埠為 1900 的 SSDP(簡單服務發現協議)進行相互感知。 利用 SSDP 協議進行反射攻擊的原理與利用 DNS 服務、NTP 服務類似,都是偽造成被攻擊者的 IP 地址向網際網路上大量的智慧裝置發起 SSDP 請求,接收到請求的智慧裝置根據源 IP 地址將響應資料包返回給受害者。隨著物聯網和智慧裝置的快速發展和普及,利用智慧裝置展開 DDoS 攻擊會越來越普遍。SSDP 的請求報文示例如下: M-SEARCH * HTTP/1.1 HOST: 1.2.2.3:1900 MAN: “ssdp:discover” MX: 1 ST: urn:dial-multiscreen-org:service:dial:1 返回的報文如下: HTTP/1.1 200 OK CACHE-CONTROL: max-age = 60 EXT: LOCATION: http://1.2.3.4:5200/Printer.xml SERVER: Network Printer Server UPnP/1.0 OS 1.29.00.44 06-17-2009 ST: upnp:rootdevice USN: uuid:Samsung-Printer-1_0-mrgutenberg::upnp:rootdevice 那麼該如何防護 SSDP 攻擊呢? a. 對於不需要即插即用服務的裝置,關閉即插即用服務。 b. 在被 SSDP DDoS 攻擊的時候,通過網路裝置的 ACL 規則過濾 SSDP 指紋過濾。或者引入 DDoS 防護系統。

7 小結

這裡我們引入一個學術名詞,頻寬放大因子(BAF, Bandwidth Amplification Factor),它表示的是請求報文與響應報文的比例。對於各種協議的反射放大攻擊,由於其不同版本的實現機制各不相同,加上對請求資料支援的多樣性,同一服務的 BAF 值也會存有一定的差異,我們通過實驗對比了各種協議的實驗 BAF,可以讓大家直觀感受各種反射攻擊的威力,瞭解攻擊放大的倍數。
反射型 DDoS 攻擊的原理和防範措施
反射 DDoS 攻擊由於難以追蹤、且不需要大量的肉雞等特點,越來越流行,勢必會對業務造成很大的威脅。除了需要各方通力合作對網際網路上的裝置和服務進行安全管理和安全配置消除反射站點之外,還需要在服務端做好防禦準備,比如增加 ACL 過濾規則和 DDoS 清洗服務。目前大量的雲廠商都提供 DDoS 流量的清洗服務,可以直接使用。


參考文件

網易雲閱讀推薦:


瞭解 網易雲

網易雲官網:www.163yun.com/

新使用者大禮包:www.163yun.com/gift

網易雲社群:sq.163yun.com/



相關文章