帶你破解 DDOS 攻擊的原理
DDOS 簡介
DDOS 又稱爲分佈式拒絕服務,全稱是 Distributed Denial of Service。DDOS 本是利用合理的請求造成資源過載,導致服務不可用,從而造成服務器拒絕正常流量服務。就如酒店裏的房間是有固定的數量的,比如一個酒店有 50 個房間,當 50 個房間都住滿人之後,再有新的用戶想住進來,就必須要等之前入住的用戶先出去。如果入住的用戶一直不出去,那麼酒店就無法迎接新的用戶,導致酒店負荷過載,這種情況就是 “拒絕服務”。如果想繼續提供資源,那麼酒店應該提升自己的資源量,服務器也是同樣的道理。
拒絕服務攻擊的基本概念
** 拒絕服務:** 拒絕服務是指應用系統無法正常對外提供服務的狀態,如網絡阻塞、系統宕機、響應緩慢等都屬於拒絕服務的表現。
拒絕服務攻擊(DOS):拒絕服務攻擊(Denial of Service Attack)是一種通過各種技術手段導致目標系統進入拒絕服務狀態的攻擊,常見手段包括利用漏洞、消耗應用系統性能和消耗應用系統帶寬。
分佈式拒絕服務攻擊(DDOS):分佈式拒絕服務攻擊(Distributed Denial of Service Attack)是拒絕服務攻擊的高級手段,利用分佈全球的殭屍網絡發動攻擊,能夠產生大規模的拒絕服務攻擊。
DDOS 攻擊分類
(1)漏洞型(基於特定漏洞進行攻擊):只對具備特定漏洞的目標有效, 通常發送特定數據包或少量的數據包即可達到攻擊效果。
(2)業務型(消耗業務系統性能額爲主):與業務類型高度相關,需要根據業務系統的應用類型採取對應的攻擊手段才能達到效果,通常業務型攻擊實現效果需要的流量遠低於流量型。
(3)流量型(消耗帶寬資源爲主):主要以消耗目標業務系統的帶寬資源爲攻擊手段,通常會導致網絡阻塞,從而影響正常業務。
拒絕服務攻擊處理流程
(1)現象分析:根據發現的現象、網絡設備和服務的情況初步判斷是否存在拒絕服務攻擊。
(2)抓包分析:通過抓包分析的方式進一步瞭解攻擊的方式和特徵。
(3)啓動對抗措施:最後啓動對抗措施進行攻擊對抗,可以進行資源提升、安全加固、安全防護等措施。
DDOS 流量包分析
SYN Flood 攻擊
在正常的情況下,TCP 三次握手過程如下
客戶端向服務器端發送一個 SYN 請求包,包含客戶端使用的端口號和初始序列號 x。
服務器端收到客戶端發送過來的 SYN 請求包後,知道客戶端想要建立連接,於是向客戶端發送一個 SYN 請求包和 ACK 迴應包,包含確認號 x+1 和服務器端的初始序列號 y。
客戶端收到服務器端返回的 SYN 請求包和 ACK 迴應包後,向服務器端返回一個確認號 y+1 和序號 x+1 的 ACK 請求包,三次握手完成,TCP 連接建立成功。
SYN Flood 攻擊原理:
首先是客戶端發送一個 SYN 請求包給服務器端,服務器端接受後會發送一個 SYN+ACK 包迴應客戶端,最後客戶端會返回一個 ACK 包給服務器端來實現一次完整的 TCP 連接。Syn flood 攻擊就是讓客戶端不返回最後的 ACK 包,這就形成了半開連接,TCP 半開連接是指發送或者接受了 TCP 連接請求, 等待對方應答的狀態, 半開連接狀態需要佔用系統資源以等待對方應答,半開連接數達到上限,無法建立新的連接,從而造成拒絕服務攻擊。
受害靶機的流量包分析
利用 wireshark 軟件抓取數據包的數據,通過篩選器篩選出發送包頻率多的 ip 地址。
篩選 218.xxx.xxx.87,分析協議佔比,發現 tcp 和 http 佔比比較大
篩選 tcp 中的 syn 數據包,發現 syn 數據包占比爲 82.9,可以判斷應該爲 SYN FLOOD 拒絕服務攻擊
UDP Flood 攻擊
UDP Flood 攻擊原理:
由於 UDP 屬於無連接協議,消耗的系統資源較少,相同條件下容易產生更高的流量,是流量型攻擊的主要手段。當受害系統接收到一個 UDP 數據包的時候,它會確定目的端口正在等待中的應用程序。當它發現該端口中並不存在正在等待的應用程序,它就會產生一個目的地址無法連接的 ICMP 數據包發送給該僞造的源地址。如果向受害者計算機端口發送了足夠多的 UDP 數據包的時候,系統就會造成拒絕服務攻擊,因此,UDP FLOOD 成爲了流量型拒絕服務攻擊的主要手段。
受害靶機的流量包分析
利用 wireshark 軟件抓取數據包的數據,通過篩選器篩選出發送包頻率多的 ip 地址。
篩選 117.xxx.xxx.0 網段,分析協議佔比,可以看到受害靶機接受的 UDP 包比較多。
可以看到 UDP 包的大小都是固定的 172bytes。
可以看出都是發送 udp 包,udp 包大小都是相同的,可以判斷是 udp flood 攻擊。
慢速拒絕服務攻擊
apt install slowhttptest -y
安裝 slowhttptest
慢速拒絕服務攻擊原理:
完整的 http 請求包是以 \r\n\r\n 結尾,慢速拒絕服務攻擊時僅發送 \r\n,少發送一個 \r\n,服務器認爲請求還未發完,服務器就會一直等待直至超時。
slowhttptest -c 5000 -H -g -o my_header_stats -i 10 -r 5000 -t GET -u “http://10.10.10.134” -x 200 -p 3
(測試時建立 5000 連接數 - c;選擇 slowloris 模式 - H;生成 cvs 和 HTML 文件的統計數據 - G;生成的文件名 my_header_stats -o;指定發送數據間的間隔 10 秒 -i 每秒連接數 5000-t;指定 url-u;指定發送的最大數據長度 200 -x;指定等待時間來確認 DOS 攻擊已經成功 - p)
觀察靶機的 cpu 和網絡流量明顯增加很多
受害靶機的流量包分析
攻擊機 ip:10.10.10.129,靶機 ip:10.10.10.134
[PSH,ACK] 是攻擊機發送有數據的 ACK 包給靶機,[ACK] 包是靶機回覆攻擊機的數據包。
可以看到沒有發送 2 次連續的 \ r\n,以至於靶機要一直等待。
http 協議比例爲 36.6,tcp 協議比例爲 87.4
篩選 ack 數據包,佔比率 98.2,不符合常態,綜上可以判斷爲慢速拒絕服務攻擊
ICMP Flood 攻擊
ICMP Flood 攻擊原理:
當 ICMP ping 產生的大量回應請求超出了系統的最大限度,以至於系統耗費所有資源來進行響應直至再也無法處理有效的網絡信息流,但是由於 ICMP 協議報文被丟棄不影響大多數系統運行,所以容易被防護。
利用 hping3 造成 ICMP Flood 攻擊
hping3 -q -n -a 1.1.1.1 –icmp -d 200 –flood 10.10.10.134
觀察靶機的 cpu 和網絡流量明顯增加很多
受害靶機的流量包分析
僞造的源 ip:1.1.1.1 發送大量 icmp 包給目標 ip:10.10.10.134
篩選出同一 IP 發送大量 ICMP 包,且佔比率 86.0,判斷爲 ICMP 拒絕服務攻擊。
後記
拒絕服務攻擊造成的危害是比較大的,本質是對有限資源的無限制的佔用所造成的,所以在這方面需要限制每個不可信任的資源使用中的分配額度,或者提高系統的有限資源等方式來防範拒絕服務攻擊。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/lYW_K2y3oyaQ44pIBZcLlg