延續昨天的結果,當我們發現透過主機探測 ( 主機發現 ) 後,就可以來做下一步開始對該主機的 Port 來做掃描。
基本 Port Scan 指令的樣式
nmap [目標IP位址] -p [要掃描的 Port] [其他選項(可有可無)]
實例 ( 目標為 metasploitable2 ) :
nmap 192.168.184.135 -p 21
Starting Nmap 7.99 ( https://nmap.org ) at 2026-09-22 23:46 -0400
Nmap scan report for 192.168.184.135
Host is up (0.00066s latency).
PORT STATE SERVICE
21/tcp open ftp
MAC Address: 00:0C:29:91:2F:D9 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.67 seconds
nmap 192.168.184.135
Starting Nmap 7.99 ( https://nmap.org ) at 2026-09-23 05:17 -0400
Nmap scan report for 192.168.184.135
Host is up (0.0030s latency).
Not shown: 979 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8180/tcp open unknown
MAC Address: 00:0C:29:91:2F:D9 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 4.83 seconds
當我們掃描完後可以從結果看出有一個是 STATE 的欄位,這欄位用來代表 Port 的狀態,上面的實例我們可以看到目標的 21 Port 為 open ( 開啟 ) 的狀態,open 表示這個 Port 運行著某種服務等著其他裝置去做連線。
而我們也可以從結果發現有這段敘述 Not shown: 979 closed tcp ports (reset) ,代表有 979 closed 關閉的 Port 沒有顯示來,close 代表目標 Port 有接收及回應 Nmap 的探測封包,只是因為服務沒有在運行所以沒有在 Port 上監聽 ( listening )。
註 : 這邊只介紹兩種狀態實際上 Nmap Port Scan 的狀態會有 6 種,我會在延伸閱讀放上 Nmap 官方的文件上面會有記載,有興趣的人可以再去研究看看
nmap [目標IP位址] -p 80 # 掃描 80 Port
, 隔開 ) :nmap [目標IP位址] -p 21,80,443 # 掃描 20,21,80,443 Port
- 表示範圍 ) :nmap [目標IP位址] -p 1-100 # 掃描 1~100 Port
nmap [目標IP位址] -p 1-100,443 # 掃描 1~100 , 443 Port
nmap [目標IP位址] -p- # 掃描 1~65535 Port
效果等同 :
nmap [目標IP位址] -p 1-65535 # 掃描 1~65535 Port
針對同一件功能之所以會有多種不同種類的技術,主要是每種技術有著他的優缺點,像是等下會提到的 TCP SYN Scan 這個技術的優點就是速度快由於做 Port Scan 時通常不會只掃描單一個 Port,所以速度就是掃描中一個很重要的考量點。
==下面所做的實例 192.168.31.131 為被掃瞄的目標;192.168.31.129 則為發出掃描的裝置==
-sSTCP SYN Scan 是 Nmap 預設的 Port scan 類型,SYN 指的是 TCP 三向交握 ( 建立連線 ) 中的會用到的一個 flag,TCP SYN Scan 優點為速度快且因為這種掃描的方式沒有完全建立完連線,而是在正常連線快完成的最後一個步驟直接中斷,也因為不算是正常建立連線的情況被目標發現的機率更低。
實例 :
nmap 192.168.31.131 -sS -p 21
Starting Nmap 7.95 ( https://nmap.org ) at 2026-09-23 10:49 EDT
Nmap scan report for 192.168.31.131
Host is up (0.00036s latency).
PORT STATE SERVICE
21/tcp open ftp
MAC Address: 00:0C:29:37:BF:EF (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds
-sS : TCP SYN Scan 掃描模式-p 21 : 指定掃描 21 PortWireshark 抓到的封包,可以看到這個 TCP Stream 有三個封包
![[Pasted image 20260923225953.png]]
-sTTCP connect Scan ( TCP 連線掃描 ) 跟上面的 SYN Scan 是同樣的原理,但由於 TCP 連線掃描會建立完完整的連線才中斷連線,相較於 SYN Scan 速度就慢下了不少,也因為連線為完整建立後才斷線,且容易被目標的 IDS ( Intrusion Detection System 入侵偵測系統 ) 捕捉到並直接將來源 ( 發出掃描方 ) 的 IP 給加入黑名單,通常還是使用 SYN Scan 比較多。
實例 :
nmap 192.168.31.131 -sT -p 21
Starting Nmap 7.95 ( https://nmap.org ) at 2026-09-23 10:49 EDT
Nmap scan report for 192.168.31.131
Host is up (0.00041s latency).
PORT STATE SERVICE
21/tcp open ftp
MAC Address: 00:0C:29:37:BF:EF (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds
-sT : TCP Connect Scan 掃描模式-p 21 : 指定掃描 21 Port跟上面的 SYN Scan 比較一下可以發現結果沒什麼差異但耗時差了 0.04 秒,差了約 1.3 倍,單獨一個 Port 體感還感覺不出來但 Port 的數量一多就會有很明顯的差距了。
Wireshark 抓到的封包,可以看到這個 TCP Stream 有四個封包
![[Pasted image 20260923225204.png]]
-sATCP ACK Scan 跟上面兩者的目的不同,雖然一樣都是要做 Port Scan,但 ACK Scan 主要用於探測防火牆 ( Firewall ) 的規則,而不會檢查出 Port 是否為 open/closed。
通常有回應 RST Flag 封包的情況就代表封包沒有被過濾掉能夠確實送到指定的 Port,沒有回應或者回傳 ICMP 的錯誤訊息的狀況就是代表封包被過濾掉了。
實例 :
nmap 192.168.31.131 -sA -p 21
Starting Nmap 7.95 ( https://nmap.org ) at 2026-09-23 11:38 EDT
Nmap scan report for 192.168.31.131
Host is up (0.00038s latency).
PORT STATE SERVICE
21/tcp unfiltered ftp
MAC Address: 00:0C:29:37:BF:EF (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds
Wireshark 抓到的封包,可以看到被掃瞄的目標回傳
RST封包代表傳送的封包沒有被防火牆給過濾掉,或者是目標沒有防火牆的保護。
![[Pasted image 20260923234008.png]]
這次算比較詳細的介紹了 Nmap 的 Port Scan ,包含怎麼看結果與選項的使用,也介紹了三種 Port Scan 的類型,我目前有在使用是只有 SYN Scan,透過這次的機會也重新看了一次官方的文件,了解了不同類型掃描的差異,算是也學到了不少,建議讀者在實作的時候也可以跟我一樣一邊用 Wireshark 來看封包的傳送,也能順便了解原理,惡補一點網路的知識,原本今天還想說要多加個補充來介紹一下 TCP 三向交握的運作,但發現好像沒辦法用很容易理解的方式來解釋,鐵人賽後我會再寫一篇來介紹一下關於三向交握。
明天預計會介紹 Nmap 的 Service Scan 也是一個非常關鍵的功能,那就明天見啦!