
- 類(lèi)型:站長(zhǎng)工具大。8.0M語(yǔ)言:中文 評(píng)分:10.0
- 標(biāo)簽:
會(huì)話劫持利用了TCP/IP工作原理來(lái)設(shè)計(jì)攻擊。TCP使用端到端的連接,即TCP用(源IP,源TCP端口號(hào),目的IP,目的TCP端號(hào))來(lái)唯一標(biāo)識(shí)每一條已經(jīng)建立連接的TCP鏈路。另外,TCP在進(jìn)行數(shù)據(jù)傳輸時(shí),TCP報(bào)文首部的兩個(gè)字段序號(hào)(seq)和確認(rèn)序號(hào)(ackseq)非常重要。序號(hào)(seq)和確認(rèn)序號(hào)(ackseq)是與所攜帶TCP數(shù)據(jù)凈荷(payload)的多少有數(shù)值上的關(guān)系:序號(hào)字段(seq)指出了本報(bào)文中傳送的數(shù)據(jù)在發(fā)送主機(jī)所要傳送的整個(gè)數(shù)據(jù)流中的順序號(hào),而確認(rèn)序號(hào)字段(ackseq)指出了發(fā)送本報(bào)文的主機(jī)希望接收的對(duì)方主機(jī)中下一個(gè)八位組的順序號(hào)。因此,對(duì)于一臺(tái)主機(jī)來(lái)說(shuō),其收發(fā)的兩個(gè)相臨TCP報(bào)文之間的序號(hào)和確認(rèn)序號(hào)的關(guān)系為:它所要發(fā)出的報(bào)文中的seq值應(yīng)等于它所剛收到的報(bào)文中的ackseq的值,而它所要發(fā)送報(bào)文中ackseq的值應(yīng)為它所收到報(bào)文中seq的值加上該報(bào)文中所發(fā)送的TCP凈荷的長(zhǎng)度。
TCP會(huì)話劫持的攻擊方式可以對(duì)基于TCP的任何應(yīng)用發(fā)起攻擊,如HTTP、FTP、Telnet等。對(duì)于攻擊者來(lái)說(shuō),所必須要做的就是窺探到正在進(jìn)行TCP通信的兩臺(tái)主機(jī)之間傳送的報(bào)文,這樣攻擊者就可以得知該報(bào)文的源IP、源TCP端口號(hào)、目的IP、目的TCP端號(hào),從而可以得知其中一臺(tái)主機(jī)對(duì)將要收到的下一個(gè)TCP報(bào)文段中seq和ackseq值的要求。這樣,在該合法主機(jī)收到另一臺(tái)合法主機(jī)發(fā)送的TCP報(bào)文前,攻擊者根據(jù)所截獲的信息向該主機(jī)發(fā)出一個(gè)帶有凈荷的TCP報(bào)文,如果該主機(jī)先收到攻擊報(bào)文,就可以把合法的TCP會(huì)話建立在攻擊主機(jī)與被攻擊主機(jī)之間。帶有凈荷的攻擊報(bào)文能夠使被攻擊主機(jī)對(duì)下一個(gè)要收到的TCP報(bào)文中的確認(rèn)序號(hào)(ackseq)的值的要求發(fā)生變化,從而使另一臺(tái)合法的主機(jī)向被攻擊主機(jī)發(fā)出的報(bào)文被被攻擊主機(jī)拒絕。TCP會(huì)話劫持攻擊方式的好處在于使攻擊者避開(kāi)了被攻擊主機(jī)對(duì)訪問(wèn)者的身份驗(yàn)證和安全認(rèn)證,從而使攻擊者直接進(jìn)入對(duì)被攻擊主機(jī)的的訪問(wèn)狀態(tài),因此對(duì)系統(tǒng)安全構(gòu)成的威脅比較嚴(yán)重。
前些日子對(duì)自定義http協(xié)議的各個(gè)數(shù)據(jù)進(jìn)行了研究,對(duì)于ip偽造的問(wèn)題,我當(dāng)時(shí)給的建議是使用代理服務(wù)器,不過(guò)后來(lái)發(fā)現(xiàn),其實(shí)可以在http協(xié)議加入一個(gè)選項(xiàng),來(lái)實(shí)現(xiàn)一個(gè)非偽造ip的偽造ip。如何理解呢?理由如下:~
一、方法概述
在http協(xié)議數(shù)據(jù)頭里面加入選項(xiàng)“x-forward-for”,例如:“x-forward-for:202.204.76.254”,這樣發(fā)送出去的包,就是一個(gè)特殊的包,在收包方看來(lái),這個(gè)包的意思是,一個(gè)代理服務(wù)器發(fā)過(guò)來(lái)的數(shù)據(jù)包,而這個(gè)包的真是ip是“202.204.76.254”,其實(shí)還是實(shí)現(xiàn)的是三次握手,但是只不過(guò)是在發(fā)包的同時(shí),對(duì)收包方提到了一個(gè)第三者。
二、試用范圍
因?yàn)楝F(xiàn)在的網(wǎng)站類(lèi)的程序如果有IP限制的話,基本上都是會(huì)檢測(cè)是不是代理服務(wù)器發(fā)送的數(shù)據(jù)的,如果是代理服務(wù)器發(fā)送的數(shù)據(jù),那么他就把IP記為這個(gè)(透明)代理服務(wù)器發(fā)送的x-forward-for的IP。
以一段較為流行的php檢測(cè)ip的代碼為例:
function get_ip(){
if(getenv('HTTP_CLIENT_IP')) {
$gb_ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$gb_ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$gb_ip = getenv('REMOTE_ADDR');
} else {
$gb_ip = $_SERVER['REMOTE_ADDR'];
}
return $gb_ip;
}
那么大家可以看到這個(gè)IP是如何偽造的了。
三、應(yīng)對(duì)方法
當(dāng)然對(duì)于網(wǎng)站方面,這種偽造ip的情況雖然不是很多,但是如果在投票類(lèi)的程序中,當(dāng)然很需要這方面的檢測(cè)了,呵呵。多多檢測(cè)HTTP_CLIENT_IP吧。貌似這個(gè)還沒(méi)有辦法偽造?.............................
四、總體看法
這個(gè)辦法之所以稱(chēng)之為非偽造ip的偽造ip,主要就是利用了現(xiàn)在大多數(shù)網(wǎng)站程序檢測(cè)ip的一個(gè)漏洞。所以如果網(wǎng)站程序能夠重新審視一下自己的ip檢測(cè)辦法,這個(gè)方法就會(huì)慢慢失效的。呵呵。