網(wǎng)絡(luò)空間安全概論 實驗5漏洞掃描 Nmap掃描原理與用法_第1頁
網(wǎng)絡(luò)空間安全概論 實驗5漏洞掃描 Nmap掃描原理與用法_第2頁
網(wǎng)絡(luò)空間安全概論 實驗5漏洞掃描 Nmap掃描原理與用法_第3頁
網(wǎng)絡(luò)空間安全概論 實驗5漏洞掃描 Nmap掃描原理與用法_第4頁
網(wǎng)絡(luò)空間安全概論 實驗5漏洞掃描 Nmap掃描原理與用法_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Nmap掃描原理與用法1Nmap介紹/download.htmlNmap基本命令和典型用法?全面進攻性掃描(包括各種主機發(fā)現(xiàn)、端口掃描、版本掃描、OS掃描及默認腳本掃描):nmap-A-vtargetip?Ping掃描:nmap-sn-vtargetip?快速端口掃描:nmap-F-vtargetip?版本掃描:nmap-sV-vtargetip?操作系統(tǒng)掃描:nmap-O-vtargetip2Nmap掃描原理與用法PDF:Nmap是一款開源免費的網(wǎng)絡(luò)發(fā)現(xiàn)(NetworkDiscovery)和安全審計(SecurityAuditing)工具。軟件名字Nmap是NetworkMapper的簡稱。Nmap最初是由Fyodor在1997年開始創(chuàng)建的。隨后在開源社區(qū)眾多的志愿者參與下,該工具逐漸成為最為流行安全必備工具之一。最新版的Nmap6.0在2012年5月21日發(fā)布,詳情請參見:。一般情況下,Nmap用于列舉網(wǎng)絡(luò)主機清單、管理服務(wù)升級調(diào)度、監(jiān)控主機或服務(wù)運行狀況。Nmap可以檢測目標(biāo)機是否在線、端口開放情況、偵測運行的服務(wù)類型及版本信息、偵測操作系統(tǒng)與設(shè)備類型等信息。Nmap的優(yōu)點:1.

靈活。支持數(shù)十種不同的掃描方式,支持多種目標(biāo)對象的掃描。2.

強大。Nmap可以用于掃描互聯(lián)網(wǎng)上大規(guī)模的計算機。3.

可移植。支持主流操作系統(tǒng):Windows/Linux/Unix/MacOS等等;源碼開放,方便移植。4.

簡單。提供默認的操作能覆蓋大部分功能,基本端口掃描nmaptargetip,全面的掃描nmap–Atargetip。5.

自由。Nmap作為開源軟件,在GPLLicense的范圍內(nèi)可以自由的使用。6.

文檔豐富。Nmap官網(wǎng)提供了詳細的文檔描述。Nmap作者及其他安全專家編寫了多部Nmap參考書籍。7.

社區(qū)支持。Nmap背后有強大的社區(qū)團隊支持。8.

贊譽有加。獲得很多的獎勵,并在很多影視作品中出現(xiàn)(如黑客帝國2、DieHard4等)。9.

流行。目前Nmap已經(jīng)被成千上萬的安全專家列為必備的工具之一。

1.1

ZenmapZenmap是Nmap官方提供的圖形界面,通常隨Nmap的安裝包發(fā)布。Zenmap是用Python語言編寫而成的開源免費的圖形界面,能夠運行在不同操作系統(tǒng)平臺上(Windows/Linux/Unix/MacOS等)。Zenmap旨在為nmap提供更加簡單的操作方式。簡單常用的操作命令可以保存成為profile,用戶掃描時選擇profile即可;可以方便地比較不同的掃描結(jié)果;提供網(wǎng)絡(luò)拓撲結(jié)構(gòu)(NetworkTopology)的圖形顯示功能。其中Profile欄位,用于選擇“Zenmap默認提供的Profile”或“用戶創(chuàng)建的Profile”;Command欄位,用于顯示選擇Profile對應(yīng)的命令或者用戶自行指定的命令;Topology選項卡,用于顯示掃描到的目標(biāo)機與本機之間的拓撲結(jié)構(gòu)。1.2

功能架構(gòu)圖Nmap包含四項基本功能:1.主機發(fā)現(xiàn)(HostDiscovery)2.端口掃描(PortScanning)3.版本偵測(VersionDetection)4.操作系統(tǒng)偵測(OperatingSystemDetection)而這四項功能之間,又存在大致的依賴關(guān)系(通常情況下的順序關(guān)系,但特殊應(yīng)用另外考慮),首先需要進行主機發(fā)現(xiàn),隨后確定端口狀況,然后確定端口上運行具體應(yīng)用程序與版本信息,然后可以進行操作系統(tǒng)的偵測。而在四項基本功能的基礎(chǔ)上,Nmap提供防火墻與IDS(IntrusionDetectionSystem,入侵檢測系統(tǒng))的規(guī)避技巧,可以綜合應(yīng)用到四個基本功能的各個階段;另外Nmap提供強大的NSE(NmapScriptingLanguage)腳本引擎功能,腳本可以對基本功能進行補充和擴展。

2

Nmap基本掃描方法Nmap主要包括四個方面的掃描功能,主機發(fā)現(xiàn)、端口掃描、應(yīng)用與版本偵測、操作系統(tǒng)偵測。在詳細講解每個具體功能之前,首先可以看看Nmap的典型用法。2.1

用法引入2.1.1

確定端口狀況如果直接針對某臺計算的IP地址或域名進行掃描,那么Nmap對該主機進行主機發(fā)現(xiàn)過程和端口掃描。該方式執(zhí)行迅速,可以用于確定端口的開放狀況。命令形式:nmaptargethost可以確定目標(biāo)主機在線情況及端口基本狀況。

2.1.2

完整全面的掃描如果希望對某臺主機進行完整全面的掃描,那么可以使用nmap內(nèi)置的-A選項。使用了該選項,nmap對目標(biāo)主機進行主機發(fā)現(xiàn)、端口掃描、應(yīng)用程序與版本偵測、操作系統(tǒng)偵測及調(diào)用默認NSE腳本掃描。命令形式:nmap–T4–A–vtargethost其中-A選項用于使用進攻性(Aggressive)方式掃描;-T4指定掃描過程使用的時序(Timing),總有6個級別(0-5),級別越高,掃描速度越快,但也容易被防火墻或IDS檢測并屏蔽掉,在網(wǎng)絡(luò)通訊狀況良好的情況推薦使用T4;-v表示顯示冗余(verbosity)信息,在掃描過程中顯示掃描的細節(jié),從而讓用戶了解當(dāng)前的掃描狀態(tài)。例如,掃描局域網(wǎng)內(nèi)地址為00的電腦。顯而易見,掃描出的信息非常豐富,在對00的掃描報告部分中(以紅框圈出),可以看到主機發(fā)現(xiàn)的結(jié)果“Hostisup”;端口掃描出的結(jié)果,有996個關(guān)閉端口,4個開放端口(在未指定掃描端口時,Nmap默認掃描1000個最有可能開放的端口);而版本偵測針對掃描到的開放狀況進一步探測端口上運行的具體的應(yīng)用程序和版本信息;OS偵測對該目標(biāo)主機的設(shè)備類型與操作系統(tǒng)進行探測;而綠色框圖是nmap調(diào)用NSE腳本進行進一步的信息挖掘的顯示結(jié)果。2.2

主機發(fā)現(xiàn)主機發(fā)現(xiàn)(HostDiscovery),即用于發(fā)現(xiàn)目標(biāo)主機是否在線(Alive,處于開啟狀態(tài))。2.2.1

主機發(fā)現(xiàn)原理主機發(fā)現(xiàn)的原理與Ping命令類似,發(fā)送探測包到目標(biāo)主機,如果收到回復(fù),那么說明目標(biāo)主機是開啟的。Nmap支持十多種不同的主機探測方式,比如發(fā)送ICMPECHO/TIMESTAMP/NETMASK報文、發(fā)送TCPSYN/ACK包、發(fā)送SCTPINIT/COOKIE-ECHO包,用戶可以在不同的條件下靈活選用不同的方式來探測目標(biāo)機。主機發(fā)現(xiàn)基本原理:(以ICMPecho方式為例)Nmap的用戶位于源端,IP地址,向目標(biāo)主機發(fā)送ICMPEchoRequest。如果該請求報文沒有被防火墻攔截掉,那么目標(biāo)機會回復(fù)ICMPEchoReply包回來。以此來確定目標(biāo)主機是否在線。默認情況下,Nmap會發(fā)送四種不同類型的數(shù)據(jù)包來探測目標(biāo)主機是否在線。1.

ICMPechorequest2.

aTCPSYNpackettoport4433.

aTCPACKpackettoport804.

anICMPtimestamprequest依次發(fā)送四個報文探測目標(biāo)機是否開啟。只要收到其中一個包的回復(fù),那就證明目標(biāo)機開啟。使用四種不同類型的數(shù)據(jù)包可以避免因防火墻或丟包造成的判斷錯誤。2.2.2

主機發(fā)現(xiàn)的用法通常主機發(fā)現(xiàn)并不單獨使用,而只是作為端口掃描、版本偵測、OS偵測先行步驟。而在某些特殊應(yīng)用(例如確定大型局域網(wǎng)內(nèi)活動主機的數(shù)量),可能會單獨專門適用主機發(fā)現(xiàn)功能來完成。不管是作為輔助用法還是專門用途,用戶都可以使用Nmap提供的豐富的選項來定制主機發(fā)現(xiàn)的探測方式。[plain]viewplaincopyprint?1.-sL:

List

Scan

列表掃描,僅將指定的目標(biāo)的IP列舉出來,不進行主機發(fā)現(xiàn)。

2.-sn:

Ping

Scan

只進行主機發(fā)現(xiàn),不進行端口掃描。

3.-Pn:

將所有指定的主機視作開啟的,跳過主機發(fā)現(xiàn)的過程。

4-PS/PA/PU/PY[portlist]:

使用TCPSYN/ACK或SCTP

INIT/ECHO方式進行發(fā)現(xiàn)。

4.

5.-PE/PP/PM:

使用ICMP

echo,

timestamp,

and

netmask

請求包發(fā)現(xiàn)主機。-PO[protocollist]:

IP協(xié)議包探測對方主機是否開啟。

6.

7.-n/-R:

-n表示不進行DNS解析;-R表示總是進行DNS解析。

8.

9.--dns-servers

<serv1[,serv2],...>:

指定DNS服務(wù)器。

10.

11.--system-dns:

指定使用系統(tǒng)的DNS服務(wù)器

12.

13.--traceroute:

追蹤每個路由節(jié)點

-sL:ListScan列表掃描,僅將指定的目標(biāo)的IP列舉出來,不進行主機發(fā)現(xiàn)。-sn:PingScan只進行主機發(fā)現(xiàn),不進行端口掃描。-Pn:將所有指定的主機視作開啟的,跳過主機發(fā)現(xiàn)的過程。-PS/PA/PU/PY[portlist]:使用TCPSYN/ACK或SCTPINIT/ECHO方式進行發(fā)現(xiàn)。-PE/PP/PM:使用ICMPecho,timestamp,andnetmask請求包發(fā)現(xiàn)主機。-PO[protocollist]:使用IP協(xié)議包探測對方主機是否開啟。-n/-R:-n表示不進行DNS解析;-R表示總是進行DNS解析。--dns-servers<serv1[,serv2],...>:指定DNS服務(wù)器。--system-dns:指定使用系統(tǒng)的DNS服務(wù)器--traceroute:追蹤每個路由節(jié)點其中,比較常用的使用的是-sn,表示只單獨進行主機發(fā)現(xiàn)過程;-Pn表示直接跳過主機發(fā)現(xiàn)而進行端口掃描等高級操作(如果已經(jīng)確知目標(biāo)主機已經(jīng)開啟,可用該選項);-n,如果不想使用DNS或reverseDNS解析,那么可以使用該選項。2.2.3

使用演示探測下面以探測的主機為例,簡單演示主機發(fā)現(xiàn)的用法。命令如下:nmap–sn–PE–PS80,135–PU53使用Wireshark抓包,我們看到,向的IP地址7發(fā)送了四個探測包:ICMPEcho,80和135端口的TCPSYN包,53端口的UDP包(DNSdomain)。而收到ICMPEcho的回復(fù)與80端口的回復(fù)。從而確定了主機正常在線。探測局域網(wǎng)內(nèi)活動主機掃描局域網(wǎng)00-20范圍內(nèi)哪些IP的主機是活動的。命令如下:nmap–sn00-120從結(jié)果中,可以看到這個IP范圍內(nèi)有三臺主機處于活動狀態(tài)。從Wireshark抓取的包中,可以看到發(fā)送的探測包的情況:在局域網(wǎng)內(nèi),Nmap是通過ARP包來詢問IP地址上的主機是否活動的,如果收到ARP回復(fù)包,那么說明主機在線。例如,某條ARP回復(fù)的報文詳細信息如下:

2.3

端口掃描端口掃描是Nmap最基本最核心的功能,用于確定目標(biāo)主機的TCP/UDP端口的開放情況。默認情況下,Nmap會掃描1000個最有可能開放的TCP端口。Nmap通過探測將端口劃分為6個狀態(tài):1.open:端口是開放的。2.closed:端口是關(guān)閉的。3.filtered:端口被防火墻IDS/IPS屏蔽,無法確定其狀態(tài)。4.unfiltered:端口沒有被屏蔽,但是否開放需要進一步確定。5.open|filtered:端口是開放的或被屏蔽。6.closed|filtered:端口是關(guān)閉的或被屏蔽。2.3.1

端口掃描原理Nmap在端口掃描方面非常強大,提供了十多種探測方式。

TCPSYNscanning這是Nmap默認的掃描方式,通常被稱作半開放掃描(Half-openscanning)。該方式發(fā)送SYN到目標(biāo)端口,如果收到SYN/ACK回復(fù),那么判斷端口是開放的;如果收到RST包,說明該端口是關(guān)閉的。如果沒有收到回復(fù),那么判斷該端口被屏蔽(Filtered)。因為該方式僅發(fā)送SYN包對目標(biāo)主機的特定端口,但不建立的完整的TCP連接,所以相對比較隱蔽,而且效率比較高,適用范圍廣。TCPSYN探測到端口關(guān)閉:TCPSYN探測到端口開放:

TCPconnectscanningTCPconnect方式使用系統(tǒng)網(wǎng)絡(luò)APIconnect向目標(biāo)主機的端口發(fā)起連接,如果無法連接,說明該端口關(guān)閉。該方式掃描速度比較慢,而且由于建立完整的TCP連接會在目標(biāo)機上留下記錄信息,不夠隱蔽。所以,TCPconnect是TCPSYN無法使用才考慮選擇的方式。TCPconnect探測到端口關(guān)閉:TCPconnect探測到端口開放:

TCPACKscanning向目標(biāo)主機的端口發(fā)送ACK包,如果收到RST包,說明該端口沒有被防火墻屏蔽;沒有收到RST包,說明被屏蔽。該方式只能用于確定防火墻是否屏蔽某個端口,可以輔助TCPSYN的方式來判斷目標(biāo)主機防火墻的狀況。TCPACK探測到端口被屏蔽:TCPACK探測到端口未被屏蔽:

TCPFIN/Xmas/NULLscanning這三種掃描方式被稱為秘密掃描(StealthyScan),因為相對比較隱蔽。FIN掃描向目標(biāo)主機的端口發(fā)送的TCPFIN包或Xmastree包/Null包,如果收到對方RST回復(fù)包,那么說明該端口是關(guān)閉的;沒有收到RST包說明端口可能是開放的或被屏蔽的(open|filtered)。其中Xmastree包是指flags中FINURGPUSH被置為1的TCP包;NULL包是指所有flags都為0的TCP包。TCPFIN探測到主機端口是關(guān)閉的:TCPFIN探測到主機端口是開放或屏蔽的:

UDPscanningUDP掃描方式用于判斷UDP端口的情況。向目標(biāo)主機的UDP端口發(fā)送探測包,如果收到回復(fù)“ICMPportunreachable”就說明該端口是關(guān)閉的;如果沒有收到回復(fù),那說明UDP端口可能是開放的或屏蔽的。因此,通過反向排除法的方式來斷定哪些UDP端口是可能出于開放狀態(tài)。UDP端口關(guān)閉:UDP端口開放或被屏蔽:

其他方式除上述幾種常用的方式之外,Nmap還支持多種其他探測方式。例如使用SCTPINIT/COOKIE-ECHO方式來探測SCTP的端口開放情況;使用IPprotocol方式來探測目標(biāo)主機支持的協(xié)議類型(TCP/UDP/ICMP/SCTP等等);使用idlescan方式借助僵尸主機(zombiehost,也被稱為idlehost,該主機處于空閑狀態(tài)并且它的IPID方式為遞增。詳細實現(xiàn)原理參見:/book/idlescan.html)來掃描目標(biāo)主機,達到隱蔽自己的目的;或者使用FTPbouncescan,借助FTP允許的代理服務(wù)掃描其他的主機,同樣達到隱藏自己的身份的目的。

2.3.2

端口掃描用法端口掃描用法比較簡單,Nmap提供豐富的命令行參數(shù)來指定掃描方式和掃描端口。具體可以參見如下描述。

掃描方式選項[plain]viewplaincopyprint?1.-sS/sT/sA/sW/sM:指定使用

TCP

SYN/Connect()/ACK/Window/Maimon

scans的方式來對目標(biāo)主機進行掃描。

2.

3.

-sU:

指定使用UDP掃描方式確定目標(biāo)主機的UDP端口狀況。

4.

5.

-sN/sF/sX:

指定使用TCP

Null,

FIN,

and

Xmas

scans秘密掃描方式來協(xié)助探測對方的TCP端口狀態(tài)。

6.

7.

--scanflags

<flags>:

定制TCP包的flags。

8.

9.

-sI

<zombiehost[:probeport]>:

指定使用idle

scan方式來掃描目標(biāo)主機(前提需要找到合適的zombie

host)

10.

11.

-sY/sZ:

使用SCTP

INIT/COOKIE-ECHO來掃描SCTP協(xié)議端口的開放的情況。

12.

13.

-sO:

使用IP

protocol

掃描確定目標(biāo)機支持的協(xié)議類型。

14.

15.

-b

<FTP

relay

host>:

使用FTP

bounce

scan掃描方式

-sS/sT/sA/sW/sM:指定使用TCPSYN/Connect()/ACK/Window/Maimonscans的方式來對目標(biāo)主機進行掃描。-sU:指定使用UDP掃描方式確定目標(biāo)主機的UDP端口狀況。-sN/sF/sX:指定使用TCPNull,FIN,andXmasscans秘密掃描方式來協(xié)助探測對方的TCP端口狀態(tài)。--scanflags<flags>:定制TCP包的flags。-sI<zombiehost[:probeport]>:指定使用idlescan方式來掃描目標(biāo)主機(前提需要找到合適的zombiehost)-sY/sZ:使用SCTPINIT/COOKIE-ECHO來掃描SCTP協(xié)議端口的開放的情況。-sO:使用IPprotocol掃描確定目標(biāo)機支持的協(xié)議類型。-b<FTPrelayhost>:使用FTPbouncescan掃描方式

端口參數(shù)與掃描順序[plain]viewplaincopyprint?1.-p

<port

ranges>:

掃描指定的端口

2.

3.實例:

-p22;

-p1-65535;

-p

U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP協(xié)議、U代表UDP協(xié)議、S代表SCTP協(xié)議)

4.

5.-F:

Fast

mode

快速模式,僅掃描TOP

100的端口

6.

7.-r:

不進行端口隨機打亂的操作(如無該參數(shù),nmap會將要掃描的端口以隨機順序方式掃描,以讓nmap的掃描不易被對方防火墻檢測到)。

8.

9.--top-ports

<number>:掃描開放概率最高的number個端口(nmap的作者曾經(jīng)做過大規(guī)模地互聯(lián)網(wǎng)掃描,以此統(tǒng)計出網(wǎng)絡(luò)上各種端口可能開放的概率。以此排列出最有可能開放端口的列表,具體可以參見文件:nmap-services。默認情況下,nmap會掃描最有可能的1000個TCP端口)

10.

11.--port-ratio

<ratio>:

掃描指定頻率以上的端口。與上述--top-ports類似,這里以概率作為參數(shù),讓概率大于--port-ratio的端口才被掃描。顯然參數(shù)必須在在0到1之間,具體范圍概率情況可以查看nmap-services文件。

-p<portranges>:掃描指定的端口實例:-p22;-p1-65535;-pU:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP協(xié)議、U代表UDP協(xié)議、S代表SCTP協(xié)議)-F:Fastmode–快速模式,僅掃描TOP100的端口-r:不進行端口隨機打亂的操作(如無該參數(shù),nmap會將要掃描的端口以隨機順序方式掃描,以讓nmap的掃描不易被對方防火墻檢測到)。--top-ports<number>:掃描開放概率最高的number個端口(nmap的作者曾經(jīng)做過大規(guī)模地互聯(lián)網(wǎng)掃描,以此統(tǒng)計出網(wǎng)絡(luò)上各種端口可能開放的概率。以此排列出最有可能開放端口的列表,具體可以參見文件:nmap-services。默認情況下,nmap會掃描最有可能的1000個TCP端口)--port-ratio<ratio>:掃描指定頻率以上的端口。與上述--top-ports類似,這里以概率作為參數(shù),讓概率大于--port-ratio的端口才被掃描。顯然參數(shù)必須在在0到1之間,具體范圍概率情況可以查看nmap-services文件。

2.3.3

端口掃描演示這里,我們以掃描局域網(wǎng)內(nèi)00主機為例。命令如下:nmap–sS–sU–T4–top-ports30000參數(shù)-sS表示使用TCPSYN方式掃描TCP端口;-sU表示掃描UDP端口;-T4表示時間級別配置4級;--top-ports300表示掃描最有可能開放的300個端口(TCP和UDP分別有300個端口)。從上圖中,我們看到掃描結(jié)果,橫線處寫明有共有589端口是關(guān)閉的;紅色框圖中列舉出開放的端口和可能是開放的端口。2.4

版本偵測版本偵測,用于確定目標(biāo)主機開放端口上運行的具體的應(yīng)用程序及版本信息。Nmap提供的版本偵測具有如下的優(yōu)點:?高速。并行地進行套接字操作,實現(xiàn)一組高效的探測匹配定義語法。?盡可能地確定應(yīng)用名字與版本名字。?支持TCP/UDP協(xié)議,支持文本格式與二進制格式。?支持多種平臺服務(wù)的偵測,包括Linux/Windows/MacOS/FreeBSD等系統(tǒng)。?如果檢測到SSL,會調(diào)用openSSL繼續(xù)偵測運行在SSL上的具體協(xié)議(如HTTPS/POP3S/IMAPS)。?如果檢測到SunRPC服務(wù),那么會調(diào)用brute-forceRPCgrinder進一步確定RPC程序編號、名字、版本號。?支持完整的IPv6功能,包括TCP/UDP,基于TCP的SSL。?通用平臺枚舉功能(CPE)?廣泛的應(yīng)用程序數(shù)據(jù)庫(nmap-services-probes)。目前Nmap可以識別幾千種服務(wù)的簽名,包含了180多種不同的協(xié)議。2.4.1

版本偵測原理簡要的介紹版本的偵測原理。版本偵測主要分為以下幾個步驟:1.首先檢查open與open|filtered狀態(tài)的端口是否在排除端口列表內(nèi)。如果在排除列表,將該端口剔除。2.如果是TCP端口,嘗試建立TCP連接。嘗試等待片刻(通常6秒或更多,具體時間可以查詢文件nmap-services-probes中ProbeTCPNULLq||對應(yīng)的totalwaitms)。通常在等待時間內(nèi),會接收到目標(biāo)機發(fā)送的“WelcomeBanner”信息。nmap將接收到的Banner與nmap-services-probes中NULLprobe中的簽名進行對比。查找對應(yīng)應(yīng)用程序的名字與版本信息。3.如果通過“WelcomeBanner”無法確定應(yīng)用程序版本,那么nmap再嘗試發(fā)送其他的探測包(即從nmap-services-probes中挑選合適的probe),將probe得到回復(fù)包與數(shù)據(jù)庫中的簽名進行對比。如果反復(fù)探測都無法得出具體應(yīng)用,那么打印出應(yīng)用返回報文,讓用戶自行進一步判定。4.如果是UDP端口,那么直接使用nmap-services-probes中探測包進行探測匹配。根據(jù)結(jié)果對比分析出UDP應(yīng)用服務(wù)類型。5.如果探測到應(yīng)用程序是SSL,那么調(diào)用openSSL進一步的偵查運行在SSL之上的具體的應(yīng)用類型。6.如果探測到應(yīng)用程序是SunRPC,那么調(diào)用brute-forceRPCgrinder進一步探測具體服務(wù)。2.4.2

版本偵測的用法版本偵測方面的命令行選項比較簡單。[plain]viewplaincopyprint?1.-sV:

指定讓Nmap進行版本偵測

2.

3.--version-intensity

<level>:

指定版本偵測強度(0-9),默認為7。數(shù)值越高,探測出的服務(wù)越準(zhǔn)確,但是運行時間會比較長。

4.

5.--version-light:

指定使用輕量偵測方式

(intensity

2)

6.

7.--version-all:

嘗試使用所有的probes進行偵測

(intensity

9)

8.

9.--version-trace:

顯示出詳細的版本偵測過程信息。

-sV:指定讓Nmap進行版本偵測--version-intensity<level>:指定版本偵測強度(0-9),默認為7。數(shù)值越高,探測出的服務(wù)越準(zhǔn)確,但是運行時間會比較長。--version-light:指定使用輕量偵測方式(intensity2)--version-all:嘗試使用所有的probes進行偵測(intensity9)--version-trace:顯示出詳細的版本偵測過程信息。2.4.3

版本偵測演示命令:nmap–sV00對主機00進行版本偵測。從結(jié)果中,我們可以看到996個端口是關(guān)閉狀態(tài),對于4個open的端口進行版本偵測。圖中紅色為版本信息。紅色線條劃出部分是版本偵測得到的附加信息,因為從應(yīng)用中檢測到微軟特定的應(yīng)用服務(wù),所以推斷出對方運行的Windows的操作系統(tǒng)。2.5

OS偵測操作系統(tǒng)偵測用于檢測目標(biāo)主機運行的操作系統(tǒng)類型及設(shè)備類型等信息。Nmap擁有豐富的系統(tǒng)數(shù)據(jù)庫nmap-os-db,目前可以識別2600多種操作系統(tǒng)與設(shè)備類型。2.5.1

OS偵測原理Nmap使用TCP/IP協(xié)議棧指紋來識別不同的操作系統(tǒng)和設(shè)備。在RFC規(guī)范中,有些地方對TCP/IP的實現(xiàn)并沒有強制規(guī)定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根據(jù)這些細節(jié)上的差異來判斷操作系統(tǒng)的類型的。具體實現(xiàn)方式如下:1.Nmap內(nèi)部包含了2600多已知系統(tǒng)的指紋特征(在文件nmap-os-db文件中)。將此指紋數(shù)據(jù)庫作為進行指紋對比的樣本庫。2.分別挑選一個open和closed的端口,向其發(fā)送經(jīng)過精心設(shè)計的TCP/UDP/ICMP數(shù)據(jù)包,根據(jù)返回的數(shù)據(jù)包生成一份系統(tǒng)指紋。3.將探測生成的指紋與nmap-os-db中指紋進行對比,查找匹配的系統(tǒng)。如果無法匹配,以概率形式列舉出可能的系統(tǒng)。2.5.2

OS偵測用法OS偵測的用法簡單,Nmap提供的命令比較少。[plain]viewplaincopyprint?1.-O:

指定Nmap進行OS偵測。

2.

3.--osscan-limit:

限制Nmap只對確定的主機的進行OS探測(至少需確知該主機分別有一個open和closed的端口)。

4.

5.--osscan-guess:

大膽猜測對方的主機的系統(tǒng)類型。由此準(zhǔn)確性會下降不少,但會盡可能多為用戶提供潛在的操作系統(tǒng)。

-O:指定Nmap進行OS偵測。--osscan-limit:限制Nmap只對確定的主機的進行OS探測(至少需確知該主機分別有一個open和closed的端口)。--osscan-guess:大膽猜測對方的主機的系統(tǒng)類型。由此準(zhǔn)確性會下降不少,但會盡可能多為用戶提供潛在的操作系統(tǒng)。2.5.3

OS偵測演示命令:nmap–O00從上圖中可看到,指定-O選項后先進行主機發(fā)現(xiàn)與端口掃描,根據(jù)掃描到端口來進行進一步的OS偵測。獲取的結(jié)果信息有設(shè)備類型,操作系統(tǒng)類型,操作系統(tǒng)的CPE描述,操作系統(tǒng)細節(jié),網(wǎng)絡(luò)距離等。3

Nmap高級用法3.1

防火墻/IDS規(guī)避防火墻與IDS規(guī)避為用于繞開防火墻與IDS(入侵檢測系統(tǒng))的檢測與屏蔽,以便能夠更加詳細地發(fā)現(xiàn)目標(biāo)主機的狀況。Nmap提供了多種規(guī)避技巧,通??梢詮膬蓚€方面考慮規(guī)避方式:數(shù)據(jù)包的變換(PacketChange)與時序變換(TimingChange)。3.1.1

規(guī)避原理

分片(Fragmentation)將可疑的探測包進行分片處理(例如將TCP包拆分成多個IP包發(fā)送過去),某些簡單的防火墻為了加快處理速度可能不會進行重組檢查,以此避開其檢查。

IP誘騙(IPdecoys)在進行掃描時,將真實IP地址和其他主機的IP地址(其他主機需要在線,否則目標(biāo)主機將回復(fù)大量數(shù)據(jù)包到不存在的主機,從而實質(zhì)構(gòu)成了拒絕服務(wù)攻擊)混合使用,以此讓目標(biāo)主機的防火墻或IDS追蹤檢查大量的不同IP地址的數(shù)據(jù)包,降低其追查到自身的概率。注意,某些高級的IDS系統(tǒng)通過統(tǒng)計分析仍然可以追蹤出掃描者真實IP地址。

IP偽裝(IPSpoofing)顧名思義,IP偽裝即將自己發(fā)送的數(shù)據(jù)包中的IP地址偽裝成其他主機的地址,從而目標(biāo)機認為是其他主機在與之通信。需要注意,如果希望接收到目標(biāo)主機的回復(fù)包,那么偽裝的IP需要位于統(tǒng)一局域網(wǎng)內(nèi)。另外,如果既希望隱蔽自己的IP地址,又希望收到目標(biāo)主機的回復(fù)包,那么可以嘗試使用idlescan或匿名代理(如TOR)等網(wǎng)絡(luò)技術(shù)。

指定源端口某些目標(biāo)主機只允許來自特定端口的數(shù)據(jù)包通過防火墻。例如FTP服務(wù)器配置為:允許源端口為21號的TCP包通過防火墻與FTP服務(wù)端通信,但是源端口為其他端口的數(shù)據(jù)包被屏蔽。所以,在此類情況下,可以指定Nmap將發(fā)送的數(shù)據(jù)包的源端口都設(shè)置特定的端口。

掃描延時某些防火墻針對發(fā)送過于頻繁的數(shù)據(jù)包會進行嚴(yán)格的偵查,而且某些系統(tǒng)限制錯誤報文產(chǎn)生的頻率(例如,Solaris系統(tǒng)通常會限制每秒鐘只能產(chǎn)生一個ICMP消息回復(fù)給UDP掃描),所以,定制該情況下發(fā)包的頻率和發(fā)包延時可以降低目標(biāo)主機的審查強度、節(jié)省網(wǎng)絡(luò)帶寬。

其他技術(shù)Nmap還提供多種規(guī)避技巧,比如指定使用某個網(wǎng)絡(luò)接口來發(fā)送數(shù)據(jù)包、指定發(fā)送包的最小長度、指定發(fā)包的MTU、指定TTL、指定偽裝的MAC地址、使用錯誤檢查和(badchecksum)。更多信息/book/man-bypass-firewalls-ids.html

3.1.2

規(guī)避用法[plain]viewplaincopyprint?1.-f;

--mtu

<val>:

指定使用分片、指定數(shù)據(jù)包的MTU.

2.

3.-D

<decoy1,decoy2[,ME],...>:

用一組IP地址掩蓋真實地址,其中ME填入自己的IP地址。

4.

5.-S

<IP_Address>:

偽裝成其他IP地址

6.

7.-e

<iface>:

使用特定的網(wǎng)絡(luò)接口

8.

9.-g/--source-port

<portnum>:

使用指定源端口

10.

11.--data-length

<num>:

填充隨機數(shù)據(jù)讓數(shù)據(jù)包長度達到Num。

12.

13.--ip-options

<options>:

使用指定的IP選項來發(fā)送數(shù)據(jù)包。

14.

15.--ttl

<val>:

設(shè)置time-to-live時間。

16.

17.--spoof-mac

<mac

address/prefix/vendor

name>:

偽裝MAC地址

18.

19.--badsum:

使用錯誤的checksum來發(fā)送數(shù)據(jù)包(正常情況下,該類數(shù)據(jù)包被拋棄,如果收到回復(fù),說明回復(fù)來自防火墻或IDS/IPS)。

-f;--mtu<val>:指定使用分片、指定數(shù)據(jù)包的MTU.-D<decoy1,decoy2[,ME],...>:用一組IP地址掩蓋真實地址,其中ME填入自己的IP地址。-S<IP_Address>:偽裝成其他IP地址-e<iface>:使用特定的網(wǎng)絡(luò)接口-g/--source-port<portnum>:使用指定源端口--data-length<num>:填充隨機數(shù)據(jù)讓數(shù)據(jù)包長度達到Num。--ip-options<options>:使用指定的IP選項來發(fā)送數(shù)據(jù)包。--ttl<val>:設(shè)置time-to-live時間。--spoof-mac<macaddress/prefix/vendorname>:偽裝MAC地址--badsum:使用錯誤的checksum來發(fā)送數(shù)據(jù)包(正常情況下,該類數(shù)據(jù)包被拋棄,如果收到回復(fù),說明回復(fù)來自防火墻或IDS/IPS)。3.1.3

規(guī)避演示使用命令:nmap-v-F-Pn-D00,02,ME-eeth0-g3355其中,-F表示快速掃描100個端口;-Pn表示不進行Ping掃描;-D表示使用IP誘騙方式掩蓋自己真實IP(其中ME表示自己IP);-eeth0表示使用eth0網(wǎng)卡發(fā)送該數(shù)據(jù)包;-g3355表示自己的源端口使用3355;是被掃描的目標(biāo)IP地址。我們可以從Wireshark中看到數(shù)據(jù)包的流動情況:對于每個探測包,Nmap都使用-D選項指定的IP地址發(fā)送不同的數(shù)據(jù)包,從而達到擾亂對方防火墻/IDS檢查的目的(更好的方式-D選項中嵌入RND隨機數(shù),這樣更具有迷惑性)。當(dāng)探測到80端口時候,目標(biāo)主機向我們回復(fù)了SYN/ACK包回來(當(dāng)然也向其他誘騙的IP回復(fù)SYN/ACK包,我們無法接收到),證明80端口是開放的。

3.2

NSE腳本引擎NSE腳本引擎(NmapScriptingEngine)是Nmap最強大最靈活的功能之一,允許用戶自己編寫腳本來執(zhí)行自動化的操作或者擴展Nmap的功能。NSE使用Lua腳本語言,并且默認提供了豐富的腳本庫,目前已經(jīng)包含14個類別的350多個腳本。NSE的設(shè)計初衷主要考慮以下幾個方面:?網(wǎng)絡(luò)發(fā)現(xiàn)(NetworkDiscovery)?更加復(fù)雜的版本偵測(例如skype軟件)?漏洞偵測(VulnerabilityDetection)?后門偵測(BackdoorDetection)?漏洞利用(VulnerabilityExploitation)

3.2.1

NSE創(chuàng)建腳本方法下面以daytime.nse腳本為例說明一下NSE格式。NSE的使用Lua腳本,并且配置固定格式,以減輕用戶編程負擔(dān)。通常的一個腳本分為幾個部分:description字段:描述腳本功能的字符串,使用雙層方括號表示。comment字段:以--開頭的行,描述腳本輸出格式author字段:描述腳本作者license字段:描述腳本使用許可證,通常配置為Nmap相同的licensecategories字段:描述腳本所屬的類別,以對腳本的調(diào)用進行管理。rule字段:描述腳本執(zhí)行的規(guī)則,也就是確定觸發(fā)腳本執(zhí)行的條件。在Nmap中有四種類型的規(guī)則,prerule用于在Nmap沒有執(zhí)行掃描之前觸發(fā)腳本執(zhí)行,這類腳本并不需用到任何Nmap掃描的結(jié)果;hostru

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論