1、ping of death (死亡之ping)
ping命令主要用ICMP傳輸,通常,大部分系統所規定的ICMP數據包大小為64KB,TCP/IP協議棧根據該大小分配內存空間。這就構成了本方式拒絕服務的攻擊原理:
攻擊者通過構造超過64KB的ICMP包,使得沒有受保護的網絡系統出現內存分配錯誤,TCP/IP棧協議棧崩潰,導致系統系統拒絕服務。
2、Teardrop(淚滴)
數據包傳輸過程中,因為不同網絡環境的原因,數據包可能需要被分段傳輸。數據包分段有兩個重要的參數:偏移量和長度
如果我們構造這樣兩個數據包:第一個:偏移量為0,長度為N;第二個:偏移量小於N,長度m(任意);
當這兩個包發送到被攻擊系統上時,系統認為在長度0到N之間還有很多有無數個長度為m數據包未送達,接收系統為了合並這些包,會自動為這些未收到的數據包建立內存空間(當然這些數據包實際是不存在,只是系統這樣認為),當這幾個參數足夠大時,接收系統的資源會因為分配而嚴重匱乏,有時可能導致重啟,導致系統拒絕服務。
3、UDP flood(UDP洪水)
該攻擊方式通常用戶類UNIX系統
UDP是一種面向無連接傳輸的協議。攻擊者C可以偽造一台開着echo服務的主機A向另外一台B的chargen服務發起連接(將該偽造的數據包回復地址設置為A),當數據包傳送到B時,B會將回執發送給A。攻擊者可以在這過程中反復偽造,在A\B之間發送大量垃圾數據,占用大量帶寬,導致網絡系統無法正常工作,拒絕服務
4、SYN flood(SYN 洪水)
這種攻擊其實是用了TCP協議連接時三次握手的缺陷造成的。
TCP連接三次握手的過程是:A向B發送帶有SYN標志位的連接請求。B收到該請求后需要向A反饋帶有ACK,SYN標志位的回復。A收到B的回復后發送帶有ACK標志位的連接確認后,A、B之間正式建立連接
攻擊者A可以在最后一步時,不向B返回ACK標志位的確認信息,這個時候B就要等待A,知道超時。當攻擊者發出持續大量SYN標志位連接請求到同一台主機,並且均不作回應。任何主機系統的TCP連接數都是有限制的,這就導致了大量無效的連接處於等待狀態,占用了連接數,而其他正常的連接無法建立,導致拒絕服務。
5、IP欺騙攻擊
這個原理相對簡單,我們知道TCP協議中有一種帶有RST(復位)標志的數據包,用於在連接錯誤時進行反饋
如果A與B已經建立連接,我們至於要偽造A的IP,發送帶有RST標志位的數據包到B,B就會認為與A的連接出現錯誤,從而將A從會話緩沖區中清除已經與A建立好的連接,導致A與B連接失效,造成拒絕服務。
上述任何一種攻擊都可以被運用於DDOS攻擊,即分布式拒絕服務攻擊,從多個平台發起。
這里就產生了集中DDOS特有的拒絕服務攻擊類型
1、TCP全連接攻擊
現在部分防火牆可以識別SYN flood攻擊,並給予有效阻隔,但是不會阻斷合法的TCP連接(需要保證服務正常)。攻擊者通過控制大量肉雞與被攻擊者建立大量正常的連接,導致系統資源匱乏,產生拒絕服務。
2、基於腳本語言的DDOS攻擊
現在在web上普遍采用后台腳本語言+數據的模式構建系統,用戶發起get,post等查詢對於用戶來說,消耗的資源微乎其微。但是后台系統卻要在數據庫中做大量查詢操作,這些查詢操作往往比較消耗系統資源。如果從多個平台發起正常的查詢操作,會導致后台系統數據庫占用大量系統資源來進行查找,造成拒絕服務攻擊。