呂方興
(菏澤學(xué)院計(jì)算機(jī)與信息工程系 山東 菏澤 274015)
TCP/IP協(xié)議是目前使用最廣泛的協(xié)議,但是由于在設(shè)計(jì)時(shí),考慮更多的是協(xié)議的高效性,而忽視了對(duì)安全性的設(shè)計(jì),因此,利用TCP/IP協(xié)議進(jìn)行的攻擊在整個(gè)計(jì)算機(jī)犯罪中不在少數(shù)。
網(wǎng)絡(luò)中結(jié)點(diǎn)的IP地址不是固定不變的,是一個(gè)公共的數(shù)據(jù),因此攻擊者可以直接修改結(jié)點(diǎn)的IP地址,冒充某個(gè)可信的結(jié)點(diǎn)IP地址,再進(jìn)行攻擊。因此IP地址不能作為可信任的唯一認(rèn)證方式。
源地址欺騙主要由兩種形式。
(1)主機(jī)A是攻擊主機(jī),它冒充B主機(jī)(信任主機(jī))與主機(jī)C進(jìn)行對(duì)話。A主機(jī)在發(fā)出數(shù)據(jù)包后,攻擊者通過(guò)技術(shù)手段將數(shù)據(jù)包的源地址更改為B主機(jī)的地址,此時(shí)C主機(jī)的數(shù)據(jù)仍會(huì)發(fā)送給B。就是說(shuō),A主機(jī)不能得到C主機(jī)返回的數(shù)據(jù)信息,不過(guò)在一般情況下,攻擊者不需要知道返回?cái)?shù)據(jù)是什么也可以實(shí)現(xiàn)攻擊,他們可以用預(yù)測(cè)返回?cái)?shù)據(jù)包的方法來(lái)實(shí)施攻擊。
(2)另一種攻擊稱為“中間人”攻擊。攻擊者會(huì)截獲目標(biāo)主機(jī)返回給真實(shí)主機(jī)的數(shù)據(jù)包,從而與被攻擊主機(jī)建立完整的對(duì)話,這時(shí)入侵者可以看到入侵的結(jié)果。為達(dá)到這一目的,攻擊主機(jī)必須潛入目標(biāo)主機(jī)和真實(shí)主機(jī)之間的路徑上,這在路徑的末端是很容易實(shí)現(xiàn)的,在路徑中間是很復(fù)雜的。因?yàn)楦鶕?jù)IP網(wǎng)絡(luò)的特點(diǎn),中間的路徑變化是很大的。在計(jì)算機(jī)之間改變路徑,從而引導(dǎo)攻擊計(jì)算機(jī),這取決于網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)以及網(wǎng)絡(luò)和網(wǎng)絡(luò)之間使用的路由系統(tǒng)。這一操作可能很容易,也可能很復(fù)雜。
與路由器源路由攻擊一樣,在TCP/IP協(xié)議中,為測(cè)試目的,IP數(shù)據(jù)包設(shè)置了一個(gè)選項(xiàng)——IP Source Routing,該選項(xiàng)可以直接指明到達(dá)結(jié)點(diǎn)的路由。攻擊者可以利用這一特點(diǎn)進(jìn)行欺騙,以進(jìn)行非法連接。攻擊者可以冒充某個(gè)可信結(jié)點(diǎn)的IP地址,構(gòu)造一個(gè)通向某服務(wù)器的直接路徑和返回路徑,利用可信用戶作為服務(wù)器的路由中的最后一站,就可以向服務(wù)器發(fā)出請(qǐng)求,進(jìn)行攻擊了。在TCP/IP協(xié)議的兩個(gè)傳輸層協(xié)議TCP和UDP中,由于UDP是面向無(wú)連接的,因而沒有初始化的連接建立過(guò)程,所以相對(duì)而言,UDP更容易被欺騙。
RIP協(xié)議用來(lái)在局域網(wǎng)中發(fā)布動(dòng)態(tài)路由信息,它是為了在局域網(wǎng)的結(jié)點(diǎn)提供一致路由選擇和可達(dá)性信息而設(shè)計(jì)的。但各結(jié)點(diǎn)對(duì)收到的信息是不檢查其真實(shí)性的,TCP/IP協(xié)議本身也沒有提供這一功能。因此攻擊者可以在網(wǎng)絡(luò)中發(fā)布假的路由信息,利用ICMP的重定向信息欺騙路由器或主機(jī),將正常的路由器定義為失效的路由器,從而達(dá)到非法存取的目的。
TCP/IP協(xié)議只能從IP地址上鑒別通信,而不能對(duì)結(jié)點(diǎn)上的用戶進(jìn)行有效的身份驗(yàn)證,因此服務(wù)器不能有效地鑒別登錄用戶的合法性。目前對(duì)用戶身份的鑒別主要依靠服務(wù)器軟件提供的用戶控制機(jī)制,如用戶登錄用戶名和密碼,雖然密碼是被加密存放在服務(wù)器上的,而且多為單向加密算法(如MD5),但由于密碼是靜態(tài)的,所以無(wú)法抵御暴力的破解,如果用戶密碼不復(fù)雜,則很容易被黑客破解。攻擊者獲得有效用戶名和密碼后,就可以進(jìn)一步攻擊了。
雖然TCP協(xié)議在連接時(shí)使用了序列號(hào)來(lái)鑒別數(shù)據(jù)包的有效性,當(dāng)接收到與預(yù)測(cè)序列號(hào)不一樣的序列號(hào)的數(shù)據(jù)包,該包將被視為無(wú)效。但由于TCP的序列號(hào)是有一定規(guī)律的,經(jīng)過(guò)分析是可預(yù)測(cè)的,因此攻擊者可以構(gòu)造一個(gè)TCP序列,從而對(duì)網(wǎng)絡(luò)上的可信結(jié)點(diǎn)實(shí)施攻擊。
TCP是一個(gè)面向連接的協(xié)議,是可靠的傳輸層協(xié)議。通信雙方必須經(jīng)過(guò)一個(gè)三次“握手”才能建立一條有效的通信連接。假設(shè)主機(jī)A要和主機(jī)B通信,正常的TCP連接要求使用三次“握手”:
(1)主機(jī)A發(fā)送一個(gè)SYN數(shù)據(jù)包給B。
(2)主機(jī)B回答一個(gè)SYN+ACK的數(shù)據(jù)包給A,以表示確認(rèn)第一個(gè)數(shù)據(jù)包,并繼續(xù)確認(rèn)。
(3)主機(jī)A最后發(fā)送一個(gè)ACK數(shù)據(jù)包給B,以表示確認(rèn)握手,通信建立。
在上述過(guò)程中,當(dāng)主機(jī)B接收到一個(gè)SYN請(qǐng)求時(shí),就會(huì)分配一塊內(nèi)存給它。對(duì)于一個(gè)給定的服務(wù),建立的TCP連接是有限的,當(dāng)達(dá)到這一限度時(shí),服務(wù)器將拒絕其他服務(wù)請(qǐng)求。假設(shè)攻擊者利用地址欺騙的方式構(gòu)造一個(gè)不可到達(dá)的主機(jī),那么這時(shí)正常的三次握手將不可完成,由于目標(biāo)主機(jī)要考慮到網(wǎng)絡(luò)產(chǎn)生的延誤等情況,因此會(huì)保留連接資源到一定的超時(shí)時(shí)間后才恢復(fù)。到此期間內(nèi),目標(biāo)主機(jī)的資源不會(huì)主動(dòng)釋放。
攻擊者利用虛假的主機(jī)向目標(biāo)主機(jī)發(fā)送多個(gè)SYN請(qǐng)求包,由于給定的地址是無(wú)效的,因此目標(biāo)主機(jī)返回的數(shù)據(jù)包將無(wú)法正確到達(dá),這樣目標(biāo)主機(jī)就會(huì)占用資源來(lái)處理等待請(qǐng)求,直到所有可用資源全部用完,目標(biāo)主機(jī)將拒絕一切的服務(wù)請(qǐng)求,即使是合法的。攻擊者如持續(xù)進(jìn)行這樣的攻擊,將導(dǎo)致目標(biāo)主機(jī)資源全部耗盡,正常服務(wù)全部中斷。這就是SYN攻擊的原理。
當(dāng)然,在以上的攻擊中,攻擊成功的關(guān)鍵在于構(gòu)造的主機(jī)地址應(yīng)是不可到達(dá)的,如果可到達(dá),則主機(jī)接受到目標(biāo)主機(jī)發(fā)送的不明來(lái)歷的回應(yīng)包,將立即發(fā)送RST數(shù)據(jù)包,中斷連接,則目標(biāo)主機(jī)就會(huì)中斷連接、釋放資源。
TCP/IP協(xié)議由于其高效性,稱為了事實(shí)上的國(guó)際標(biāo)準(zhǔn),它是目前最常用的一種通用網(wǎng)絡(luò)協(xié)議。但是TCP/IP協(xié)議卻存在一些安全問(wèn)題,這些安全問(wèn)題可能導(dǎo)致多種類型的網(wǎng)絡(luò)攻擊。
[1]牛少彰.信息安全導(dǎo)論[M].國(guó)防工業(yè)出版社,2010.
[2]薛質(zhì),蘇波,李建華.信息安全技術(shù)基礎(chǔ)和安全策略[M].北京:清華大學(xué)出版社,2007.
[3]斯托林斯.網(wǎng)絡(luò)安全基礎(chǔ):應(yīng)用與標(biāo)準(zhǔn)[M].4 版.白國(guó)強(qiáng),譯.北京:清華大學(xué)出版社,2011.