如何使用nmap命令

Nmap是用於安全審核和滲透測試的強大網絡掃描工具。 它是網絡管理員用來解決網絡連接問題和端口掃描的基本工具之一。

Nmap還可以檢測Mac地址,操作系統類型,服務版本等。

本文介紹了如何使用 nmap 命令來執行各種網絡任務。

安裝Nmap#

Nmap是可以在所有主要操作系統上安裝的多平台程序。 它最初以僅Linux工具的形式發布,後來被移植到其他系統,例如BSD,Windows和macOS。

如果您更喜歡GUI而不是命令行,則Nmap還具有一個稱為Zenmap的圖形用戶界面。

官方二進制包可從Nmap下載頁面下載。

安裝過程很簡單,並且會根據您的操作系統而有所不同。

在Ubuntu和Debian上安裝Nmap#

Nmap可從默認的Ubuntu和Debian存儲庫中獲得。 要安裝它,請運行:

sudo apt updatesudo apt install nmap

在CentOS和Fedora上安裝Nmap#

在CentOS和其他Red Hat衍生產品上運行:

sudo dnf install nmap

在macOS上安裝Nmap#

macOS用戶可以通過從Nmap站點或通過Homebrew下載“ .dmg”安裝軟件包來安裝Nmap:

brew install nmap

在Windows上安裝Nmap

Windows版本的Nmap有一些限制,並且通常比UNIX版本慢一些。

在Windows上安裝Nmap的最簡單選擇是下載並運行自我安裝exe文件。

您可以通過命令行或啟動Zenmap程序在Windows上運行Nmap。 有關如何在Windows上使用Nmap的更多信息,請查看安裝後使用說明。

使用Nmap

Nmap通常用於審核網絡安全性,網絡映射,識別開放端口以及搜索在線設備。

的簡化語法 nmap 命令如下:

nmap [Options] [Target...]

使用Nmap的最基本示例是以標準用戶身份掃描單個目標,而無需指定任何選項:

nmap scanme.nmap.org

當以沒有原始數據包特權的非root用戶身份調用時, nmap 運行TCP連接掃描。 (-sT)默認情況下處於非特權模式。

輸出將類似於以下內容,包括有關掃描的基本信息以及已打開和已過濾的TCP端口的列表。

Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET
Nmap scan report for cast.lan (192.168.10.121)
Host is up (0.048s latency).
Not shown: 981 closed ports
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
25/tcp   open     smtp
53/tcp   open     domain
80/tcp   open     http
110/tcp  open     pop3
143/tcp  open     imap
443/tcp  open     https
587/tcp  open     submission
993/tcp  open     imaps
995/tcp  open     pop3s
1025/tcp open     NFS-or-IIS
1080/tcp open     socks
8080/tcp open     http-proxy
8081/tcp open     blackice-icecap

Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds

最受歡迎的掃描選項是TCP SYN掃描(-sS),它比connect選項要快,並且可用於所有兼容的TCP堆棧。

-sS 默認情況下處於打開狀態 nmap 以具有管理特權的用戶身份被調用:

sudo nmap 192.168.10.121

要獲得更詳細的輸出,請使用增加詳細程度 -v 要麼 -vv

sudo nmap -vv 192.168.10.121

要執行UDP掃描,請使用(-sU)選項作為root用戶:

sudo nmap -sU 192.168.10.121

有關端口掃描方法的完整列表,請訪問Nmap文檔頁面。

Nmap還支持IPv6地址。 要指定IPv6主機,請使用 -6 選項:

sudo nmap -6 fd12:3456:789a:1::1

指定目標主機

Nmap將不是選項的所有參數視為目標主機。

如果參數以單破折號或雙破折號(---)。

最簡單的選擇是傳遞一個或多個目標地址或域名:

nmap 192.168.10.121 host.to.scan

您可以使用CIDR表示法指定網絡範圍:

nmap 192.168.10.0/24

要指定八位字節範圍,請使用破折號。 例如掃描 192.168.10.1192.168.11.1192.168.12.1

nmap 192.168.10-12.1

您可以用來指定目標的另一個字符是逗號。 以下命令將目標主機與上述主機相同:

nmap 192.168.10,11,12.1

您可以組合所有形式:

nmap 10.8-10.10,11,12.0/28  192.168.1-2.100,101

要確保在掃描之前指定了正確的主機,請使用列表掃描選項(-sL),僅列出目標而不進行掃描:

nmap -sL 10.8-10.10,11,12.0/28  192.168.1-2.100,101

如果要排除指定範圍內的目標,請使用 --exclude 選項:

nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12

指定和掃描端口

默認情況下,Nmap對1000個最流行的端口執行快速掃描。 這些端口不是前1000個連續的端口,而是1000個最常用的端口,範圍從1到65389。

要掃描從1到65535的所有端口,請使用 -p- 選項:

nmap -p- 192.168.10.121

每個端口可以處於以下狀態之一:

  • 打開-在端口上運行的程序響應請求。
  • 已關閉-端口上沒有任何程序運行,主機會回復請求。
  • 已過濾-主機不回復請求。

端口和端口範圍用 -p 選項。

例如,要僅掃描端口443,可以使用以下命令:

nmap -p 443 192.168.10.121

要指定多個端口,請用逗號分隔目標端口:

nmap -p 80,443 192.168.10.121

端口範圍可以用破折號指定。 例如,要掃描範圍從1到1024的所有UDP端口,可以運行:

sudo nmap -sU -p 1-1024 192.168.10.121

總計:

nmap -p 1-1024,8080,9000 192.168.10.121

也可以使用端口名稱指定端口。 例如,要掃描端口22 ssh,可以使用:

nmap -p ssh 192.168.10.121

Ping掃描#

要執行ping掃描或主機發現,請調用 nmap 用命令 -sn 選項:

sudo nmap -sn 192.168.10.0/24

-sn 選項告訴Nmap僅發現在線主機,而不進行端口掃描。 當您要快速確定哪些指定主機已啟動並正在運行時,此功能很有用。

禁用DNS名稱解析#

Nmap的默認行為是對每個發現的主機執行反向DNS解析,這會增加掃描時間。

掃描大型網絡時,最好禁用反向DNS解析並加快掃描速度。 為此,請使用 -n 選項:

sudo nmap -n 192.168.10.0/16

操作系統,服務和版本檢測

Nmap可以使用TCP / IP堆棧指紋來檢測遠程主機操作系統。 要運行操作系統檢測,請使用 -O 選項:

sudo nmap -O scanme.nmap.org

如果Nmap可以檢測到主機操作系統,它將打印如下內容:

...
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.4
Network Distance: 18 hops

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds

通常,系統服務監聽眾所周知的標準端口並為其保留。 例如,如果對應於SSH服務的端口22已打開,則將假定SSH服務器在主機上運行。 但是,您不能絕對確定,因為人們可以在所需的任何端口上運行服務。

通過服務和版本檢測,Nmap將顯示端口上偵聽的程序和程序版本。

要掃描服務和版本,請使用 -sV 選項:

sudo nmap -sV scanme.nmap.org
...
PORT      STATE    SERVICE      VERSION
19/tcp    filtered chargen
22/tcp    open     ssh          OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
80/tcp    open     http         Apache httpd 2.4.7 ((Ubuntu))
135/tcp   filtered msrpc
139/tcp   filtered netbios-ssn
445/tcp   filtered microsoft-ds
9929/tcp  open     nping-echo   Nping echo
31337/tcp open     tcpwrapped
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
...

您還可以使用以下命令在一個命令中掃描操作系統,版本並運行traceroute。 -A 選項:

sudo nmap -A 192.168.10.121

Nmap輸出#

默認情況下,Nmap將信息打印到標準輸出(stdout)。

如果您掃描大型網絡或需要信息以備後用,則可以將輸出保存到文件中。

Nmap提供了幾種輸出類型。 要將輸出保存為普通格式,請使用 -oN 選項,後跟文件名:

sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt

最受歡迎的選項是將輸出保存為XML格式。 為此,請使用 -oX 選項:

sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml

另一種有用的格式是grepable輸出,可以用標準的Unix工具(例如: grepawkcut 。 grepable輸出是使用 -oG 選項:

sudo nmap -sU -p 1-1024 192.168.10.121 -oG output

Nmap腳本引擎#

Nmap的最強大功能之一就是其腳本引擎。 Nmap附帶了數百個腳本,您也可以使用Lua語言編寫自己的腳本。

您可以使用腳本來檢測惡意軟件和後門程序,執行暴力攻擊等。

例如,要檢查給定主機是否受到威脅,可以使用:

nmap -sV --script http-malware-host scanme.nmap.org

結論#

Nmap是一個開放源代碼工具,網絡管理員主要使用它來發現主機和掃描端口。

請注意,在某些國家/地區,未經授權掃描網絡是非法的。

如果您有任何疑問或意見,請在下面發表評論。

末端nmap

Sidebar