# DDoS 攻擊分類
###### tags: `Note` `MCL` `DDoS`
## Introduction
DoS,由兩個以上的的電腦發起 DoS 攻擊就稱為 DDoS 攻擊
美國國土安全部旗下的美國電腦緊急應變小組定義的阻斷服務攻擊症狀包括:
1. 網路異常緩慢(打開檔案或存取網站)
2. 特定網站無法存取
3. 無法存取任何網站
4. 垃圾郵件的數量急劇增加
5. 無線或有線網路連接異常斷開
6. 長時間嘗試存取網站或任何網際網路服務時被拒絕
7. 伺服器容易斷線、卡頓、存取延遲
<small></small>
> DoS,Denial-of-service,阻斷式服務
> DDoS,Distributed Denial-of-service,分散式阻斷式服務
## 以 Layer 分類
### L3
* ICMP flood
* Smurf
* Teardrop Attack
### L4
* SYN flood
* UDP flood
* LAND attack
* DNS reflection attack
* SSL Flood
### L7
* Application level floods
* Slow Attack
## 以 Type 分類
### 消耗頻寬型
* UDP flood
* ICMP flood
* Smurf
* DNS reflection attack
* Application level floods
### 消耗資源型
* SYN flood
* SSL Flood
* LAND attack
* Slow Attack
* Application level floods
## 攻擊說明
### SYN flood
* Attack
* 送出大量 syn 封包,讓對方一直等待 ack 封包,但攻擊者並不會回應,導致記憶體用盡
* Defence
* 增加 queue 大小、減短 time out 時間或設 rate limit
### UDP flood
* Attack
* 送出大量 UDP 封包,以此佔據頻寬
* Defence
* WAF 攔截 或 IPS 過濾
> WAF,Web Application Firewall,應用程式防火牆
> IPS,Intrusion Prevention System,入侵防禦系統
### SSL Flood
* Attack
* 送出錯誤的 SSL 請求,或是大量建立 SSL 連線,以此消耗伺服器資源
* Defence
* 設 rate limit
### ICMP flood
* Attack
* 送出大量 icmp 封包,以此佔據頻寬
* Defence
* WAF、現在 router 通常會擋這種行為
*
> ICMP,Internet Control Message Protocol
### Ping of Death
* Attack
* 用 Ping 產生超過 65536 bytes 的封包,65536 ytes 封包格式超出 ipv4 規定最大封包大小,導致電腦無法處理,若是送出 ping 封包時切成多段,也可能在重組是發生 buffer overflow
* Defence
* 已經修正錯誤了
### LAND attack
* Attack
* SYN 封包中的 source ip 和 destination ip 是同個,導致無窮迴圈的傳輸,最終耗盡資源
* Defence
* WAF、os 本身、router 阻擋不合法封包
> LAND,Local Area Network Denial
#### Teardrop Attack
* Attack
* 構造特殊封包,導致封包重組時發生問題,造成封包重疊,最終 os 崩潰
* Defence
* 舊的 os 才有
#### Smurf
* Attack
* 送出 source ip 為 Victim 的 ICMP 封包,並讓 router 廣播出去,導致 Victim 收到大量 ICMP echo 封包
* Defence
* 現在已經被 router 擋下
#### DNS reflection
* Attack
* 送出 source ip 為 Victim 的 DNS 查詢封包,DNS 會回給 Victim 查詢結果,通常會使用 DNSSEC,讓回傳的封包會遠大於查詢的封包,造成放大的效果
* Defence
* DNS server 應該要擋
> DNS 放大
#### Application level floods
* Attac
* 送出大量 L7 封包,以此消耗頻寬與服務器資源。
* Defence
* 難防,因為很難判斷惡意封包,只能使用 WAF、reCAPTCHA、ML 等折衷方案去檢測來源是否為機器人
#### Slow Attack
* Attack
* 拖慢 http request header 的傳送速度,讓 server 等待你傳完 header
* 拖慢 http content 的傳送速度或回應時間,讓連線一直 hold 著,以此佔據資源
* Defence
* 限制 header 傳輸時間、限制 `Content-Length` 大小