IP欺騙技術介紹(2) (轉)

gugu99發表於2007-10-11
IP欺騙技術介紹(2) (轉)[@more@]IP欺騙技術介紹(2)

當然,這時已流逝了大量的寶貴時間。值得注意的是,們是不會使用那些正在工作的的,因為這樣一來,真正IP持有者會收到SYN/ACK響應,而隨之傳送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 請求傳送到受攻擊目標(在此階段,是那個被信任的主機),使其TCP佇列充滿。在時刻2時,受攻擊目標向它所相信的IP地址(虛假的IP)作出SYN/ACK反應。在這一期間,受攻擊主機的TCP模組會對所有新的請求予以忽視。不同的TCP 保持連線佇列的長度是有所不同的。 一般是5,一般是6。使被信任主機失去處理新連線的能力,所贏得的寶貴空隙時間就是駭客進行攻擊目標主機的時間,這使其偽裝成被信任主機成為可能。


序列號取樣和猜測
前面已經提到,要對目標主機進行攻擊,必須知道目標主機使用的資料包序列號。現在,我們來討論駭客是如何進行預測的。他們先與被攻擊主機的一個埠(SMTP是一個很好的選擇)建立起正常的連線。通常,這個過程被重複若干次,並將目標主機最後所傳送的ISN起來。駭客還需要估計他的主機與被信任主機之間的RTT時間(往返時間),這個RTT時間是透過多次統計平均求出的。RTT 對於估計下一個ISN是非常重要的。前面已經提到每秒鐘ISN增加128000,每次連線增加64000。現在就不難估計出ISN的大小了,它是128000乘以RTT的一半,如果此時目標主機剛剛建立過一個連線,那麼再加上一個64000。再估計出ISN大小後,立即就開始進行攻擊。當駭客的虛假TCP資料包進入目標主機時,根據估計的準確度不同,會發生不同的情況:

如果估計的序列號是準確的,進入的資料將被放置在接收緩衝器以供使用。
如果估計的序列號小於期待的數字,那麼將被放棄。
如果估計的序列號大於期待的數字,並且在滑動視窗(前面講的緩衝)之內,那麼,該資料被認為是一個未來的資料,TCP模組將等待其它缺少的資料。
如果估計的序列號大於期待的數字,並且不在滑動視窗(前面講的緩衝)之內,那麼,TCP將會放棄該資料並返回一個期望獲得的資料序列號。下面將要提到,駭客的主機並不能收到返回的資料序列號。


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

攻擊者偽裝成被信任主機的地址,此時,該主機仍然處在停頓狀態(前面講的喪失處理能力),然後向目標主機的513埠(rlogin的埠號)傳送連線請求,如時刻1所示。在時刻2,目標主機對連線請求作出反應,傳送SYN/ACK資料包給被信任主機(如果被信任主機處於正常工作狀態,那麼會認為是錯誤並立即向目標主機返回RST資料包,但此時它處於停頓狀態)。按照計劃,被信任主機會拋棄該SYN/ACK資料包。然後在時刻3,攻擊者向目標主機傳送ACK資料包,該ACK使用前面估計的序列號加1(因為是在確認)。如果攻擊者估計正確的話,目標主機將會接收該ACK 。至此,連線正式建立起來了。在時刻4,將開始資料傳輸。一般地,攻擊者將在中放置一個,以便侵入。經常會使用 ′cat ++ >> ~/.rhosts′。之所以這樣是因為,這個辦法迅速、簡單地為下一次侵入鋪平了道路。

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

典型攻擊工具和攻擊過程:hunt
 
防止的要點在於,這種攻擊的關鍵是相對粗糙的初始序列號變數在Berkeley系統中的改變速度  
 
。TCP需要這個變數每秒要增加25000次。Berkeley 使用的是相對比較慢的速度。但是,最重要的是,是改變間隔,而不是速度。

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

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


拋棄基於地址的信任策略
阻止這類攻擊的一種非常容易的辦法就是放棄以地址為基礎的驗證。不允許r*類命令的使用;刪除.rhosts ;清空/etc/hosts.equiv 檔案。這將迫使所有使用其它遠端通訊手段,如、ssh、skey等等。


進行包過濾
如果您的是透過器接入Internet 的,那麼可以利用您的路由器來進行包過濾。確信只有您的內部LAN可以使用信任關係,而內部LAN上的主機對於LAN以外的主機要慎重處理。您的路由器可以幫助您過濾掉所有來自於外部而希望與內部建立連線的請求。


使用方法
阻止IP欺騙的另一種明顯的方法是在通訊時要求加密傳輸和驗證。當有多種手段並存時,可能加密方法最為適用。


使用隨機化的初始序列號
駭客攻擊得以成功實現的一個很重要的因素就是,序列號不是隨機選擇的或者隨機增加的。Bellovin 描述了一種彌補TCP不足的方法,就是分割序列號空間。每一個連線將有自己獨立的序列號空間。序列號將仍然按照以前的方式增加,但是在這些序列號空間中沒有明顯的關係。可以透過下列公式來說明:

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

F產生的序列號,對於外部來說是不應該能夠被計算出或者被猜測出的。Bellovin 建議F是一個結合連線識別符號和特殊向量(隨機數,基於啟動時間的密碼)的HASH函式。




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-975762/,如需轉載,請註明出處,否則將追究法律責任。

相關文章