埠掃描工具
此條目需要補充更多來源。 (2015年1月25日) |
埠掃描工具(Port Scanner)指用於探測伺服器或主機開放埠情況的工具。常被電腦管理員用於確認安全策略,同時被攻擊者用於辨識目標主機上的可運作的網絡服務。
埠掃描定義是客戶端向一定範圍的伺服器埠傳送對應請求,以此確認可使用的埠。雖然其本身並不是惡意的網絡活動,但也是網絡攻擊者探測目標主機服務,以利用該服務的已知漏洞的重要手段。[1]埠掃描的主要用途仍然只是確認遠端機器某個服務的可用性。
掃描多個主機以取得特定的某個埠被稱為埠清掃(Portsweep),以此取得特定的服務。例如,基於SQL服務的電腦蠕蟲就會清掃大量主機的同一埠以在 1433 埠上建立TCP連接。[2]
類型
[編輯]TCP掃描
[編輯]最簡單的埠掃描工具使用作業系統原生的網絡功能,且通常作為SYN掃描的替代選項。Nmap將這種模式稱為連接掃描,因為使用了類似Unix系統的connect()
命令。如果該埠是開放的,作業系統就能完成TCP三次握手,然後埠掃描工具會立即關閉剛建立的該連接,防止阻斷服務攻擊。[3]這種掃描模式的優勢是用戶無需特殊權限。但使用作業系統原生網絡功能不能實現底層控制,因此這種掃描方式並不流行。並且TCP掃描很容易被發現,尤其作為埠清掃的手段:這些服務會記錄傳送者的IP地址,入侵檢測系統可能觸發警報。
SYN掃描
[編輯]SYN掃描是另一種TCP掃描。埠掃描工具不使用作業系統原生網絡功能,而是自行生成、傳送IP封包,並監控其回應。這種掃描模式被稱為「半開放掃描」,因為它從不建立完整的TCP連接。埠掃描工具生成一個SYN包,如果目標埠開放,則會返回SYN-ACK包。掃描端回應一個RST包,然後在握手完成前關閉連接。[3]如果埠關閉了但未使用過濾,目標埠應該會持續返回RST包。
這種粗略的網絡利用方式有幾個優點:給掃描工具全權控制封包傳送和等待回應時長的權力,允許更詳細的回應分析。關於哪一種對目標主機的掃描方式更不具備入侵性存在一些爭議,但SYN掃描的優勢是從不會建立完整的連接。然而,RST包可能導致網絡堵塞,尤其是一些簡單如印表機之類的網絡裝置。
UDP掃描
[編輯]UDP掃描也是可能的,儘管存在一些技術挑戰。 UDP是無連接協定,因此沒有等同於TCP SYN的封包。但是,如果將UDP封包傳送到未打開的埠,目標系統將響應ICMP埠不可達的訊息。大多數UDP埠掃描器都使用這種掃描方法,並使用缺少響應來推斷埠是否打開。但是,如果埠被防火牆阻止,則此方法將錯誤地報告埠已打開。如果埠不可達訊息被阻塞,則所有埠將顯示為打開。這種方法也受到ICMP速率限制的影響。
另一種方法是傳送特定於應用程式的UDP封包,希望生成應用層響應。例如,如果DNS伺服器存在,向埠53傳送DNS查詢將導致響應。這種方法在辨識開放埠方面更加可靠。然而,它僅限於應用程式特定的探測包可用時的埠掃描。一些工具(例如,NMAP)通常具有少於20個UDP服務的探針,而一些商業工具(例如,NESUS)有多達70個。在某些情況下,服務能在埠上被偵聽,但被組態為不響應特定的探測包.
ACK掃描
[編輯]ACK掃描是比較不常見的掃描類型之一,因為它不能確切地確定埠是打開的還是關閉的,但是可以確定埠是過濾的還是未過濾的。當嘗試探測防火牆及其規則集的存在性時,這尤其有用。簡單的包過濾將允許建立連接(帶有ACK位集的包),而更複雜的有狀態防火牆可能不允許。
窗口掃描
[編輯]由於其過時的特性,窗口掃描在確定埠是否打開或關閉時是相當不可靠的,已經很少使用。它生成與ACK掃描相同的封包,在返回時檢查封包的窗口欄位是否被修改。當封包到達目標時,如果埠是打開的,則設計缺陷試圖為封包建立一個窗口大小,在封包返回傳送方之前用1標記封包的窗口欄位。在不支援這種實現的系統中使用這種掃描技術,窗口欄位返回0,將打開的埠標記為關閉。
FIN掃描
[編輯]由於SYN掃描不夠隱蔽,防火牆通常會阻止SYN形式的封包。FIN報文無需修改即可繞過防火牆。關閉的埠會用適當的RST包回覆FIN包,而打開的埠則會忽略。這是TCP的一種典型行為,並在某些方面是不可避免的。