最新av偷拍av偷窥av网站,在教室伦流澡到高潮h麻豆,一个人在线高清免费观看,中文字幕av无码一二三区电影,中国丰满熟妇xxxx性

您當前的位置:JZ5U綠色下載站文章中心設計學院Photoshop → 文章內(nèi)容
  • IP欺騙原理精解和防范手段綜述

即使是很好的實現(xiàn)了TCP/IP協(xié)議,由于它本身有著一些不安全的地方,從而可以對TCP/IP網(wǎng)絡進行攻擊。這些攻擊包括序列號欺騙,路由攻擊,源地址欺騙和授權欺騙。本文除了介紹IP欺騙攻擊方法外,還介紹怎樣防止這個攻擊手段。

上述攻擊是建立在攻擊者的計算機(包括路由)是連在INTERNET上的。這里的攻擊方法是針對TCP/IP本身的缺陷的,而不是某一具體的實現(xiàn)。

實際上,IP 欺騙不是進攻的結(jié)果,而是進攻的手段。進攻實際上是信任關系的破壞。

IP欺騙原理

信任關系

在Unix領域中,信任關系能夠很容易得到。假如在主機A和B上各有一個帳戶,在使用當中會發(fā)現(xiàn),在主機A上使用時需要輸入在A上的相應帳戶,在主機B上使用時必須輸入在B上的帳戶,主機A和B把你當作兩個互不相關的用戶,顯然有些不便。為了減少這種不便,可以在主機A和主機B中建立起兩個帳戶的相互信任關系。在主機A和主機B上你的home目錄中創(chuàng)建.rhosts 文件。從主機A上,在你的home目錄中輸入'echo " B username " > ~/.rhosts' ;從主機B上,在你的home目錄中輸入'echo " A username " >~/.rhosts' 。至此,你能毫無阻礙地使用任何以r*開頭的遠程登錄如:rlogin,rcall,rsh等,而無口令驗證的煩惱。這些命令將允許以地址為基礎的驗證,或者允許或者拒絕以IP地址為基礎的存取服務。

這里的信任關系是基于IP地址的。

Rlogin

Rlogin 是一個簡單的客戶/服務器程序,它利用TCP傳輸。Rlogin 允許用戶從一臺主機登錄到另一臺主機上,并且,如果目標主機信任它,Rlogin 將允許在不應答口令的情況下使用目標主機上的資源。安全驗證完全是基于源主機的IP 地址。因此,根據(jù)以上所舉的例子,我們能利用Rlogin 來從B遠程登錄到A,而且不會被提示輸入口令。

TCP 序列號預測

IP只是發(fā)送數(shù)據(jù)包,并且保證它的完整性。如果不能收到完整的IP數(shù)據(jù)包,IP會向源地址發(fā)送一個ICMP 錯誤信息,希望重新處理。然而這個包也可能丟失。由于IP是非面向連接的,所以不保持任何連接狀態(tài)的信息。每個IP數(shù)據(jù)包被松散地發(fā)送出去,而不關心前一個和后一個數(shù)據(jù)包的情況。由此看出,可以對IP堆棧進行修改,在源地址和目的地址中放入任意滿足要求的IP地址,也就是說,提供虛假的IP地址。

TCP提供可*傳輸。可*性是由數(shù)據(jù)包中的多位控制字來提供的,其中最重要的是數(shù)據(jù)序列和數(shù)據(jù)確認,分別用SYN和ACK來表示。TCP 向每一個數(shù)據(jù)字節(jié)分配一個序列號,并且可以向已成功接收的、源地址所發(fā)送的數(shù)據(jù)包表示確認(目的地址ACK 所確認的數(shù)據(jù)包序列是源地址的數(shù)據(jù)包序列,而不是自己發(fā)送的數(shù)據(jù)包序列)。ACK在確認的同時,還攜帶了下一個期望獲得的數(shù)據(jù)序列號。顯然,TCP提供的這種可*性相對于IP來說更難于愚弄。

序列編號、確認和其它標志信息

由于TCP是基于可*性的,它能夠提供處理數(shù)據(jù)包丟失,重復或是順序紊亂等不良情況的機制。實際上,通過向所傳送出的所有字節(jié)分配序列編號,并且期待接收端對發(fā)送端所發(fā)出的數(shù)據(jù)提供收訖確認,TCP 就能保證可*的傳送。接收端利用序列號確保數(shù)據(jù)的先后順序,除去重復的數(shù)據(jù)包。TCP 序列編號可以看作是32位的計數(shù)器。它們從0至2^32-1 排列。每一個TCP連接(由一定的標示位來表示)交換的數(shù)據(jù)都是順序編號的。在TCP數(shù)據(jù)包中定義序列號(SYN)的標示位位于數(shù)據(jù)段的前端。確認位(ACK)對所接收的數(shù)據(jù)進行確認,并且指出下一個期待接收的數(shù)據(jù)序列號。

TCP通過滑動窗口的概念來進行流量控制。設想在發(fā)送端發(fā)送數(shù)據(jù)的速度很快而接收端接收速度卻很慢的情況下,為了保證數(shù)據(jù)不丟失,顯然需要進行流量控制,協(xié)調(diào)好通信雙方的工作節(jié)奏。所謂滑動窗口,可以理解成接收端所能提供的緩沖區(qū)大小。TCP利用一個滑動的窗口來告訴發(fā)送端對它所發(fā)送的數(shù)據(jù)能提供多大的緩沖區(qū)。由于窗口由16位bit所定義,所以接收端TCP 能最大提供65535個字節(jié)的緩沖。由此,可以利用窗口大小和第一個數(shù)據(jù)的序列號計算出最大可接收的數(shù)據(jù)序列號。

其它TCP標示位有RST(連接復位,Reset the connection)、PSH(壓入功能,Push function)和FIN (發(fā)送者無數(shù)據(jù),No more data from sender)。如果RST 被接收,TCP連接將立即斷開。RST 通常在接收端接收到一個與當前連接不相關的數(shù)據(jù)包時被發(fā)送。有些時候,TCP模塊需要立即傳送數(shù)據(jù)而不能等整段都充滿時再傳。一個高層的進程將會觸發(fā)在TCP頭部的PSH標示,并且告訴TCP模塊立即將所有排列好的數(shù)據(jù)發(fā)給數(shù)據(jù)接收端。FIN 表示一個應用連接結(jié)束。當接收端接收到FIN時,確認它,認為將接收不到任何數(shù)據(jù)了。

TCP序列號預測最早是由Morris對這一安全漏洞進行闡述的。他使用TCP序列號預測,即使是沒有從服務器得到任何響應, 來產(chǎn)生一個TCP包序列。這使得他能欺騙在本地網(wǎng)絡上的主機。

通常TCP連接建立一個包括3次握手的序列??蛻暨x擇和傳輸一個初始的序列號(SEQ標志)ISN C,并設置標志位SYN=1,告訴服務器它需要建立連接。服務器確認這個傳輸,并發(fā)送它本身的序列號ISN S,并設置標志位ACK,同時告知下一個期待獲得的數(shù)據(jù)序列號是ISN=1。客戶再確認它。在這三次確認后,開始傳輸數(shù)據(jù)。整個過程如下所示:(C:Client S:Server)
C---S: SYN(ISN C )
S---C: SYN(ISN S ) ,ACK(ISN C )
C---S: ACK(ISN S )
C---S:數(shù)據(jù) 或S---C:數(shù)據(jù)

也就是說對一個會話,C必須得到ISN S確認。ISN S可能是一個隨機數(shù)。

了解序數(shù)編號如何選擇初始序列號和如何根據(jù)時間變化是很重要的。似乎應該有這種情況,當主機啟動后序列編號初始化為1,但實際上并非如此。初始序列號是由tcp_init函數(shù)確定的。ISN每秒增加128000,如果有連接出現(xiàn),每次連接將把計數(shù)器的數(shù)值增加64000。很顯然,這使得用于表示ISN的32位計數(shù)器在沒有連接的情況下每9.32 小時復位一次。之所以這樣,是因為這樣有利于最大限度地減少舊有連接的信息干擾當前連接的機會。這里運用了2MSL 等待時間的概念(不在本文討論的范圍之內(nèi))。如果初始序列號是隨意選擇的,那么不能保證現(xiàn)有序列號是不同于先前的。假設有這樣一種情況,在一個路由回路中的數(shù)據(jù)包最終跳出了循環(huán),回到了“舊有”的連接(此時其實是不同于前者的現(xiàn)有連接),顯然會發(fā)生對現(xiàn)有連接的干擾。

假設一個入侵者X有一種方法,能預測ISN S。在這種情況下,他可能將下列序號送給主機T來模擬客戶的真正的ISN S:
X---S: SYN(ISN X ) ,SRC = T
S---T: SYN(ISN S ) ,ACK(ISN X )
X---S: ACK(ISN S ) ,SRC =T

盡管消息S*T并不到X,但是X能知道它的內(nèi)容,因此能發(fā)送數(shù)據(jù)。如果X要對一個連接實施攻擊,這個連接允許執(zhí)行命令,那么另外的命令也能執(zhí)行。

那么怎樣產(chǎn)生隨機的ISN?在Berkeley系統(tǒng),最初的序列號變量由一個常數(shù)每秒加一產(chǎn)生,等到這個常數(shù)一半時,就開始一次連接。這樣,如果開始了一個合法連接,并觀察到一個ISN S在用,便可以計算,有很高可信度,ISN S 用在下一個連接企圖。

Morris 指出,回復消息
S---T:SYN(ISN S ) ,ACK(ISN X )
事實上并不消失,真正主機將收到它,并試圖重新連接。這并不是一個嚴重的障礙。

Morris發(fā)現(xiàn),通過模仿一個在T上的端口,并向那個端口請求一個連接,他就能產(chǎn)生序列溢出,從而讓它看上去S*T消息丟失了。另外一個方法,可以等待知道T關機或重新啟動。

下面詳細的介紹一下。

IP欺騙

IP欺騙由若干步驟組成,這里先簡要地描述一下,隨后再做詳盡地解釋。先做以下假定:首先,目標主機已經(jīng)選定。其次,信任模式已被發(fā)現(xiàn),并找到了一個被目標主機信任的主機。黑客為了進行IP欺騙,進行以下工作:使得被信任的主機喪失工作能力,同時采樣目標主機發(fā)出的TCP 序列號,猜測出它的數(shù)據(jù)序列號。然后,偽裝成被信任的主機,同時建立起與目標主機基于地址驗證的應用連接。如果成功,黑客可以使用一種簡單的命令放置一個系統(tǒng)后門,以進行非授權操作。

使被信任主機喪失工作能力

一旦發(fā)現(xiàn)被信任的主機,為了偽裝成它,往往使其喪失工作能力。由于攻擊者將要代替真正的被信任主機,他必須確保真正被信任的主機不能接收到任何有效的網(wǎng)絡數(shù)據(jù),否則將會被揭穿。有許多方法可以做到這些。這里介紹“TCP SYN 淹沒”。

前面已經(jīng)談到,建立TCP連接的第一步就是客戶端向服務器發(fā)送SYN請求。 通常,服務器將向客戶端發(fā)送SYN/ACK 信號。這里客戶端是由IP地址確定的??蛻舳穗S后向服務器發(fā)送ACK,然后數(shù)據(jù)傳輸就可以進行了。然而,TCP處理模塊有一個處理并行SYN請求的最上限,它可以看作是存放多條連接的隊列長度。其中,連接數(shù)目包括了那些三步握手法沒有最終完成的連接,也包括了那些已成功完成握手,但還沒有被應用程序所調(diào)用的連接。如果達到隊列的最上限,TCP將拒絕所有連接請求,直至處理了部分連接鏈路。因此,這里是有機可乘的。

黑客往往向被進攻目標的TCP端口發(fā)送大量SYN請求,這些請求的源地址是使用一個合法的但是虛假的IP地址(可能使用該合法IP地址的主機沒有開機)。而受攻擊的主機往往是會向該IP地址發(fā)送響應的,但可惜是杳無音信。與此同時IP包會通知受攻擊主機的TCP:該主機不可到達,但不幸的是TCP會認為是一種暫時錯誤,并繼續(xù)嘗試連接(比如繼續(xù)對該IP地址進行路由,發(fā)出SYN/ACK數(shù)據(jù)包等等),直至確信無法連接。

當然,這時已流逝了大量的寶貴時間。值得注意的是,黑客們是不會使用那些正在工作的IP地址的,因為這樣一來,真正IP持有者會收到SYN/ACK響應,而隨之發(fā)送RST給受攻擊主機,從而斷開連接。前面所描述的過程可以表示為如下模式。
1 Z (X) ---SYN ---> B
 Z (X) ---SYN ---> B
 Z (X) ---SYN ---> B

2 X <---SYN/ACK-- B
X <---SYN/ACK-- B

3 X <--- RST --- B
  
在時刻1時,攻擊主機把大批SYN 請求發(fā)送到受攻擊目標(在此階段,是那個被信任的主機),使其TCP隊列充滿。在時刻2時,受攻擊目標向它所相信的IP地址(虛假的IP)作出SYN/ACK反應。在這一期間,受攻擊主機的TCP模塊會對所有新的請求予以忽視。不同的TCP 保持連接隊列的長度是有所不同的。BSD 一般是5,Linux一般是6。使被信任主機失去處理新連接的能力,所贏得的寶貴空隙時間就是黑客進行攻擊目標主機的時間,這使其偽裝成被信任主機成為可能。

序列號取樣和猜測

前面已經(jīng)提到,要對目標主機進行攻擊,必須知道目標主機使用的數(shù)據(jù)包序列號。現(xiàn)在,我們來討論黑客是如何進行預測的。他們先與被攻擊主機的一個端口(SMTP是一個很好的選擇)建立起正常的連接。通常,這個過程被重復若干次,并將目標主機最后所發(fā)送的ISN存儲起來。黑客還需要估計他的主機與被信任主機之間的RTT時間(往返時間),這個RTT時間是通過多次統(tǒng)計平均求出的。RTT 對于估計下一個ISN是非常重要的。前面已經(jīng)提到每秒鐘ISN增加128000,每次連接增加64000。現(xiàn)在就不難估計出ISN的大小了,它是128000乘以RTT的一半,如果此時目標主機剛剛建立過一個連接,那么再加上一個64000。再估計出ISN大小后,立即就開始進行攻擊。當黑客的虛假TCP數(shù)據(jù)包進入目標主機時,根據(jù)估計的準確度不同,會發(fā)生不同的情況:

·如果估計的序列號是準確的,進入的數(shù)據(jù)將被放置在接收緩沖器以供使用。

·如果估計的序列號小于期待的數(shù)字,那么將被放棄。

·如果估計的序列號大于期待的數(shù)字,并且在滑動窗口(前面講的緩沖)之內(nèi),那么,該數(shù)據(jù)被認為是一個未來的數(shù)據(jù),TCP模塊將等待其它缺少的數(shù)據(jù)。如果估計的序列號大于期待的數(shù)字,并且不在滑動窗口(前面講的緩沖)之內(nèi),那么,TCP將會放棄該數(shù)據(jù)并返回一個期望獲得的數(shù)據(jù)序列號。下面將要提到,黑客的主機并不能收到返回的數(shù)據(jù)序列號。

1 Z(B) ----SYN ---> A
2 B <---SYN/ACK--- A
3 Z(B) -----ACK---> A
4 Z(B) ---——PSH---> A

攻擊者偽裝成被信任主機的IP 地址,此時,該主機仍然處在停頓狀態(tài)(前面講的喪失處理能力),然后向目標主機的513端口(rlogin的端口號)發(fā)送連接請求,如時刻1所示。在時刻2,目標主機對連接請求作出反應,發(fā)送SYN/ACK數(shù)據(jù)包給被信任主機(如果被信任主機處于正常工作狀態(tài),那么會認為是錯誤并立即向目標主機返回RST數(shù)據(jù)包,但此時它處于停頓狀態(tài))。按照計劃,被信任主機會拋棄該SYN/ACK數(shù)據(jù)包。然后在時刻3,攻擊者向目標主機發(fā)送ACK數(shù)據(jù)包,該ACK使用前面估計的序列號加1(因為是在確認)。如果攻擊者估計正確的話,目標主機將會接收該ACK 。至耍,將開始數(shù)據(jù)傳輸。一般地,攻擊者將在系統(tǒng)中放置一個后門,以便侵入。經(jīng)常會使用 ′cat ++ >> ~/.rhosts′。之所以這樣是因為,這個辦法迅速、簡單地為下一次侵入鋪平了道路。

一個和這種TCP序列號攻擊相似的方法,是使用NETSTAT服務。在這個攻擊中,入侵者模擬一個主機關機了。如果目標主機上有NETSTAT,它能提供在另一端口上的必須的序列號。這取消了所有要猜測的需要。

IP欺騙的防止

防止的要點在于,這種攻擊的關鍵是相對粗糙的初始序列號變量在Berkeley系統(tǒng)中的改變速度。TCP協(xié)議需要這個變量每秒要增加25000次。Berkeley 使用的是相對比較慢的速度。但是,最重要的是,是改變間隔,而不是速度。

我們考慮一下一個計數(shù)器工作在250000Hz時是否有幫助。我們先忽略其他發(fā)生的連接,僅僅考慮這個計數(shù)器以固定的頻率改變。

為了知道當前的序列號,發(fā)送一個SYN包,收到一個回復:
X---S: SYN(ISN X )
S---X: SYN(ISN S ) ,ACK(ISN X ) (1)
第一個欺騙包,它觸發(fā)下一個序列號,能立即跟隨服務器對這個包的反應:
X---S: SYN(ISN X ) ,SRC = T (2)
序列號ISN S用于回應了:
S---T: SYN(ISN S ) ,ACK(ISN X )
是由第一個消息和服務器接收的消息唯一決定。這個號碼是X和S的往返精確的時間。這樣,如果欺騙能精確地測量和產(chǎn)生這個時間,即使是一個4-U時鐘都不能擊退這次攻擊。

拋棄基于地址的信任策略

阻止這類攻擊的一種非常容易的辦法就是放棄以地址為基礎的驗證。不允許r*類遠程調(diào)用命令的使用;刪除.rhosts 文件;清空/etc/hosts.equiv 文件。這將迫使所有用戶使用其它遠程通信手段,如telnet、ssh、skey等等。

進行包過濾

如果您的網(wǎng)絡是通過路由器接入Internet 的,那么可以利用您的路由器來進行包過濾。確信只有您的內(nèi)部LAN可以使用信任關系,而內(nèi)部LAN上的主機對于LAN以外的主機要慎重處理。您的路由器可以幫助您過濾掉所有來自于外部而希望與內(nèi)部建立連接的請求。

使用加密方法

阻止IP欺騙的另一種明顯的方法是在通信時要求加密傳輸和驗證。當有多種手段并存時,可能加密方法最為適用。
使用隨機化的初始序列號

黑客攻擊得以成功實現(xiàn)的一個很重要的因素就是,序列號不是隨機選擇的或者隨機增加的。Bellovin 描述了一種彌補TCP不足的方法,就是分割序列號空間。每一個連接將有自己獨立的序列號空間。序列號將仍然按照以前的方式增加,但是在這些序列號空間中沒有明顯的關系??梢酝ㄟ^下列公式來說明:

ISN =M+F(localhost,localport ,remotehost ,remoteport )
M:4微秒定時器
F:加密HASH函數(shù)。

F產(chǎn)生的序列號,對于外部來說是不應該能夠被計算出或者被猜測出的。Bellovin 建議F是一個結(jié)合連接標識符和特殊矢量(隨機數(shù),基于啟動時間的密碼)的HASH函數(shù) 。


  • 作者:互聯(lián)網(wǎng)  來源:本站整理  發(fā)布時間:2006-02-19 11:55:16


------------------------------- · 相關文檔瀏覽 · --------------------------------------------------------------------- · 熱門文檔瀏覽 · -------------------------------------