還記得我們在上一篇提到的 STATE
嗎?咱先來幫大家複習一下之前的掃描 port
的結果~
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack
80/tcp closed http rst
443/tcp filtered https no-response
在結果中,我們可以看到有一欄位是 STATE
~
而這邊的 STATE
指的是 Nmap
在掃描網絡中的目標時,對「端口狀態」的檢測結果。
端口的狀態有很多種,它們所代表的意義也大不相同(筆者:非常有趣呢 ><)
一起來看看吧~
表示目標主機的端口正在運行某個應用程序並接受連接。
Open
的端口可能暴露網絡服務,進而讓攻擊者利用已知漏洞發動攻擊。
表示目標主機上的端口是關閉的,表示它當前沒有運行任何應用程式,且不接受連接。
雖然 Closed
的端口不會直接構成威脅,但如果系統配置不當,可能會隨時開啟並開始運行服務。
換成白話文來說,就是:「看起來還好,但別人搞爛並且打開它就會有危險」。
表示該端口「可能」被防火牆保護或過濾掉了。
而為何說「可能」呢?
因為 Nmap
掃描時沒有收到任何響應或被防火牆(或其他過濾設備,如 IPS
/IDS
)阻止,從而無法確定端口的開放或關閉狀態。不過,這通常意味著該端口可能被防火牆保護或過濾掉。
Filtered
可能表明網絡設備正在阻止外部流量的進入,這是一種安全措施。但攻擊者可能會嘗試繞過這些防火牆或過濾器。
筆者 say say 念:
Filtered
狀態表示有東東阻止了你,但沒人阻止你繞過這東東 >< 真邪惡
表示 Nmap
能夠訪問該端口,但無法確定該端口是否開放或關閉。
這種狀態很少見,通常在防火牆或過濾設備允許某些掃描,但不允許具體通信時發生@@
這表示網絡設備並未過濾該端口的流量,攻擊者可能會進一步嘗試與該端口進行通信。
筆者 say say 念:
講完端口狀態,讓我們來看看也是與掃描有關的其他參數吧~
nmap <target> -p <port> -sA
ACK
掃描向目標的指定端口發送 TCP ACK
包,並根據響應來判斷端口的狀態。
由於這種掃描不進行 TCP
三次握手,它不能確定端口是否開放,只能確定是否有防火牆或包過濾設備阻擋了連接。
掃描發送 packet
後,以下幾種回應分別代表不同意義:
返回 RST
:
表示端口未被防火牆阻擋。
沒有響應或 ICMP
錯誤訊息:
表示端口可能被防火牆過濾。
主要用來「測試防火牆規則」,了解哪些端口通過了防火牆的篩選,但不能確定端口是否處於開放狀態。
nmap <target> -p <port> -sS
判斷端口是否開放。
進行 TCP
三次握手的第一步(SYN
),不會完成整個連接,因此也稱為「半開放掃描」。這種方式能避免在目標系統留下明顯的連接記錄,比較隱蔽。
換句話說,就是向目標端口發送一個 TCP SYN
包,並根據回應來判斷端口狀態:
返回 SYN/ACK
:
端口是開放的(或接受連接的)。
返回 RST(Reset)
:
端口是關閉的。
沒有回應或 ICMP
消息:
端口可能被過濾(防火牆阻擋)。
這種掃描快速又有效,適合測試端口是否開放或受防火牆阻擋。
nmap <target> -p <port> -sU
探測目標的 UDP
端口是否開放。
直接向目標端口發送一個 UDP
數據包,然後根據目標的回應來判斷端口狀態:
沒有回應:
通常表示端口是開放的(因為許多 UDP
服務不會回應非正確格式的請求)。
收到 ICMP Port Unreachable
消息:
表示該端口是關閉的。
筆者 say say 念:
UDP
掃描通常比TCP
掃描慢,因為UDP
本身無需確認包,因此無法通過標準的三次握手來快速確定狀態。此外,防火牆或過濾器對UDP
掃描的response
也可能使掃描變得更複雜。
UDP
掃描適合用來探測使用 UDP
協議的服務,如 DNS
(53 port)、SNMP
(161 port)等。
筆者爆肝宣言:
沒想到內容又要分下次講XD 真的有夠多
中秋烤肉吃太爽,完全是壓線在趕時間 ><
沒想到自問自答能學到這麼多XD
好有趣~
大家中秋節快樂!
下次繼續講 Nmap 的進階內容以及好用指令~
https://academy.hackthebox.com/