昨天我們介紹了 Port Scan 的幾種常用類型,今天我們繼續往下介紹,找出有哪些 Port 開啟後我們就可以對這些特定的 Port 做服務探測來盡可能地找出服務詳細資訊,像是最重要的服務版本,版本越詳細越能夠找出對應的漏洞利用腳本,來做到下一步的滲透。
Nmap 的 Service Scan 是將掃描出來的特徵跟 Nmap 內建的資料集比對後,找出最相近的服務版本輸出出來。
基本指令 :
nmap [目標IP位址] -sV
-sV : 服務版本掃描功能實例 :
nmap 192.168.184.135 -sV
Starting Nmap 7.99 ( https://nmap.org ) at 2026-09-23 23:04 -0400
Nmap scan report for 192.168.184.135
Host is up (0.0023s latency).
Not shown: 977 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp open telnet Linux telnetd
25/tcp open smtp Postfix smtpd
53/tcp open domain ISC BIND 9.4.2
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp open rpcbind 2 (RPC #100000)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
512/tcp open exec netkit-rsh rexecd
513/tcp open login OpenBSD or Solaris rlogind
514/tcp open tcpwrapped
1099/tcp open java-rmi GNU Classpath grmiregistry
1524/tcp open bindshell Metasploitable root shell
2049/tcp open nfs 2-4 (RPC #100003)
2121/tcp open ftp ProFTPD 1.3.1
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp open vnc VNC (protocol 3.3)
6000/tcp open X11 (access denied)
6667/tcp open irc UnrealIRCd
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
MAC Address: 00:0C:29:91:2F:D9 (VMware)
Service Info: Hosts: metasploitable.localdomain, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.65 seconds
根據結果我們可以發現除了版本詳細資訊以外,下方還有一個 Service Info 裡面記載著主機名稱.作業系統等的資訊,這邊找出來的作業系統不一定完全準確,下面會介紹到的 OS Scan 的結果相較於這邊可信度會高不少。
--version-intensity <intensity> : 版本掃描的強度 ( 0 - 9 ),預設為 7,強度越高服務被正確識別的可能性越大,但相對的因為會嘗試各種不同的封包樣式來做探測,速度也會降低不少。--version-all : 嘗試所有的探測封包,也等同 --version-intensity 9。OS Scan 是用來判斷目標的作業系統,透過發送各種 TCP 與 UDP 封包,分析回應的特徵與細節 ( 如 : IP Header 中的 TTL Linux 預設為 64 Windows 預設為 128 ) ,來與 Nmap 自己整理出來的數據庫做比較後,來找出相對應的結果。
nmap [IP位址] -O
-O : 作業系統探測nmap 192.168.184.135 -O
Starting Nmap 7.99 ( https://nmap.org ) at 2026-09-24 05:00 -0400
Nmap scan report for 192.168.184.135
Host is up (0.00085s latency).
Not shown: 978 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
1099/tcp open rmiregistry
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)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 2.23 seconds
在最下方我們可以看到 OS Scan 的結果是這些,作業系統為 Linux 版本為 2.6.9 - 2.6.33 ,Nmap 沒辦法太限縮作業系統的版本只能找出個大概範圍,但透過這個範圍就已經有很多可以嘗試滲透的空間了。
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Network Distance: 1 hop
Device type : 裝置的用途Running : 裝置上的 OS 版本OS CPE : 作業系統的 CPE(Common Platform Enumeration,通用平台列舉)用來標準化命名作業系統的格式OS details : OS 詳細版本Network Distance : 與目標的網路距離,經過的路由器及裝置的數量實際上直接從目標看作業系統 :
從圖片看出目標的作業系統為 GNU/Linux 版本是 2.6.24
今天在找資料的時候意外發現原來 Linux 的命名有這樣的爭議,Linux 原本是作為 作業系統核心 ( Kernel ) 開發出來的而不是一個完整的作業系統,Linus Torvalds ( Linux 之父 ) 跟一些早期的 Linux 開發者引用了GNU計劃的內容來完成 Linux 這個作業系統,所以嚴格說起來 Linux 只算是一個作業系統核心 ( Kernel ) ,是因為搭配了 GNU 的程式才組成一個作業系統,所以 GNU計劃的發起人 理察·斯托曼認為將該作業系統稱為「GNU/Linux」比較恰當。。
今天提到了服務版本與OS的探測,這兩點都是要做下一步滲透可以考慮的方向,今天也意外的學到了 Linux 實際的意思以前一直都以為只有作業系統這層的意思,沒想到還有核心這樣的解釋。
明天會簡單介紹 NSE ( Nmap Script Engine ) ,那就明天見啦!