1. 程式人生 > >埠掃描詳解

埠掃描詳解

TCPconnect掃描: tcp全連線掃描。使用系統提供的connect()函式來連線目標埠,如果目標埠正在監聽這個埠,那麼connect()函式將會被成功返回,否則,說明改埠不可訪問。通過完整的tcp三次握手(也即一次tcp連線),來判斷目標埠的狀態

TCPSYN掃描: 半開啟掃描。首先客戶端向要掃描的埠傳送一個SYN分組(tcp連線的第一次握手),然後等待伺服器返回的SYN/ACK應答(tcp連線的第二次握手),如果收到SYN/ACK應答,那麼表示這個埠處於監聽狀態;如果收到RST/ACK(重置連線)則認為這個埠不在監聽狀態或者被防火牆拒絕了;如果什麼都收不到那麼表示被防火牆直接丟棄了。而客戶端無論收到什麼分組,都會向該埠傳送一個RST/ACK

分組,這樣就沒有建立一個完整的TCP連線,但是客戶端卻知道了這個埠是否開放,並且這種掃描並不會在目標系統上產生連線日誌

TCPFIN掃描: 客戶端首先向目標埠傳送一個FIN分組(結束連線),按照RFC793的規定,目標埠如果是一個關閉的埠,那麼將會返回一個RST分組;如果是一個開啟的埠將會忽略這個請求。
PS:只對給予UNIX的TCP/IP協議棧有效

TCPACK掃描:該掃描方式,無法判斷目標埠是否開放。首先客戶端直接傳送一個ACK分組給服務端,而目標埠無論是否開放都會返回一個RST分組,所以無法判斷埠是否開放。但是可以通過這種方法判斷防火牆配置和規則的設計,測試安全策略的有效性。

TCPWindows掃描

: 基於tcp視窗大小的報告方式不規則,可檢測AIX和FreeBSD系統上開啟的以及被過濾/不被過濾的埠

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錯誤報文的速度做出了限制,掃描速度會很慢