王艷麗
摘 要:由于黑客攻擊最近在新聞中屢有報導(dǎo),我們都知道需要認(rèn)真地對待計算機(jī)安全問題。在本文中,Michael Richler分析了一些有趣的網(wǎng)絡(luò)攻擊并說明了它們是如何工作的。您將看到黑客是多么富于創(chuàng)造性,并將了解自己的軟件中所包含的一些特性是如何被利用來對付您的。本文講述了黑客的一些基礎(chǔ)知識和攻擊手段。
關(guān)鍵詞:黑客攻擊;網(wǎng)絡(luò)協(xié)議;ICMPIP
一、黑客基礎(chǔ)知識
不難想象,本文可選擇的攻擊類型范圍很廣。我之所以選取本文所討論的幾種特定攻擊,是因?yàn)樗鼈儾恍枰嚓P(guān)于所涉及協(xié)議的知識,但仍然能有效地說明了攻擊是如何執(zhí)行的、攻擊實(shí)際上是多么簡單(一旦您知道了詳細(xì)信息)以及攻擊者所需的資源(計算和網(wǎng)絡(luò))是多么有限。盡管不可能在本文中涵蓋關(guān)于黑客攻擊的整個主題,但我已盡可能簡化基本原理,而仍然盡量多地提供必要信息,以便您理解所描述的攻擊。
二、攻擊的種類。拒絕服務(wù)攻擊:通常,黑客瞄準(zhǔn)特定系統(tǒng),闖入系統(tǒng)以便將其用于特定用途。那些系統(tǒng)的主機(jī)安全性經(jīng)常會阻止攻擊者獲得對主機(jī)的控制權(quán)。但進(jìn)行拒絕服務(wù)攻擊時,攻擊者不必獲得對系統(tǒng)的控制權(quán)。其目標(biāo)只是使系統(tǒng)或網(wǎng)絡(luò)過載,這樣它們就無法繼續(xù)提供服務(wù)了。拒絕服務(wù)攻擊可以有不同的目標(biāo),包括帶寬消耗(bandwidth consumption)和資源缺乏(resource starvation)。
三、分析選定的網(wǎng)絡(luò)攻擊
(一)協(xié)議
本段討論了針對網(wǎng)際控制報文協(xié)議(ICMP)和傳輸控制協(xié)議(TCP)上的攻擊,這兩個協(xié)議都屬于網(wǎng)際協(xié)議(IP)系列。在深入研究關(guān)于這些協(xié)議的詳細(xì)信息之前,我打算先在適合于這些協(xié)議的環(huán)境中討論它們。
網(wǎng)際控制報文協(xié)議(ICMP)是IP的組成部分,但它使用某些IP服務(wù)。ICMP提供服務(wù),使主機(jī)能夠彼此交流控制信息。ICMP由IP和一些更高級別的協(xié)議使用,如傳輸控制協(xié)議(TCP)。
傳輸控制協(xié)議(TCP)是本文中討論的第三個重要協(xié)議。TCP的功能比IP更進(jìn)一步,并提供兩個重要特性:連接和服務(wù)質(zhì)量。這意味著您可以在兩臺主機(jī)之間開一個虛擬通道,通過這個通道,使得所發(fā)送的包的順序及其實(shí)際傳遞都得到保障。
接下來更高的一級是應(yīng)用層協(xié)議,如Telnet和SMTP。它們都使用由TCP提供的服務(wù)。例如,當(dāng)您用Telnet連接到主機(jī)時,打開一個連接,并且您希望所有輸入這個Telnet會話的數(shù)據(jù)都以正確的順序發(fā)送到接收主機(jī)。
(二)理解IP
因?yàn)镮P提供的是無連接、不可靠、最高效的(best-effort)數(shù)據(jù)報傳遞服務(wù),所以IP的使用范圍多少受到了限制。但是,它提供兩個基本功能:尋址和分段。地址(在IP數(shù)據(jù)報頭中封裝為源和目的地地址)用來將數(shù)據(jù)報傳輸?shù)狡淠康牡?,這個過程稱為路由。有兩種基本情況:
接收主機(jī)和發(fā)送主機(jī)位于同一子網(wǎng),這種情況下數(shù)據(jù)報將被直接從發(fā)送方發(fā)送到接收方。
接收主機(jī)位于不同的子網(wǎng),這種情況下發(fā)送主機(jī)將把數(shù)據(jù)報轉(zhuǎn)發(fā)到網(wǎng)關(guān)(連接兩個子網(wǎng)的IP主機(jī)),然后,如果目的地主機(jī)在一個與網(wǎng)關(guān)相連的子網(wǎng)中,則網(wǎng)關(guān)會嘗試將數(shù)據(jù)報傳遞到目的地主機(jī)。如果目的地主機(jī)不在與網(wǎng)關(guān)相連的子網(wǎng)中,網(wǎng)關(guān)將會把數(shù)據(jù)報轉(zhuǎn)發(fā)到另一個網(wǎng)關(guān)。這個過程將反復(fù)進(jìn)行,直到能夠?qū)?shù)據(jù)報傳遞到其目的地主機(jī)為止。
既然我已經(jīng)介紹了基礎(chǔ)知識,現(xiàn)在可以討論個別協(xié)議了。在以下幾節(jié)中,您將找到關(guān)于ICMP和TCP的更詳細(xì)的信息以及一些使用這些協(xié)議的有趣的攻擊。
(三)使用ICMP
超時消息:每個IP數(shù)據(jù)報頭中都包含一個字段—稱為“生存時間字段”—它指出數(shù)據(jù)報在被丟棄之前還能在因特網(wǎng)上保持多久。數(shù)據(jù)報在因特網(wǎng)上保持的時間以跳躍點(diǎn)(hop)衡量,其中一個跳躍點(diǎn)表示數(shù)據(jù)報通向目的地節(jié)點(diǎn)路徑上的一個網(wǎng)關(guān)。當(dāng)數(shù)據(jù)報經(jīng)過網(wǎng)關(guān)轉(zhuǎn)發(fā)時,它就將生存時間字段中的值減一。如果處理數(shù)據(jù)報的網(wǎng)關(guān)測定該數(shù)據(jù)報IP頭中的生存時間字段為0,則丟棄該數(shù)據(jù)報并用超時消息通知源主機(jī)。
回應(yīng)請求和回應(yīng)應(yīng)答消息:如果主機(jī)A想知道主機(jī)B是否是活動的,則主機(jī)A會向主機(jī)B發(fā)送一條ICMP回應(yīng)請求消息。主機(jī)B將用ICMP回應(yīng)應(yīng)答消息來應(yīng)答,以表明自己是活動的。這條消息就是眾所周知的ping包。
以上這些并不是ICMP所使用的全部消息類型,但它們能使您大致了解ICMP的用途。接下來我將向您介紹兩種ICMP攻擊。
目的地不可到達(dá)攻擊
類別:拒絕服務(wù)攻擊
描述:如上所述,ICMP目的地不可到達(dá)消息向嘗試轉(zhuǎn)發(fā)消息的網(wǎng)關(guān)提供了一種工具,用來通知發(fā)送方:因?yàn)樵跀?shù)據(jù)報目的地地址中指定的主機(jī)不可到達(dá),所以無法傳遞該消息。
如果入侵者獲得了網(wǎng)絡(luò)10.1.0.0中一臺主機(jī)的訪問權(quán),那么,他可以廣播一條“目的地不可到達(dá)消息”,聲明網(wǎng)關(guān)G對于他所在網(wǎng)絡(luò)的所有主機(jī)是不可到達(dá)的。這將使網(wǎng)關(guān)G和網(wǎng)絡(luò)10.2.0.0暫時變得不可用,因而不可能從網(wǎng)絡(luò)10.1.0.0向網(wǎng)絡(luò)10.2.0.0傳輸任何消息。
這種攻擊背后的動機(jī)只是使網(wǎng)絡(luò)或服務(wù)暫時癱瘓。因?yàn)楣粽卟恍枰δ軓?qiáng)大的機(jī)器或高速的網(wǎng)絡(luò)連接來執(zhí)行這種攻擊,所以它特別危險。
(四)Smurf攻擊
類別:拒絕服務(wù)攻擊
描述:Smurf攻擊是拒絕服務(wù)攻擊的一種非常可怕的形式,因?yàn)樗哂蟹糯笮?yīng)。Smurf攻擊利用ICMP回應(yīng)消息。如上所述,主機(jī)A每次向主機(jī)B發(fā)送回應(yīng)請求消息時,主機(jī)B都會返回回應(yīng)應(yīng)答消息以表明自己是活動的。名稱“Smurf攻擊”源自一個名為smurf的利用程序,攻擊者用該程序來執(zhí)行這種攻擊。
(五)傳輸控制協(xié)議(TCP)
在繼續(xù)討論攻擊之前,我將更詳細(xì)地討論TCP的某些方面,這些知識對于下面討論的攻擊是必需的。尤其是TCP包(稱為段)的結(jié)構(gòu)、如何在主機(jī)之間建立TCP連接和如何關(guān)閉連接。
(六)TCP包的結(jié)構(gòu)
與IP數(shù)據(jù)報類似,TCP段包含頭部分、可選(選項(xiàng))部分和數(shù)據(jù)部分?,F(xiàn)在,讓我們更仔細(xì)地研究一下TCP頭的某些重要字段:
源端口:分配給啟動連接的主機(jī)上虛連接的端口號。
目的地端口:目的地端口號。這也由啟動連接的主機(jī)分配,因?yàn)橹挥性撝鳈C(jī)知道自己“想”連接到哪里。例如,如果您打開到特定主機(jī)的Telnet連接,則目的地端口將被設(shè)置為23。
序列號和確認(rèn)號:發(fā)送方和接收方使用兩個序列號來確保包沒有丟失、沒有重復(fù)以及可以在目的地節(jié)點(diǎn)以正確順序重新組裝。
標(biāo)志:這個字段包含六個控制位:
URG:向接收方表明一接收完數(shù)據(jù)就進(jìn)行緊急處理。
ACK:表明確認(rèn)號字段是有意義的。
PSH:表明必須迅速地將數(shù)據(jù)傳遞到接收方。
RST:表明要立即復(fù)位連接。
SYN:在需要同步序列號的情況下設(shè)置。
FIN:表明不會再有來自發(fā)送方的數(shù)據(jù)了(也就是說,連接將要關(guān)閉)。
以上是TCP頭中的重要字段,下面關(guān)于TCP連接的建立和關(guān)閉的幾節(jié)將使您更好地理解這些字段的用途。
建立和關(guān)閉TCP連接。
連接關(guān)閉:在發(fā)送完所有數(shù)據(jù)之后,通信伙伴中的一方想要關(guān)閉連接。假設(shè)是客戶機(jī)要終止連接。它將通過向服務(wù)器發(fā)送設(shè)置了FIN標(biāo)志的TCP包來完成該操作。服務(wù)器將通過返回設(shè)置了ACK標(biāo)志的包進(jìn)行確認(rèn)。從此刻起,客戶機(jī)將不再向服務(wù)器發(fā)送任何數(shù)據(jù)。它將僅以空段確認(rèn)由服務(wù)器發(fā)送的數(shù)據(jù)。當(dāng)服務(wù)器關(guān)閉客戶機(jī)流時,連接關(guān)閉。(作者單位:西安體育學(xué)院)