1.名稱
nmap-網(wǎng)絡(luò)探測(cè)和安全掃描工具
2.語(yǔ)法
nmap
3.描述
nmap是一個(gè)網(wǎng)絡(luò)探測(cè)和安全掃描程序,系統(tǒng)管理者和個(gè)人可以使用這個(gè)軟件掃描大型的網(wǎng)絡(luò),獲取那臺(tái)主機(jī)正在運(yùn)行以及提供什么服務(wù)等信息。nmap支持很多掃描技術(shù),例如:UDP、TCP connect()、TCP SYN(半開掃描)、ftp代理(bounce攻擊)、反向標(biāo)志、ICMP、FIN、ACK掃描、圣誕樹(Xmas Tree)、SYN掃描和null掃描。從掃描類型一節(jié)可以得到細(xì)節(jié)。nmap還提供了一些高級(jí)的特征,例如:通過TCP/IP協(xié)議棧特征探測(cè)操作系統(tǒng)類型,秘密掃描,動(dòng)態(tài)延時(shí)和重傳計(jì)算,并行掃描,通過并行ping掃描探測(cè)關(guān)閉的主機(jī),誘餌掃描,避開端口過濾檢測(cè),直接RPC掃描(無(wú)須端口影射),碎片掃描,以及靈活的目標(biāo)和端口設(shè)定。
為了提高nmap在non-root狀態(tài)下的性能,軟件的設(shè)計(jì)者付出了很大的努力。很不幸,一些內(nèi)核界面(例如raw socket)需要在root狀態(tài)下使用。所以應(yīng)該盡可能在root使用nmap。
nmap運(yùn)行通常會(huì)得到被掃描主機(jī)端口的列表。nmap總會(huì)給出well known端口的服務(wù)名(如果可能)、端口號(hào)、狀態(tài)和協(xié)議等信息。每個(gè)端口的狀態(tài)有:open、filtered、unfiltered。open狀態(tài)意味著目標(biāo)主機(jī)能夠在這個(gè)端口使用accept()系統(tǒng)調(diào)用接受連接。filtered狀態(tài)表示:防火墻、包過濾和其它的網(wǎng)絡(luò)安全軟件掩蓋了這個(gè)端口,禁止nmap探測(cè)其是否打開。unfiltered表示:這個(gè)端口關(guān)閉,并且沒有防火墻/包過濾軟件來隔離nmap的探測(cè)企圖。通常情況下,端口的狀態(tài)基本都是unfiltered狀態(tài),只有在大多數(shù)被掃描的端口處于filtered狀態(tài)下,才會(huì)顯示處于unfiltered狀態(tài)的端口。
根據(jù)使用的功能選項(xiàng),nmap也可以報(bào)告遠(yuǎn)程主機(jī)的下列特征:使用的操作系統(tǒng)、TCP序列、運(yùn)行綁定到每個(gè)端口上的應(yīng)用程序的用戶名、DNS名、主機(jī)地址是否是欺騙地址、以及其它一些東西。
4.功能選項(xiàng)
功能選項(xiàng)可以組合使用。一些功能選項(xiàng)只能夠在某種掃描模式下使用。nmap會(huì)自動(dòng)識(shí)別無(wú)效或者不支持的功能選項(xiàng)組合,并向用戶發(fā)出警告信息。
如果你是有經(jīng)驗(yàn)的用戶,可以略過結(jié)尾的示例一節(jié)??梢允褂胣map -h快速列出功能選項(xiàng)的列表。
4.1 掃描類型
-sT
TCP connect()掃描:這是最基本的TCP掃描方式。connect()是一種系統(tǒng)調(diào)用,由操作系統(tǒng)提供,用來打開一個(gè)連接。如果目標(biāo)端口有程序監(jiān)聽,connect()就會(huì)成功返回,否則這個(gè)端口是不可達(dá)的。這項(xiàng)技術(shù)最大的優(yōu)點(diǎn)是,你勿需root權(quán)限。任何UNIX用戶都可以自由使用這個(gè)系統(tǒng)調(diào)用。這種掃描很容易被檢測(cè)到,在目標(biāo)主機(jī)的日志中會(huì)記錄大批的連接請(qǐng)求以及錯(cuò)誤信息。
-sS
TCP同步掃描(TCP SYN):因?yàn)椴槐厝看蜷_一個(gè)TCP連接,所以這項(xiàng)技術(shù)通常稱為半開掃描(half-open)。你可以發(fā)出一個(gè)TCP同步包(SYN),然后等待回應(yīng)。如果對(duì)方返回SYN|ACK(響應(yīng))包就表示目標(biāo)端口正在監(jiān)聽;如果返回RST數(shù)據(jù)包,就表示目標(biāo)端口沒有監(jiān)聽程序;如果收到一個(gè)SYN|ACK包,源主機(jī)就會(huì)馬上發(fā)出一個(gè)RST(復(fù)位)數(shù)據(jù)包斷開和目標(biāo)主機(jī)的連接,這實(shí)際上有我們的操作系統(tǒng)內(nèi)核自動(dòng)完成的。這項(xiàng)技術(shù)最大的好處是,很少有系統(tǒng)能夠把這記入系統(tǒng)日志。不過,你需要root權(quán)限來定制SYN數(shù)據(jù)包。
-sF -sF -sN
秘密FIN數(shù)據(jù)包掃描、圣誕樹(Xmas Tree)、空(Null)掃描模式:即使SYN掃描都無(wú)法確定的情況下使用。一些防火墻和包過濾軟件能夠?qū)Πl(fā)送到被限制端口的SYN數(shù)據(jù)包進(jìn)行監(jiān)視,而且有些程序比如synlogger和courtney能夠檢測(cè)那些掃描。這些高級(jí)的掃描方式可以逃過這些干擾。
這些掃描方式的理論依據(jù)是:關(guān)閉的端口需要對(duì)你的探測(cè)包回應(yīng)RST包,而打開的端口必需忽略有問題的包(參考RFC 793第64頁(yè))。FIN掃描使用暴露的FIN數(shù)據(jù)包來探測(cè),而圣誕樹掃描打開數(shù)據(jù)包的FIN、URG和PUSH標(biāo)志。不幸的是,微軟決定完全忽略這個(gè)標(biāo)準(zhǔn),另起爐灶。所以這種掃描方式對(duì)Windows95/NT無(wú)效。不過,從另外的角度講,可以使用這種方式來分別兩種不同的平臺(tái)。如果使用這種掃描方式可以發(fā)現(xiàn)打開的端口,你就可以確定目標(biāo)注意運(yùn)行的不是Windows系統(tǒng)。如果使用-sF、-sX或者-sN掃描顯示所有的端口都是關(guān)閉的,而使用SYN掃描顯示有打開的端口,你可以確定目標(biāo)主機(jī)可能運(yùn)行的是Windwos系統(tǒng)。現(xiàn)在這種方式?jīng)]有什么太大的用處,因?yàn)閚map有內(nèi)嵌的操作系統(tǒng)檢測(cè)功能。還有其它幾個(gè)系統(tǒng)使用和windows同樣的處理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在應(yīng)該拋棄數(shù)據(jù)包時(shí),以上這些系統(tǒng)都會(huì)從打開的端口發(fā)出復(fù)位數(shù)據(jù)包?!?/p>
-sP
ping掃描:有時(shí)你只是想知道此時(shí)網(wǎng)絡(luò)上哪些主機(jī)正在運(yùn)行。通過向你指定的網(wǎng)絡(luò)內(nèi)的每個(gè)IP地址發(fā)送ICMP echo請(qǐng)求數(shù)據(jù)包,nmap就可以完成這項(xiàng)任務(wù)。如果主機(jī)正在運(yùn)行就會(huì)作出響應(yīng)。不幸的是,一些站點(diǎn)例如:microsoft.com阻塞ICMP echo請(qǐng)求數(shù)據(jù)包。然而,在默認(rèn)的情況下nmap也能夠向80端口發(fā)送TCP ack包,如果你收到一個(gè)RST包,就表示主機(jī)正在運(yùn)行。nmap使用的第三種技術(shù)是:發(fā)送一個(gè)SYN包,然后等待一個(gè)RST或者SYN/ACK包。對(duì)于非root用戶,nmap使用connect()方法。
在默認(rèn)的情況下(root用戶),nmap并行使用ICMP和ACK技術(shù)。
注意,nmap在任何情況下都會(huì)進(jìn)行ping掃描,只有目標(biāo)主機(jī)處于運(yùn)行狀態(tài),才會(huì)進(jìn)行后續(xù)的掃描。如果你只是想知道目標(biāo)主機(jī)是否運(yùn)行,而不想進(jìn)行其它掃描,才會(huì)用到這個(gè)選項(xiàng)。
-sU
UDP掃描:如果你想知道在某臺(tái)主機(jī)上提供哪些UDP(用戶數(shù)據(jù)報(bào)協(xié)議,RFC768)服務(wù),可以使用這種掃描方法。nmap首先向目標(biāo)主機(jī)的每個(gè)端口發(fā)出一個(gè)0字節(jié)的UDP包,如果我們收到端口不可達(dá)的ICMP消息,端口就是關(guān)閉的,否則我們就假設(shè)它是打開的。
有些人可能會(huì)想U(xiǎn)DP掃描是沒有什么意思的。但是,我經(jīng)常會(huì)想到最近出現(xiàn)的solaris rpcbind缺陷。rpcbind隱藏在一個(gè)未公開的UDP端口上,這個(gè)端口號(hào)大于32770。所以即使端口111(portmap的眾所周知端口號(hào))被防火墻阻塞有關(guān)系。但是你能發(fā)現(xiàn)大于30000的哪個(gè)端口上有程序正在監(jiān)聽嗎?使用UDP掃描就能!cDc Back Orifice的后門程序就隱藏在Windows主機(jī)的一個(gè)可配置的UDP端口中。不考慮一些通常的安全缺陷,一些服務(wù)例如:snmp、tftp、NFS使用UDP協(xié)議。不幸的是,UDP掃描有時(shí)非常緩慢,因?yàn)榇蠖鄶?shù)主機(jī)限制ICMP錯(cuò)誤信息的比例(在RFC1812中的建議)。例如,在Linux內(nèi)核中(在net/ipv4/icmp.h文件中)限制每4秒鐘只能出現(xiàn)80條目標(biāo)豢紗锏腎CMP消息,如果超過這個(gè)比例,就會(huì)給1/4秒鐘的處罰。solaris的限制更加嚴(yán)格,每秒鐘只允許出現(xiàn)大約2條ICMP不可達(dá)消息,這樣,使掃描更加緩慢。nmap會(huì)檢測(cè)這個(gè)限制的比例,減緩發(fā)送速度,而不是發(fā)送大量的將被目標(biāo)主機(jī)丟棄的無(wú)用數(shù)據(jù)包。
不過Micro$oft忽略了RFC1812的這個(gè)建議,不對(duì)這個(gè)比例做任何的限制。所以我們可以能夠快速掃描運(yùn)行Win95/NT的主機(jī)上的所有65K個(gè)端口。
-sA
ACK掃描:這項(xiàng)高級(jí)的掃描方法通常用來穿過防火墻的規(guī)則集。通常情況下,這有助于確定一個(gè)防火墻是功能比較完善的或者是一個(gè)簡(jiǎn)單的包過濾程序,只是阻塞進(jìn)入的SYN包。
這種掃描是向特定的端口發(fā)送ACK包(使用隨機(jī)的應(yīng)答/序列號(hào))。如果返回一個(gè)RST包,這個(gè)端口就標(biāo)記為unfiltered狀態(tài)。如果什么都沒有返回,或者返回一個(gè)不可達(dá)ICMP消息,這個(gè)端口就歸入filtered類。注意,nmap通常不輸出unfiltered的端口,所以在輸出中通常不顯示所有被探測(cè)的端口。顯然,這種掃描方式不能找出處于打開狀態(tài)的端口?!?/p>
-sW
對(duì)滑動(dòng)窗口的掃描:這項(xiàng)高級(jí)掃描技術(shù)非常類似于ACK掃描,除了它有時(shí)可以檢測(cè)到處于打開狀態(tài)的端口,因?yàn)榛瑒?dòng)窗口的大小是不規(guī)則的,有些操作系統(tǒng)可以報(bào)告其大小。這些系統(tǒng)至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64 UNIX、DG/UX、OpenVMS、Digital UNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS 4.x、Ultrix、VAX、VXWORKS。從nmap-hackers郵件3列表的文檔中可以得到完整的列表?!?/p>
-sR
RPC掃描。這種方法和nmap的其它不同的端口掃描方法結(jié)合使用。選擇所有處于打開狀態(tài)的端口向它們發(fā)出SunRPC程序的NULL命令,以確定它們是否是RPC端口,如果是,就確定是哪種軟件及其版本號(hào)。
因此你能夠獲得防火墻的一些信息。誘餌掃描現(xiàn)在還不能和RPC掃描結(jié)合使用。
-b
FTP反彈攻擊(bounce attack):FTP協(xié)議(RFC 959)有一個(gè)很有意思的特征,它支持代理FTP連接。也就是說,我能夠從evil.com連接到FTP服務(wù)器target.com,并且可以要求這臺(tái)FTP服務(wù)器為自己發(fā)送Internet上任何地方的文件!1985年,RFC959完成時(shí),這個(gè)特征就能很好地工作了。然而,在今天的Internet中,我們不能讓人們劫持FTP服務(wù)器,讓它向Internet上的任意節(jié)點(diǎn)發(fā)送數(shù)據(jù)。如同Hobbit在1995年寫的文章中所說的,這個(gè)協(xié)議"能夠用來做投遞虛擬的不可達(dá)郵件和新聞,進(jìn)入各種站點(diǎn)的服務(wù)器,填滿硬盤,跳過防火墻,以及其它的騷擾活動(dòng),而且很難進(jìn)行追蹤"。我們可以使用這個(gè)特征,在一臺(tái)代理FTP服務(wù)器掃描TCP端口。因此,你需要連接到防火墻后面的一臺(tái)FTP服務(wù)器,接著進(jìn)行端口掃描。如果在這臺(tái)FTP服務(wù)器中有可讀寫的目錄,你還可以向目標(biāo)端口任意發(fā)送數(shù)據(jù)(不過nmap不能為你做這些)。
傳遞給-b功能選項(xiàng)的參數(shù)是你要作為代理的FTP服務(wù)器。語(yǔ)法格式為:
-b username:password@server:port。
除了server以外,其余都是可選的。如果你想知道什么服務(wù)器有這種缺陷,可以參考我在Phrack 51發(fā)表的文章。還可以在nmap的站點(diǎn)得到這篇文章的最新版本。
4.2 通用選項(xiàng)
這些內(nèi)容不是必需的,但是很有用。
-P0
在掃描之前,不必ping主機(jī)。有些網(wǎng)絡(luò)的防火墻不允許ICMP echo請(qǐng)求穿過,使用這個(gè)選項(xiàng)可以對(duì)這些網(wǎng)絡(luò)進(jìn)行掃描。microsoft.com就是一個(gè)例子,因此在掃描這個(gè)站點(diǎn)時(shí),你應(yīng)該一直使用-P0或者-PT 80選項(xiàng)。
-PT
掃描之前,使用TCP ping確定哪些主機(jī)正在運(yùn)行。nmap不是通過發(fā)送ICMP echo請(qǐng)求包然后等待響應(yīng)來實(shí)現(xiàn)這種功能,而是向目標(biāo)網(wǎng)絡(luò)(或者單一主機(jī))發(fā)出TCP ACK包然后等待回應(yīng)。如果主機(jī)正在運(yùn)行就會(huì)返回RST包。只有在目標(biāo)網(wǎng)絡(luò)/主機(jī)阻塞了ping包,而仍舊允許你對(duì)其進(jìn)行掃描時(shí),這個(gè)選項(xiàng)才有效。對(duì)于非root用戶,我們使用connect()系統(tǒng)調(diào)用來實(shí)現(xiàn)這項(xiàng)功能。使用-PT 來設(shè)定目標(biāo)端口。默認(rèn)的端口號(hào)是80,因?yàn)檫@個(gè)端口通常不會(huì)被過濾。
-PS
對(duì)于root用戶,這個(gè)選項(xiàng)讓nmap使用SYN包而不是ACK包來對(duì)目標(biāo)主機(jī)進(jìn)行掃描。如果主機(jī)正在運(yùn)行就返回一個(gè)RST包(或者一個(gè)SYN/ACK包)?!?/p>
-PI
設(shè)置這個(gè)選項(xiàng),讓nmap使用真正的ping(ICMP echo請(qǐng)求)來掃描目標(biāo)主機(jī)是否正在運(yùn)行。使用這個(gè)選項(xiàng)讓nmap發(fā)現(xiàn)正在運(yùn)行的主機(jī)的同時(shí),nmap也會(huì)對(duì)你的直接子網(wǎng)廣播地址進(jìn)行觀察。直接子網(wǎng)廣播地址一些外部可達(dá)的IP地址,把外部的包轉(zhuǎn)換為一個(gè)內(nèi)向的IP廣播包,向一個(gè)計(jì)算機(jī)子網(wǎng)發(fā)送。這些IP廣播包應(yīng)該刪除,因?yàn)闀?huì)造成拒絕服務(wù)攻擊(例如smurf)?!?/p>
-PB
這是默認(rèn)的ping掃描選項(xiàng)。它使用ACK(-PT)和ICMP(-PI)兩種掃描類型并行掃描。如果防火墻能夠過濾其中一種包,使用這種方法,你就能夠穿過防火墻?!?/p>
-O
這個(gè)選項(xiàng)激活對(duì)TCP/IP指紋特征(fingerprinting)的掃描,獲得遠(yuǎn)程主機(jī)的標(biāo)志。換句話說,nmap使用一些技術(shù)檢測(cè)目標(biāo)主機(jī)操作系統(tǒng)網(wǎng)絡(luò)協(xié)議棧的特征。nmap使用這些信息建立遠(yuǎn)程主機(jī)的指紋特征,把它和已知的操作系統(tǒng)指紋特征數(shù)據(jù)庫(kù)做比較,就可以知道目標(biāo)主機(jī)操作系統(tǒng)的類型。
-I
這個(gè)選項(xiàng)打開nmap的反向標(biāo)志掃描功能。Dave Goldsmith 1996年向bugtap發(fā)出的郵件注意到這個(gè)協(xié)議,ident協(xié)議(rfc 1413)允許使用TCP連接給出任何進(jìn)程擁有者的用戶名,即使這個(gè)進(jìn)程并沒有初始化連接。例如,你可以連接到HTTP端口,接著使用identd確定這個(gè)服務(wù)器是否由root用戶運(yùn)行。這種掃描只能在同目標(biāo)端口建立完全的TCP連接時(shí)(例如:-sT掃描選項(xiàng))才能成功。使用-I選項(xiàng)是,遠(yuǎn)程主機(jī)的identd精靈進(jìn)程就會(huì)查詢?cè)诿總€(gè)打開的端口上監(jiān)聽的進(jìn)程的擁有者。顯然,如果遠(yuǎn)程主機(jī)沒有運(yùn)行identd程序,這種掃描方法無(wú)效。
-f
這個(gè)選項(xiàng)使nmap使用碎片IP數(shù)據(jù)包發(fā)送SYN、FIN、XMAS、NULL。使用碎片數(shù)據(jù)包增加包過濾、入侵檢測(cè)系統(tǒng)的難度,使其無(wú)法知道你的企圖。不過,要慎重使用這個(gè)選項(xiàng)!有些程序在處理這些碎片包時(shí)會(huì)有麻煩,我最喜歡的嗅探器在接受到碎片包的頭36個(gè)字節(jié)時(shí),就會(huì)發(fā)生segmentation faulted。因此,在nmap中使用了24個(gè)字節(jié)的碎片數(shù)據(jù)包。雖然包過濾器和防火墻不能防這種方法,但是有很多網(wǎng)絡(luò)出于性能上的考慮,禁止數(shù)據(jù)包的分片。
注意這個(gè)選項(xiàng)不能在所有的平臺(tái)上使用。它在Linux、FreeBSD、OpenBSD以及其它一些UNIX系統(tǒng)能夠很好工作?!?/p>
-v
冗余模式。強(qiáng)烈推薦使用這個(gè)選項(xiàng),它會(huì)給出掃描過程中的詳細(xì)信息。使用這個(gè)選項(xiàng),你可以得到事半功倍的效果。使用-d選項(xiàng)可以得到更加詳細(xì)的信息。
-h
快速參考選項(xiàng)。
-oN
把掃描結(jié)果重定向到一個(gè)可讀的文件logfilename中。
-oM
把掃描結(jié)果重定向到logfilename文件中,這個(gè)文件使用主機(jī)可以解析的語(yǔ)法。你可以使用-oM -來代替logfilename,這樣輸出就被重定向到標(biāo)準(zhǔn)輸出stdout。在這種情況下,正常的輸出將被覆蓋,錯(cuò)誤信息荏苒可以輸出到標(biāo)準(zhǔn)錯(cuò)誤stderr。要注意,如果同時(shí)使用了-v選項(xiàng),在屏幕上會(huì)打印出其它的信息。
-oS thIs l0gz th3 r3suLtS of YouR ScanZ iN a s| THe fiL3 U sPecfy 4s an arGuMEnT! U kAn gIv3 the 4rgument -
(wItHOUt qUOteZ) to sh00t output iNT0 stDouT!@!! 莫名其妙,下面是我猜著翻譯的,相形字?
把掃描結(jié)果重定向到一個(gè)文件logfilename中,這個(gè)文件使用一種"黑客方言"的語(yǔ)法形式(作者開的玩笑?)。同樣,使用-oS -就會(huì)把結(jié)果重定向到標(biāo)準(zhǔn)輸出上?!?/p>
-resume
某個(gè)網(wǎng)絡(luò)掃描可能由于control-C或者網(wǎng)絡(luò)損失等原因被中斷,使用這個(gè)選項(xiàng)可以使掃描接著以前的掃描進(jìn)行。logfilename是被取消掃描的日志文件,它必須是可讀形式或者機(jī)器可以解析的形式。而且接著進(jìn)行的掃描不能增加新的選項(xiàng),只能使用與被中斷的掃描相同的選項(xiàng)。nmap會(huì)接著日志文件中的最后一次成功掃描進(jìn)行新的掃描。
-iL
從inputfilename文件中讀取掃描的目標(biāo)。在這個(gè)文件中要有一個(gè)主機(jī)或者網(wǎng)絡(luò)的列表,由空格鍵、制表鍵或者回車鍵作為分割符。如果使用-iL -,nmap就會(huì)從標(biāo)準(zhǔn)輸入stdin讀取主機(jī)名字。你可以從指定目標(biāo)一節(jié)得到更加詳細(xì)的信息?!?/p>
-iR
讓nmap自己隨機(jī)挑選主機(jī)進(jìn)行掃描。
-p
這個(gè)選項(xiàng)讓你選擇要進(jìn)行掃描的端口號(hào)的范圍。例如,-p 23表示:只掃描目標(biāo)主機(jī)的23號(hào)端口。-p 20-30,139,60000-表示:掃描20到30號(hào)端口,139號(hào)端口以及所有大于60000的端口。在默認(rèn)情況下,nmap掃描從1到1024號(hào)以及nmap-services文件(如果使用RPM軟件包,一般在/usr/share/nmap/目錄中)中定義的端口列表?!?/p>
-F
快速掃描模式,只掃描在nmap-services文件中列出的端口。顯然比掃描所有65535個(gè)端口要快?!?/p>
-D
使用誘餌掃描方法對(duì)目標(biāo)網(wǎng)絡(luò)/主機(jī)進(jìn)行掃描。如果nmap使用這種方法對(duì)目標(biāo)網(wǎng)絡(luò)進(jìn)行掃描,那么從目標(biāo)主機(jī)/網(wǎng)絡(luò)的角度來看,掃描就象從其它主機(jī)(decoy1,等)發(fā)出的。從而,即使目標(biāo)主機(jī)的IDS(入侵檢測(cè)系統(tǒng))對(duì)端口掃描發(fā)出報(bào)警,它們也不可能知道哪個(gè)是真正發(fā)起掃描的地址,哪個(gè)是無(wú)辜的。這種掃描方法可以有效地對(duì)付例如路由跟蹤、response-dropping等積極的防御機(jī)制,能夠很好地隱藏你的IP地址?!?/p>
每個(gè)誘餌主機(jī)名使用逗號(hào)分割開,你也可以使用ME選項(xiàng),它代表你自己的主機(jī),和誘餌主機(jī)名混雜在一起。如果你把ME放在第六或者更靠后的位置,一些端口掃描檢測(cè)軟件幾乎根本不會(huì)顯示你的IP地址。如果你不使用ME選項(xiàng),nmap會(huì)把你的IP地址隨機(jī)夾雜在誘餌主機(jī)之中。
注意:你用來作為誘餌的主機(jī)應(yīng)該正在運(yùn)行或者你只是偶爾向目標(biāo)發(fā)送SYN數(shù)據(jù)包。很顯然,如果在網(wǎng)絡(luò)上只有一臺(tái)主機(jī)運(yùn)行,目標(biāo)將很輕松就會(huì)確定是哪臺(tái)主機(jī)進(jìn)行的掃描?;蛟S,你還要直接使用誘餌的IP地址而不是其域名,這樣誘餌網(wǎng)絡(luò)的域名服務(wù)器的日志上就不會(huì)留下關(guān)于你的記錄?!?/p>
還要注意:一些愚蠢的端口掃描檢測(cè)軟件會(huì)拒絕路由試圖進(jìn)行端口掃描的主機(jī)。因而,你需要讓目標(biāo)主機(jī)和一些誘餌斷開連接。如果誘餌是目標(biāo)主機(jī)的網(wǎng)關(guān)或者就是其自己時(shí),會(huì)給目標(biāo)主機(jī)造成很大問題。所以你需要慎重使用這個(gè)選項(xiàng)。
誘餌掃描既可以在起始的ping掃描也可以在真正的掃描狀態(tài)下使用。它也可以和-O選項(xiàng)組合使用?!?/p>
使用太多的誘餌掃描能夠減緩你的掃描速度甚至可能造成掃描結(jié)果不正確。同時(shí),有些ISP會(huì)把你的欺騙包過濾掉。雖然現(xiàn)在大多數(shù)的ISP不會(huì)對(duì)此進(jìn)行限制?!?/p>
-S
在一些情況下,nmap可能無(wú)法確定你的源地址(nmap會(huì)告訴你)。
在這種情況下,可以使用這個(gè)選項(xiàng)給出你的IP地址。
在欺騙掃描時(shí),也使用這個(gè)選項(xiàng)。使用這個(gè)選項(xiàng)可以讓目標(biāo)認(rèn)為是其它的主機(jī)對(duì)自己進(jìn)行掃描。
-e
告訴nmap使用哪個(gè)接口發(fā)送和接受數(shù)據(jù)包。nmap能夠自動(dòng)對(duì)此接口進(jìn)行檢測(cè),如果無(wú)效就會(huì)告訴你。
-g
設(shè)置掃描的源端口。一些天真的防火墻和包過濾器的規(guī)則集允許源端口為DNS(53)或者FTP-DATA(20)的包通過和實(shí)現(xiàn)連接。顯然,如果攻擊者把源端口修改為20或者53,就可以摧毀防火墻的防護(hù)。在使用UDP掃描時(shí),先使用53號(hào)端口;使用TCP掃描時(shí),先使用20號(hào)端口。注意只有在能夠使用這個(gè)端口進(jìn)行掃描時(shí),nmap才會(huì)使用這個(gè)端口。例如,如果你無(wú)法進(jìn)行TCP掃描,nmap會(huì)自動(dòng)改變?cè)炊丝冢词鼓闶褂昧?g選項(xiàng)。
對(duì)于一些掃描,使用這個(gè)選項(xiàng)會(huì)造成性能上的微小損失,因?yàn)槲矣袝r(shí)會(huì)保存關(guān)于特定源端口的一些有用的信息。
-r
告訴nmap不要打亂被掃描端口的順序。
--randomize_hosts
使nmap在掃描之前,打亂每組掃描中的主機(jī)順序,nmap每組可以掃描最多2048臺(tái)主機(jī)。這樣,可以使掃描更不容易被網(wǎng)絡(luò)監(jiān)視器發(fā)現(xiàn),尤其和--scan_delay 選項(xiàng)組合使用,更能有效避免被發(fā)現(xiàn)。
-M
設(shè)置進(jìn)行TCP connect()掃描時(shí),最多使用多少個(gè)套接字進(jìn)行并行的掃描。使用這個(gè)選項(xiàng)可以降低掃描速度,避免遠(yuǎn)程目標(biāo)宕機(jī)。
4.3 適時(shí)選項(xiàng)
通常,nmap在運(yùn)行時(shí),能夠很好地根據(jù)網(wǎng)絡(luò)特點(diǎn)進(jìn)行調(diào)整。掃描時(shí),nmap會(huì)盡量減少被目標(biāo)檢測(cè)到的機(jī)會(huì),同時(shí)盡可能加快掃描速度。然而,nmap默認(rèn)的適時(shí)策略有時(shí)候不太適合你的目標(biāo)。使用下面這些選項(xiàng),可以控制nmap的掃描timing:
-T
設(shè)置nmap的適時(shí)策略。Paranoid:為了避開IDS的檢測(cè)使掃描速度極慢,nmap串行所有的掃描,每隔至少5分鐘發(fā)送一個(gè)包;Sneaky:也差不多,只是數(shù)據(jù)包的發(fā)送間隔是15秒;Polite:不增加太大的網(wǎng)絡(luò)負(fù)載,避免宕掉目標(biāo)主機(jī),串行每個(gè)探測(cè),并且使每個(gè)探測(cè)有0.4秒種的間隔;Normal:nmap默認(rèn)的選項(xiàng),在不是網(wǎng)絡(luò)過載或者主機(jī)/端口丟失的情況下盡可能快速地掃描;Aggressive:設(shè)置5分鐘的超時(shí)限制,使對(duì)每臺(tái)主機(jī)的掃描時(shí)間不超過5分鐘,并且使對(duì)每次探測(cè)回應(yīng)的等待時(shí)間不超過1.5秒鐘;b>Insane:只適合快速的網(wǎng)絡(luò)或者你不在意丟失某些信息,每臺(tái)主機(jī)的超時(shí)限制是75秒,對(duì)每次探測(cè)只等待0.3秒鐘。你也可是使用數(shù)字來代替這些模式,例如:-T 0等于-T Paranoid,-T 5等于-T Insane。
這些適時(shí)模式不能下面的適時(shí)選項(xiàng)組合使用。
--host_timeout
設(shè)置掃描一臺(tái)主機(jī)的時(shí)間,以毫秒為單位。默認(rèn)的情況下,沒有超時(shí)限制。
--max_rtt_timeout
設(shè)置對(duì)每次探測(cè)的等待時(shí)間,以毫秒為單位。如果超過這個(gè)時(shí)間限制就重傳或者超時(shí)。默認(rèn)值是大約9000毫秒。
--min_rtt_timeout
當(dāng)目標(biāo)主機(jī)的響應(yīng)很快時(shí),nmap就縮短每次探測(cè)的超時(shí)時(shí)間。這樣會(huì)提高掃描的速度,但是可能丟失某些響應(yīng)時(shí)間比較長(zhǎng)的包。使用這個(gè)選項(xiàng),可以讓nmap對(duì)每次探測(cè)至少等待你指定的時(shí)間,以毫秒為單位。
--initial_rtt_timeout
設(shè)置初始探測(cè)的超時(shí)值。一般這個(gè)選項(xiàng)只在使用-P0選項(xiàng)掃描有防火墻保護(hù)的主機(jī)才有用。默認(rèn)值是6000毫秒。
--max_parallelism
設(shè)置最大的并行掃描數(shù)量。--max_parallelism 1表示同時(shí)只掃描一個(gè)端口。這個(gè)選項(xiàng)對(duì)其它的并行掃描也有效,例如ping sweep, RPC scan。
--scan_delay
設(shè)置在兩次探測(cè)之間,nmap必須等待的時(shí)間。這個(gè)選項(xiàng)主要用于降低網(wǎng)絡(luò)的負(fù)載。
4.4 目標(biāo)設(shè)定
在nmap的所有參數(shù)中,只有目標(biāo)參數(shù)是必須給出的。其最簡(jiǎn)單的形式是在命令行直接輸入一個(gè)主機(jī)名或者一個(gè)IP地址。如果你希望掃描某個(gè)IP地址的一個(gè)子網(wǎng),你可以在主機(jī)名或者IP地址的后面加上/掩碼。掩碼在0(掃描整個(gè)網(wǎng)絡(luò))到32(只掃描這個(gè)主機(jī))。使用/24掃描C類地址,/16掃描B類地址。
除此之外,nmap還有更加強(qiáng)大的表示方式讓你更加靈活地指定IP地址。例如,如果要掃描這個(gè)B類網(wǎng)絡(luò)128.210.*.*,你可以使用下面三種方式來指定這些地址:128.210.*.*、128.21-.0-255.0-255或者128.210.0.0/16這三種形式是等價(jià)的。
5.示例
# nmap -sP 192.168.1.0/24
#進(jìn)行ping掃描,打印出對(duì)掃描做出響應(yīng)的主機(jī),不做進(jìn)一步測(cè)試(如端口掃描或者操作系統(tǒng)探測(cè))
# nmap -sL 192.168.1.0/24
#僅列出指定網(wǎng)絡(luò)上的每臺(tái)主機(jī),不發(fā)送任何報(bào)文到目標(biāo)主機(jī)
# nmap -PS 192.168.1.234
#探測(cè)目標(biāo)主機(jī)開放的端口,可以指定一個(gè)以逗號(hào)分隔的端口列表(如-PS22,23,25,80)
# nmap -PU 192.168.1.0/24
#使用UDP ping探測(cè)主機(jī)
# nmap -sS 192.168.1.0/24
#使用頻率最高的掃描選項(xiàng):SYN掃描,又稱為半開放掃描,它不打開一個(gè)完全的TCP連接,執(zhí)行得很快
# nmap -sT 192.168.1.0/24
#當(dāng)SYN掃描不能用時(shí),TCP Connect()掃描就是默認(rèn)的TCP掃描
# nmap -sU 192.168.1.0/24
#UDP掃描用-sU選項(xiàng),UDP掃描發(fā)送空的(沒有數(shù)據(jù))UDP報(bào)頭到每個(gè)目標(biāo)端口
# nmap -sO 192.168.1.19
#確定目標(biāo)機(jī)支持哪些IP協(xié)議 (TCP,ICMP,IGMP等)
# nmap -O 192.168.1.19
#探測(cè)目標(biāo)主機(jī)的操作系統(tǒng)
# nmap -A 192.168.1.19
#探測(cè)目標(biāo)主機(jī)的操作系統(tǒng)
# nmap -v scanme.nmap.org
#這個(gè)選項(xiàng)掃描主機(jī)scanme.nmap.org中 所有的保留TCP端口。選項(xiàng)-v啟用細(xì)節(jié)模式。
# nmap -sS -O scanme.nmap.org/24
#進(jìn)行秘密SYN掃描,對(duì)象為主機(jī)Saznme所在的“C類”網(wǎng)段 的255臺(tái)主機(jī)。同時(shí)嘗試確定每臺(tái)工作主機(jī)的操作系統(tǒng)類型。因?yàn)檫M(jìn)行SYN掃描 和操作系統(tǒng)檢測(cè),這個(gè)掃描需要有根權(quán)限。
# nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
#進(jìn)行主機(jī)列舉和TCP掃描,對(duì)象為B類188.116網(wǎng)段中255個(gè)8位子網(wǎng)。這 個(gè)測(cè)試用于確定系統(tǒng)是否運(yùn)行了sshd、DNS、imapd或4564端口。如果這些端口 打開,將使用版本檢測(cè)來確定哪種應(yīng)用在運(yùn)行。
# nmap -v -iR 100000 -P0 -p 80
#隨機(jī)選擇100000臺(tái)主機(jī)掃描是否運(yùn)行Web服務(wù)器(80端口)。由起始階段 發(fā)送探測(cè)報(bào)文來確定主機(jī)是否工作非常浪費(fèi)時(shí)間,而且只需探測(cè)主機(jī)的一個(gè)端口,因 此使用-P0禁止對(duì)主機(jī)列表。
# nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20
#掃描4096個(gè)IP地址,查找Web服務(wù)器(不ping),將結(jié)果以Grep和XML格式保存。
# host -l company.com | cut -d -f 4 | nmap -v -iL -
#進(jìn)行DNS區(qū)域傳輸,以發(fā)現(xiàn)company.com中的主機(jī),然后將IP地址提供給 Nmap。上述命令用于GNU/Linux -- 其它系統(tǒng)進(jìn)行區(qū)域傳輸時(shí)有不同的命令