引言:
本文將會介紹端口掃描的各種方式的原理。
端口掃描概述:
端口掃描的目的是找出目標系統上提供的服務列表。端口掃描程序挨個嘗試與 TCP/UDP端口連接,然后根據端口與服務的對應關系,結合服務器端的反應推斷目標系統上是否運行了某項服務,攻擊者通過這些服務可能獲得關於目標系統的進一步的知識或通往目標系統的途徑。根據端口掃描利用的技術,掃描可以分成多種類型,下面分別敘述。
完全連接掃描
完全連接掃描利用 TCP/IP 協議的三次握手連接機制,使源主機和目的主機的某個端口建立一次完整的連接。如果建立成功,則表明該端口開放。否則,表明該端口關閉。
半連接掃描
半連接掃描是指在源主機和目的主機的三次握手連接過程中,只完成前兩次握手,不建立一次完整的連接。
SYN 掃描
首先向目標主機發送連接請求,當目標主機返回響應后,立即切斷連接過程,並查看響應情況。如果目標主機返回ACK信息,表示目標主機的該端口開放。如果目標主機返回RESET 信息,表示該端口沒有開放。
ID 頭信息掃描
這種掃描方法需要用一台第三方機器配合掃描,並且這台機器的網絡通信量要非常少,即dumb主機。 首先由源主機A向dumb主機B發出連續的PING數據包,並且查看主機B返回的數據包的ID頭信息。一般而言,每個順序數據包的ID頭的值會增加1。然后由源主機A假冒主機B 的地址向目的主機C的任意端口(1~65535)發送SYN數據包。這時,主機C向主機B發送的數據包有兩種可能的結果∶ ·SYNACK 表示該端口處於監聽狀態。● RSTACK 表示該端口處於非監聽狀態。 那么,由后續PING 數據包的響應信息的ID頭信息可以看出,如果主機C的某個端口是開放的,則主機B返回A的數據包中,ID頭的值不是遞增1,而是大於1。如果主機C的某個端口是非開放的,則主機B返回A的數據包中,ID頭的值遞增1,非常規律。
隱蔽掃描
隱蔽掃描是指能夠成功地繞過IDS、防火牆和監視系統等安全機制,取得目標主機端口信息的一種掃描方式。
SYN|ACK 掃描
由源主機向目標主機的某個端口直接發送SYN|ACK 數據包,而不是先發送SYN數據包。由於這種方法不發送SYN 數據包,目標主機會認為這是一次錯誤的連接,從而會報錯。如果目標主機的該端口沒有開放,則會返回RST信息。如果目標主機的該端口處於開放 狀態(LISTENING),則不會返回任何信息,而是直接將這個數據包拋棄掉。
FIN 掃描
源主機A向目標主機B發送FIN 數據包,然后查看反饋信息。如果端口返回RESET信息,則說明該端口關閉。如果端口沒有返回任何信息,則說明該端口開放。
ACK 掃描
首先由主機A向目標主機B發送FIN數據包,然后查看反饋數據包的TTL值和WIN值。開放端口所返回的數據包的TTL值一般小於64,而關閉端口的返回值一般大於64。開放端口所返回的數據包的WIN值一般大於0,而關閉端口的返回值一般等於0。
NULL掃描
將源主機發送的數據包中的ACK、FIN、RST、SYN、URG、PSH等標志位全部置空。如果目標主機沒有返回任何信息,則表明該端口是開放的。如果返回RST信息,則表明該端口是關閉的。
XMAS 掃描
XMAS掃描的原理和NULL掃描相同,只是將要發送的數據包中的ACK、FIN、RST、SYN、URG、PSH等頭標志位全部置成1.如果目標主機沒有返回任何信息,則表明該端口是開放的。如果返回 RST信息,則表明該端口是關閉的。 網絡端口掃描是攻擊者必備的技術,通過掃描可以掌握攻擊目標的開放服務,根據掃描所獲得的信息,為下一步的攻擊做准備。