一文讀懂分布式拒絕服務攻擊(DDoS攻擊)全類型
分布式拒絕服務 (DDoS) 攻擊是指攻擊者使用大量設備試圖壓垮資源并拒絕合法使用該資源。最常見的是,DDoS 攻擊針對暴露在互聯網上的網站、應用程序或服務,但 DDoS 攻擊也可以針對特定的計算機、網關或內部網絡資源。
為了防止 DDoS 攻擊,必須首先了解容量限制、協議或應用程序 DDoS 攻擊這三大類 DDoS 攻擊之間的區別。但是,有些攻擊不屬于這三個類別,大多數攻擊者使用多種方法使他們的攻擊更難阻止。
主要的 DDoS 攻擊類型有哪些?
DDoS攻擊通常可以概括為三類攻擊:
- 容量(原始攻擊量)
- 協議(濫用 IT 協議)
- 應用程序(濫用應用程序功能)
這三個分類又包含細分數十種DDoS攻擊類型,例如UDP、ICMP、IP、TCP 和 HTTP洪水攻擊及其變體。將在下面深入介紹類別和攻擊類型。
容量耗盡型 DDoS 攻擊
容量限制型 DDoS 攻擊試圖壓垮資源容量。服務器將因請求而超負荷,網絡將因流量而超負荷,數據庫也可能因調用而超負荷。
在互聯網上,DDoS 攻擊旨在使受攻擊網站的帶寬飽和,攻擊強度通常以每秒比特數來衡量。容量耗盡型 DDoS 攻擊包括:多種不同的洪水攻擊(UDP、CharGen、ICMP)和濫用的應用程序。
UDP 洪水攻擊
用戶數據報協議 (UDP) 不會與服務器建立雙向會話。相反,UDP 只是發送數據包而不等待回復。
此特性為洪水攻擊提供了完美的設置,洪水攻擊會嘗試發送足夠的數據包來淹沒正在監聽其端口以查找真正的 UDP 流量的主機。攻擊者知道,在任何端口收到 UDP 數據包后,服務器必須檢查與該端口相對應的應用程序,并且協議將觸發服務器內的自動進程。
攻擊者通過嵌入在 UDP 數據包中的 IP 地址和端口專門攻擊互聯網或網絡內的服務器。攻擊旨在通過該處理請求壓垮服務器或占用網絡帶寬。
特定的 UDP 洪水攻擊可以使用:
- 域名服務 (DNS)
- 網絡時間協議 (NTP)
- 簡單服務發現協議 (SSDP)
- 媒體數據,例如音頻或視頻數據包
- IP 語音 (VoIP) 電話數據包
- 網絡基本輸入輸出系統
- 點對點 (P2P) 網絡,例如 BitTorrent 或 Kad 數據包
- 簡單網絡管理協議 (SNMP)
- 每日名言 (QOTD)
- 視頻游戲特定協議,例如 Quake 和 Steam
UDP Flood攻擊的變體包括:
- UDP 碎片洪水: UDP 洪水攻擊的這種變體會向受害服務器發送更大但碎片化的數據包。服務器將嘗試組裝不相關的、偽造的和碎片化的 UDP 數據包,并可能在此過程中不堪重負。
- 特定的 UDP 放大攻擊:攻擊者無需使用大量受感染的設備,而是可以使用受害服務器作為偽造的 IP 地址,向大量合法服務器發送合法的 UDP 請求。這些合法服務器的響應會突然壓垮目標設備。放大攻擊中經常使用的協議包括:NTP、SNMP 和 SSDP。
CharGEN洪水
CharGEN 協議于 1983 年開發,旨在用于調試、測量和測試。請求服務器通過端口 19 發送傳輸控制協議 (TCP) 或 UDP 請求來觸發該協議。然后,接收設備通過相同的協議向服務器響應:
- 通過 TCP 回復任意生成的字符
- 通過 UDP 回復隨機數
發送設備丟棄從主機服務器接收到的任何信息。
攻擊者會偽造目標服務器的 IP 地址,并向運行 CharGEN 的聯網設備(如打印機和復印機)發送大量請求。然后這些設備會響應請求,并用端口 19 流量轟炸服務器。如果防火墻沒有阻止端口 19,那么服務器可能會因嘗試分析和響應隨機流量而變得不堪重負。
ICMP(Ping)洪水攻擊
互聯網控制消息協議由網絡設備之間發送的特定錯誤消息和操作信息命令組成,例如時間戳、超時錯誤、回顯請求和回顯回復。回顯請求和回顯回復組合成“ping”命令。
攻擊者使用大量設備向服務器發送偽造的 Ping 數據包,而無需等待服務器回復。該協議要求服務器接收請求并做出響應,這會消耗傳入和傳出帶寬。
ICMP碎片洪水
ICMP 碎片洪水攻擊是 ICMP 洪水攻擊的一種變體,它發送碎片化的 ICMP 數據包而不是完整形成的命令。受害服務器會嘗試從偽造的 ICMP 數據包中重建有效命令,并會耗盡資源,試圖在故意不相關的碎片之間建立聯系。
濫用應用程序攻擊
在濫用應用程序攻擊中,黑客會破壞合法服務器(如 P2P 服務器)上現有的高流量應用程序。然后,來自一臺或多臺受感染機器的流量將被重定向到受害服務器,黑客將退出系統并允許其自主運行。
由于受感染的應用程序試圖使用正確格式的數據包建立有效連接,因此大多數防御工具都會允許該連接。受害服務器將因流量激增而無法承受。
協議 DDoS 攻擊
協議 DDoS 攻擊并不嚴格使用絕對數量,而是濫用協議來壓垮特定資源,通常是服務器,但有時是防火墻或負載平衡器。這些攻擊通常以每秒數據包數來衡量。
IP 空攻擊
所有符合 Internet 協議版本 4 的數據包都包含標頭,這些標頭應指定該數據包使用的傳輸協議是 TCP、ICMP 等。但是,攻擊者可以將標頭設置為空值,并且如果沒有丟棄這些數據包的具體指令,服務器將消耗資源來嘗試確定如何傳送這些數據包。
TCP 洪水攻擊
傳輸控制協議 (TCP) 規定了不同設備通過網絡進行通信的方式。各種 TCP 洪水攻擊都濫用基本的 TCP 協議,通過欺騙或畸形數據包來破壞資源。
要理解不同的攻擊,了解 TCP 的工作原理會很有幫助。傳輸控制協議需要三個通信序列來建立連接:
- SYN:請求設備(端點或服務器)將同步序列號以數據包形式發送到服務器或其他目標設備(端點)。
- SYN-ACK:服務器以同步序列號加確認號(ACK)組成的響應來響應SYN數據包。
- ACK:請求設備向服務器發送回響應確認號(原始 ACK 號 + 1)。
傳輸通過由四部分組成的終止序列結束:
- FIN:請求設備向服務器發送會話終止請求(FIN)。
- ACK:服務器向請求設備回應一個ACK響應,請求設備將等待接收FIN數據包。
- FIN:服務器以 FIN 數據包(可能幾乎同時)向請求設備做出響應。
- ACK:請求設備向服務器返回最終的 ACK 響應,并關閉會話。
當服務器收到意外的 TCP 數據包時,服務器將發送一個 RST(重置)數據包以重置通信。
濫用 TCP 協議的洪水攻擊試圖使用格式錯誤的 TCP 傳輸來壓垮系統資源。
- SYN 洪水攻擊:攻擊者從偽造的 IP 地址或設置為忽略響應的服務器發送大量 SYN 請求數據包。受害服務器以 SYN-ACK 數據包響應并保持通信帶寬開放,等待 ACK 響應。
- SYN-ACK 洪水攻擊:攻擊者向受害服務器發送大量偽造的 SYN-ACK 響應。目標服務器將占用資源,嘗試將響應與不存在的 SYN 請求進行匹配。
- ACK Flood:攻擊者向服務器發送大量偽造的 ACK 響應,這會占用資源,試圖用不存在的 SYN-ACK 數據包匹配 ACK 響應。TCP PUSH 功能也可用于此類攻擊。
- ACK 碎片洪水: ACK 洪水攻擊的一種變體,該方法使用最大大小為 1,500 字節的碎片數據包來濫用最大 IP 數據包長度 65,535 字節(包括報頭)。當服務器和路由器等其他資源嘗試重建碎片數據包時,重建會超出分配的資源,并可能導致內存溢出錯誤或使資源崩潰。
- RST/FIN 洪水攻擊:攻擊者使用偽造的 RST 或 FIN 數據包來淹沒服務器,并嘗試將數據包與不存在的開放 TCP 會話匹配,從而消耗資源。
- 多個 ACK 欺騙會話洪水:在此變體中,攻擊者發送多個 ACK 數據包,然后發送 RST 或 FIN 數據包,以更徹底地模仿實際 TCP 流量并欺騙防御。當然,這些數據包是欺騙性的,服務器將消耗其資源,試圖將虛假數據包與不存在的開放 TCP 會話進行匹配。
- 多個 SYN-ACK 欺騙會話洪水:此變體使用多個 SYN 和 ACK 數據包,后面還跟有 RST 或 FIN 數據包。與多個 ACK 欺騙會話洪水一樣,欺騙數據包會嘗試模仿合法 TCP 流量,并嘗試將虛假數據包與合法流量匹配,從而浪費服務器資源。
- 同義 IP 攻擊:為了執行此方法,攻擊者會偽造 SYN 數據包,使用受害服務器的 IP 地址作為數據包的源 IP 地址和目標 IP 地址。然后,無意義的數據包會消耗資源,因為服務器會嘗試響應自身(又稱局域網拒絕攻擊或 LAND 攻擊)或解決從自身接收數據包的矛盾,而這些矛盾與無法匹配的 TCP 會話的開放通信有關。
會話攻擊
攻擊者不必使用偽造的 IP 地址或偽造的數據包即可發起 DDoS 攻擊。會話攻擊使用多個機器人來達到或超過源 IP 范圍,并與目標服務器發起合法的 TCP 會話。來自真實 IP 地址的合法 TCP 會話可以避免 DDoS 檢測,但攻擊會延遲 ACK 數據包以消耗帶寬并耗盡資源以維持空會話。
慢蜂
與會話攻擊類似,Slowloris 攻擊試圖通過空通信消耗服務器資源。對于這種攻擊,攻擊者向 Web 服務器發送部分 HTTP 請求,以盡可能長時間保持盡可能多的會話打開。這些攻擊占用的帶寬非常少,很難檢測到。
死亡之Ping
Ping of Death 攻擊濫用了 IP 數據包的最大長度 65,535 字節(包括報頭),其方式與 ACK Fragmentation Flood 類似。由于通過以太網發送數據的最大幀大小通常設置為 1,500 字節,因此攻擊者將發送多個符合以太網限制的 IP 片段,但這些片段將組合成一個超過最大 IP 數據包長度的數據包。當接收方計算機重新組合 IP 片段時,它可能會溢出分配給數據包的內存緩沖區或導致計算機崩潰。
Smurf 攻擊
名為 Smurf 的惡意軟件程序利用 IP 和 ICMP 協議,向具有目標設備 IP 地址的路由器的廣播地址發送大量偽造的 ICMP ping 請求。網絡上的每個設備都會響應 ping 請求,并可能使接收設備不堪重負。自 1999 年以來,大多數路由器默認不會轉發發送到廣播地址的數據包,這種攻擊效果并不好。
碎片攻擊
Fraggle 攻擊是 Smurf 攻擊的一種變體,它通過欺騙 UDP 數據包而不是 ICMP 數據包,通過針對網絡路由器的廣播地址來使受害計算機不堪重負。網絡上的每個設備都會響應 UDP 請求,并可能使接收設備不堪重負。默認情況下,自 1999 年以來,大多數現代路由器都不會轉發發送到廣播地址的數據包,這降低了此攻擊的有效性。
低軌道離子炮(LOIC)
Low Orbit Ion Cannon 開源軟件旨在成為一種網絡壓力測試工具,它會向目標設備發送大量數據包(UPD、TCP、HTTP)。不幸的是,攻擊者會將此攻擊部署到僵尸網絡并利用它執行 DDoS 攻擊。
高軌道離子炮 (HOIC)
高軌道離子炮應用程序用一個公開可用的應用程序取代了低軌道離子炮,該應用程序可以同時向多達 256 個不同的域提交大量 GET 和 HTTP POST 請求。當被惡意攻擊者使用時,HOIC 可能比 LOIC 更強大、更具破壞性。
應用程序 DDoS 攻擊
應用程序 DDoS 攻擊針對應用程序中的漏洞,導致應用程序本身出現故障。與其他專注于破壞基礎設施的攻擊不同,這種攻擊專注于第 7 層軟件。但是,它也可能導致 CPU 過載或內存耗盡,從而影響服務器和其他應用程序。應用程序 DDoS 攻擊的強度以每秒請求數來衡量。
例如,計算量大的過程(如將商品添加到購物車或進行結賬)可能會被濫用,并發出許多并發請求,從而超出程序的限制或主機的資源。其他攻擊針對軟件中的特定漏洞或使用SQL 注入來破壞數據庫。
具有特定名稱的應用程序 DDoS 攻擊包括:
HTTP 洪水攻擊
HTTP 洪水攻擊濫用 HTTP 命令,試圖壓垮網站、托管網站的服務器以及用于訪問網站的帶寬。這些攻擊中使用的機器人可以連續發送多個請求,因此僵尸網絡中的大量機器會成倍增加目標網站的流量。
- GET 攻擊:攻擊者使用僵尸網絡發送大量針對大文件(例如大型 PDF 文件或視頻)的并發 GET 請求。
- POST 攻擊:大量機器人發送大量并發 POST 請求,其中包含大文件以存儲在目標服務器上。
- 低速慢速 POST 攻擊:攻擊者通常使用 RU-Dead-Yet? (RUDY) 工具執行攻擊,他們發送 HTTP Post 請求,表示他們將發送大量數據,但隨后會非常緩慢地發送少量數據。這種攻擊可避開尋找大容量攻擊的 DDoS 防御措施,并占用服務器上的資源。
- 單一會話或單一請求攻擊:許多反 DDoS 防御措施現在會阻止大量傳入數據包,因此攻擊者會利用 HTTP 1.1 中的漏洞將許多不同的請求包含在單個 HTTP 數據包中。
- 碎片化 HTTP 洪水攻擊:僵尸網絡不會發送大量有效請求,而是建立有效的 HTTP 連接,并將 HTTP 數據包拆分為小片段,并以服務器允許的最慢速度發送。這種低速慢速攻擊使用的數據包速率對許多 DDoS 防御措施來說似乎是安全的,但軟件或服務器會保持會話處于活動狀態,并消耗保留帶寬的資源。Slowloris 工具可實現這種類型的攻擊。
- 遞歸 GET 洪水:攻擊者試圖通過請求長列表頁面或圖片來壓垮服務器。這種攻擊看似是正常的瀏覽行為,但僵尸網絡只是在消耗資源,現在無法用于合法流量。
- 隨機遞歸 GET 洪水:遞歸 GET 洪水的一種變體,這種攻擊會隨機化請求的頁面以避免被發現。
重做
正則表達式拒絕服務嘗試請求算法上高度復雜的搜索模式,從而浪費資源甚至導致系統崩潰。
還有其他DDoS攻擊類型嗎?
盡管容量攻擊、協議攻擊和應用程序攻擊是最常見的 DDoS 攻擊形式,但有些攻擊并不屬于明確的分類。
高級持久性 DoS (APDoS)
APDoS 是黑客用來造成嚴重破壞的一種攻擊類型。它使用多種攻擊方式,例如 HTTP 泛洪和 SYN 泛洪,并定期針對每秒發出數百萬個請求的多個攻擊媒介。APDoS 攻擊可以持續數周,這主要是因為黑客能夠隨時切換策略并制造干擾以逃避安全防御。
多向量攻擊
攻擊者可以部署多個并發攻擊來造成 DDoS。例如,攻擊者可能會使用容量耗盡攻擊來分散防御者的注意力,同時從另一個僵尸網絡執行低帶寬 HTTP 洪水攻擊。
零日 DDoS 攻擊
攻擊者可能會發現應用程序、協議或硬件的未公開漏洞并執行 DDoS 攻擊。當利用新漏洞時,這種攻擊就是零日攻擊。
綜述:阻止和預防 DDoS 攻擊
了解 DDoS 攻擊的類型,以便能夠阻止它們。各種各樣的資源都可能受到更多種類的 DDoS 攻擊。安全和運營團隊需要共同努力,在資源的可訪問性和性能與安全性和風險之間取得平衡。
冗余對于防御和恢復 DDoS 攻擊至關重要,但眾所周知,專職攻擊者會同時攻擊多個 Web 服務器,因此負載平衡器和冗余是不夠的。創紀錄的 DDoS 攻擊成為頭條新聞,并說明了基于 Web 的 DDoS 攻擊的潛在數量巨大:
- 谷歌在最大規模的第 7 層 DDoS 攻擊中阻止了 4600 萬個請求。
- Akamai每秒阻止了 8.09 億個數據包的流量激增。
- Impervia在四小時內阻止了總計 253 億次請求的攻擊。
防御這些攻擊需要設備強化、冗余、反 DDoS 工具和反 DDoS 服務的重疊和支持組合——也許還需要DDoS 預防和響應服務的支持。