對于nmap,相信很多安全運(yùn)維人員并不陌生,它曾經(jīng)在電影《黑客帝國》中出現(xiàn)過,是黑客和網(wǎng)絡(luò)安全人員經(jīng)常用到的工具,本文介紹此工具的實(shí)現(xiàn)原理和使用技巧。
1、nmap和Zenmap簡介
nmap是一個(gè)開源免費(fèi)的網(wǎng)絡(luò)發(fā)現(xiàn)工具,通過它能夠找出網(wǎng)絡(luò)上在線的主機(jī),并測試主機(jī)上哪些端口處于監(jiān)聽狀態(tài),接著通過端口確定主機(jī)上運(yùn)行的應(yīng)用程序類型與版本信息,最后利用它還能偵測出操作系統(tǒng)的類型和版本。由此可見,nmap是一個(gè)功能非常強(qiáng)大的網(wǎng)絡(luò)探測工具,同時(shí)它也成為網(wǎng)絡(luò)黑客的最愛,因?yàn)閚map所實(shí)現(xiàn)的這些功能正是黑客入侵網(wǎng)絡(luò)的一個(gè)基本過程。站在安全運(yùn)維的角度,只有了解了黑客入侵的基本方式和過程,才能有目的、有針對性地進(jìn)行安全防護(hù)。
nmap是Network MApper的縮寫,由Fyodor在1997年創(chuàng)建,現(xiàn)在已經(jīng)成為網(wǎng)絡(luò)安全必備的工具之一。nmap作為一個(gè)流行的安全工具,它的主要特點(diǎn)有:
非常靈活。
nmap支持10多種掃描方式,并支持多種目標(biāo)對象掃描。支持主流操作系統(tǒng)。
nmap支持windows、linux、BSD、Solaris、AIX、mac OS等多種平臺(tái),可移植性強(qiáng)。使用簡單。
nmap安裝、使用都非常簡單,基本用法就能滿足一般使用需求。自由軟件。
nmap是在GPL協(xié)議下發(fā)布的,在GPL License的范圍內(nèi)可自由使用。Zenmap是nmap的GUI版本,由nmap官方提供,通常隨著nmap安裝包一起發(fā)布。Zenmap是用Python語言編寫的,能夠在Windows、Linux、UNIX、Mac OS等不同系統(tǒng)上運(yùn)行。開發(fā)Zenmap的目的主要是為nmap提供更加簡單的操作方式。
2、nmap基本功能與結(jié)構(gòu)
nmap功能非常強(qiáng)大,從它實(shí)現(xiàn)功能的方向性來劃分,主要有如下四個(gè)基本功能:
● 主機(jī)發(fā)現(xiàn)。
● 端口掃描。
● 應(yīng)用程序及版本偵測。
● 操作系統(tǒng)及版本偵測。
這四個(gè)基本功能既相互獨(dú)立,又依次依賴,因?yàn)橐话愕木W(wǎng)絡(luò)嗅探都是從主機(jī)發(fā)現(xiàn)開始的,在發(fā)現(xiàn)在線的主機(jī)后,接著需要進(jìn)行端口掃描,進(jìn)而通過掃描到的端口確定運(yùn)行的應(yīng)用程序類型及版本信息,并最終確定操作系統(tǒng)的版本及漏洞信息。另外nmap還提供了防火墻與入侵檢測系統(tǒng)的規(guī)避技巧,這個(gè)功能可以應(yīng)用到基本功能的各個(gè)階段中。最后,nmap還提供了高級用法,即通過NSE(Nmap Scripting Language)腳本引擎功能對nmap基本功能進(jìn)行補(bǔ)充和擴(kuò)展。
3、nmap的安裝與驗(yàn)證
nmap的安裝非常簡單,官方提供源碼編譯安裝和RPM包兩種方式,可根據(jù)自己的喜好選擇安裝即可。這里下載的版本為nmap-6.40.tar.bz2,下面分別介紹兩種安裝方式。
(1)源碼編譯安裝
從官方網(wǎng)站下載源碼包,然后編譯安裝即可。編譯安裝過程無需額外參數(shù),操作如下:
[root@localhost ~]# tar jxvf nmap-6.40.tar.bz2
[root@localhost ~]# cd nmap-6.40
[root@localhost nmap-6.40]# make
[root@localhost nmap-6.40]# make install
至此,源碼編譯編譯方式安裝nmap完成。
(2)RPM包安裝
nmap官方也提供RPM格式的安裝包,直接從網(wǎng)站下載RPM格式的安裝包,然后進(jìn)行安裝即可,操作過程如下:
[root@localhost ~]# wget http://nmap.org/dist/nmap-6.40-1.x86_64.rpm
[root@localhost ~]# rpm -Uvh nmap-6.40-1.x86_64.rpm
在完成安裝后,執(zhí)行“namp -h”,如果能輸出幫助信息,表示安裝成功,否則根據(jù)錯(cuò)誤提示重新安裝。
4、nmap的典型用法
前面提到了nmap主要包含四個(gè)方面的掃描功能,在詳細(xì)介紹每個(gè)功能之前,首先介紹nmap的典型用法。最簡單的nmap命令形式如下:
namp 目標(biāo)主機(jī)
通過這個(gè)命令,可以確定目標(biāo)主機(jī)的在線情況和端口的監(jiān)聽狀態(tài),如圖1所示。
圖1 nmap的典型用法
由輸出可知,目標(biāo)主機(jī)“192.168.12.189”處于“up”狀態(tài),并且此主機(jī)上開放了22、21、3306端口,同時(shí)還偵測到每個(gè)端口對應(yīng)的服務(wù),在最后還給出目標(biāo)主機(jī)網(wǎng)卡的MAC信息。
如果希望了解目標(biāo)主機(jī)更多的信息,可以通過完全掃描的方式實(shí)現(xiàn),nmap命令內(nèi)置了“-A”選項(xiàng),可以實(shí)現(xiàn)對目標(biāo)主機(jī)進(jìn)行主機(jī)發(fā)現(xiàn)、端口掃描、應(yīng)用程序與版本偵測、操作系統(tǒng)識(shí)別等完整全面的掃描,命令形式如下:
nmap –T4 –A –v 目標(biāo)主機(jī)
其中,“-A”選項(xiàng)用于開啟全面掃描;“-T4”指定掃描過程中使用的時(shí)序模板,總共有6個(gè)等級(0~5),等級越高,掃描速度越快,但也越容易被防火墻或者入侵檢測設(shè)備發(fā)現(xiàn)并屏蔽,所以選擇一個(gè)適當(dāng)?shù)膾呙璧燃壏浅V匾?,這里推薦使用“-T4”;“-v”參數(shù)可顯示掃描細(xì)節(jié)。圖2是nmap對某主機(jī)的全面掃描過程。
圖2 nmap對主機(jī)“192.168.12.188”的全面掃描過程
從圖2中可以看出,整個(gè)掃描過程非常詳細(xì):第一部分是對主機(jī)是否在線進(jìn)行掃描;第二部分是對端口進(jìn)行掃描,在默認(rèn)情況下nmap會(huì)掃描1000個(gè)最有可能開放的端口,由于只掃描到22、111、80三個(gè)端口處于打開狀態(tài),所以在輸出中會(huì)有“997 closed ports”的描述;第三部分是對端口上運(yùn)行的應(yīng)用服務(wù)以及版本號(hào)進(jìn)行統(tǒng)計(jì),可以看到,掃描結(jié)果非常詳細(xì)地記錄了軟件的版本信息;第四部分是對操作系統(tǒng)類型和版本進(jìn)行探測,從掃描結(jié)果來看,還是非常準(zhǔn)確的;第五部分是對目標(biāo)主機(jī)的路由跟蹤信息。
5、nmap主機(jī)發(fā)現(xiàn)掃描
主機(jī)發(fā)現(xiàn)主要用來判斷目標(biāo)主機(jī)是否在線,其掃描原理類似于ping命令,通過發(fā)送探測數(shù)據(jù)包到目標(biāo)主機(jī),如果能收到回復(fù),那么認(rèn)為目標(biāo)主機(jī)處于在線狀態(tài)。nmap支持多種不同的主機(jī)探測方法,例如發(fā)送TCP SYN/ACK包、發(fā)送SCTP包、發(fā)送ICMP echo/timestamp/netmask請求報(bào)文等,用戶可在不同的環(huán)境下選擇不同的方式來探測目標(biāo)主機(jī)。
(1)主機(jī)發(fā)現(xiàn)的用法
nmap提供了豐富的選項(xiàng)以供用戶選擇不同的主機(jī)發(fā)現(xiàn)探測方式,使用語法如下:
nmap [選項(xiàng)或參數(shù)] 目標(biāo)主機(jī)
nmap常用的主機(jī)發(fā)現(xiàn)選項(xiàng)與含義如表1所示。
表1 常用的主機(jī)發(fā)現(xiàn)選項(xiàng)及含義
在這些選項(xiàng)中,比較常用的是“-sn”和“-Pn”,例如,查看某個(gè)網(wǎng)段有哪些主機(jī)在線,就需要使用“-sn”選項(xiàng),而如果已經(jīng)知道了目標(biāo)主機(jī)在線,僅僅想掃描主機(jī)開放的端口時(shí),就需要用“-Pn”選項(xiàng)。
(2)使用實(shí)例
下面以探測www.abc.com主機(jī)的信息為例,簡單演示主機(jī)發(fā)現(xiàn)的用法。首先,在聯(lián)網(wǎng)的服務(wù)器上執(zhí)行如下命令:
nmap-sn -PE -PS22,80 -PU53 www.abc.com
執(zhí)行結(jié)果如圖3所示。
圖3 主機(jī)發(fā)現(xiàn)的執(zhí)行結(jié)果
在這個(gè)例子中,使用了“-PE”、“-PS”、“-PU”等參數(shù),根據(jù)上面的介紹,“-PE”是以發(fā)送ICMP echo報(bào)文的形式進(jìn)行主機(jī)探測的,“-PS”是以發(fā)送TCP SYN/ACK包的形式偵測主機(jī)信息的,而“-PU”則是以UDP的方式進(jìn)行主機(jī)偵測的。為了清晰展示nmap的偵測方式和偵測過程,這里通過抓包工具Wireshark動(dòng)態(tài)監(jiān)測nmap探測主機(jī)的過程,如圖4所示。
圖4 通過Wireshark獲取的nmap探測主機(jī)過程
從圖4中可以看到,nmap所在的主機(jī)“192.168.12.188”向目標(biāo)主機(jī)“61.185.133.234”發(fā)送了四個(gè)探測包,分別是ICMP Echo(ping)、22端口和80端口的TCP SYN、53端口的UDP包。但是僅僅收到了ICMP Echo(ping)和80端口的回復(fù),22端口返回了“RST”標(biāo)識(shí),這說明22端口處于關(guān)閉狀態(tài)。不過nmap的原則是只要能收到任何一種探測請求的回復(fù),就認(rèn)為此主機(jī)處于在線狀態(tài)。
6、nmap端口掃描
端口掃描是nmap最核心的功能,通過端口掃描可以發(fā)現(xiàn)目標(biāo)主機(jī)上TCP、UDP端口的開放情況。nmap在默認(rèn)狀態(tài)下會(huì)掃描1000個(gè)最有可能開放的端口,并將偵測到的端口狀態(tài)分為6類,分別是:
open,表示端口是開放的。
closed,表示端口是關(guān)閉的。
filtered,表示端口被防火墻屏蔽,無法進(jìn)一步確定狀態(tài)。
unfiltered,表示端口沒有被屏蔽,但是否處于開放狀態(tài),還需要進(jìn)一步確定。
open|filtered,表示不確定狀態(tài),端口可能是開放的,也可能是屏蔽的。
closed|filtered,表示不確定狀態(tài),端口可能是關(guān)閉的,也可能是屏蔽的。
在端口掃描方式上,nmap支持10多種探測方法,最常用的有“TCP SYN scanning”,這是默認(rèn)的端口掃描方式,另外還有“TCP connect scanning”、“TCP ACK scanning”、“TCPFIN/Xmasscanning”、“UDP scanning”等探測方式。具體使用哪種探測方式,用戶可自己指定。
(1)端口掃描的用法
nmap提供了多個(gè)選項(xiàng)以供用戶來指定掃描方式和掃描端口,使用語法如下:
nmap [選項(xiàng)或參數(shù)] 目標(biāo)主機(jī)
nmap端口掃描的常用選項(xiàng)與含義如表2所示。
表2 nmap端口掃描的常用選項(xiàng)及含義
(2)使用實(shí)例
下面仍以探測www.abc.com主機(jī)的信息為例,簡單演示端口掃描的使用方法。首先,在聯(lián)網(wǎng)的服務(wù)器上執(zhí)行如下命令:
nmap -sU -sS -F www.abc.com
執(zhí)行結(jié)果如圖5所示。
圖5 nmap端口掃描應(yīng)用實(shí)例
在圖5中,參數(shù)“-sS”表示使用TCP SYN方式掃描TCP端口,“-sU”表示掃描UDP端口,“-F”表示使用快速掃描模式,掃描最可能開放的前100個(gè)端口(TCP和UDP各100個(gè)端口),由輸出可知,有21個(gè)端口處于開放或者屏蔽狀態(tài),其他179個(gè)端口處于關(guān)閉狀態(tài)。
7、nmap版本偵測
nmap的版本偵測功能主要用來確定目標(biāo)主機(jī)開放的端口上運(yùn)行的應(yīng)用程序及版本信息,nmap的版本偵測支持TCP/UDP協(xié)議,支持多種平臺(tái)的服務(wù)偵測,支持IPV6功能,并能識(shí)別幾千種服務(wù)簽名,下面介紹nmap版本偵測的使用方法。
(1)版本偵測的用法
nmap在版本偵測方面的命令選項(xiàng)非常簡單,常用的語法如下:
nmap [選項(xiàng)或參數(shù)] 目標(biāo)主機(jī)
nmap在版本偵測方面的常用選項(xiàng)及含義如表3所示。
表3 nmap版本偵測的常用選項(xiàng)及含義
(2)使用實(shí)例
下面以探測“23.76.232.59”主機(jī)上運(yùn)行的應(yīng)用程序的版本信息為例,簡單演示版本偵測的使用方法。首先,在聯(lián)網(wǎng)的服務(wù)器上執(zhí)行如下命令:
nmap-sV 23.76.232.59
執(zhí)行結(jié)果如圖6所示。
圖6 nmap版本偵測實(shí)例
從圖6中nmap的輸出可以看到每個(gè)端口對應(yīng)的服務(wù)名稱以及詳細(xì)的版本信息,通過對服務(wù)器上運(yùn)行服務(wù)的了解,以及對服務(wù)版本的探測,基本能判斷出來此服務(wù)器是否存在軟件漏洞,進(jìn)而提醒運(yùn)維管理人員進(jìn)行端口關(guān)閉或升級軟件等操作,盡早應(yīng)對可能出現(xiàn)的安全威脅。
8、nmap操作系統(tǒng)偵測
操作系統(tǒng)偵測主要是對目標(biāo)主機(jī)運(yùn)行的操作系統(tǒng)類型及版本信息進(jìn)行檢測。nmap擁有豐富的系統(tǒng)指紋庫,目前可以識(shí)別近3000種操作系統(tǒng)與設(shè)備類型。下面介紹nmap操作系統(tǒng)偵測的使用方法。
(1)操作系統(tǒng)偵測的用法
nmap在操作系統(tǒng)偵測方面提供的命令選項(xiàng)比較少,常用的語法如下:
nmap [選項(xiàng)或參數(shù)] 目標(biāo)主機(jī)
nmap在操作系統(tǒng)偵測方面的常用選項(xiàng)及含義如表4所示。
表4 nmap操作系統(tǒng)偵測的常用選項(xiàng)及含義
(2)使用實(shí)例
下面以探測“192.168.12.118”和“192.168.12.119”主機(jī)的操作系統(tǒng)類型為例,簡單演示操作系統(tǒng)偵測的使用方法。首先,在聯(lián)網(wǎng)的服務(wù)器上執(zhí)行如下命令:
nmap -O --osscan-guess 192.168.12.118-119
執(zhí)行結(jié)果如圖7所示。
圖7 nmap操作系統(tǒng)偵測實(shí)例
從圖7中可以看出,在指定了“-O”選項(xiàng)后,nmap命令首先執(zhí)行了主機(jī)發(fā)現(xiàn)操作,接著執(zhí)行了端口掃描操作,然后根據(jù)端口掃描的結(jié)果進(jìn)行操作系統(tǒng)類型的偵探,獲取到的信息有設(shè)備類型、操作系統(tǒng)版本、操作系統(tǒng)的CPE描述、操作系統(tǒng)的細(xì)節(jié)和網(wǎng)絡(luò)距離。如果不能確定操作系統(tǒng)的版本,會(huì)猜測每個(gè)系統(tǒng)版本的可能性比率,例如對于“192.168.12.119”主機(jī),nmap給出最可能的操作系統(tǒng)版本是VMware ESXi Server 5.0,而事實(shí)上,此主機(jī)確實(shí)安裝了這個(gè)版本的系統(tǒng)。由此可見,nmap的操作系統(tǒng)偵測功能是多么的強(qiáng)大。
微信公眾號(hào):計(jì)算機(jī)與網(wǎng)絡(luò)安全
ID:Computer-network
1.《zenmap Linux網(wǎng)絡(luò)安全運(yùn)維:網(wǎng)絡(luò)探測和安全審核工具nmap》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《zenmap Linux網(wǎng)絡(luò)安全運(yùn)維:網(wǎng)絡(luò)探測和安全審核工具nmap》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實(shí),對其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請保留本站內(nèi)容來源地址,http://f99ss.com/keji/345992.html