1 引言
隨著信息技術(shù)在社會(huì)生活中的應(yīng)用日益廣泛,人們對(duì)信息安全的重要性有了更加深刻的認(rèn)識(shí)。作為信息流通與傳輸?shù)闹饕浇椋W(wǎng)絡(luò)的安全問(wèn)題無(wú)疑是信息安全中不可或缺的一環(huán)。而作為信息最初的發(fā)送方、中間的傳遞方、最終的接收方,主機(jī)的安全問(wèn)題也占有非常重要的地位。在系統(tǒng)維護(hù)人員看來(lái),只有足夠安全的網(wǎng)絡(luò)和主機(jī),才能最大可能地保證信息安全。相應(yīng)的,黑客(攻擊者)也會(huì)盡可能地尋找網(wǎng)絡(luò)和主機(jī)的漏洞,從而實(shí)施攻擊來(lái)破壞信息安全。雙方攻防的第一步,主要集中在對(duì)網(wǎng)絡(luò)和主機(jī)的漏洞掃描上。
網(wǎng)絡(luò)掃描,是基于Internet的、探測(cè)遠(yuǎn)端網(wǎng)絡(luò)或主機(jī)信息的一種技術(shù),也是保證系統(tǒng)和網(wǎng)絡(luò)安全必不可少的一種手段。主機(jī)掃描,是指對(duì)計(jì)算機(jī)主機(jī)或者其它網(wǎng)絡(luò)設(shè)備進(jìn)行安全性檢測(cè),以找出安全隱患和系統(tǒng)漏洞?傮w而言,網(wǎng)絡(luò)掃描和主機(jī)掃描都可歸入漏洞掃描一類(lèi)。漏洞掃描本質(zhì)上是一把雙刃劍:黑客利用它來(lái)尋找對(duì)網(wǎng)絡(luò)或系統(tǒng)發(fā)起攻擊的途徑,而系統(tǒng)管理員則利用它來(lái)有效防范黑客入侵。通過(guò)漏洞掃描,掃描者能夠發(fā)現(xiàn)遠(yuǎn)端網(wǎng)絡(luò)或主機(jī)的配置信息、TCP/UDP端口的分配、提供的網(wǎng)絡(luò)服務(wù)、服務(wù)器的具體信息等。
2 漏洞掃描原理
漏洞掃描可以劃分為ping掃描、端口掃描、OS探測(cè)、脆弱點(diǎn)探測(cè)、防火墻掃描五種主要技術(shù),每種技術(shù)實(shí)現(xiàn)的目標(biāo)和運(yùn)用的原理各不相同。按照TCP/IP協(xié)議簇的結(jié)構(gòu),ping掃描工作在互聯(lián)網(wǎng)絡(luò)層:端口掃描、防火墻探測(cè)工作在傳輸層;0S探測(cè)、脆弱點(diǎn)探測(cè)工作在互聯(lián)網(wǎng)絡(luò)層、傳輸層、應(yīng)用層。ping掃描確定目標(biāo)主機(jī)的IP地址,端口掃描探測(cè)目標(biāo)主機(jī)所開(kāi)放的端口,然后基于端口掃描的結(jié)果,進(jìn)行OS探測(cè)和脆弱點(diǎn)掃描。
2.1 Ping掃描
ping掃描是指?jìng)蓽y(cè)主機(jī)IP地址的掃描。ping掃描的目的,就是確認(rèn)目標(biāo)主機(jī)的TCP/IP網(wǎng)絡(luò)是否聯(lián)通,即掃描的IP地址是否分配了主機(jī)。對(duì)沒(méi)有任何預(yù)知信息的黑客而言,ping掃描是進(jìn)行漏洞掃描及入侵的第一步;對(duì)已經(jīng)了解網(wǎng)絡(luò)整體IP劃分的網(wǎng)絡(luò)安全人員來(lái)講,也可以借助ping掃描,對(duì)主機(jī)的IP分配有一個(gè)精確的定位。大體上,ping掃描是基于ICMP協(xié)議的。其主要思想,就是構(gòu)造一個(gè)ICMP包,發(fā)送給目標(biāo)主機(jī),從得到的響應(yīng)來(lái)進(jìn)行判斷。根據(jù)構(gòu)造ICMP包的不同,分為ECH0掃描和non—ECHO掃描兩種。
2.1.1 ECH0掃描
向目標(biāo)IP地址發(fā)送一個(gè)ICMP ECHOREQUEST(ICMP type 8)的包,等待是否收至UICMP ECHO REPLY(ICMP type 0)。如果收到了ICMP ECHO REPLY,就表示目標(biāo)IP上存在主機(jī),否則就說(shuō)明沒(méi)有主機(jī)。值得注意的是,如果目標(biāo)網(wǎng)絡(luò)上的防火墻配置為阻止ICMP ECH0流量,ECH0掃描不能真實(shí)反映目標(biāo)IP上是否存在主機(jī)。
此外,如果向廣播地址發(fā)送ICMPECHO REQUEST,網(wǎng)絡(luò)中的unix主機(jī)會(huì)響應(yīng)該請(qǐng)求,而windows主機(jī)不會(huì)生成響應(yīng),這也可以用來(lái)進(jìn)行OS探測(cè)。
2.1.2 non-ECH0掃描
向目的IP地址發(fā)送一個(gè)ICMP TIMESTAMP REQUEST(ICMP type l3),或ICMP ADDRESS MASK REQUEST (ICMP type l7)的包,根據(jù)是否收到響應(yīng),可以確定目的主機(jī)是否存在。當(dāng)目標(biāo)網(wǎng)絡(luò)上的防火墻配置為阻止ICMP ECH0流量時(shí),則可以用non.ECH0掃描來(lái)進(jìn)行主機(jī)探測(cè)。
2.2端口掃描
端口掃描用來(lái)探測(cè)主機(jī)所開(kāi)放的端口。端口掃描通常只做最簡(jiǎn)單的端口聯(lián)通性測(cè)試,不做進(jìn)一步的數(shù)據(jù)分析,因此比較適合進(jìn)行大范圍的掃描:對(duì)指定IP地址進(jìn)行某個(gè)端口值段的掃描,或者指定端口值對(duì)某個(gè)IP地址段進(jìn)行掃描。根據(jù)端口掃描使用的協(xié)議,分為T(mén)CP掃描和UDP掃描。
2.2.1 TCP掃描
主機(jī)間建立TCP連接分三步(也稱(chēng)三次握手):
(1)請(qǐng)求端發(fā)送一個(gè)SYN包,指明打算連接的目的端口。
(2)觀察目的端返回的包:
返回SYN/ACK包,說(shuō)明目的端口處于偵聽(tīng)狀態(tài);
返回RST/ACK包,說(shuō)明目的端口沒(méi)有偵聽(tīng),連接重置。
(3)若返回SYN/ACK包,則請(qǐng)求端向目的端口發(fā)送ACK包完成3次握手,TCP連接建立。
根據(jù)TCP連接的建立步驟,TCP掃描主要包含兩種方式:
(1)TCP全連接和半連接掃描
全連接掃描通過(guò)三次握手,與目的主機(jī)建立TCP連接,目的主機(jī)的log文件中將記錄這次連接。而半連接掃描(也稱(chēng)TCP SYN掃描)并不完成TCP三次握手的全過(guò)程。掃描者發(fā)送SYN包開(kāi)始三次握手,等待目的主機(jī)的響應(yīng)。如果收到SYN/ACK包,則說(shuō)明目標(biāo)端口處于偵聽(tīng)狀態(tài),掃描者馬上發(fā)送RST包,中止三次握手。因?yàn)榘脒B接掃描并沒(méi)有建立TCP連接,目的主機(jī)的log文件中可能不會(huì)記錄此掃描。
(2)TCP隱蔽掃描
根據(jù)TCP協(xié)議,處于關(guān)閉狀態(tài)的端口,在收到探測(cè)包時(shí)會(huì)響應(yīng)RST包,而處于偵聽(tīng)狀態(tài)的端口則忽略此探測(cè)包。根據(jù)探測(cè)包中各標(biāo)志位設(shè)置的不同,TCP隱蔽掃描又分為SYN/ACK掃描、FIN掃描、XMAS(圣誕樹(shù))掃描和NULL掃描四種。
SYN/ACK掃描和FIN掃描均繞過(guò)TCP三次握手過(guò)程的第一步,直接給目的端口發(fā)送SYN/ACK包或者FIN包。因?yàn)門(mén)CP是基于連接的協(xié)議,目標(biāo)主機(jī)認(rèn)為發(fā)送方在第一步中應(yīng)該發(fā)送的SYN包沒(méi)有送出,從而定義這次連接過(guò)程錯(cuò)誤,會(huì)發(fā)送一個(gè)RST包以重置連接。而這正是掃描者需要的結(jié)果—只要有響應(yīng),就說(shuō)明目標(biāo)系統(tǒng)存在,且目標(biāo)端口處于關(guān)閉狀態(tài)。
XMAS掃描和NULL掃描:這兩類(lèi)掃描正好相反,XMAS掃描設(shè)置TCP包中所有標(biāo)志位(URG、ACK、RST、PSH、SYN、FIN),而NULL掃描則關(guān)閉TCP包中的所有標(biāo)志位。
2.2.2 UDP端口掃描
UDP協(xié)議是數(shù)據(jù)包協(xié)議,為了要發(fā)現(xiàn)正在服務(wù)的UDP端口,通常的掃描方式是構(gòu)造一個(gè)內(nèi)容為空的UDP數(shù)據(jù)包送往目的端口。若目的端口上有服務(wù)正在等待,則目的端口返回錯(cuò)誤的消息;若目的端口處于關(guān)閉狀態(tài),則目的主機(jī)返回ICMP端口不可達(dá)消息。因?yàn)閁DP端口掃描軟件要計(jì)算傳輸中丟包的數(shù)量,所以UDP端口掃描的速度很慢。
作者:姚景周 來(lái)源:泰爾網(wǎng)