1.前言
????Nmap是一款開(kāi)源免費(fèi)的網(wǎng)絡(luò)發(fā)現(xiàn)(Network Discovery)和安全審計(jì)(Security Auditing)工具。軟件名字Nmap是Network Mapper的簡(jiǎn)稱(chēng)晨抡。
? ? nmap掃主要包括四個(gè)方面的掃描功能分別是主機(jī)發(fā)現(xiàn)(Host Discovery)忍捡、端口掃描(Port Scanning)、應(yīng)用與版本偵測(cè)(Version Detection)蒜魄、操作系統(tǒng)偵測(cè)(Operating System Detection)适袜。這四項(xiàng)功能之間趁尼,又存在大致的依賴(lài)關(guān)系。通常情況下順序關(guān)系嚎尤,如下圖所示荔仁。
2.主機(jī)發(fā)現(xiàn)
????主機(jī)發(fā)現(xiàn)(Host Discovery),即用于發(fā)現(xiàn)目標(biāo)主機(jī)是否在線(xiàn)(Alive芽死,處于開(kāi)啟狀態(tài))乏梁。
????主機(jī)發(fā)現(xiàn)發(fā)現(xiàn)的原理與Ping命令類(lèi)似,發(fā)送探測(cè)包到目標(biāo)主機(jī)关贵,如果收到回復(fù)遇骑,那么說(shuō)明目標(biāo)主機(jī)是開(kāi)啟的。Nmap支持十多種不同的主機(jī)探測(cè)方式揖曾,比如發(fā)送ICMP ECHO/TIMESTAMP/NETMASK報(bào)文落萎、發(fā)送TCPSYN/ACK包亥啦、發(fā)送SCTP INIT/COOKIE-ECHO包,用戶(hù)可以在不同的條件下靈活選用不同的方式來(lái)探測(cè)目標(biāo)機(jī)练链。
????主機(jī)發(fā)現(xiàn)基本原理:(以ICMP echo方式為例)
????Nmap的用戶(hù)位于源端翔脱,IP地址192.168.0.5,向目標(biāo)主機(jī)192.168.0.3發(fā)送ICMP Echo Request媒鼓。如果該請(qǐng)求報(bào)文沒(méi)有被防火墻攔截掉碍侦,那么目標(biāo)機(jī)會(huì)回復(fù)ICMP Echo Reply包回來(lái)。以此來(lái)確定目標(biāo)主機(jī)是否在線(xiàn)隶糕。
????默認(rèn)情況下瓷产,Nmap會(huì)發(fā)送四種不同類(lèi)型的數(shù)據(jù)包來(lái)探測(cè)目標(biāo)主機(jī)是否在線(xiàn)。
(1) ICMP echo request
(2) a TCP SYN packet to port 443
(3) a TCP ACK packet to port 80
(4) an ICMP timestamp request
????依次發(fā)送四個(gè)報(bào)文探測(cè)目標(biāo)機(jī)是否開(kāi)啟枚驻。只要收到其中一個(gè)包的回復(fù)濒旦,那就證明目標(biāo)機(jī)開(kāi)啟。使用四種不同類(lèi)型的數(shù)據(jù)包可以避免因防火墻或丟包造成的判斷錯(cuò)誤再登。
????通常主機(jī)發(fā)現(xiàn)并不單獨(dú)使用尔邓,而只是作為端口掃描、版本偵測(cè)锉矢、OS偵測(cè)先行步驟梯嗽。而在某些特殊應(yīng)用(例如確定大型局域網(wǎng)內(nèi)活動(dòng)主機(jī)的數(shù)量),可能會(huì)單獨(dú)專(zhuān)門(mén)適用主機(jī)發(fā)現(xiàn)功能來(lái)完成沽损。
????不管是作為輔助用法還是專(zhuān)門(mén)用途灯节,用戶(hù)都可以使用Nmap提供的豐富的選項(xiàng)來(lái)定制主機(jī)發(fā)現(xiàn)的探測(cè)方式。
????-sL: List Scan 列表掃描绵估,僅將指定的目標(biāo)的IP列舉出來(lái)炎疆,不進(jìn)行主機(jī)發(fā)現(xiàn)。
????-sn: Ping Scan 只進(jìn)行主機(jī)發(fā)現(xiàn)国裳,不進(jìn)行端口掃描形入。
????-sP: Ping Scan 只進(jìn)行主機(jī)發(fā)現(xiàn),不進(jìn)行端口掃描缝左。
????-Pn: 將所有指定的主機(jī)視作開(kāi)啟的亿遂,跳過(guò)主機(jī)發(fā)現(xiàn)的過(guò)程。
????-PS[portlist]: 使用TCP SYN Ping掃描方式進(jìn)行發(fā)現(xiàn)渺杉。
????-PA[portlist]: 使用TCP ACK Ping掃描方式進(jìn)行發(fā)現(xiàn)蛇数。
????-PU[portlist]: 使用TCP UDP Ping掃描方式進(jìn)行發(fā)現(xiàn)。
????-PY[portlist]: 使用SCTP INIT Ping掃描方式進(jìn)行發(fā)現(xiàn)少办。
????-PR: ARP Ping Scan
????-PE: 使用ICMP echo Ping掃描方式發(fā)現(xiàn)主機(jī)苞慢。
????-PP: 使用ICMP timestamp Ping掃描方式發(fā)現(xiàn)主機(jī)哀墓。
????-PM: 使用ICMP netmask Ping掃描方式發(fā)現(xiàn)主機(jī)筐高。
????-PO[protocollist]: 使用IP協(xié)議包探測(cè)對(duì)方主機(jī)是否開(kāi)啟(非ping掃)丐膝。
????-n:表示不進(jìn)行DNS反向解析(使用該選項(xiàng)的時(shí)候Nmap永遠(yuǎn)不對(duì)目標(biāo)ip地址作反向域名解析)
????-R:表示總是進(jìn)行DNS解析(使用該選項(xiàng)的時(shí)候Nmap永遠(yuǎn)對(duì)目標(biāo)ip地址作反向域名解析)骡技。
????-6: 掃描IPv6地址
????—dns-servers : 指定DNS服務(wù)器。
????—system-dns: 指定使用系統(tǒng)的DNS服務(wù)器
????—traceroute: 路由跟蹤(使用—traceroute選項(xiàng)即可進(jìn)行路由追蹤.)使用路由追蹤功能可以幫助用戶(hù)了解網(wǎng)絡(luò)的同行情況,通過(guò)此選項(xiàng)可以輕松地查出從計(jì)算機(jī)到目標(biāo)之間所經(jīng)過(guò)的網(wǎng)絡(luò)節(jié)點(diǎn),并可以看到通過(guò)各個(gè)節(jié)點(diǎn)的時(shí)間.
????其中辑畦,比較常用的使用的是-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)開(kāi)啟纯出,可用該選項(xiàng))蚯妇;-n,如果不想使用DNS或reverse DNS解析暂筝,那么可以使用該選項(xiàng)箩言。
例如:
命令 nmap 192.168.20.16
該掃描方式?jīng)]有給出具體主機(jī)發(fā)現(xiàn)的選項(xiàng),主要是針對(duì)IP或者域名進(jìn)行掃描焕襟,掃描方式迅速陨收,可以方便的發(fā)現(xiàn)目標(biāo)端口的開(kāi)放情況以及主機(jī)在線(xiàn)情況。
如果出現(xiàn)如下圖的情況
則先ping一下該IP地址鸵赖,此處為ping 192.168.20.16來(lái)查看網(wǎng)絡(luò)的連通性务漩,網(wǎng)絡(luò)通之后再執(zhí)行nmap命令。
命令 nmap -sP 192.168.20.16/24
Ping掃描方式它褪,只進(jìn)行ping掃描饵骨,然后顯示在線(xiàn)的主機(jī)。掃描時(shí)只需要加入 -sP ,Nmap進(jìn)行ping掃描茫打,然后回顯出做出響應(yīng)的主機(jī)居触,使用該選項(xiàng)掃描可以輕易的獲取目標(biāo)信息而又不被輕易發(fā)現(xiàn)。在默認(rèn)的情況下Nmap回發(fā)送一個(gè)ICMP回聲請(qǐng)求和一個(gè)TCP報(bào)文到目標(biāo)端口包吝。ping掃描的 優(yōu)點(diǎn)是不會(huì)返回太多的信息造成對(duì)結(jié)果的分析饼煞,并且這是一種非常高效的掃描方式。
命令 nmap -Pn 192.168.20.16
加入 -Pn,將所有指定的主機(jī)視作開(kāi)啟的诗越,跳過(guò)主機(jī)發(fā)現(xiàn)的過(guò)程。
命令 nmap -PS -v 192.168.20.16
TCP SYN Ping 掃描發(fā)送了一個(gè)設(shè)置了SYN標(biāo)志的空TCP報(bào)文息堂。默認(rèn)目標(biāo)的端口80 (也可以通過(guò)改變nmap.h)文件中的DeFault-TCP-PROBE-PORT值進(jìn)行設(shè)置嚷狞,也可以通過(guò)”-PS22,23,25,80,115,3306,3389 “進(jìn)行設(shè)定,每個(gè)端口被并發(fā)的掃描荣堰。
通常情況下床未,nmap默認(rèn)使用TCP ACK 和ICMP Echo請(qǐng)求對(duì)目標(biāo)進(jìn)行是否存活的響應(yīng),當(dāng)目標(biāo)主機(jī)的防火墻阻止這些請(qǐng)求時(shí)振坚,可以使用 TCP SYN Ping掃描對(duì)目標(biāo)主機(jī)是否存活進(jìn)行判斷薇搁。
Nmap是通過(guò)SYN/ACK和RST響應(yīng)來(lái)對(duì)目標(biāo)主機(jī)是否存活進(jìn)行判斷,但在特定的情況下防火墻會(huì)丟棄RST包渡八,這種情況下掃描的結(jié)果會(huì)不準(zhǔn)確啃洋,這時(shí)需要指定一個(gè)端口或者端口范圍來(lái)避免這種情況传货。
例如輸入命令:nmap -PS80,100-200 -v 192.168.20.16
命令 nmap -PA -v 192.168.20.16
TCP ACK Ping掃描,這種探測(cè)方式可以探測(cè)阻止SYN包或者ICMP Echo請(qǐng)求的主機(jī)宏娄。
可以同時(shí)使用 -PA -PS
nmap -PA -PS 192.168.20.16
命令 nmap -PU -v 192.168.20.16
UDP Ping 掃描是發(fā)送一個(gè)空的UDP報(bào)文到指定的端口问裕,如果不指定端口則默認(rèn)40125
使用UDP ping掃描時(shí)Nmap會(huì)發(fā)送一個(gè)空的UDP包到目標(biāo)主機(jī),如果目標(biāo)主機(jī)響應(yīng)則返回一個(gè)ICMP端口不可達(dá)錯(cuò)誤孵坚,如果目標(biāo)主機(jī)不是存活狀態(tài)則會(huì)返回各種ICMP錯(cuò)誤信息粮宛。