1、基礎概念
1.1 名稱
nmap是網絡探測工具和安全/端口掃描器。
1.2 語法
nmap [ <掃描類型> ...] [ <選項> ] { <掃描目標說明> }
nmap [Scan Type(s)] [Options] {target specification}
1.3 描述
Nmap (Network Mapper—網絡映射器) 是一款開放源代碼的 網絡探測 和 安全審覈 的工具。它的設計目標是快速地掃描大型網絡,當然用它掃描單個 主機也沒有問題。Nmap以新穎的方式使用原始IP報文來發現網絡上有哪些主機,那些 主機提供什麼服務(應用程序名和版本),那些服務運行在什麼操作系統(包括版本信息), 它們使用什麼類型的報文過濾器/防火牆,以及一堆其它功能。雖然Nmap通常用於安全審覈, 許多系統管理員和網絡管理員也用它來做一些日常的工作,比如查看整個網絡的信息, 管理服務升級計劃,以及監視主機和服務的運行。
Nmap輸出的是掃描目標的列表,以及每個目標的補充信息,至於是哪些信息則依賴於所使用的選項。 “所感興趣的端口表格”是其中的關鍵。那張表列出端口號,協議,服務名稱和狀態。狀態可能是 open(開放的),filtered(被過濾的), closed(關閉的),或者unfiltered(未被過濾的)。 Open(開放的)意味着目標機器上的應用程序正在該端口監聽連接/報文。 filtered(被過濾的) 意味着防火牆,過濾器或者其它網絡障礙阻止了該端口被訪問,Nmap無法得知 它是 open(開放的) 還是 closed(關閉的)。 closed(關閉的) 端口沒有應用程序在它上面監聽,但是他們隨時可能開放。 當端口對Nmap的探測做出響應,但是Nmap無法確定它們是關閉還是開放時,這些端口就被認爲是 unfiltered(未被過濾的) 如果Nmap報告狀態組合 open|filtered 和 closed|filtered時,那說明Nmap無法確定該端口處於兩個狀態中的哪一個狀態。 當要求進行版本探測時,端口表也可以包含軟件的版本信息。當要求進行IP協議掃描時 (-sO),Nmap提供關於所支持的IP協議而不是正在監聽的端口的信息。
除了所感興趣的端口表,Nmap還能提供關於目標機的進一步信息,包括反向域名,操作系統猜測,設備類型,和MAC地址。
1.4 端口掃描基礎
雖然Nmap這些年來功能越來越多, 它也是從一個高效的端口掃描器開始的,並且那仍然是它的核心功能。
nmap 這個簡單的命令掃描主機 上的超過 1660個TCP端口。許多傳統的端口掃描器只列出所有端口是開放還是關閉的, Nmap的信息粒度比它們要細得多。
它把端口分成六個狀態: open(開放的), closed(關閉的),filtered(被過濾的), unfiltered(未被過濾的), open|filtered(開放或者被過濾的),或者 closed|filtered(關閉或者被過濾的)。
這些狀態並非端口本身的性質,而是描述Nmap怎樣看待它們。例如, 對於同樣的目標機器的135/tcp端口,從同網絡掃描顯示它是開放的,而跨網絡作完全相同的掃描則可能顯示它是 filtered(被過濾的)。
Nmap所識別的6個端口狀態。
-
open(開放的)
應用程序正在該端口接收TCP 連接或者UDP報文。發現這一點常常是端口掃描 的主要目標。安全意識強的人們知道每個開放的端口 都是攻擊的入口。攻擊者或者入侵測試者想要發現開放的端口。 而管理員則試圖關閉它們或者用防火牆保護它們以免妨礙了合法用戶。 非安全掃描可能對開放的端口也感興趣,因爲它們顯示了網絡上那些服務可供使用。
-
closed(關閉的)
關閉的端口對於Nmap也是可訪問的(它接受Nmap的探測報文並作出響應), 但沒有應用程序在其上監聽。 它們可以顯示該IP地址上(主機發現,或者ping掃描)的主機正在運行up 也對部分操作系統探測有所幫助。 因爲關閉的關口是可訪問的,也許過會兒值得再掃描一下,可能一些又開放了。 系統管理員可能會考慮用防火牆封鎖這樣的端口。 那樣他們就會被顯示爲被過濾的狀態,下面討論。
-
filtered(被過濾的)
由於包過濾阻止探測報文到達端口, Nmap無法確定該端口是否開放。過濾可能來自專業的防火牆設備,路由器規則 或者主機上的軟件防火牆。這樣的端口讓攻擊者感覺很挫折,因爲它們幾乎不提供 任何信息。有時候它們響應ICMP錯誤消息如類型3代碼13 (無法到達目標: 通信被管理員禁止),但更普遍的是過濾器只是丟棄探測幀, 不做任何響應。 這迫使Nmap重試若干次以訪萬一探測包是由於網絡阻塞丟棄的。 這使得掃描速度明顯變慢。
-
unfiltered(未被過濾的)
未被過濾狀態意味着端口可訪問,但Nmap不能確定它是開放還是關閉。 只有用於映射防火牆規則集的ACK掃描纔會把端口分類到這種狀態。 用其它類型的掃描如窗口掃描,SYN掃描,或者FIN掃描來掃描未被過濾的端口可以幫助確定 端口是否開放。
-
open|filtered(開放或者被過濾的)
當無法確定端口是開放還是被過濾的,Nmap就把該端口劃分成 這種狀態。開放的端口不響應就是一個例子。沒有響應也可能意味着報文過濾器丟棄 了探測報文或者它引發的任何響應。因此Nmap無法確定該端口是開放的還是被過濾的。 UDP,IP協議, FIN,Null,和Xmas掃描可能把端口歸入此類。
-
closed|filtered(關閉或者被過濾的)
該狀態用於Nmap不能確定端口是關閉的還是被過濾的。 它只可能出現在IPID Idle掃描中。
2、選項說明
2.1 端口掃描 選項
-sS --- TCP SYN 掃描
# SYN 掃描作爲默認的也是最受歡迎的掃描選項,是有充分理由的
# 它執行得很快,在一個沒有入侵防火牆的快速網絡上,每秒鐘可以掃描數千個端口
-sT --- TCP connect() 掃描
# 當 SYN 掃描不能用時,TCP Connect() 掃描就是默認的 TCP 掃描
-sU --- UDP 掃描
# UDP 服務有:DNS,SNMP,和 DHCP (註冊的端口是53,161/162,和67/68)是最常見的三個
# UDP 掃描用-sU 選項激活。它可以和 TCP 掃描如 SYN 掃描(-sS)結合使用來同時檢查兩種協議
2.2 主機發現 選項
-sP --- Ping 掃描
# 該選項告訴 Nmap 僅僅 進行ping掃描 (主機發現),然後打印出對掃描做出響應的那些主機。 沒有進一步的測試 (如端口掃描或者操作系統探測)。
2.3 端口說明和掃描順序 選項
-p <port ranges> --- 只掃描指定的端口
# 該選項指明您想掃描的端口,覆蓋默認值[添加鏈接描述)
2.4 操作系統探測 選項
-O --- 啓用操作系統檢測
# 也可以使用-A來同時啓用操作系統檢測和版本檢測。
2.5 時間和性能 選項
-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> --- 設置時間模板
# T0 選項的主要影響是對於連續掃描,在一個時間只能掃描一個端口, 每個探測報文的發送間隔爲5分鐘
# T1 和 T2 選項比較類似, 探測報文間隔分別爲15秒和0.4秒
# T3 是Nmap的默認選項,包含了並行掃描
# T4 選項與 --max-rtt-timeout 1250 --initial-rtt-timeout 500 等價,最大TCP掃描延遲爲10ms
# T5 等價於 --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000,最大TCP掃描延遲爲5ms
2.6 服務和版本探測 選項
2.7 掃描目標 選項
目標說明 官方文檔
除了選項,所有出現在Nmap命令行上的都被視爲對目標主機的說明。
最簡單的情況是指定一個目標IP地址或主機名。
雖然目標通常在命令行指定,下列選項也可用來控制目標的選擇:
-iL <inputfilename> (從列表中輸入)
從 <inputfilename>中讀取目標說明
--exclude <host1[,host2][,host3],...> (排除主機/網絡)
如果在您指定的掃描範圍有一些主機或網絡不是您的目標,那就用該選項加上以逗號分隔的列表排除它們
--excludefile <excludefile> (排除文件中的列表)
這和--exclude 選項的功能一樣
2.8 輸出選項
-oN <filespec> --- 標準輸出
# 要求將標準輸出直接寫入指定的文件。如上所述,這個格式與交互式輸出略有不同
2.9 其它選項
3、實例
3.1 官方實例
3.2 主機掃描實例
# nmap -sP 172.16.141.0/24 # ping 測 172.16.141.0 段的主機存活狀態
# nmap -sP 172.16.141.181-183 # ping 測 181-183 三個主機的存活狀態
[root@Tang ~]# nmap -sP 172.16.141.181-183
Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 16:37 CST
Nmap scan report for tang (172.16.141.181)
Host is up.
Nmap scan report for sybil (172.16.141.182)
Host is up (0.00019s latency).
MAC Address: 00:E0:70:13:4D:86 (DH Technology)
Nmap scan report for luna (172.16.141.183)
Host is up (0.00023s latency).
MAC Address: 68:ED:A4:21:D8:D4 (Unknown)
Nmap done: 3 IP addresses (3 hosts up) scanned in 0.04 seconds
3.3 端口掃描
# nmap -sS -sU www.raisecom.com # 掃描域名的 TCP/UDP 端口狀態
# nmap -sS -sU 106.37.195.194 # 掃描IP的 TCP/UDP 端口狀態
[root@Tang ~]# nmap -sS -sU www.raisecom.com
Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 16:39 CST
Nmap scan report for www.raisecom.com (13.58.72.196)
Host is up (0.30s latency).
rDNS record for 13.58.72.196: ec2-13-58-72-196.us-east-2.compute.amazonaws.com
Not shown: 1000 open|filtered ports, 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 67.28 seconds
[root@Tang ~]# nmap -sS -sU 106.37.195.194
Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 16:40 CST
Nmap scan report for 194.195.37.106.static.bjtelecom.net (106.37.195.194)
Host is up (0.0016s latency).
Not shown: 1994 closed ports
PORT STATE SERVICE
80/tcp open http
1723/tcp open pptp
2000/tcp open cisco-sccp
8291/tcp open unknown
161/udp open snmp
1701/udp open|filtered L2TP
Nmap done: 1 IP address (1 host up) scanned in 55.01 seconds
3.4 掃描列表內的IP地址的TCP/UDP端口狀態,並對結果內容進行保存
# nmap -sS -sU -iL ip-list -oN result.txt
# -iL 指定 IP 列表
# -oN 保存至指定文件
[root@Tang nmap-test]# cat ip-list
172.16.141.181
172.16.141.182
172.16.141.183
[root@Tang nmap-test]# nmap -sS -sU -iL ip-list -oN result.txt
Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 16:47 CST
Nmap scan report for tang (172.16.141.181)
Host is up (0.000010s latency).
Not shown: 1994 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
514/tcp open shell
... ...
[root@Tang nmap-test]# cat result.txt
# Nmap 6.40 scan initiated Thu Jun 11 16:47:10 2020 as: nmap -sS -sU -iL ip-list -oN result.txt
Nmap scan report for tang (172.16.141.181)
Host is up (0.000010s latency).
Not shown: 1994 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
... ...
3.5 指定端口進行掃描
# nmap -sS -p22,23-80 172.16.141.181
# 掃描IP地址的 22, 23-80 之間所有的 TCP 端口
[root@Tang nmap-test]# nmap -sS -p22,23-80 172.16.141.181
Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 17:00 CST
Nmap scan report for tang (172.16.141.181)
Host is up (0.0000090s latency).
Not shown: 58 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds