突破防火墻的有效方法是IP地址欺騙

2010-08-28 10:46:32來源:西部e網(wǎng)作者:

    一般的訪問控制主要在防火墻中進行設(shè)置,制定一些安全策略:如內(nèi)部局域網(wǎng)的資源不允許外部網(wǎng)上的用戶使用;不設(shè)防區(qū)(又稱非軍事區(qū))可以為內(nèi)部或外部局域網(wǎng),其中的資源允許外部網(wǎng)的用戶有限度地使用;可以使外部用戶訪問非軍事區(qū)(DMZ區(qū))的WEB服務(wù)器等等。

  深入分析研究防火墻技術(shù),利用防火墻配置和實現(xiàn)的漏洞,可以對它實施攻擊。通常情況下,有效的攻擊都是從相關(guān)的子網(wǎng)進行的,因為這些網(wǎng)址得到了防火墻的信賴,雖說成功與否尚取決于機遇等其他因素,但對攻擊者而言很值得一試。

  突破防火墻系統(tǒng)最常用的方法是IP地址欺騙,它同時也是其他一系列攻擊方法的基礎(chǔ)。之所以使用這個方法,是因為IP自身的缺點。IP協(xié)議依據(jù)IP頭中的目的地址項來發(fā)送IP數(shù)據(jù)包。如果目的地址是本地網(wǎng)絡(luò)內(nèi)的地址,該IP包就被直接發(fā)送到目的地。如果目的地址不在本地網(wǎng)絡(luò)內(nèi),該IP包就會被發(fā)送到網(wǎng)關(guān),再由網(wǎng)關(guān)決定將其發(fā)送到何處。這是IP路由IP包的方法。

  IP路由IP包時對IP頭中提供的IP源地址不做任何檢查,并且認為IP頭中的IP源地址即為發(fā)送該包的機器的IP地址。當接收到該包的目的主機要與源主機進行通訊時,它以接收到的IP包的IP頭中IP源地址作為其發(fā)送的IP包的目的地址,來與源主機進行數(shù)據(jù)通訊。IP的這種數(shù)據(jù)通訊方式雖然非常簡單和高效,但它同時也是IP的一個安全隱患,很多網(wǎng)絡(luò)安全事故都是因為IP這個的缺點而引發(fā)的。

  黑客或入侵者利用偽造的IP發(fā)送地址產(chǎn)生虛假的數(shù)據(jù)分組,喬裝成來自內(nèi)部站的分組過濾器,這種類型的攻擊是非常危險的。關(guān)于涉及到的分組真正是內(nèi)部的還是外部的分組被包裝得看起來象內(nèi)部的種種跡象都已喪失殆盡。只要系統(tǒng)發(fā)現(xiàn)發(fā)送地址在其自己的范圍之內(nèi),則它就把該分組按內(nèi)部通信對待并讓其通過。

  通常主機A與主機B的TCP連接(中間有或無防火墻)是通過主機A向主機B提出請求建立起來的,而其間A和B的確認僅僅根據(jù)由主機A產(chǎn)生并經(jīng)主機B驗證的初始序列號ISN。具體分三個步驟:

  主機A產(chǎn)生它的ISN,傳送給主機B,請求建立連接;B接收到來自A的帶有SYN標志的ISN后,將自己本身的ISN連同應(yīng)答信息ACK一同返回給A;A再將B傳送來ISN及應(yīng)答信息ACK返回給B。至此,正常情況,主機A與B的TCP連接就建立起來了。

  B ---- SYN ----> A
  B <---- SYN+ACK ---- A
  B ---- ACK ----> A

  假設(shè)C企圖攻擊A,因為A和B是相互信任的,如果C已經(jīng)知道了被A信任的B,那么就要相辦法使得B的網(wǎng)絡(luò)功能癱瘓,防止別的東西干擾自己的攻擊。在這里普遍使用的是SYN flood。攻擊者向被攻擊主機發(fā)送許多TCP- SYN包。這些TCP-SYN包的源地址并不是攻擊者所在主機的IP地址,而是攻擊者自己填入的IP地址。當被攻擊主機接收到攻擊者發(fā)送來的TCP-SYN包后,會為一個TCP連接分配一定的資源,并且會以接收到的數(shù)據(jù)包中的源地址(即攻擊者自己偽造的IP地址)為目的地址向目的主機發(fā)送TCP-(SYN+ACK)應(yīng)答包。

  由于攻擊者自己偽造的IP地址一定是精心選擇的不存在的地址,所以被攻擊主機永遠也不可能收到它發(fā)送出去的TCP-(SYN+ACK)包的應(yīng)答包,因而被攻擊主機的TCP狀態(tài)機會處于等待狀態(tài)。如果被攻擊主機的TCP狀態(tài)機有超時控制的話,直到超時,為該連接分配的資源才會被回收。因此如果攻擊者向被攻擊主機發(fā)送足夠多的TCP-SYN包,并且足夠快,被攻擊主機的TCP模塊肯定會因為無法為新的TCP連接分配到系統(tǒng)資源而處于服務(wù)拒絕狀態(tài)。并且即使被攻擊主機所在網(wǎng)絡(luò)的管理員監(jiān)聽到了攻擊者的數(shù)據(jù)包也無法依據(jù)IP頭的源地址信息判定攻擊者是誰。

    當B的網(wǎng)絡(luò)功能暫時癱瘓,現(xiàn)在C必須想方設(shè)法確定A當前的ISN。首先連向25端口,因為SMTP是沒有安全校驗機制的,與前面類似,不過這次需要記錄A的ISN,以及C到A的大致的RTT(round trip time)。這個步驟要重復(fù)多次以便求出RTT的平均值。一旦C知道了A的ISN基值和增加規(guī)律,就可以計算出從C到A需要RTT/2 的時間。然后立即進入攻擊,否則在這之間有其他主機與A連接,ISN將比預(yù)料的多。

  C向A發(fā)送帶有SYN標志的數(shù)據(jù)段請求連接,只是信源IP改成了B。A向B回送SYN+ACK數(shù)據(jù)段,B已經(jīng)無法響應(yīng),B的TCP層只是簡單地丟棄A的回送數(shù)據(jù)段。這個時候C需要暫停一小會兒,讓A有足夠時間發(fā)送SYN+ACK,因為C看不到這個包。然后C再次偽裝成B向A發(fā)送ACK,此時發(fā)送的數(shù)據(jù)段帶有Z預(yù)測的A的ISN+1。如果預(yù)測準確,連接建立,數(shù)據(jù)傳送開始。

  問題在于即使連接建立,A仍然會向B發(fā)送數(shù)據(jù),而不是C,C仍然無法看到A發(fā)往B的數(shù)據(jù)段,C必須蒙著頭按照協(xié)議標準假冒B向A發(fā)送命令,于是攻擊完成。如果預(yù)測不準確,A將發(fā)送一個帶有RST標志的數(shù)據(jù)段異常終止連接,C只有從頭再來。隨著不斷地糾正預(yù)測的ISN,攻擊者最終會與目標主機建立一個會晤。通過這種方式,攻擊者以合法用戶的身份登錄到目標主機而不需進一步的確認。如果反復(fù)試驗使得目標主機能夠接收對網(wǎng)絡(luò)的ROOT登錄,那么就可以完全控制整個網(wǎng)絡(luò)。

  C(B) ---- SYN ----> A
  B <---- SYN+ACK ---- A
  C(B) ---- ACK ----> A
  C(B) ---- PSH ----> A

  IP欺騙攻擊利用了RPC服務(wù)器僅僅依賴于信源IP地址進行安全校驗的特性,攻擊最困難的地方在于預(yù)測A的ISN。攻擊難度比較大,但成功的可能性也很大。C必須精確地預(yù)見可能從A發(fā)往B的信息,以及A期待來自B的什么應(yīng)答信息,這要求攻擊者對協(xié)議本身相當熟悉。同時需要明白,這種攻擊根本不可能在交互狀態(tài)下完成,必須寫程序完成。當然在準備階段可以用netxray之類的工具進行協(xié)議分析。

  雖然IP欺騙攻擊有著相當難度,但我們應(yīng)該清醒地意識到,這種攻擊非常廣泛,入侵往往由這里開始。預(yù)防這種攻擊還是比較容易的。IP本身的缺陷造成的安全隱患目前是無法從根本上消除的。我們只能采取一些彌補措施來使其造成的危害減少到最小的程度。防御這種攻擊的最理想的方法是:每一個連接局域網(wǎng)的網(wǎng)關(guān)或路由器在決定是否允許外部的IP數(shù)據(jù)包進入局域網(wǎng)之前,先對來自外部的IP數(shù)據(jù)包進行檢驗。如果該IP包的IP源地址是其要進入的局域網(wǎng)內(nèi)的IP地址,該IP包就被網(wǎng)關(guān)或路由器拒絕,不允許進入該局域網(wǎng)。

  這種方法雖然能夠很好的解決問題,但是考慮到一些以太網(wǎng)卡接收它們自己發(fā)出的數(shù)據(jù)包,并且在實際應(yīng)用中局域網(wǎng)與局域網(wǎng)之間也常常需要有相互的信任關(guān)系以共享資源,這種方案不具備較好的實際價值。另外一種防御這種攻擊的較為理想的方法是當IP數(shù)據(jù)包出局域網(wǎng)時檢驗其IP源地址。即每一個連接局域網(wǎng)的網(wǎng)關(guān)或路由器在決定是否允許本局域網(wǎng)內(nèi)部的IP數(shù)據(jù)包發(fā)出局域網(wǎng)之前,先對來自該IP數(shù)據(jù)包的IP源地址進行檢驗。

  如果該IP包的IP源地址不是其所在局域網(wǎng)內(nèi)部的IP地址,該IP包就被網(wǎng)關(guān)或路由器拒絕,不允許該包離開局域網(wǎng)。這樣一來,攻擊者至少需要使用其所在局域網(wǎng)內(nèi)的IP地址才能通過連接該局域網(wǎng)的網(wǎng)關(guān)或路由器。如果攻擊者要進行攻擊,根據(jù)其發(fā)出的IP數(shù)據(jù)包的IP源地址就會很容易找到誰實施了攻擊。因此建議每一個ISP或局域網(wǎng)的網(wǎng)關(guān)路由器都對出去的IP數(shù)據(jù)包進行IP源地址的檢驗和過濾。如果每一個網(wǎng)關(guān)路由器都做到了這一點,IP源地址欺騙將基本上無法奏效。在當前并不是每一網(wǎng)關(guān)及路由器都能做到這一點的情況下,網(wǎng)絡(luò)系統(tǒng)員只能將自己管理的網(wǎng)絡(luò)至于盡可能嚴密的監(jiān)視之下,以防備可能到來的攻擊。

關(guān)鍵詞:IP

贊助商鏈接: