埠掃描詳解
TCPconnect掃描: tcp全連線掃描。使用系統提供的connect()
函式來連線目標埠,如果目標埠正在監聽這個埠,那麼connect()
函式將會被成功返回,否則,說明改埠不可訪問。通過完整的tcp三次握手(也即一次tcp連線),來判斷目標埠的狀態
TCPSYN掃描: 半開啟掃描。首先客戶端向要掃描的埠傳送一個SYN
分組(tcp連線的第一次握手),然後等待伺服器返回的SYN/ACK
應答(tcp連線的第二次握手),如果收到SYN/ACK
應答,那麼表示這個埠處於監聽狀態;如果收到RST/ACK
(重置連線)則認為這個埠不在監聽狀態或者被防火牆拒絕了;如果什麼都收不到那麼表示被防火牆直接丟棄了。而客戶端無論收到什麼分組,都會向該埠傳送一個RST/ACK
TCPFIN掃描: 客戶端首先向目標埠傳送一個FIN
分組(結束連線),按照RFC793
的規定,目標埠如果是一個關閉的埠,那麼將會返回一個RST
分組;如果是一個開啟的埠將會忽略這個請求。
PS:只對給予UNIX的TCP/IP協議棧有效
TCPACK掃描:該掃描方式,無法判斷目標埠是否開放。首先客戶端直接傳送一個ACK
分組給服務端,而目標埠無論是否開放都會返回一個RST分組,所以無法判斷埠是否開放。但是可以通過這種方法判斷防火牆配置和規則的設計,測試安全策略的有效性。
TCPWindows掃描
TCPXmas樹掃描: 客戶端向目標埠同時傳送URG
(指示資料時緊急資料,應立即處理),PUSH
(強制將資料壓入緩衝區),FIN
(在結束TCP會話時使用)標誌位,由於這三個標誌位不能被同時設定,所以可以用來判斷埠開放,如果目標埠開放,則這個資料包將被丟棄,什麼都不返回;如果目標埠開放,則將會返回一個RST
分組
PS:同樣是利用了RFC793
規定,只對基於UNIX
的系統有效
TCPNULL掃描: 客戶端傳送一個不帶任何標誌位的tcp資料包給目標主機,如果目標埠關閉,那麼就會返回一個RST
PS:同樣只對遵守
RFC793
規定的基於UNIX
的主機有效,windows主機無論關閉與否都會返回RST
標誌位,可用來判斷目標作業系統
TCPRPC掃描: 主要用於識別定位遠端過程呼叫(rpc
)埠及相關程式和版本號
UDP掃描: 向目標埠傳送一個UDP資料包,如果目標埠返回一個ICMP埠不可達
的icmp
響應,那麼此埠是關閉的;如果沒有任何響應(被直接丟棄了)則認為是開放的
PS: 由於UDP的無連線不可靠性,掃描準確性受外界干擾。另外由於RFC1812
對生成ICMP錯誤報文的速度做出了限制,掃描速度會很慢