1. 異常包
TCP/UDP:端口值為0的包;校驗和錯誤的包
TCP標志位異常包:SYN只能單獨存在或只能和ACK共存,和其他標志共存就是異常包;沒有標志或標志全置的包;有ACK標志但 Acknowledgment Number為0的包;有SYN標志但Sequence Number為0的包;有URG標志但Urgent Pointer為0,或沒有URG標志但Urgent Pointer不為0的包;RST和除ACK標志之外的其他標志共存的包;
這種攻擊標志很明顯,防御也很容易,可以做到100%檢測並阻斷;
2. LAND攻擊
TCP層的攻擊了,不過在網絡層就可以防護;攻擊方發送源地址和目的地址相同的TCP SYN包,對老的某些操作系統就會發SYNACK包給自身,建立空連接,最終消耗盡自身資源,現在的操作系統已經不會那麼傻了,這種攻擊也可以做到100%檢測並阻斷;
3. Flood攻擊
syn flood:是TCP協議的最大弱點了,對syn flood攻擊的分析在另一篇文章中詳細說明了,理論上是無法真正防御的,只能進行一定程度的緩解;
UDP flood:就是發送大量UDP包阻塞目的機通信,由於UDP是非連接協議,因此只能通過統計的方法來判斷,很難通過狀態檢測來發現,只能通過流量限制和統計的方法緩解;對於有些協議,服務器部分的計算量會遠大於客戶端的計算量,如DNS,野蠻模式的IKE等,這些情況下flood攻擊更容易形成DOS。
4. 端口掃描
端口掃描往往是網絡入侵的前奏,通過端口掃描,可以了解目標 機器上打開哪些服務,有的服務是本來就是公開的,但可能有些端口是管理不善誤打開的或專門打開作為特殊控制使用但不想公開的,通過端口掃描可以找到這些端 口,而且根據目標機返回包的信息,甚至可以進一步確定目標機的操作系統類型,從而展開下一步的入侵。
4.1 TCP掃描
按照RFC,當試圖連接一個沒有打開的TCP端口時,服務器會返回RST包;連接打開的TCP端口時,服務器會返回SYNACK包
合法連接掃描:
connect掃描:如果是打開的端口,攻擊機調用connect函數完成三次握手後再主動斷開;關閉的端口會連接識別
SYN掃描:攻擊機只發送SYN包,如果打開的端口服務器會返回SYNACK,攻擊機可能會再發送RST斷開;關閉的端口返回RST;
異常包掃描:
FIN掃描:攻擊機發送FIN標志包,Windows系統不論端口是否打開都回復RST;但UNIX系統端口關閉時會回復RST,打開時會忽略該包;可以用來區別Windows和UNIX系統;
ACK掃描:攻擊機發送ACK標志包,目標系統雖然都會返回RST包,但兩種RST包有差異;
對於合法連接掃描,如果SYN包確實正確的話,是可以通過防火牆的,防火牆只能根據一定的統計信息來判斷,在服務器上可以通過netstat查看連接狀態來判斷是否有來自同一地址的TIME_WAIT或SYN_RECV狀態來判斷。
對於異常包掃描,如果沒有安裝防火牆,確實會得到相當好的掃描結果,在服務器上也看不到相應的連接狀態;但如果安裝了防火牆的話,由於這些包都不是合法連接的包,通過狀態檢測的方法很容易識別出來(注意:對於標准的Linux內核所帶防火牆netfilter的TCP狀態檢測的實現,ACK和 FIN掃描是可以通過的,需要修改才能防御)。
4.2 UDP掃描
當試圖連接一個沒有打開的UDP端口時,大部分類型的服務器可能會返回一個ICMP的端口不可達包,但也可能無任何回應,由系統具體實現決定;對於打開的端口,服務器可能會有包返回,如DNS,但也可能沒有任何響應。
UDP掃描是可以越過防火牆的狀態檢測的,由於UDP是非連接的,防火牆會把UDP掃描包作為連接的第一個包而允許通過,所以防火牆只能通過統計的方式來判斷是否有UDP掃描。
5. TCP緊急指針攻擊
Winnuke:對老的Windows系統,對TCP139端口發送帶URG標志的包,會造成系統的崩潰,特征明顯,防火牆可以100%防御,但也可能誤傷;
6. TCP選項攻擊
相對IP選項,TCP選項利用率要高很多,很多正常包中都要用到,TCP選項攻擊包括:
1) 非法類型選項:正常的選項類型值為0、1、2、3、8、11、23、13,其他類型的出現是可疑的(類型4,5,6,7雖然定義了但被類型8取代,正常情況下也是不用的);
2) 時間戳:用於搜集目的機的信息;
3) 選項長度不匹配:選項中的長度和TCP頭中說明的TCP頭長度計算出的選項長度不一致;
4) 選項長度為0:非0、1類型的選項長度為0,是非法的;
5) 選項缺失,一般SYN包中都要有MSS選項,沒有的話反而不正常。