shell> yum -y install nmap
使用nmap -h可以查看選項和用法。選項非常多,這是功能強大的工具帶來的必然結果,但簡單使用並用不到幾個選項。
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
Can pass hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL : Infilename> from list of hosts/networks
-iR : Choose random targets
## -iR : Choose random targets
--exclude : Exclude hosts/networks
--excludefile : Exclude list from file
HOST DISCOVERY:
# -sL: List Scan - simply list targets to scan -sn: Ping Scan - disable port scan
-sn: Ping Scan - disable port scan
-Pn: Treat all hosts as online -- skip host # -Pn: Treat all hosts as online -- skip host discoveryskip
-PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes -PO[protocol list]: IP Protocol Ping
-PR: ARP ping - does not need HW address -> ; IP translation
-n/-R: Never do DNS resolution/Always resolve [default: sometimes]
--dns-servers : Specify custom DNS servers --system-dns: Use OS's DNS resolver --traceroute: Trace hop path to each host
SCAN TECHNIQUES: -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
-sU: UDP Scan
# -sN/sF/sX: TCP Null, FIN, and Xmas scans --scanflags : Customize TCP scan flags -sI : Idle scan
-sY/sZ: SCTP INIT/COOKIE- ECHO scans
-sO: IP protocol scan -b : FTP bounce scan
PORT SPECIFICATION AND SCAN ORDER: -p : Only scan specified ports
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
-F: Fast mode - Scan fewer ports
## -F: Fast mode - Scan fewer ports
## -F: Fast mode - Scan fewer ports
## -F: Fast mode - Scanthan the default scan
-r: Scan ports consecutively - don't randomize
--top-ports : Scan most common ports
## - -port-ratio
: Scan ports more common than ######SERVICE/VERSION DETECTION:###### -sV: Probe open ports to determine service/version info### -sV: Probe open ports to determine service/version info### -sV: Probe open ports to determine service/## ### -sR: Check what service uses opened ports using RPC scan###### --version-intensity : Set from 0 (light) to 9 (try all probes)###### --version-light: Limit to most likely probes (intensity 2)###### --version-all: Try every single probe (intensity 9)### --version-trace:顯示詳細的版本掃描活動(用於偵錯)
SCRIPT SCAN:
-sC:相當於--script=default
- -script=: ;是逗號分隔的目錄、腳本檔案或腳本類別清單 --script-args=: 為腳本提供參數 # --script-trace:顯示發送和接收的所有資料
--script-updatedb:更新腳本資料庫。系統偵測 --osscan-limit:將作業系統偵測限制在有希望的目標 #osscan-guess:更積極地猜測作業系統
#也和效能:
需要的選項以秒為單位,或在數值後面附加「ms」(毫秒)、
「s」(秒)、「m」(分鐘)或「h」(小時)(例如 30m)。 # -T:設定計時範本(越高越快)
# --min-hostgroup/max-hostgroup :並行主機掃描群組大小
--min-parallelism/max-parallelism :探針並行化
-- min -rtt-timeout/max-rtt-timeout/initial-rtt-timeout : 指定
偵測往返時間。探測重傳次數。 :調整探測之間的延遲 --min-rate :傳送封包不慢於每秒 --max-rate :傳送封包的速度不超過 每秒
防火牆/IDS 規避與欺騙:
### -f; --mtu :片段資料包(可選地帶有給定的 MTU)###### -D :用誘餌掩蓋掃描#### ######## -S :欺騙來源位址############# -e :使用指定介面###### -g/- -source -port : 使用給定的連接埠號碼###### --data-length : 將隨機資料附加到傳送的封包###### --ip-options ; : 發送帶有指定ip 選項的封包###### --ttl : 設定IP 生存時間欄位###### --spoof-mac ; :欺騙您的MAC 位址###### --badsum:傳送帶有偽造TCP/UDP/SCTP 校驗和的封包######OUTPUT:########### ## -oN/- oX/-oS/-oG :分別以正常、XML、s| --reason:顯示連接埠處於特定狀態的原因 --open:僅顯示開放(或可能開放)的連接埠
--packet-trace:顯示全部傳送和接收的資料包
--iflist:列印主機介面與路由(用於偵錯)
--log-errors:將錯誤/警告記錄到正常格式的輸出檔案
--append-output:附加到而不是破壞指定的輸出檔案
--resume :恢復中止的掃描
--stylesheet :用於將XML 輸出轉換為HTML 的XSL 樣式表
--webxml:參考來自Nmap.Org 的樣式表以獲得更可移植的XML
--no-stylesheet:防止XSL 樣式表與XML 輸出關聯
MISC:
-6: 啟用IPv6 掃描
-A: 啟用作業系統偵測、版本偵測、腳本掃描與追蹤路由
--datadir < ;dirname>:指定自訂Nmap 資料檔案位置
--send-eth/--send-ip:使用原始乙太網路封包或IP 封包傳送
--privileged:假設使用者俱有完全特權
--unprivileged:假設使用者缺乏原始套接字權限
-V:列印版本號
-h:列印此說明摘要頁面。 .0.0/8
nmap - v -iR 10000 -Pn -p 80
常用的就上面標紅的幾個。
#1.2 嘗試一次掃描
nmap掃描一般會比較慢,特別是掃描非本機的時候。
#只掃描生長端口,但是不代表真的只開了兩個端口,這樣不加任何參數的nmap將自動決定掃描1000個高危險端口,但哪些是高危險端口由nmap決定。常見的連接埠能掃描出來。 #可以指定"-p [1-65535] "來掃描所有端口,或者使用"-p-"選項也是全面掃描。預設總是會掃描端口,可以使用-sn選項禁止掃描端口,以加速掃描主機是否最多。風格的位址,Nmap將掃描所有和該參考IP位址 #具有相同cidr安裝的所有IP位址或主機。 .10.255之間的256台主機,192.168 .10.40/24會做同樣的事情。 255.255之間的65536個IP位址。
#CIDR位元標誌很簡潔但有時不夠靈活。位址或廣播位址可以用逗號分隔的數字或範圍清單為IP位址指定其範圍。不必結束的位址僅限最後的8位元:「0-255.0-255.13.37」將在整個網際網路範圍內掃描所有以「13.37」結束的位址。 ,它們不一定是相同的型別。虽然目标通常在命令行指定,下列选项也可用来控制目标的选择:
从中读取目标说明。在命令行输入一堆主机名显得很笨拙,然而经常需要这样。例如DHCP服务器可能导出10000个当前租约列表。列表中的项可以是Nmap在命令行上接受的任何格式(IP地址,主机名,CIDR,IPv6,或者八位字节范围)。每一项必须以一个或多个空格、制表符或换行符分开。如果希望Nmap从标准输入读取列表,则使用"-"作为表示/dev/stdin。
1.3.1 范围扫描示例
指定一个IP地址然后加一个CIDR的掩码位,如192.168.100.22/24,当然写成192.168.100.0/24也是一样的,因为nmap需要的是参考IP 。如果扫描的是范围地址,可以192.168.100.1-254这样的书写方式。
[root@xuexi ~]# nmap 192.168.100.1/24
Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-20 13:22 CSTNmap scan report for 192.168.100.1Host is up (0.00053s latency).
Not shown: 992 filtered ports
PORT STATE SERVICE21/tcp open ftp135/tcp open msrpc139/tcp open netbios-ssn443/tcp open https445/tcp open microsoft-ds902/tcp open iss-realsecure912/tcp open apex-mesh5357/tcp open wsdapi
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.100.2Host is up (0.000018s latency).
Not shown: 999 closed ports
PORT STATE SERVICE53/tcp open domain
MAC Address: 00:50:56:E2:16:04 (VMware)
Nmap scan report for 192.168.100.70Host is up (0.00014s latency).
Not shown: 999 closed ports
PORT STATE SERVICE22/tcp open sshMAC Address: 00:0C:29:71:81:64 (VMware)
Nmap scan report for 192.168.100.254Host is up (0.000095s latency).
All 1000 scanned ports on 192.168.100.254 are filtered
MAC Address: 00:50:56:ED:A1:04 (VMware)
Nmap scan report for 192.168.100.62Host is up (0.0000030s latency).
Not shown: 999 closed ports
PORT STATE SERVICE22/tcp open sshNmap done: 256 IP addresses (5 hosts up) scanned in 7.96 seconds
一般來說,連接埠全部關閉的很可能不是計算機,而可能是路由器、虛擬網路卡等設備。
1.4 連接埠狀態說明
Nmap功能越來越多,但它賴以成名的是它的核心功能-連接埠掃描。
Nmap把連接埠分成六個狀態:open(開放的),closed(關閉的),filtered(被過濾的),unfiltered(未被過濾的),open|filtered(開放或被過濾的),或closed|filtered(關閉或被過濾的)。
這些狀態並非連接埠本身的性質,而是描述Nmap怎麼看待它們。例如,對於相同的目標機器的135/tcp端口,從同網絡掃描顯示它是開放的,而跨網絡做完全相同的掃描則可能顯示它是filtered(被過濾的)。
1.open:(開放的)用程式正在該連接埠接收TCP或UDP封包。它常常是連接埠掃描的主要目標。
2.closed:(關閉的)關閉的連接埠對於Nmap也是可存取的(它接受Nmap的探測封包並作出回應),但沒有應用程式在其上監聽。
3.filtered:(被過濾的)由於目標上設定了包過濾(如防火牆設備),使得探測報文被阻止到達端口,Nmap無法確定該端口是否開放。過濾可能來自專業的防火牆設備,路由器規則或主機上的軟體防火牆。
4.unfiltered:(未被過濾的)未被過濾狀態意味著連接埠可訪問,但Nmap不能確定它是開放還是關閉。用其它類型的掃描如視窗掃描、SYN掃描、FIN掃描來掃描這些未被過濾的連接埠可以幫助確定連接埠是否開放。
5.open|filtered:(開放或被過濾的):當無法確定連接埠是開放還是被過濾的,Nmap就把該連接埠分割成這種狀態。開放的連接埠不響應就是一個例子。沒有回應也可能意味著目標主機上報文過濾器丟棄了偵測封包或它引發的任何回應。因此Nmap無法確定該連接埠是開放的還是被過濾的。
6.closed|filtered:(關閉或被過濾的)該狀態用於Nmap無法確定連接埠是關閉的還是被過濾的。它只可能出現在IPID Idle掃描中。
1.5 時間參數最佳化
改善掃描時間的技術有:忽略非關鍵的偵測、升級最新版本的Nmap(文檔中說nmap版本越高效能越好)等。此外,最佳化時間參數也會帶來實質的最佳化,這些參數如下:
TIMING AND PERFORMANCE:
-T<0-5>: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup : Parallel host scan group sizes
--min-parallelism/max-parallelism : Probe parallelization
--min-rtt-timeout/max-rtt -timeout/initial-rtt-timeout : Specifies probe round trip time.
--max-retries : Caps number of port scan probe retransmissions.
## - -host-timeout : Give up on target after this long
--scan-delay/--max-scan-delay : Adjust delay between probes
# --min-rate : Send packets no slower than per second
--max-rate : Send packets no faster than per second
其中最主要的是前3種:#########1.-T<0-5>:這表示直接使用namp提供的掃描模板,不同的模板適用於不同的環境下,預設的範本為"-T 3",具體的看man文檔,其實用的很少。 ############2.--min-hostgroup ; --max-hostgroup (調整平行掃描群組的大小)########## Nmap具有並行掃描多主機連接埠的能力,實作方法是將所有給定的目標IP按空間分成群組,然後一次掃描一個群組。通常組分的越大效率越高,但分組的缺點是只有當整個組掃描結束後才會回傳該組中主機掃描結果。例如,群組的大小定義為50,則只有前50個主機掃描結束後才能得到這50個IP內的結果。 ###默认方式下,Nmap采取折衷的方法。开始扫描时的组较小,默认值为5,这样便于尽快产生结果,随后增长组的大小,默认最大为1024。但最小和最大确切的值则依赖于所给定的选项。
--max-hostgroup选项用于说明使用最大的组,Nmap不会超出这个大小。--min-hostgroup选项说明最小的组,Nmap会保持组大于这个值。如果在指定的接口上没有足够的目标主机来满足所指定的最小值,Nmap可能会采用比所指定的值小的组。
这些选项的主要用途是说明一个最小组的大小,使得整个扫描更加快速。通常选择256来扫描C类网段,对于端口数较多的扫描,超出该值没有意义,因为它只是分组了,但是cpu资源是有限的。对于端口数较少的扫描,2048或更大的组大小是有帮助的。
3.--min-parallelism ; --max-parallelism (调整探测报文的并行度,即探针数)
这些选项用于控制主机组的探测报文数量,可用于端口扫描和主机发现 。默认状态下,Nmap基于网络性能计算一个理想的并行度,这个值经常改变。如果报文被丢弃,Nmap降低速度,探测报文数量减少。随着网络性能的改善,理想的探测报文数量会缓慢增加。默认状态下,当网络不可靠时,理想的并行度值可能为1,在好的条件下,可能会增长至几百。
最常见的应用是--min-parallelism值大于1,以加快性能不佳的主机或网络的扫描。这个选项具有风险,如果过高则影响准确度,同时也会降低Nmap基于网络条件动态控制并行度的能力。
一般说来,这个值要设置的和--min-hostgroup的值相等或大于它性能才会提升 。
1.6 扫描操作系统类型
扫描操作系统。操作系统的扫描有可能会出现误报。
C:\Windows\system32>nmap -O 127.0.0.1
Starting Nmap 7.40 ( https://nmap.org ) at 2017-03-09 13:18 CSTNmap scan report for lmlicenses.wip4.adobe.com (127.0.0.1)
Host is up (0.000046s latency).
Not shown: 990 closed ports
PORT STATE SERVICE21/tcp open ftp135/tcp open msrpc443/tcp open https445/tcp open microsoft-ds902/tcp open iss-realsecure912/tcp open apex-mesh5357/tcp open wsdapi5678/tcp open rrac10000/tcp open snet-sensor-mgmt65000/tcp open unknown
Device type: general purpose
Running: Microsoft Windows 10OS CPE: cpe:/o:microsoft:windows_10
OS details: Microsoft Windows 10 1511Network Distance: 0 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 2.33 seconds
1.7 快速扫描存活的主机
要快速扫描存活的主机,需要使用的几个重要选项是:
-n:永远不要DNS解析。这个不管是给定地址扫描还是给定网址扫描,加上它速度都会极速提升
-sn:禁止端口扫描
-PE:只根据echo回显判断主机在线,这种类型的选项使用越多,速度越慢,如-PM -PP选项都是类似的,但他们速度要慢的多的多,PE有个缺点,不能穿透防火墙
--min-hostgroup N:当IP太多时,nmap需要分组,然后并扫描,使用该选项可以指定多少个IP一组
--min-parallelism N:这个参数非常关键,为了充分利用系统和网络资源,设置好合理的探针数。一般来说,设置的越大速度越快,且和min-hostgroup的值相等或大于它性能才会提升
示例一:扫描192.168.100.0/24网段存活的机器
[root@server2 ~]# nmap -sn -n -PE --min-hostgroup 1024 --min-parallelism 1024 192.168.100.1/24Warning: You specified a highly aggressive --min-hostgroup.
Warning: Your --min-parallelism option is pretty high! This can hurt reliability.
Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-20 14:30 CSTNmap scan report for 192.168.100.1Host is up (0.00036s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.100.2Host is up (0.000051s latency).
MAC Address: 00:50:56:E2:16:04 (VMware)
Nmap scan report for 192.168.100.70Host is up (0.000060s latency).
MAC Address: 00:0C:29:71:81:64 (VMware)
Nmap scan report for 192.168.100.254Host is up (0.000069s latency).
MAC Address: 00:50:56:ED:A1:04 (VMware)
Nmap scan report for 192.168.100.62Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 0.26 seconds
255个局域网地址只用了半秒钟。可谓是极速。
再测试扫描下以www.baidu.com作为参考地址的地址空间。
[root@server2 ~]# nmap -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -oX nmap_output.xml www.baidu.com/16…….省略部分结果
Nmap scan report for 163.177.81.145Host is up (0.072s latency).
Nmap done: 65536 IP addresses (144 hosts up) scanned in 19.15 seconds
可以看到,65535个地址只需19秒就扫描完成了。速度是相当的快。
1.8 快速扫描端口
既然是扫描端口,就不能使用-sn选项,也不能使用-PE,否则不会返回端口状态,只会返回哪些主机。
[root@server2 ~]# nmap -n -p 20-2000 --min-hostgroup 1024 --min-parallelism 1024 192.168.100.70/24Warning: You specified a highly aggressive --min-hostgroup.
Warning: Your --min-parallelism option is pretty high! This can hurt reliability.
Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-20 14:52 CSTNmap scan report for 192.168.100.1Host is up (0.00084s latency).
Not shown: 1980 filtered ports
PORT STATE SERVICE21/tcp open ftpMAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.100.2Host is up (0.000018s latency).
Not shown: 1980 closed ports
PORT STATE SERVICE53/tcp open domain
MAC Address: 00:50:56:E2:16:04 (VMware)
Nmap scan report for 192.168.100.70Host is up (0.000041s latency).
Not shown: 1980 closed ports
PORT STATE SERVICE22/tcp open sshMAC Address: 00:0C:29:71:81:64 (VMware)
Nmap scan report for 192.168.100.254Host is up (0.000035s latency).
All 1981 scanned ports on 192.168.100.254 are filtered
MAC Address: 00:50:56:ED:A1:04 (VMware)
Nmap scan report for 192.168.100.62Host is up (0.0000020s latency).
Not shown: 1980 closed ports
PORT STATE SERVICE22/tcp open sshNmap done: 256 IP addresses (5 hosts up) scanned in 2.38 seconds