在TCP報文的報頭中,有幾個標志字段:
1、 SYN:同步連接序號,TCP SYN報文就是把這個標志設置為1,來請求建立連接;
2、 ACK:請求/應答狀態。0為請求,1為應答;
3、 FIN:結束連線。如果FIN為0是結束連線請求,FIN為1表示結束連線;
4、 RST:連線復位,首先斷開連接,然后重建;
5、 PSH:通知協議棧盡快把TCP數據提交給上層程序處理。
可能出現的掃描:(33/ppt11 - 43/ppt11 介紹了下面各種掃描的做法及優缺點)
§基本的TCP connect()掃描
§TCP SYN掃描(半開連接掃描, half open)
§TCP Fin掃描(秘密掃描,stealth)
§TCP ftp proxy掃描(bounce attack)
§用IP分片進行SYN/FIN掃描(躲開包過濾防火牆)
§UDP recvfrom掃描
§UDP ICMP端口不可達掃描
§Reverse-ident掃描
(針對TCP中SYN、RST、FIN標志字段可能出現的攻擊,記一下名稱應該就可以了)
端口掃描攻擊:
攻擊者計算機便可以通過發送合適的報文,判斷目標計算機哪些TCP或UDP端口是開放的,過程如下:
1、 發出端口號從0開始依次遞增的TCP SYN或UDP報文(端口號是一個16比特的數字,這樣最大為65535,數量很有限); 2、 如果收到了針對這個TCP報文的RST報文,或針對這個UDP報文的ICMP不可達報文,則說明這個端口沒有開放; 3、 相反,如果收到了針對這個TCP SYN報文的ACK報文,或者沒有接收到任何針對該UDP報文的ICMP報文,則說明該TCP端口是開放的,UDP端口可能開放(因為有的實現中可能不回應ICMP不可達報文,即使該UDP端口沒有開放)。 這樣繼續下去,便可以很容易的判斷出目標計算機開放了哪些TCP或UDP端口,然后針對端口的具體數字,進行下一步攻擊,這就是所謂的端口掃描攻擊。
TCP SYN拒絕服務攻擊;
1、 攻擊者向目標計算機發送一個TCP SYN報文; 2、 目標計算機收到這個報文后,建立TCP連接控制結構(TCB),並回應一個ACK,等待發起者的回應; 3、 而發起者則不向目標計算機回應ACK報文,這樣導致目標計算機一致處於等待狀態。
分片IP報文攻擊:
為了傳送一個大的IP報文,IP協議棧需要根據鏈路接口的MTU對該IP報文進行分片,通過填充適當的IP頭中的分片指示字段,接收計算機可以很容易的把這些IP分片報文組裝起來。
目標計算機在處理這些分片報文的時候,會把先到的分片報文緩存起來,然后一直等待后續的分片報文,這個過程會消耗掉一部分內存,以及一些IP協議棧的數據結構。如果攻擊者給目標計算機只發送一片分片報文,而不發送所有的分片報文,這樣攻擊者計算機便會一直等待(直到一個內部計時器到時),如果攻擊者發送了大量的分片報文,就會消耗掉目標計算機的資源,而導致不能相應正常的IP報文,這也是一種DOS攻擊。
SYN比特和FIN比特同時設置:
正常情況下,SYN標志(連接請求標志)和FIN標志(連接拆除標志)是不能同時出現在一個TCP報文中的。而且RFC也沒有規定IP協議棧如何處理這樣的畸形報文,因此,各個操作系統的協議棧在收到這樣的報文后的處理方式也不同,攻擊者就可以利用這個特征,通過發送SYN和FIN同時設置的報文,來判斷操作系統的類型,然后針對該操作系統,進行進一步的攻擊。