本文目錄:
1.1 選項說明
1.2 嘗試一次掃描
1.3 掃描目標說明
1.4 端口狀態說明
1.5 時間參數優化
1.6 掃描操作系統類型
1.7 快速掃描存活的主機
1.8 快速掃描端口
nmap一般就用來掃描主機是否在線(特別是掃描局域網內存活的機器)、開放了哪些端口。其他的功能用的比較少,做滲透的人可能要了解的多些。
1.1 選項說明
nmap需要自行安裝。
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
? -iR
? –exclude
? –excludefile
HOST DISCOVERY:
? -sL: List Scan – simply list targets to scan
? -sn: Ping Scan – disable port scan
? -Pn: Treat all hosts as online — skip host discovery
? -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
? –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
? -sI
? -sY/sZ: SCTP INIT/COOKIE-ECHO scans
? -sO: IP protocol scan
? -b
PORT SPECIFICATION AND SCAN ORDER:
? -p
??? Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
? -F: Fast mode – Scan fewer ports than the default scan
? -r: Scan ports consecutively – don’t randomize
? –top-ports
? –port-ratio
SERVICE/VERSION DETECTION:
? -sV: Probe open ports to determine service/version info
? -sR: Check what service uses opened ports using RPC scan
? –version-intensity
? –version-light: Limit to most likely probes (intensity 2)
? –version-all: Try every single probe (intensity 9)
? –version-trace: Show detailed version scan activity (for debugging)
SCRIPT SCAN:
? -sC: equivalent to –script=default
? –script=
? –script-args=
? –script-trace: Show all data sent and received
? –script-updatedb: Update the script database.
OS DETECTION:
? -O: Enable OS detection
? –osscan-limit: Limit OS detection to promising targets
? –osscan-guess: Guess OS more aggressively
TIMING AND PERFORMANCE:
? Options which take
? ‘s’ (seconds), ‘m’ (minutes), or ‘h’ (hours) to the value (e.g. 30m).
? -T: Set timing template (higher is faster)
? –min-hostgroup/max-hostgroup
? –min-parallelism/max-parallelism
? –min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout
????? probe round trip time.
? –max-retries
? –host-timeout
? –scan-delay/–max-scan-delay
? –min-rate
? –max-rate
FIREWALL/IDS EVASION AND SPOOFING:
? -f; –mtu
? -D
? -S
? -e
? -g/–source-port
? –data-length
? –ip-options
? –ttl
? –spoof-mac
? –badsum: Send packets with a bogus TCP/UDP/SCTP checksum
OUTPUT:
? -oN/-oX/-oS/-oG
???? and Grepable format, respectively, to the given filename.
? -oA
? -v: Increase verbosity level (use -vv or more for greater effect)
? -d: Increase debugging level (use -dd or more for greater effect)
? –reason: Display the reason a port is in a particular state
? –open: Only show open (or possibly open) ports
? –packet-trace: Show all packets sent and received
? –iflist: Print host interfaces and routes (for debugging)
? –log-errors: Log errors/warnings to the normal-format output file
? –append-output: Append to rather than clobber specified output files
? –resume
? –stylesheet
? –webxml: Reference stylesheet from Nmap.Org for more portable XML
? –no-stylesheet: Prevent associating of XSL stylesheet w/XML output
MISC:
? -6: Enable IPv6 scanning
? -A: Enable OS detection, version detection, script scanning, and traceroute
? –datadir
? –send-eth/–send-ip: Send using raw ethernet frames or IP packets
? –privileged: Assume that the user is fully privileged
? –unprivileged: Assume the user lacks raw socket privileges
? -V: Print version number
? -h: Print this help summary page.
EXAMPLES:
? nmap -v -A scanme.nmap.org
? nmap -v -sn 192.168.0.0/16 10.0.0.0/8
? nmap -v -iR 10000 -Pn -p 80
常用的就上面標紅的幾個。下面是解釋:
-iL <inputfilename>:從輸入文件中讀取主機或者IP列表作為探測目標-sn: PING掃描,但是禁止端口掃描。默認總是會掃描端口。禁用端口掃描可以加速掃描主機-n/-R: 永遠不要/總是進行DNS解析,默認情況下有時會解析-PE/PP/PM:分別是基于echo/timestamp/netmask的ICMP探測報文方式。使用echo最快-sS/sT/sA/sW:TCP SYN/Connect()/ACK/Window,其中sT掃描表示TCP掃描-sU:UDP掃描-sO:IP掃描-p <port ranges>: 指定掃描端口--min-hostgroup/max-hostgroup <size>: 對目標主機進行分組然后組之間并行掃描--min-parallelism/max-parallelism <numprobes>: 設置并行掃描的探針數量-oN/-oX/ <file>: 輸出掃描結果到普通文件或XML文件中。輸入到XML文件中的結果是格式化的結果-v:顯示詳細信息,使用-vv或者更多的v顯示更詳細的信息
1.2 嘗試一次掃描
nmap掃描一般會比較慢,特別是掃描非本機的時候。
[root@server2 ~]# nmap 127.0.0.1Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-20 13:03 CSTNmap scan report for localhost (127.0.0.1) Host is up (0.0000010s latency). Not shown: 998 closed ports PORT STATE SERVICE22/tcp open ssh25/tcp open smtp
只掃描出了兩個端口,但是不代表真的只開了兩個端口,這樣不加任何參數的nmap將自動決定掃描1000個高危端口,但哪些是高危端口由nmap決定。從結果中也能看出來,”NOT shown:998 closed ports”表示998個關閉的端口未顯示出來,隨后又顯示了2個open端口,正好1000個。雖說默認只掃描1000個,但常見的端口都能掃描出來。
從虛擬機掃描win主機看看。可以感受到,掃描速度明顯降低了。
[root@server2 ~]# nmap 192.168.0.122 Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-20 13:11 CSTNmap scan report for 192.168.0.122Host is up (1.2s latency). Not shown: 990 closed ports PORT STATE SERVICE21/tcp open ftp135/tcp open msrpc139/tcp open netbios-ssn443/tcp open https445/tcp open microsoft-ds514/tcp filtered shell902/tcp open iss-realsecure912/tcp open apex-mesh1583/tcp open simbaexpress5357/tcp open wsdapi Nmap done: 1 IP address (1 host up) scanned in 8.38 seconds
可以指定”-p [1-65535]”來掃描所有端口,或者使用”-p-“選項也是全面掃描。
[root@xuexi ~]# nmap -p- 127.0.0.1
nmap默認總是會掃描端口,可以使用-sn選項禁止掃描端口,以加速掃描主機是否存活。
1.3 掃描目標說明
Nmap支持CIDR風格的地址,Nmap將會掃描所有和該參考IP地址具有相同cidr位數的所有IP地址或主機。
例如192.168.10.0/24將掃描192.168.10.0和192.168.10.255之間的256臺主機,192.168.10.40/24會做同樣的事情。假設主機scanme.nmap.org的IP地址是205.217.153.62,scanme.nmap.org/16將掃描205.217.0.0和205.217.255.255之間的65536個IP地址。掩碼位所允許的最小值是/1,這將會掃描半個互聯網,最大值是/32,這將會掃描該主機或IP地址,因為所有主機位都固定了。
CIDR標志位很簡潔但有時候不夠靈活。例如也許想要掃描192.168.0.0/16,但略過任何以”.0″或者”.255″結束的IP地址,因為它們通常是網段地址或廣播地址。可以用逗號分開的數字或范圍列表為IP地址指定它的范圍。例如”192.168.0-255.1-254″將略過該范圍內以”.0″和”.255″結束的地址。范圍不必限于最后的8位:”0-255.0-255.13.37″將在整個互聯網范圍內掃描所有以”13.37″結束的地址。
Nmap命令行接受多個主機說明,它們不必是相同類型。如:
nmap www.hostname.com 192.168.0.0/8 10.0.0,1,3-7.0-255
雖然目標通常在命令行指定,下列選項也可用來控制目標的選擇:
-
-iL
(從列表中輸入)
從
-
–exclude
(排除主機/網絡) -
–excludefile
(排除文件中的列表),這和–exclude的功能一樣,只是所排除的目標是用 提供的。
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: Set timing template (higher is faster)
? –min-hostgroup/max-hostgroup
? –min-parallelism/max-parallelism
? –min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout
? –max-retries
? –host-timeout
? –scan-delay/–max-scan-delay
? –min-rate
? –max-rate
其中最主要的是前3種:
1.-T:這表示直接使用namp提供的掃描模板,不同的模板適用于不同的環境下,默認的模板為”-T 3″,具體的看man文檔,其實用的很少。
2.–min-hostgroup
Nmap具有并行掃描多主機端口的能力,實現方法是將所有給定的目標IP按空間分成組,然后一次掃描一個組。通常組分的越大效率越高,但分組的缺點是只有當整個組掃描結束后才會返回該組中主機掃描結果。例如,組的大小定義為50,則只有前50個主機掃描結束后才能得到這50個IP內的結果。
默認方式下,Nmap采取折衷的方法。開始掃描時的組較小,默認值為5,這樣便于盡快產生結果,隨后增長組的大小,默認最大為1024。但最小和最大確切的值則依賴于所給定的選項。
–max-hostgroup選項用于說明使用最大的組,Nmap不會超出這個大小。–min-hostgroup選項說明最小的組,Nmap會保持組大于這個值。如果在指定的接口上沒有足夠的目標主機來滿足所指定的最小值,Nmap可能會采用比所指定的值小的組。
這些選項的主要用途是說明一個最小組的大小,使得整個掃描更加快速。通常選擇256來掃描C類網段,對于端口數較多的掃描,超出該值沒有意義,因為它只是分組了,但是cpu資源是有限的。對于端口數較少的掃描,2048或更大的組大小是有幫助的。
3.–min-parallelism
這些選項用于控制主機組的探測報文數量,可用于端口掃描和主機發現。默認狀態下,Nmap基于網絡性能計算一個理想的并行度,這個值經常改變。如果報文被丟棄,Nmap降低速度,探測報文數量減少。隨著網絡性能的改善,理想的探測報文數量會緩慢增加。默認狀態下,當網絡不可靠時,理想的并行度值可能為1,在好的條件下,可能會增長至幾百。
最常見的應用是–min-parallelism值大于1,以加快性能不佳的主機或網絡的掃描。這個選項具有風險,如果過高則影響準確度,同時也會降低Nmap基于網絡條件動態控制并行度的能力。
一般說來,這個值要設置的和–min-hostgroup的值相等或大于它性能才會提升。
1.6 掃描操作系統類型
掃描操作系統。操作系統的掃描有可能會出現誤報。
C:windowssystem32>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