1. 概述
Nmap是一款開源免費(fèi)的網(wǎng)絡(luò)發(fā)現(xiàn)(Network Discovery)和安全審計(jì)(Security Auditing)工具。Nmap是一個(gè)網(wǎng)絡(luò)連接端掃描軟件,用來掃描網(wǎng)上電腦開放的網(wǎng)絡(luò)連接端。確定哪些服務(wù)運(yùn)行在哪些連接端,并且推斷計(jì)算機(jī)運(yùn)行哪個(gè)操作系統(tǒng)(這是亦稱 fingerprinting)。它是網(wǎng)絡(luò)管理員必用的軟件之一,以及用以評(píng)估網(wǎng)絡(luò)系統(tǒng)安全。
2. 基本功能
1)探測(cè)目標(biāo)主機(jī)是否在線
2)掃描主機(jī)端口,嗅探所提供的網(wǎng)絡(luò)服務(wù)
3)推斷主機(jī)所用的操作系統(tǒng)
3. 工具安裝
1)windows操作系統(tǒng)Nmap工具安裝
在Nmap官網(wǎng)www.nmap.org直接下載安裝Nmap工具最新版本,如nmap-7.80-setup.exe,雙擊進(jìn)行安裝,安裝過程中會(huì)自動(dòng)彈出安裝npcap-0.9982.exe窗口,點(diǎn)擊確認(rèn)安裝,并按照提示一步一步安裝完成。
2)linux操作系統(tǒng)Nmap工具安裝
在Nmap官網(wǎng)www.nmap.org直接下載安裝Nmap工具最新版本,如nmap-7.80-1.x86_64.rpm,將工具安裝包下載到本地,然后使用如下命令安裝即可(切換到安裝包目錄)
安裝命令:rpm -ivh nmap-7.80-1.x86_64.rpm
卸載命令:rpm -e nmap-7.80-1.x86_64.rpm
4. 掃描原理
4.1. TCP SYN掃描(-sS)
Nmap默認(rèn)掃描方式,通常被稱為半開放掃描。發(fā)送SYN包到目標(biāo)端口,若收到SYN/ACK回復(fù),則端口被認(rèn)為開放狀態(tài);若收到RST回復(fù),則端口被認(rèn)為關(guān)閉狀態(tài);若沒有收到回復(fù),則認(rèn)為該端口被屏蔽。因?yàn)閮H發(fā)送SYN包對(duì)目標(biāo)主機(jī)的特定端口,但不建立完整的TCP連接,所以相對(duì)比較隱蔽,而且效率比較高,適用范圍廣。
4.2. TCP connect掃描(-sT)
使用系統(tǒng)網(wǎng)絡(luò)API connect向目標(biāo)主機(jī)的端口發(fā)起連接,如果無法連接,說明該端口關(guān)閉。該方式掃描速度比較慢,而且由于建立完整的TCP連接會(huì)在目標(biāo)主機(jī)上留下記錄信息,不夠隱蔽。
4.3. TCP ACK 掃描(-sA)
向目標(biāo)主機(jī)的端口發(fā)送ACK包,如果收到RST包,說明該端口沒有被防火墻屏蔽;沒有收到RST包,說明被屏蔽。該方式只能用于確定防火墻是否屏蔽某個(gè)端口,可以輔助TCP SYN的方式來判斷目標(biāo)主機(jī)防火墻的狀況
4.4. TCP FIN/Xmas/NULL掃描(-sN/sF/sX)
這三種掃描方式被稱為秘密掃描,因?yàn)橄鄬?duì)比較隱蔽。FIN掃描向目標(biāo)主機(jī)的端口發(fā)送的TCP FIN 包括Xmas tree包或NULL包,如果收到對(duì)方的RST回復(fù)包,那么說明該端口是關(guān)閉的;沒有收到RST包說明該端口可能是開放的或者被屏蔽了。其中Xmas tree包是指flags中FIN URG PUSH被置為1的TCP包;NULL包是指所有的flags都為0的TCP包。
4.5. UDP掃描(-sU)
UDP掃描用于判斷UDP端口的情況,向目標(biāo)主機(jī)的UDP端口發(fā)送探測(cè)包,如果收到回復(fù)ICMP port unreachable就說明該端口是關(guān)閉的;如果沒有收到回復(fù),那說明該UDP端口可能是開放的或者屏蔽的。因此,通過反向排除法的方式來判斷哪些UDP端口是可能處于開放狀態(tài)的。
4.6. 其他方式(-sY/-sZ)
除了以上幾種常用的方式外,Nmap還支持多種其他的探測(cè)方式。例如使用SCTP INIT/Cookie-ECHO方式是來探測(cè)SCTP的端口開放情況;使用IP protocol方式來探測(cè)目標(biāo)主機(jī)支持的協(xié)議類型(tcp/udp/icmp/sctp等等);使用idle scan方式借助僵尸主機(jī)來掃描目標(biāo)主機(jī),以達(dá)到隱蔽自己的目的;或者使用FTP bounce scan,借助FTP允許的代理服務(wù)掃描其他的主機(jī),同樣達(dá)到隱蔽自己的目的
5. 工具使用
1)直接使用Nmap命令行方式

2)使用Zenmap圖形界面方式(詳見Zenmap工具使用)
3)常見參數(shù)解讀
-sT TCP connect()掃描,這種方式會(huì)在目標(biāo)主機(jī)的日志中記錄大批連接請(qǐng)求和錯(cuò)誤信息
-sS 半開掃描,很少有系統(tǒng)能把它記入系統(tǒng)日志。不過,需要Root權(quán)限
-sP ping掃描,Nmap在掃描端口時(shí),默認(rèn)都會(huì)使用ping掃描,只有主機(jī)存活,Nmap才會(huì)繼續(xù)掃描
-sU UDP端口掃描,,但UDP掃描是不可靠的
-sV 探測(cè)端口服務(wù)版本
-Pn 掃描之前不需要用ping命令,有些防火墻禁止ping命令。可以使用此選項(xiàng)進(jìn)行掃描
-A 選項(xiàng)用于使用進(jìn)攻性方式掃描
-T4 指定掃描過程使用的時(shí)序,總有6個(gè)級(jí)別(0-5),級(jí)別越高,掃描速度越快,但也容易被防火墻或IDS檢測(cè)并屏蔽掉,在網(wǎng)絡(luò)通訊狀況較好的情況下推薦使用T4
-v 表示顯示詳細(xì)信息,在掃描過程中顯示掃描的細(xì)節(jié)(如-vv顯示更詳細(xì)的信息)
-p 掃描指定端口(如-p 80)
--script 后面帶插件名稱,使用相應(yīng)的插件(如--script ssl-enum-ciphers,掃描SSL/TLS算法套件)
-F 快速模式,僅掃描TOP 100的端口
-oN 標(biāo)準(zhǔn)保存,將掃描結(jié)果保存到指定的文件中(如-oN AAA.txt)
-oX xml文件格式保存(如-oX D:aaa.xml),常用xml文件格式
-oA 掃描結(jié)果以標(biāo)準(zhǔn)格式、XML格式和Grep格式一次性保存,分別存放在bbb.nmap,bbb.xml和bbb.gnmap中(如-oA bbb)
-O 遠(yuǎn)程操作系統(tǒng)檢測(cè),存在誤報(bào)
-h 幫助選項(xiàng)
6. 常見場(chǎng)景掃描
1)A simple subnet scan
nmap <IP>
2)Scan all the TCP ports of a host
nmap -p- <IP>
3)Performing a TCP SYN scan
nmap -sS -p- <IP>
4)Performing a UDP Port scan
nmap -sU -r -v <IP>
7. 掃描結(jié)果端口狀態(tài)
1)open:端口是開放的
2)losed:端口是關(guān)閉的
3)filtered:端口被防火墻IDS/IPS屏蔽,無法確定其狀態(tài)
4)unfiltered:端口沒有被屏蔽,但是否開放需要進(jìn)一步確定
5)open|filtered:端口是開放的或被屏蔽
6)closed|filtered :端口是關(guān)閉的或被屏蔽
Zenmap(The GUI version of Nmap)
1. 工具安裝
1)Windows系統(tǒng)Zenmap工具安裝
無需單獨(dú)安裝,安裝Nmap時(shí)已經(jīng)將Zenmap安裝,可直接使用。
2)Linux操作系統(tǒng)Zenmap工具安裝
先安裝nmap,再安裝zenmap(或直接安裝nmap/zenmap集成包nmap-7.80-1.src.rpm)
安裝nmap/zenmap集成包:rpm -ivh nmap-7.80-1.src.rpm
安裝Zenmap:rpm -ivh zenmap-7.80-1.noarch.rpm
2. 工具使用

3. 工具默認(rèn)掃描策略
1)Intense scan(nmap -T4 -A -v)
2)Intense scan plus UDP(nmap -sS -sU -T4 -A -v)
3)Intense scan, all TCP ports(nmap -p 1-65535 -T4 -A -v)
4)Intense scan, no ping(nmap -T4 -A -v -Pn)
5)Ping scan(nmap -sn)
6)Quick scan(nmap -T4 -F)
7)Quick scan plus(nmap -sV -T4 -O -F --version-light)
8)Quick traceroute(nmap -sn --traceroute)
9)Regular scan(nmap)
10)Slow comprehensive scan(nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 --script "default or (discovery and safe)")