【2023最新版】超詳細(xì)NMAP安裝保姆級(jí)教程,Nmap的介紹、功能并進(jìn)行網(wǎng)絡(luò)掃描,收藏這一
?白嫖微信公眾號(hào):計(jì)算機(jī)工具教學(xué) 作者:計(jì)算機(jī)工具教學(xué)?
白嫖VMware軟件?:https://mp.weixin.qq.com/s/6eqIAU45OM1lWv5TpP26Aw
簡(jiǎn)介
從誕生之初,Nmap就一直是網(wǎng)絡(luò)發(fā)現(xiàn)和攻擊界面測(cè)繪的首選工具。從主機(jī)發(fā)現(xiàn)和端口掃描,到操作系統(tǒng)檢測(cè)和IDS規(guī)避/欺騙,Nmap是大大小小黑客行動(dòng)的基本工具。
為了繪制網(wǎng)絡(luò)拓?fù)鋱D,Nmap的發(fā)送特制的數(shù)據(jù)包到目標(biāo)主機(jī),然后對(duì)返回?cái)?shù)據(jù)包進(jìn)行分析。Nmap是一款枚舉和測(cè)試網(wǎng)絡(luò)的強(qiáng)大工具。
功能
1.主機(jī)探測(cè)
2.端口掃描
3.版本檢測(cè)
4.支持探測(cè)腳本的編寫
安裝
首先訪問(wèn)Nmap官網(wǎng):http://nmap.org,獲得windows對(duì)應(yīng)版本的安裝包。
圖形化:Zenmap

下載對(duì)應(yīng)安裝包后,點(diǎn)擊安裝,根據(jù)提示,一直安裝即可。


選擇并更改安裝路徑,點(diǎn)擊安裝

軟件主界面

可以看出其內(nèi)置了很多掃描類型,支持查看多種掃描結(jié)果,UI界面比較直觀
此外,還可以在linux終端內(nèi)安裝,更加靈活。

Nmap使用
查看linux下nmap的幫助信息。(執(zhí)行命令nmpa -h)
Nmap 7.80 ( https://nmap.org )
Usage: nmap [Scan Type(s)] [Options] {target specification}
可見nmap指令的一般格式是:nmap \[掃描類型(可疊加)\] \[選項(xiàng)\] \[目標(biāo)\]
其中目標(biāo)可以有如下格式:
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 <inputfilename>: Input from list of hosts/networks
-iR <num hosts>: Choose random targets
--exclude <host1[,host2][,host3],...>: Exclude hosts/networks
--excludefile <exclude_file>: Exclude list from file
其他可以指定的參數(shù)(部分)有:
HOST DISCOVERY: 目標(biāo)勘測(cè)的手段
SCAN TECHNIQUES: 指定掃描的技術(shù)
PORT SPECIFICATION AND SCAN ORDER: 指定端口和掃描順序
SERVICE/VERSION DETECTION: 服務(wù)/版本 勘測(cè)
OS DETECTION: 操作系統(tǒng)勘測(cè)
參考windows上有UI的nmap版本內(nèi)置的掃描類型:
?Intense scan ? ? ? ? ? ? ? ? ?nmap -T4 -A -v www.baidu.com
?Intense scan plus UDP ? ? ? ? nmap -sS -sU -T4 -A -v www.baidu.com
?Intense scan, all TCP ports ? nmap -p 1-65535 -T4 -A -v www.baidu.com
?Intense scan, no ping ? ? ? ? nmap -T4 -A -v -Pn www.baidu.com
?Ping scan ? ? ? ? ? ? ? ? ? ? nmap -sn www.baidu.com
?Quick scan ? ? ? ? ? ? ? ? ? ?nmap -T4 -F www.baidu.com
?Quick scan plus ? ? ? ? ? ? ? nmap -sV -T4 -O -F \--version-light www.baidu.com
?Quick traceroute ? ? ? ? ? ? ?nmap -sn \--traceroute www.baidu.com
?Regular scan ? ? ? ? ? ? ? ? ?nmap www.baidu.com
?Slow comprehensive scan ? ? ? nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 \--script \"default or (discovery and safe)\" www.baidu.com
利用Nmap實(shí)施網(wǎng)絡(luò)掃描
主機(jī)發(fā)現(xiàn)
原理
當(dāng)網(wǎng)絡(luò)不通時(shí),我們需要ping一下主機(jī),檢查網(wǎng)關(guān)是否正常,這與主機(jī)發(fā)現(xiàn)原理一樣。當(dāng)測(cè)試目標(biāo)是一個(gè)網(wǎng)絡(luò)時(shí),在線的主機(jī)才是我們的用主機(jī)發(fā)現(xiàn)的目標(biāo),nmap中提供了許多主機(jī)發(fā)現(xiàn)的方法,大多與TCP/IP協(xié)議簇中的協(xié)議有關(guān)。
1、跳過(guò)ping掃描階段:
nmap進(jìn)行其他掃描之前都會(huì)對(duì)目標(biāo)進(jìn)行一個(gè)ping掃描。如果目標(biāo)對(duì)ping 掃描無(wú)反應(yīng)將結(jié)束整個(gè)掃描過(guò)程。這種方法可以跳過(guò)那些沒有響應(yīng)的主機(jī),從而節(jié)省大量時(shí)間,但如果目標(biāo)在線只是采用某種手段屏蔽了ping 掃描,從而躲過(guò)我們的其他掃描操作,我們可以指定無(wú)論目標(biāo)是否響應(yīng)ping 掃描,毒藥將整個(gè)掃描過(guò)程完整的參數(shù)呈現(xiàn)出來(lái);如 nmap -PN 192.168.169.131。
2、僅使用ping協(xié)議進(jìn)行主機(jī)發(fā)現(xiàn):
有時(shí)需要對(duì)大量的主機(jī)掃描,nmap如果對(duì)一個(gè)目標(biāo)主機(jī)采取各種手段進(jìn)行掃描會(huì)花費(fèi)大量時(shí)間。這時(shí)我們只對(duì)目標(biāo)主機(jī)進(jìn)行掃描。如 nmap -sP 192.168.169.131。
3、使用ARP協(xié)議進(jìn)行主機(jī)發(fā)現(xiàn):
當(dāng)目標(biāo)主機(jī)與我們處于同一網(wǎng)段時(shí),使用ARP協(xié)議掃描是最佳選擇。不僅速度快,掃描結(jié)果精準(zhǔn)。因?yàn)闆]有任何的安全措施會(huì)阻止正常的arp請(qǐng)求。如 nmap -PR 192.168.169.131。
4、使用TCP協(xié)議進(jìn)行主機(jī)發(fā)現(xiàn):
TCP協(xié)議主要是三次握手構(gòu)成,主動(dòng)端發(fā)送syn報(bào)文,被動(dòng)端回應(yīng)syn+ack報(bào)文,然后主動(dòng)端回應(yīng)ack。利用此過(guò)程,nmap向目標(biāo)發(fā)送syn報(bào)文,如果對(duì)方回應(yīng)了syn+ack則說(shuō)明在線。半開掃描,如nmap -sS 192.168.169.131。全開掃描,如nmap -sT 192.168.169.131。
5、使用UDP協(xié)議進(jìn)行主機(jī)發(fā)現(xiàn):
UDP相比較TCP簡(jiǎn)單,但掃描時(shí)并不比TCP協(xié)議方便,而且花費(fèi)時(shí)間長(zhǎng),因此這種掃描不常用。如nmap -sU 192.168.169.131。
用法
通常主機(jī)發(fā)現(xiàn)并不單獨(dú)使用,而只是作為端口掃描、版本偵測(cè)、OS偵測(cè)先行步驟。而在某些特殊應(yīng)用(例如確定大型局域網(wǎng)內(nèi)活動(dòng)主機(jī)的數(shù)量),可能會(huì)單獨(dú)專門適用主機(jī)發(fā)現(xiàn)功能來(lái)完成。
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
?-n/-R: Never do DNS resolution/Always resolve [default: sometimes]
?--dns-servers <serv1[,serv2],...>: Specify custom DNS servers
?--system-dns: Use OS's DNS resolver
?--traceroute: Trace hop path to each host
其中,比較常用的使用的是-sn,表示只單獨(dú)進(jìn)行主機(jī)發(fā)現(xiàn)過(guò)程;-Pn表示直接跳過(guò)主機(jī)發(fā)現(xiàn)而進(jìn)行端口掃描等高級(jí)操作(如果已經(jīng)確知目標(biāo)主機(jī)已經(jīng)開啟,可用該選項(xiàng));-n,如果不想使用DNS或reverse DNS解析,那么可以使用該選項(xiàng)。
操作
命令:nmap -sn IP

端口掃描
原理
nmap向目標(biāo)主機(jī)發(fā)送報(bào)文并根據(jù)返回報(bào)文從而認(rèn)定端口的6種狀態(tài)。(注意:這六種狀態(tài)只是namp認(rèn)為的端口狀態(tài),例如:有些主機(jī)或者防火墻會(huì)返回一些不可靠的報(bào)文從而妨礙nmap對(duì)端口開放問(wèn)題的確認(rèn))。
Open(開放的):端口處于開放狀態(tài),意味著目標(biāo)機(jī)器上的應(yīng)用程序正在該端口監(jiān)聽連接/報(bào)文;
Closed(關(guān)閉的):端口處于關(guān)閉狀態(tài)。這里我們值得注意的是關(guān)閉的端口也是可訪問(wèn)的,只是該端口沒有應(yīng)用程序在它上面監(jiān)聽,但是他們隨時(shí)可能開放;
Filtered(過(guò)濾的):由于包過(guò)濾阻止探測(cè)報(bào)文到達(dá)端口, Nmap 無(wú)法確定該端口是否開放。過(guò)濾可能來(lái)自專業(yè)的防火墻設(shè)備,路由器規(guī)則或者主機(jī)上的軟件防火墻;
Unfiltered(未被過(guò)濾的):意味著端口可訪問(wèn),但 Nmap 不能確定它是開放還是關(guān)閉。這種狀態(tài)和filtered的區(qū)別在于:unfiltered的端口能被nmap訪問(wèn),但是nmap根據(jù)返回的報(bào)文無(wú)法確定端口的開放狀態(tài),而filtered的端口直接就沒能夠被nmap訪問(wèn)。端口被定義為Unfilterd只會(huì)發(fā)生在TCP ack掃描類型時(shí)當(dāng)返回RST的報(bào)文。而端口被定義為filtered 狀態(tài)的原因是是報(bào)文被防火墻設(shè)備,路由器規(guī)則,或者防火墻軟件攔截,無(wú)法送達(dá)到端口,這通常表現(xiàn)為發(fā)送NMAP的主機(jī)收到ICMP報(bào)錯(cuò)報(bào)文,或者主機(jī)通過(guò)多次重復(fù)發(fā)送沒有收到任何回應(yīng))。
Open|filtered狀態(tài):這種狀態(tài)主要是nmap無(wú)法區(qū)別端口處于open狀態(tài)還是filtered狀態(tài)。這種狀態(tài)只會(huì)出現(xiàn)在open端口對(duì)報(bào)文不做回應(yīng)的掃描類型中,如:udp,ip protocol ,TCP null,fin,和xmas掃描類型。
Closed|filtered狀態(tài):這種狀態(tài)主要出現(xiàn)在nmap無(wú)法區(qū)分端口處于closed還是filtered時(shí)。
用法
掃描方式選項(xiàng)
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 <flags>: Customize TCP scan flags
?-sI <zombie host[:probeport]>: Idle scan
?-sY/sZ: SCTP INIT/COOKIE-ECHO scans
?-sO: IP protocol scan
?-b <FTP relay host>: FTP bounce scan
端口參數(shù)與掃描順序:
PORT SPECIFICATION AND SCAN ORDER:
?-p <port ranges>: Only scan specified ports
? ?Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
?--exclude-ports <port ranges>: Exclude the specified ports from scanning
?-F: Fast mode - Scan fewer ports than the default scan
?-r: Scan ports consecutively - don't randomize
?--top-ports <number>: Scan <number> most common ports
?--port-ratio <ratio>: Scan ports more common than <ratio>
操作
命令:nmap --sS --sU --T4 --top-ports 300 www.baidu.com
參數(shù):
-sS表示使用TCP SYN方式掃描TCP端口;
-sU表示掃描UDP端口;
-T4表示時(shí)間級(jí)別配置4級(jí);
–top-ports 300表示掃描最有可能開放的300個(gè)端口(TCP和UDP分別有300個(gè)端口)。

從上圖中,我們看到掃描結(jié)果,在掃描的300個(gè)端口中,有298個(gè)是關(guān)閉的;開放的 分別是80和443端口。
版本偵測(cè)
原理
版本偵測(cè)主要分為以下幾個(gè)步驟:
首先檢查open與open|filtered狀態(tài)的端口是否在排除端口列表內(nèi)。如果在排除列表,將該端口剔除。
如果是TCP端口,嘗試建立TCP連接。嘗試等待片刻(通常6秒或更多,具體時(shí)間可以查詢文件nmap-services-probes中Probe TCP NULL q||對(duì)應(yīng)的totalwaitms)。通常在等待時(shí)間內(nèi),會(huì)接收到目標(biāo)機(jī)發(fā)送的"WelcomeBanner"信息。nmap將接收到的Banner與nmap-services-probes中NULL probe中的簽名進(jìn)行對(duì)比。查找對(duì)應(yīng)應(yīng)用程序的名字與版本信息。
如果通過(guò)"Welcome Banner"無(wú)法確定應(yīng)用程序版本,那么nmap再嘗試發(fā)送其他的探測(cè)包(即從nmap-services-probes中挑選合適的probe),將probe得到回復(fù)包與數(shù)據(jù)庫(kù)中的簽名進(jìn)行對(duì)比。如果反復(fù)探測(cè)都無(wú)法得出具體應(yīng)用,那么打印出應(yīng)用返回報(bào)文,讓用戶自行進(jìn)一步判定。
如果是UDP端口,那么直接使用nmap-services-probes中探測(cè)包進(jìn)行探測(cè)匹配。根據(jù)結(jié)果對(duì)比分析出UDP應(yīng)用服務(wù)類型。
如果探測(cè)到應(yīng)用程序是SSL,那么調(diào)用openSSL進(jìn)一步的偵查運(yùn)行在SSL之上的具體的應(yīng)用類型。
如果探測(cè)到應(yīng)用程序是SunRPC,那么調(diào)用brute-force RPC grinder進(jìn)一步探測(cè)具體服務(wù)。
用法
SERVICE/VERSION DETECTION:
?-sV: Probe open ports to determine service/version info
?--version-intensity <level>: 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: Show detailed version scan activity (for debugging)
操作
命令:nmap --sV www.baidu.com

從圖中可知,本次一個(gè)掃描了1000個(gè)端口,其中有998個(gè)是關(guān)閉的。
對(duì)開開放的兩個(gè)端口上的服務(wù)進(jìn)行版本偵測(cè)的結(jié)如方框內(nèi)顯示。
OS偵測(cè)
原理
Nmap使用TCP/IP協(xié)議棧指紋來(lái)識(shí)別不同的操作系統(tǒng)和設(shè)備。在RFC規(guī)范中,有些地方對(duì)TCP/IP的實(shí)現(xiàn)并沒有強(qiáng)制規(guī)定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根據(jù)這些細(xì)節(jié)上的差異來(lái)判斷操作系統(tǒng)的類型的。
具體實(shí)現(xiàn)方式如下:
Nmap內(nèi)部包含了2600多已知系統(tǒng)的指紋特征(在文件nmap-os-db文件中)。將此指紋數(shù)據(jù)庫(kù)作為進(jìn)行指紋對(duì)比的樣本庫(kù)。
分別挑選一個(gè)open和closed的端口,向其發(fā)送經(jīng)過(guò)精心設(shè)計(jì)的TCP/UDP/ICMP數(shù)據(jù)包,根據(jù)返回的數(shù)據(jù)包生成一份系統(tǒng)指紋。
將探測(cè)生成的指紋與nmap-os-db中指紋進(jìn)行對(duì)比,查找匹配的系統(tǒng)。如果無(wú)法匹配,以概率形式列舉出可能的系統(tǒng)。
用法
OS DETECTION:
-O: Enable OS detection
--osscan-limit: Limit OS detection to promising targets
--osscan-guess: Guess OS more aggressively
操作
命令:nmap --O 127.0.0.1

從上圖中可看到,指定-O選項(xiàng)后先進(jìn)行主機(jī)發(fā)現(xiàn)與端口掃描,根據(jù)掃描到端口來(lái)進(jìn)行進(jìn)一步的OS偵測(cè)。獲取的結(jié)果信息有設(shè)備類型,操作系統(tǒng)類型,操作系統(tǒng)的CPE描述,操作系統(tǒng)細(xì)節(jié),網(wǎng)絡(luò)距離等。
最后綜合上述命令,對(duì)www.baidu.com執(zhí)行一次加強(qiáng)的快速掃描:
命令:nmap -sV -T4 -O -F --version-light www.cug.edu.cn

通過(guò)上述結(jié)果,可以看出:
本次偵測(cè)共用時(shí)5.38s。掃描了一個(gè)IP的100個(gè)端口,該主機(jī)在線。
掃描出5個(gè)運(yùn)行中的服務(wù),類型如上圖。
暫時(shí)無(wú)法準(zhǔn)確判斷操作系統(tǒng)的類型,但是最有可能是FreeBSD和PC-BSD,對(duì)應(yīng)的概率如上圖所示。