[導(dǎo)讀] nmap用于允許系統(tǒng)管理員察看一個(gè)大的網(wǎng)絡(luò)系統(tǒng)有哪些主機(jī)以及其上運(yùn)行的何種服務(wù)程序。它支持多種協(xié)議的掃描,如udp、tcp connect()、tcp syn(半開(kāi))、ftp proxy(跳板攻擊)、reverse-ident、icmp(ping)、fin、ack sweep、xmas tree、syn sweep和null掃描。
一。簡(jiǎn)介
nmap用于允許系統(tǒng)管理員察看一個(gè)大的網(wǎng)絡(luò)系統(tǒng)有哪些主機(jī)以及其上運(yùn)行的何種服務(wù)程序。它支持多種協(xié)議的掃描,如udp、tcp connect()、tcp syn(半開(kāi))、ftp proxy(跳板攻擊)、reverse-ident、icmp(ping)、fin、ack sweep、xmas tree、syn sweep和null掃描。nmap還提供一些實(shí)用功能,如通過(guò)tcp/ip來(lái)甄別操作系統(tǒng)類型、秘密掃描、動(dòng)態(tài)延遲和重發(fā)、平行掃描、通過(guò)并行的ping偵測(cè)下屬的主機(jī)、欺騙掃描、端口過(guò)濾探測(cè)、直接的rpc掃描、分布掃描、靈活的目標(biāo)選擇以及端口的描述。
對(duì)于非root的用戶來(lái)說(shuō),nmap的正式版可以做很多重要的工作,但是部分關(guān)鍵的核心功能(比如raw sockets)需要root權(quán)限,所以盡量以root的身份運(yùn)行nmap。
運(yùn)行nmap后通常會(huì)得到一個(gè)關(guān)于掃描的機(jī)器的一個(gè)實(shí)用的端口列表。nmap總是顯示該服務(wù)的服務(wù)名稱、端口號(hào)、狀態(tài)以及協(xié)議。狀態(tài)有“open”、“filtered”和“unfiltered”三種。“open”指的是目標(biāo)機(jī)器將會(huì)在該端口接收連接請(qǐng)求,“filtered”指的是有防火墻或者其他過(guò)濾裝置在這個(gè)端口進(jìn)行過(guò)濾,所以nmap需要進(jìn)一步查明端口是否開(kāi)放。至于“unfiltered”,則只有在大多數(shù)的掃描端口都處在“filtered”狀態(tài)下才會(huì)出現(xiàn)。
根據(jù)選項(xiàng)的使用,nmap還可以報(bào)告遠(yuǎn)程主機(jī)下面的特性:使用的操作系統(tǒng)、tcp連續(xù)性、在各端口上綁定的應(yīng)用程序用戶的用戶名、dns名、主機(jī)是否是smurf地址以及一些其他功能。
二。使用選項(xiàng)介紹
nmap是一個(gè)命令界面的掃描器,使用起來(lái)很簡(jiǎn)單,用nmap[掃描選項(xiàng)][掃描目標(biāo)]即可進(jìn)行掃描分析。
使用掃描選項(xiàng)可以精確的定義掃描的模式。下面就介紹一些nmap的常用掃描選項(xiàng),這些選項(xiàng)通常都是可組合使用的。即使錯(cuò)誤的使用了選項(xiàng)也沒(méi)有關(guān)系,nmap將會(huì)對(duì)不規(guī)范的參數(shù)組合作出提示。如果你在掃描過(guò)程中需要查詢nmap的選項(xiàng)用法,可以使用nmap -h來(lái)打開(kāi)關(guān)于nmap選項(xiàng)參數(shù)的簡(jiǎn)介。
-sT:tcp connect()掃描
這是對(duì)tcp得最基本形式的偵測(cè)。在該操作下,該connect()對(duì)目標(biāo)主機(jī)上感興趣的端口進(jìn)行試探,如果該端口被監(jiān)聽(tīng),則連接成功,否則代表這個(gè)端口無(wú)法到達(dá)。
-sS:tcp syn掃描
“半開(kāi)”式的掃描----不打開(kāi)完整的tcp連接,發(fā)送一個(gè)syn信息包并等待對(duì)方的回應(yīng)。這種掃描的的最大好處是只有極少的站點(diǎn)會(huì)對(duì)他作出記錄,但是需要有root權(quán)限來(lái)定制這些syn包。
-sF -sX -sN[IMG]http://www.netxeyes.com/image/confused_smile.gif[/IMG]tealth FIN、Xmas Tree或者Null掃描模式
有時(shí)甚至syn掃描都不夠隱蔽,一些防火墻及信息包過(guò)濾裝置會(huì)在重要端口守護(hù),syn包在此時(shí)會(huì)被截獲,一些應(yīng)用軟件如Synlogger以及Courtney對(duì)偵測(cè)這種類型的掃描都是行家。所以,要有更進(jìn)一步的掃描。
由于關(guān)閉的端口會(huì)對(duì)發(fā)送的探測(cè)信息返回一個(gè)rst,而打開(kāi)得端口則對(duì)其忽略不理(想要了解詳細(xì)資料可以參閱rfc973第64頁(yè))。所以fin掃描使用空的fin信息包作為探針,Xmas tree使用fin、urg、push標(biāo)記,Null掃描則不用任何標(biāo)記。但是不幸的是,微軟以它一貫的風(fēng)格不理睬這一標(biāo)準(zhǔn),所以這一掃描在windows 9x以及nt下不能工作。
從積極的方面來(lái)講,這其實(shí)也是一個(gè)很好的區(qū)分兩種平臺(tái)的辦法---如果這次掃描發(fā)現(xiàn)了打開(kāi)的端口,那就能知道這臺(tái)機(jī)器運(yùn)行的不是windows。如果-sF、-sX、-sN的掃描顯示所有端口都是關(guān)閉的,但一個(gè)syn(-sS)掃描卻顯示有打開(kāi)端口,那就能大致推斷他是windows平臺(tái)。這只是一個(gè)簡(jiǎn)單應(yīng)用,因?yàn)楝F(xiàn)在nmap已經(jīng)有了更徹底的操作系統(tǒng)辨別方法。
-sP[IMG]http://www.netxeyes.com/image/tounge_smile.gif[/IMG]ing掃描
有時(shí)攻擊者僅希望了解網(wǎng)絡(luò)上有哪些主機(jī)是開(kāi)放的,nmap可以通過(guò)對(duì)指定的ip地址發(fā)送icmp的echo request信息包來(lái)做到這一點(diǎn),有回應(yīng)的主機(jī)就是開(kāi)放的。但令人討厭的是,一些站點(diǎn),例如microsoft.com對(duì)echo request包設(shè)置了障礙。這樣的話nmap還能發(fā)送一個(gè)tcp ack包到80端口(默認(rèn)),如果獲得了rst返回,那么機(jī)器是開(kāi)放的。第三個(gè)方法是發(fā)送一個(gè)syn信息包并等待rst或syn/ack響應(yīng)。作為非root的用戶可以使用的一般是connect()模式。對(duì)root來(lái)說(shuō),默認(rèn)的nmap同時(shí)使用icmp和ack的方法掃描,當(dāng)然也可以改變-p選項(xiàng)。注意最好先ping一下用戶,有回應(yīng)的主機(jī)才有必要掃描。只有不想探測(cè)任何實(shí)際端口,而只是大面積的搜索一下活動(dòng)主機(jī)的掃描,才會(huì)使用此選項(xiàng)。
-sU:UDP掃描
這一方法用來(lái)確定哪個(gè)udp端口在主機(jī)端開(kāi)放。這一技術(shù)是發(fā)送零字節(jié)的udp信息包到目標(biāo)機(jī)器的各個(gè)端口,如果收到一個(gè)icmp端口無(wú)法到達(dá)的回應(yīng),那么該端口是關(guān)閉的,否則可以認(rèn)為它是敞開(kāi)的。有些人或許認(rèn)為udp掃描是無(wú)意義的,但現(xiàn)在的solaris rpcbind漏洞否定了這一點(diǎn)。
rpcbind會(huì)把一個(gè)非正式的udp端口隱藏在32770以上的端口,因此僅對(duì)
rpcbind得端口(111)進(jìn)行防火墻過(guò)濾是毫無(wú)用處的。通過(guò)查找30000以上的端口是否處在監(jiān)聽(tīng)狀態(tài)中就可以發(fā)現(xiàn)相關(guān)的rpc服務(wù),而使用udp掃描就能輕松的做到這一點(diǎn)。
或者我們還可以想想cdc出品的back orifice木馬。它可以在windows的機(jī)器中配置一個(gè)udp端口,更不用說(shuō)如此眾多可以利用udp的易受攻擊的服務(wù),如snmp、ftp、nfs等。但有一點(diǎn)不得不提及的是udp掃描,在目標(biāo)主機(jī)按照rfc1812建議的那樣限制icmp錯(cuò)誤信息的傳送速率時(shí),會(huì)造成及其運(yùn)行非常慢。舉例來(lái)說(shuō),linux的核心配置限制了每4秒產(chǎn)生80次得無(wú)法到達(dá)信息----每次產(chǎn)生1/4秒的延遲。solaris有著更嚴(yán)格的限制(大約每秒兩次就會(huì)延遲),所以這要耗費(fèi)相當(dāng)長(zhǎng)的時(shí)間。nmap會(huì)偵測(cè)到這種限制并自動(dòng)減緩速度----這也勝過(guò)用無(wú)意義的、會(huì)被目標(biāo)主機(jī)忽略的大量信息包來(lái)填充這個(gè)網(wǎng)絡(luò)。微軟不在乎rfc所建議的事,而且沒(méi)有任何限制性措施實(shí)行與windows9x或nt上,這樣我們就可以把多達(dá)65k得端口以極高的速度掃描完畢。
------未完,待續(xù)。
-sR:RPC掃描
來(lái)源:http://sec.chinabyte.com/388/9143888.shtml
這一方法是結(jié)合nmap多種掃描的一種模式,它取得所有的tcp/udp開(kāi)放端口,并且用sunrpc程序的null命令來(lái)試圖確定是否是rpc端口,如果是的話,就察看其上運(yùn)行的是什么程序、何種版本。這樣,在目標(biāo)主機(jī)多在防火墻后或者由tcp wrappers防護(hù)時(shí),它都能取得效果近似于“rpcinfo-p”的信息。Decoy現(xiàn)在還不能正常工作在rpc掃描下,但相信以后會(huì)在udp rpc掃描中加入Decoy支持的。
-b (ftp relay host):FTP跳躍攻擊
ftp協(xié)議的一個(gè)有趣的特點(diǎn)是它支持代理ftp連接,也就是說(shuō),可以從evil.com連接到一個(gè)ftp服務(wù)器target.com,并且要求目標(biāo)主機(jī)發(fā)送文件到因特網(wǎng)的任何地方。ftp這一特性被公布并逐漸地施行起來(lái)。但現(xiàn)在的網(wǎng)絡(luò)上不允許人們能夠隨意的“搶劫”一個(gè)ftp服務(wù)器,并請(qǐng)求數(shù)據(jù)到任何地方。所以在hobbit于1995年寫(xiě)下有關(guān)這一協(xié)議的缺陷時(shí)說(shuō)到,它可以用來(lái)從許多站點(diǎn)上發(fā)出事實(shí)上難以追查的信件、新聞以及攻擊性行為來(lái)填充硬盤(pán),試圖使防火墻失效或者更多的是煩人而無(wú)意義的騷擾。開(kāi)發(fā)nmap是為了通過(guò)一個(gè)代理ftp服務(wù)器察看tcp端口,這樣可以連上一個(gè)在防火墻后的ftp服務(wù)器,然后掃描他的看起來(lái)被關(guān)閉的端口(例如139端口)。如果ftp服務(wù)器允許讀甚至寫(xiě)進(jìn)行某些目錄(比如/incoming),可以發(fā)送任意信息到打開(kāi)的端口(當(dāng)然nmap不能進(jìn)行這項(xiàng)工作)。要通過(guò)“b"選項(xiàng)來(lái)使主機(jī)成為代理時(shí),標(biāo)準(zhǔn)的url格式形式是:usename[IMG]http://www.netxeyes.com/image/tounge_smile.gif[/IMG]assword@server[IMG]http://www.netxeyes.com/image/tounge_smile.gif[/IMG]ort。它的更新本本在http://www.insecure.org/nmap。下面我要說(shuō)的是一些常規(guī)選項(xiàng),這些選項(xiàng)并非必須,但有些是非常實(shí)用的。
-P0
在掃描前不嘗試 ping主機(jī)。這是用來(lái)掃描那些不允許icmp echo請(qǐng)求的主機(jī)。microsoft.com就是其中的一個(gè)例子,我們必須使用-p0或者-p80來(lái)查看microsoft.com的端口。
-PT
用tcp的ping來(lái)確定主機(jī)是否打開(kāi)。作為替代發(fā)送icmp echo請(qǐng)求抱并等待回應(yīng),打開(kāi)的主機(jī)會(huì)返回一個(gè)rst。這一參數(shù)可以使用ping信息包被阻塞時(shí)仍能高效率的掃描一個(gè)網(wǎng)絡(luò)/主機(jī)。對(duì)于非root的用戶,可以用connect(),以如下格式設(shè)置目標(biāo)探針:PT,默認(rèn)的端口是80,因?yàn)檫@個(gè)端口往往被過(guò)濾。
-PS
這一選項(xiàng)是root用戶使用的,能用syn(連接請(qǐng)求)包替代ack包,打開(kāi)的主機(jī)會(huì)有一個(gè)rst(或者syn/ack,但比較少見(jiàn))應(yīng)答。
—Pl
這一選項(xiàng)是使用一個(gè)真正的ping(icmp echo request)包,它找到開(kāi)放的主機(jī)并且將該子網(wǎng)中的廣播地址全數(shù)搜尋----該廣播地址能夠到達(dá)并能正確解析ip包。如果其被大量的dos攻擊時(shí),我們就能找到它。
-PB
默認(rèn)的ping形式,用于ack(-PT)與icmp(-pI)并行攻擊,以這一形式可以通過(guò)防火墻或包過(guò)濾。
-O
經(jīng)由tcp/ip獲取“指紋”來(lái)判別主機(jī)的操作系統(tǒng)類型,用另一種說(shuō)法,就是用一連串的信息包探測(cè)出所掃描的主機(jī)位于操作系統(tǒng)有關(guān)堆棧的信息,并區(qū)分其精細(xì)差異,以此判別操作系統(tǒng)。它用搜集到的信息建立一個(gè)“指紋”,用來(lái)同已知的操作系統(tǒng)的指紋相比較(the nmap-os-fingerrprints file),這樣判定操作系統(tǒng)就有了依據(jù)。
但有時(shí)nmap也會(huì)得到錯(cuò)誤的診斷信息,比如系統(tǒng)有端口開(kāi)放。但nmap返回不可識(shí)別的操作系統(tǒng),這也是有可能的,這時(shí)可以用另一個(gè)辦法----nmap的-d參數(shù)來(lái)測(cè)試。
-l
這是用ident掃描方式的參數(shù),如Dave Goldsmith于1996年在bugtraq中所說(shuō)的,這個(gè)ident協(xié)議允許通過(guò)tcp連接到擁有進(jìn)程的用戶名----即使這個(gè)連接不是有該進(jìn)程發(fā)起的。所以可以通過(guò)ident連接到一個(gè)http端口并找出該進(jìn)程是否由root運(yùn)行,但這只能在“全開(kāi)”的對(duì)目標(biāo)端口的tcp連接中使用(像-sT掃描參數(shù))。當(dāng)用-I參數(shù)時(shí),遠(yuǎn)程主機(jī)的ident在開(kāi)放的端口接收連接查詢-----很明顯,如果主機(jī)不運(yùn)行ident的話,它就無(wú)法正常工作
聯(lián)系客服