1 引言
網(wǎng)洛掃瞄,是基于Internetde、探測(cè)遠(yuǎn)端網(wǎng)洛或主機(jī)信息de一種技術(shù),也是保證系統(tǒng)和網(wǎng)洛安全必不可少de一種手段。主機(jī)掃瞄,是指對(duì)計(jì)算機(jī)主機(jī)或者其它網(wǎng)洛設(shè)備進(jìn)行安全性檢測(cè),以找出安全隱患和系統(tǒng)漏洞。總體而言,網(wǎng)洛掃瞄和主機(jī)掃瞄都可歸入漏洞掃瞄一類。漏洞掃瞄本質(zhì)上是一把雙刃劍:黑客利用它來(lái)尋找對(duì)網(wǎng)洛或系統(tǒng)發(fā)起攻擊de途徑,而系統(tǒng)管理員則利用它來(lái)有效防范黑客入侵。通過(guò)漏洞掃瞄,掃瞄者能夠發(fā)現(xiàn)遠(yuǎn)端網(wǎng)洛或主機(jī)de配置信息、 TCP/UDP端口de分配、提供de網(wǎng)洛服務(wù)、服務(wù)器de具體信息等。
2 漏洞掃瞄原理
漏洞掃瞄可以劃分為ping掃瞄、端口掃瞄、OS探測(cè)、脆弱點(diǎn)探測(cè)、防火墻掃瞄五種主要技術(shù),每種技術(shù)實(shí)現(xiàn)de目標(biāo)和運(yùn)用de原理各不相同。按照 TCP/IP協(xié)議簇de結(jié)構(gòu),ping掃瞄工作在互聯(lián)網(wǎng)洛層:端口掃瞄、防火墻探測(cè)工作在傳輸層;0S探測(cè)、脆弱點(diǎn)探測(cè)工作在互聯(lián)網(wǎng)洛層、傳輸層、應(yīng)用層。 ping掃瞄確定目標(biāo)主機(jī)deIP地址,端口掃瞄探測(cè)目標(biāo)主機(jī)所開(kāi)放de端口,然后基于端口掃瞄de結(jié)果,進(jìn)行OS探測(cè)和脆弱點(diǎn)掃瞄。
2.1 Ping掃瞄
ping掃瞄是指?jìng)蓽y(cè)主機(jī)IP地址de掃瞄。ping掃瞄de目de,就是確認(rèn)目標(biāo)主機(jī)deTCP/IP網(wǎng)洛是否聯(lián)通,即掃瞄deIP地址是否分配了主機(jī)。對(duì)沒(méi)有任何預(yù)知信息de黑客而言,ping掃瞄是進(jìn)行漏洞掃瞄及入侵de第一步;對(duì)已經(jīng)了解網(wǎng)洛整體IP劃分de網(wǎng)洛安全人員來(lái)講,也可以借助ping掃瞄,對(duì)主機(jī)deIP分配有一個(gè)精確de定位。大體上,ping掃瞄是基于ICMP協(xié)議de。其主要思想,就是構(gòu)造一個(gè)ICMP包,發(fā)送給目標(biāo)主機(jī),從得到de響應(yīng)來(lái)進(jìn)行判斷。根據(jù)構(gòu)造ICMP包de不同,分為ECH0掃瞄和nonECHO掃瞄兩種。
2.1.1 ECH0掃瞄
向目標(biāo)IP地址發(fā)送一個(gè)ICMP ECHOREQUEST(ICMP type 8)de包,等待是否收至UICMP ECHO REPLY(ICMP type 0)。如果收到了ICMP ECHO REPLY,就表示目標(biāo)IP上存在主機(jī),否則就說(shuō)明沒(méi)有主機(jī)。值得注意de是,如果目標(biāo)網(wǎng)洛上de防火墻配置為阻止ICMP ECH0流量,ECH0掃瞄不能真實(shí)反映目標(biāo)IP上是否存在主機(jī)。
此外,如果向廣播地址發(fā)送ICMPECHO REQUEST,網(wǎng)洛中deunix主機(jī)會(huì)響應(yīng)該請(qǐng)求,而windows主機(jī)不會(huì)生成響應(yīng),這也可以用來(lái)進(jìn)行OS探測(cè)。
2.1.2 non-ECH0掃瞄
向目deIP地址發(fā)送一個(gè)ICMP TIMESTAMP REQUEST(ICMP type l3),或ICMP ADDRESS MASK REQUEST (ICMP type l7)de包,根據(jù)是否收到響應(yīng),可以確定目de主機(jī)是否存在。當(dāng)目標(biāo)網(wǎng)洛上de防火墻配置為阻止ICMP ECH0流量時(shí),則可以用non.ECH0掃瞄來(lái)進(jìn)行主機(jī)探測(cè)。
2.2端口掃瞄
端口掃瞄用來(lái)探測(cè)主機(jī)所開(kāi)放de端口。端口掃瞄通常只做最簡(jiǎn)單de端口聯(lián)通性測(cè)試,不做進(jìn)一步de數(shù)據(jù)分析,因此比較適合進(jìn)行大范圍de掃瞄:對(duì)指定 IP地址進(jìn)行某個(gè)端口值段de掃瞄,或者指定端口值對(duì)某個(gè)IP地址段進(jìn)行掃瞄。根據(jù)端口掃瞄使用de協(xié)議,分為TCP掃瞄和UDP掃瞄。
2.2.1 TCP掃瞄
主機(jī)間建立TCP連接分三步(也稱三次握手):
(1)請(qǐng)求端發(fā)送一個(gè)SYN包,指明打算連接de目de端口。
(2)觀察目de端返回de包:
返回SYN/ACK包,說(shuō)明目de端口處于偵聽(tīng)狀態(tài);
返回RST/ACK包,說(shuō)明目de端口沒(méi)有偵聽(tīng),連接重置。
(3)若返回SYN/ACK包,則請(qǐng)求端向目de端口發(fā)送ACK包完成3次握手,TCP連接建立。
根據(jù)TCP連接de建立步驟,TCP掃瞄主要包含兩種方式:
(1)TCP全連接和半連接掃瞄
全連接掃瞄通過(guò)三次握手,與目de主機(jī)建立TCP連接,目de主機(jī)delog文件中將記錄這次連接。而半連接掃瞄(也稱TCP SYN掃瞄)并不完成TCP三次握手de全過(guò)程。掃瞄者發(fā)送SYN包開(kāi)始三次握手,等待目de主機(jī)de響應(yīng)。如果收到SYN/ACK包,則說(shuō)明目標(biāo)端口處于偵聽(tīng)狀態(tài),掃瞄者馬上發(fā)送RST包,中止三次握手。因?yàn)榘脒B接掃瞄并沒(méi)有建立TCP連接,目de主機(jī)delog文件中可能不會(huì)記錄此掃瞄。
(2)TCP隱蔽掃瞄
根據(jù)TCP協(xié)議,處于關(guān)閉狀態(tài)de端口,在收到探測(cè)包時(shí)會(huì)響應(yīng)RST包,而處于偵聽(tīng)狀態(tài)de端口則忽略此探測(cè)包。根據(jù)探測(cè)包中各標(biāo)志位設(shè)置de不同,TCP隱蔽掃瞄又分為SYN/ACK掃瞄、FIN掃瞄、XMAS(圣誕樹(shù))掃瞄和NULL掃瞄四種。
SYN/ACK掃瞄和FIN掃瞄均繞過(guò)TCP三次握手過(guò)程de第一步,直接給目de端口發(fā)送SYN/ACK包或者FIN包。因?yàn)門CP是基于連接de協(xié)議,目標(biāo)主機(jī)認(rèn)為發(fā)送方在第一步中應(yīng)該發(fā)送deSYN包沒(méi)有送出,從而定義這次連接過(guò)程錯(cuò)誤,會(huì)發(fā)送一個(gè)RST包以重置連接。而這正是掃瞄者需要de結(jié)果 只要有響應(yīng),就說(shuō)明目標(biāo)系統(tǒng)存在,且目標(biāo)端口處于關(guān)閉狀態(tài)。
XMAS掃瞄和NULL掃瞄:這兩類掃瞄正好相反,XMAS掃瞄設(shè)置TCP包中所有標(biāo)志位(URG、ACK、RST、PSH、SYN、FIN),而NULL掃瞄則關(guān)閉TCP包中de所有標(biāo)志位。
2.2.2 UDP端口掃瞄
UDP協(xié)議是數(shù)據(jù)包協(xié)議,為了要發(fā)現(xiàn)正在服務(wù)deUDP端口,通常de掃瞄方式是構(gòu)造一個(gè)內(nèi)容為空deUDP數(shù)據(jù)包送往目de端口。若目de端口上有服務(wù)正在等待,則目de端口返回錯(cuò)誤de消息;若目de端口處于關(guān)閉狀態(tài),則目de主機(jī)返回ICMP端口不可達(dá)消息。因?yàn)閁DP端口掃瞄軟件要計(jì)算傳輸中丟包de數(shù)量,所以UDP端口掃瞄de速度很慢。
2.3 0S探測(cè)
OS探測(cè)有雙重目de:一是探測(cè)目標(biāo)主機(jī)de0S信息,二是探測(cè)提供服務(wù)de計(jì)算機(jī)程序de信息。比如OS探測(cè)de結(jié)果是:OS是Windows XP sp3,服務(wù)器平臺(tái)是IIS 4.0。
2.3.1二進(jìn)制信息探測(cè)
通過(guò)登錄目標(biāo)主機(jī),從主機(jī)返回debanner中得知OS類型、版本等,這是最簡(jiǎn)單de0S探測(cè)技術(shù)。
二進(jìn)制信息
從圖l可以看出,在telnet連上FTP服務(wù)器后,服務(wù)器返回debanner已經(jīng)提供了serverde信息,在執(zhí)行ftpdesyst命令后可得到更具體de信息。
2.3.2 HTTP響應(yīng)分析
在和目標(biāo)主機(jī)建立HTTP連接后,可以分析服務(wù)器de響應(yīng)包得出OS類型。比如響應(yīng)包中可能包含如下信息:
響應(yīng)包分析
從中對(duì)響應(yīng)包中de數(shù)據(jù)分析,可以得到serverde信息。
2.3.3棧指紋分析
網(wǎng)洛上de主機(jī)都會(huì)通過(guò)TCP/IP或類似de協(xié)議棧來(lái)互通互聯(lián)。由于0S開(kāi)發(fā)商不唯一,系統(tǒng)架構(gòu)多樣,甚至是軟件版本de差異,都導(dǎo)致了協(xié)議棧具體實(shí)現(xiàn)上de不同。對(duì)錯(cuò)誤包de響應(yīng),默認(rèn)值等都可以作為區(qū)分0Sde依據(jù)。
(1)主動(dòng)棧指紋探測(cè)
主動(dòng)棧指紋探測(cè)是主動(dòng)向主機(jī)發(fā)起連接,并分析收到de響應(yīng),從而確定OS類型de技術(shù)。
1)FIN探測(cè)。跳過(guò)TCP三次握手de順序,給目標(biāo)主機(jī)發(fā)送一個(gè)FIN包。RFC793規(guī)定,正確de處理是沒(méi)有響應(yīng),但有些OS,如MS Windows,CISC0,HP/UX等會(huì)響應(yīng)一個(gè)RST包。
2)Bogus標(biāo)志探測(cè)。某些OS會(huì)設(shè)置SYN包中TCP頭de未定義位(一般為64或128),而某些0S在收到設(shè)置了這些Bogus位deSYN包后,會(huì)重置連接。
3)統(tǒng)計(jì)ICMP ERROR報(bào)文。RFCl812中規(guī)定了ICMP ERROR消息de發(fā)送速度。Linux設(shè)定了目標(biāo)不可達(dá)消息上限為80個(gè)/4秒。0S探測(cè)時(shí)可以向隨機(jī)de高端UDP端口大量發(fā)包,然后統(tǒng)計(jì)收到de目標(biāo)不可達(dá)消息。用此技術(shù)進(jìn)行OS探測(cè)時(shí)時(shí)間會(huì)長(zhǎng)一些,因?yàn)橐罅堪l(fā)包,并且還要等待響應(yīng),同時(shí)也可能出現(xiàn)網(wǎng)洛中丟包de情況。
4)ICMPERROR報(bào)文引用。RFC文件中規(guī)定,ICMP ERROR消息要引用導(dǎo)致該消息deICMP消息de部分內(nèi)容。例如對(duì)于端口不可達(dá)消息,某些OS返回收到deIP頭及后續(xù)de8個(gè)字節(jié),Solaris返回de ERROR消息中則引用內(nèi)容更多一些,而Linux比Solaris還要多。
(2)被動(dòng)棧指紋探測(cè)
被動(dòng)棧指紋探測(cè)是在網(wǎng)洛中監(jiān)聽(tīng),分析系統(tǒng)流量,用默認(rèn)值來(lái)猜測(cè)0S類型de技術(shù)。
1)TCP初始化窗口尺寸。通過(guò)分析響應(yīng)中de初始窗口大小來(lái)猜測(cè)OSde技術(shù)比較可靠,因?yàn)楹芏?Sde初始窗口尺寸不同。比如AIX設(shè)置de初始窗口尺寸是0x3F25,而Windows NT5、OpenBSD、FreeBSD設(shè)置de值是0x402E。
2)Dont Fragment位。為了增進(jìn)性能,某些0S在發(fā)送de包中設(shè)置了DF位,可以從DF位de設(shè)置情況中做大概de判斷。
3)TCPISN采樣。建立TCP連接時(shí),SYN/ACK中初始序列號(hào)ISNde生成存在規(guī)律,比如固定不變、隨機(jī)增加 (Solaris,F(xiàn)reeBSD等),真正de隨機(jī)(Linux 2.0.*),而Windows使用de是時(shí)間相關(guān)模型,ISN在每個(gè)不同時(shí)間段都有固定de增量。
2.4脆弱點(diǎn)掃瞄
從對(duì)黑客攻擊行為de分析和脆弱點(diǎn)de分類,絕大多數(shù)掃瞄都是針對(duì)特定操作系統(tǒng)中特定de網(wǎng)洛服務(wù)來(lái)進(jìn)行,即針對(duì)主機(jī)上de特定端口。脆弱點(diǎn)掃瞄使用de技術(shù)主要有基于脆弱點(diǎn)數(shù)據(jù)庫(kù)和基于插件兩種。
2.4.1基于脆弱點(diǎn)數(shù)據(jù)庫(kù)de掃瞄
首先構(gòu)造掃瞄de環(huán)境模型,對(duì)系統(tǒng)中可能存在de脆弱點(diǎn)、過(guò)往黑客攻擊案例和系統(tǒng)管理員de安全配置進(jìn)行建模與分析。其次基于分析de結(jié)果,生成一套標(biāo)準(zhǔn)de脆弱點(diǎn)數(shù)據(jù)庫(kù)及匹配模式。最后由程序基于脆弱點(diǎn)數(shù)據(jù)庫(kù)及匹配模式自動(dòng)進(jìn)行掃瞄工作。脆弱點(diǎn)掃瞄de準(zhǔn)確性取決于脆弱點(diǎn)數(shù)據(jù)庫(kù)de完整性及有效性。
2.4.2基于插件de掃瞄
插件是由腳本語(yǔ)言編寫de子程序模塊,掃瞄程序可以通過(guò)調(diào)用插件來(lái)執(zhí)行掃瞄。添加新de功能插件可以使掃瞄程序增加新de功能,或者增加可掃瞄脆弱點(diǎn)de類型與數(shù)量。也可以升級(jí)插件來(lái)更新脆弱點(diǎn)de特征信息,從而得到更為準(zhǔn)確de結(jié)果。插件技術(shù)使脆弱點(diǎn)掃瞄軟件de升級(jí)維護(hù)變得相對(duì)簡(jiǎn)單,而專用腳本語(yǔ)言de使用也簡(jiǎn)化了編寫新插件de編程工作,使弱點(diǎn)掃瞄軟件具有很強(qiáng)de擴(kuò)展性。
2.5防火墻規(guī)則探測(cè)
采用類似于traceroutedeIP數(shù)據(jù)包分析法,檢測(cè)能否給位于過(guò)濾設(shè)備后de主機(jī)發(fā)送一個(gè)特定de包,目de是便于漏洞掃瞄后de入侵或下次掃瞄de順利進(jìn)行。通過(guò)這種掃瞄,可以探測(cè)防火墻上打開(kāi)或允許通過(guò)de端口,并且探測(cè)防火墻規(guī)則中是否允許帶控制信息de包通過(guò),更進(jìn)一步,可以探測(cè)到位于數(shù)據(jù)包過(guò)濾設(shè)備后de路由器。
3 常見(jiàn)漏洞掃瞄程序
通常在制定漏洞掃瞄策略時(shí),掃瞄者會(huì)考慮程序de操作系統(tǒng)、所應(yīng)用de技術(shù)、易用性、準(zhǔn)確性等因素。其中,程序de可用性是最重要de,也是最基本de,但是可控性和準(zhǔn)確性同樣不容忽視。
3.1 Unix/Linux平臺(tái)
3.1.1 hping
hping支持TCP、UDP、ICMP、RAW-IP多種協(xié)議。特點(diǎn)在于能進(jìn)行ping掃瞄、端口掃瞄、0S探測(cè)、防火墻探測(cè)等多種掃瞄,并能自定義發(fā)送deICMP/UDP/TCP包到目標(biāo)地址并且顯示響應(yīng)信息。
3.1.2 icmpush&icmpquery
icmpush&icmpqueryde特點(diǎn)在于完全應(yīng)用了ICMP協(xié)議,可以定制ICMP包de結(jié)構(gòu)以及種類。掃瞄者可以用這套工具把目標(biāo)網(wǎng)洛de各個(gè)子網(wǎng)全部查找出來(lái),從而可以撇開(kāi)廣播地址而集中掃瞄某幾個(gè)特定de子網(wǎng)。
3.1.3 Xprobe 2
是專業(yè)de端口掃瞄、OS探測(cè)程序。特點(diǎn)在于自身de0S特征數(shù)據(jù)庫(kù)詳細(xì),進(jìn)行OS探測(cè)de可靠性較好。
3.1.4 THC-Anap
OS探測(cè)程序。特點(diǎn)在于掃瞄速度快,掃瞄結(jié)果可靠。
3.1.5 Whisker
針對(duì)CGIde脆弱點(diǎn)探測(cè)程序。應(yīng)用了多線程、多文件掃瞄技術(shù),脆弱點(diǎn)數(shù)據(jù)庫(kù)更新頻繁,對(duì)掃瞄結(jié)果自行復(fù)核,從而掃瞄結(jié)果可靠性好。
3.1.6 Nessus
脆弱點(diǎn)探測(cè)程序。應(yīng)用了主動(dòng)掃瞄、高速掃瞄技術(shù),可設(shè)置掃瞄過(guò)程。特點(diǎn)在于支持DMZ區(qū)以及多物理分區(qū)網(wǎng)洛de大范圍掃瞄。
3.1.7 Firewalk
防火墻探測(cè)程序。使用類似traceroutede技術(shù)來(lái)分析IP包de響應(yīng),從而測(cè)定防火墻de訪問(wèn)控制列表和繪制網(wǎng)洛拓?fù)鋱D。
3.2 Windows平臺(tái)
3.2.1 Pinger
是一個(gè)圖形化deping掃瞄工具。特點(diǎn)在于可以指定要pingdeIP地址,以圖形de形式顯示掃瞄結(jié)果,并保存至文本文件。
3.2.2 Fport
是端口掃瞄程序。特點(diǎn)在于可以把掃瞄出de端口與使用該端口de程序相匹配,掃瞄速度快,匹配程度較好。
3.2.3 SuperScan
可以進(jìn)行ping掃瞄、端口掃瞄、0S探測(cè),并且白帶一個(gè)木馬端口列表,可以檢測(cè)目標(biāo)計(jì)算機(jī)是否有木馬。
3.2.4 GFILANguard
脆弱點(diǎn)探測(cè)程序。特點(diǎn)在于集成了網(wǎng)洛審計(jì)、補(bǔ)丁管理功能,可以自動(dòng)生成網(wǎng)洛拓?fù)鋱D、自動(dòng)補(bǔ)丁管理。
上述漏洞掃瞄程序及特點(diǎn)如表1所示。
4 結(jié)論
一般而言,綜合地應(yīng)用多種掃瞄方法或掃瞄程序可以得到比較滿意de結(jié)果。但是漏洞掃瞄從其技術(shù)原理上分析,有不可忽視de副作用。比如對(duì)大范圍de IP地址或者端口進(jìn)行某種掃瞄,反復(fù)高速de發(fā)出特定de連接請(qǐng)求,所造成de結(jié)果就是目標(biāo)網(wǎng)洛及主機(jī)上存在大量de連接請(qǐng)求數(shù)據(jù)包,可以造成網(wǎng)洛擁塞,主機(jī)無(wú)法正常使用,這正是DoS攻擊de方法及表現(xiàn)。因此若要防范漏洞掃瞄以及可能deDoS攻擊,要做到以下三點(diǎn):
1.在防火墻及過(guò)濾設(shè)備上采用嚴(yán)格de過(guò)濾規(guī)則,禁止掃瞄de數(shù)據(jù)包進(jìn)入系統(tǒng)。
2.主機(jī)系統(tǒng)除了必要de網(wǎng)洛服務(wù)外,禁止其它de網(wǎng)洛應(yīng)用程序。
3.對(duì)于只對(duì)內(nèi)開(kāi)放de網(wǎng)洛服務(wù),更改其提供服務(wù)de端口。
此外,網(wǎng)洛掃瞄時(shí)發(fā)送de數(shù)據(jù)或多或少都會(huì)含有掃瞄者自身相關(guān)信息,從而也可以抓取掃瞄時(shí)de數(shù)據(jù)包,對(duì)掃瞄者進(jìn)行反向追蹤,這也是一個(gè)值得研究de方向。