• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 通過IP欺騙進行攻擊的原理及預防

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    本文的目的在于向讀者解釋IP欺騙的實現方法和預防措施。它要求您掌握 有關UIIX和TCP/IP的少量知識。如果您沒有,也沒有關系,相信下面的說明能 給您以足夠的背景知識。 IP欺騙是適用于TCP/IP環境的一種復雜的技術攻擊,它由若干部分組成。 目前,在Inte .net
        本文的目的在于向讀者解釋IP欺騙的實現方法和預防措施。它要求您掌握 有關UIIX和TCP/IP的少量知識。如果您沒有,也沒有關系,相信下面的說明能 給您以足夠的背景知識。
        IP欺騙是適用于TCP/IP環境的一種復雜的技術攻擊,它由若干部分組成。 目前,在Inte.net領域中,它成為黑客攻擊時采用的一種重要手段,因此有必 要充分了解它的工作原理和防范措施;以充分保護自己的合法權益。
        實際上,IP欺騙不是進攻的結果,而是進攻的手段。進攻實際上是信任關 系的破壞。然而,在本文中,IP欺騙將被看作是涉及到的整個攻擊,對于利用IP 欺騙建立起來的虛假信任關系進行破壞的其它行為不作為我們討論的內容。 本文將詳盡地解釋攻擊的全過程。包括有關的操作系統與網絡信息。
    背景知識(術語說明)
    A:表示目標主機
    B:表示對于A來說,可信任的主機
    X:表示不能到達的主機
    Z:表示進攻主機
    1(2):主機1化裝成主機2
    圖示符號定義
    本文中有若干圖示,它們將類比以下示例進行解釋:
    時間序列 主機A 控制 主機B
    1 A --SYN--> B
    時間序列;時間流逝的單位,可以無究細化。一般認為是很小的單位, 表示事件發生的先后順序。
    主機A:參與一次TCP對話的機器。
    控制:顯示有關TCP控制字段頭部的控制字符和該字段的流動方向。
    主機B:參與一次TCP對話的機器。
    這個圖示中,在第一參考時間點上主機A發送TCP字段給主機B,控制字段中的 SYN控制位將作為該TCP字段的主要信息。除非特別說明,我們一般不關心TCP 字段中的數據部分。
    信任關系
    在Unix領域中,信任關系能夠很容易得到。假如您在主機A和B上各有一個賬戶 ,您在使用當中發現,在主機A上使用時需要輸入在A上的相應帳戶,在主機B上 使用時必須輸入在B上的帳戶,主機A和B把您當作兩個互不相關的用戶,顯然有 些不便。為了減少這種不便,您可以在主機A和主機B中建立起兩個帳戶的相互信 任關系,在主機A和主機B上您的home目錄中創建.rhosts文件.從主機A上, 在您的home目錄中輸入e-cho" busername"> ~/.rhosts;從主機B上,在您的 home目錄中輸入echo" A username">~/.rhosts.至此,您能毫無阻礙地使用 任何以r*開頭的遠程調用命令,如:rlogin,rcall,rsh等,而無口令驗證的 煩惱。這些命令將允計以地址為基礎的驗證,或者允許或者拒絕以IP地址為基礎 的存取服務。
    Rlogin
    Rlogin是一個簡單的客戶/服務器程序,它利用TCP傳輸。Rlogin允許用戶從一臺 主機登錄到另一臺主機上,并且,如果目標主機信任它,Rlogin將允許在不應答 口令的情況下使用目標主機上的資源,安全對外開放證完全是基于源主機的IP 地址,因此,根據以上所舉的例子,我們能利用Rlogin來從B遠程登錄到A,而且 不會被提示輸入口令,
    lnternet協議(IP)
    IP是TCP/IP協議組中非面向連接、非可靠傳輸的網絡協議。它由兩個數32bit的 頭字段提供地址信息。IP數據包占TCP/IP協議網絡流量中的很大部分,可以說明 最為繁書記的部分。IP的工作在于在網絡環境中發送數據包,它不提供保證 可靠性的任何機制,對于可靠性的要求,由于層協議來完成。IP只是發送數據包 ,并且保證它的完整性。如果不能收到完整的IP數據包,IP會向源地址發送一個 ICMP錯誤信息,希望重新處理。然而這個包也可能丟失(ICMP是網際控制消息 協議,Internet Control Message Protocol,它是用于根據網絡條件保證數據 傳送的協議,主要是向IP層或其它層發送不同的錯誤信息)。由于IP是非面向 連接的,所以不保持任何連接狀態的信息。每個IP數據包被松散地發送出去而 不關心前一個和后一個數據包的情況。由此我們不難看出,可以對IP堆本進行 修改,在源地址和目的地址中放入任意滿足要求的IP地址,也就是說,提供 虛假的IP地址。
    傳輸控制協議(TCP)
    TCP是在TCP/IP協議組中面向邊接、提供可靠傳輸的協議。面向連接意味著參 與對話的兩個主機必須首先建立起連接,然后才能進行數據交換??煽啃允怯?數據包中的多位控制字來提供的,但是,其中僅僅有兩個是與我們的討論有關。 它們是數據序列和數據確認,分別有SYN和ACK來表示。TCP向每一個數據字節 分配一個序列號,并且可以向已成功接收的、源地址所發送的數據包表示確認 (目的地址ACK所確認的數據包序列是源地址的數據包序列,而不是自己發送 的數據包序列(。ACK在確認的同時還攜帶也下一個期望獲得的數據序列號。 顯然,TCP提供的這種可靠性相對于IP來說更難于愚弄。
    序列編號、確認和其它標志信息
    由于TCP是基于可靠性的,它能夠提供處理數據包丟失,重復或是順序率亂 等不良情況的機制實際上,通過向所傳送出的所有字節分配序列編號, 并且期待接收端對發送端所發出的數據提供收旋確認,TCP就能保證可靠的傳送。 接收端利用序列號確保數據的先后順序,除去重復的數據包。TCP序列編號可以 看作是否32位的計數器。它們從0至此2/32-1排列。每一個TCP連接 (由一定的標未位來表示)交換的數據都是順序編號的。在TCPA數據包中定義 序列號(SYN)的標示位位于數據段的前端。確認位(ACK)對所接收的數據 進行確認,并且指出下一個期待接收的數據序列號。
    TCP通過滑動窗口聽要領來進行流量控制。設想在發送端發送數據的速度很快 而接收端接收速度卻很慢的情況下,為了保證數據不丟失,顯然需要進行流量 控制協調好通信雙方的工作節奏。所謂滑動窗口,可以理解成接收端所能提供 的緩沖區大小。TCP利用一個滑動的窗口來告訴發送端對它所發送的數據能提供 多大的緩沖區。由于窗口由不得16位BIT所定義,所以接收端TCP能最大提供 65535個字節的緩沖。由此,可以利用窗口大小和第一個數據的序列號計算出 最大可接收的數據序列號。
    其它TCP標示位有RST(連接復位,Reset the connection)、PSH (壓入功能,Push function)如果RST被接收,TCP連接將立即斷開。 RST通常在接收端接收到一個與當前連接不相關的數據包時被發送。 有些時候,TCP模塊需要立即傳送數據而不能等整段都充滿時再傳。 一個高層的進程將會觸發在TCP頭部的PSH標示,并且告訴TCPA模塊立即 將所有排列好的數據發給數據接收端。FIN表示一個應用連接結束。 當接收端接收到FIN時,確認它,認為將接收不到任何數據了。
    TCP連接的建立
    為了利用TCP連接交換數據,主機間首先必須建立一個連接。TCP建立連接時 可以分為3個步驟,稱為三步握手法。如果主機A運行rlogin客戶程序, 并且希望連接到主機B上的rlogin daemon 服務器程序上,連接過程如圖1所示。
    1 A ---SYN---> B
    2 A <--SYN/ACK--- B
    3 A ---ACK---> B
    圖一
    需要提醒讀者的是,主機A和B的TCP模塊分別使用自己的序列編號。在時刻1時, 客戶端通過設置標志位SYN=1告訴服務器它需要建立連接。同時,客戶端在其 TCP頭中的序列號領域SEQ放置了它的初始序列號(ISN),并且告訴服務器序 列號標示域是有效的,應該被檢查。在時刻2時,服務器端在接收了上面的 SYN后,作出的反應是將自己的ISN和對客戶端的ACKA發向客戶端并且千知 下一個期待獲得的數據序列號是(ISN+1)??蛻舳嗽诘谝涣鲿r刻,對服務器 的ISN進行確認。這時,數據傳輸就可以進行了。
    ISN與序列號的遞增
    了解序數編號如何選擇初始序列號和如何根據時間變化是很重要的。似乎 應該有這種情況,當主機啟動后序列編號初始化為1,但實際上并非如此。 初始序列號是由tcp_init函數確定的。ISN每秒增加工廠128000,如果有連接 出現,每次連接將反計數器的數值增加64000。很顯然,這使得用于表示ISN的 32位計數器在沒有連接的情況下每9.32小時復位一次。之所以這樣,是因為 這樣有利于最大限度地減少舊有連接的信息干擾當前連接的機會。這里運用了 望2MSL等待時間的概念(不在本文討論的范圍之內。)如果初始序列號是 隨意選擇的,那么不能保證現有序列號是不同于先前的。假設有這樣一種情況, 在一個路由回路中的數據包最終跳出了循環,回到了“舊有”的連接 (此時其實是不同于前者的現有連接(,顯然會發生對現有連接的干擾。
    端口號
    為了提供對TCP模塊的并行訪問,TCP提供了叫做端口的用戶接口。端口被 操作系統內核利用來標示不同的網絡進程,也就是嚴格區分傳輸層入口的標示 (就是說,IP不關心他們的存在)。TCP端口與IP地址一起提供網絡端到端的 通信。事實上,在任何時刻任何Internet連接都能由4個要素來措述:源IP地址、 源地址端口號、目的IP地址和目的地址端口號。服務器程序一般被綁定在標準 的端口號上,便如,rlogin daemon 被綁定在TCP 513的端口。
    IP欺騙
    IP欺騙由若干步驟組成,這里先簡要地措述一下,隨后再做詳盡地解釋。 先做以下假定:首先,目標主機已經選一。其次,信任模式已被發現, 并找到了一個被目標主機信任的主機。黑客為了進行IP欺騙,進行以下工作: 使得被信任的主機喪失工作能力,同時采樣目標主機發出的TCP序列號, 猜測出它的數據序列號。然后,偽裝成被信任的主機,同時建立起與目標 主機基于地址驗證的應用連接。如果成功,黑客可以使用一種簡單的命令 放置一個系統后門,以進行非授權操作。
    IP 欺騙是一種不光彩的進攻
    一個經常被忽略,但卻是非常關鍵的事實就是IP欺騙是不光彩的進攻。 進攻者將取代真正被信任的主機,從而破壞目標主機的安全體系。黑客常常 利用如下所措述的方法使得真正被信任的主機喪失工作能力。安全防范程度 不高的主機在它正在和一個可以信賴的主機通信時,處于Internet某個陰暗 角落的一個攻擊者實際上是可以使真正被信任的主機處于停頓狀態,而自己 大量模信心它的數據包,將之發向目標主機??杀氖悄繕酥鳈C全然沒有 感覺。由攻擊者模信心的TCPA數據包到達了目標地址,而由目標地址限往真 正被信任主機的TCPA數據包卻永遠到達不了攻擊者的主機 (兩者的真實IP地址不同(。當然,一理目標地址發送的TCPA數據包到達 了真正被信任的主機時,信息雖然進入協議堆本,到達TCP蓰理模塊,但是會 被取消。所以,攻擊者需要知道目標主機發送了什么,期待什么樣的反應。 攻擊者雖然不能看到目標主機發送的內容,但是它能預料到將發送的內容。 圍繞著這些內容,攻擊者將展開它不光彩的進攻。
    信任模式
    在選擇好進攻目標后,黑客需要確定該主機的信任模式。為了討論起見, 我們假設目標主機確實信任某個主機。找出某個主機信任誰或不信任誰是 不容易的。showmount -e’可以顯示出文件系統在哪里被export,同時 ‘rpcinfo’也能提供有價值的信息。如果得到目標主機的足夠背景信息 ,進行攻擊是不會太困難的。如果所有嘗試都失敗了,黑客會嘗試相鄰的IP地址 ,以獲取有價值的信息。
    使被信任主機喪失工作能力
    一旦發現被信任的主機,為了偽裝成它,往往使其喪失工作能力, 由于攻擊者將要代替零點正的被信任主機,他必須確保真正被信任的主機 不能接收到任何有效的網絡數據,否則將會被揭穿,。有許多方法可以做到這些 。在此,筆者只討論一種方法,媽了“TCP SYN 淹沒”。前面已經談到, 建立TCP連接的第一步就是客戶端向服務器發送SYN請求。
    通常,服務器將向客戶端發送SYN/ACK信號。這里客戶端是由IP地址確定的。 客戶端隨后向服務器發送ACK(見圖1),然后數據傳輸就可以進行了。 然而,TCP處理模塊有一個處理并行SYN請求的最上限,它可以看作是 存放多條連接的隊列長度。其中,連接數目包括了那些三步握手法沒有 最終完成的連接,也包括了那些已成功完成握手但還沒有被應用程序所 調用的連接。如果達到隊列的最上限,TCP將拒絕所有連接請求,直到 處理了部分連接鏈路,因此,這里是有機可乘的,黑客往往向被進攻 目標的TCPA端口發送大量SYN請求,這些請求的源地址是使用一個合法的 但是虛假的IP地址(可能使用該合法IP地址的主機沒有開機)。 而愛攻擊的主機往往是會向該IP地址發送響應的,但可惜是查無音信。 與此同時IP包會通知受攻擊主機的TCP:該主機不可到達,但不TCP會認為 是一種暫時錯誤,并繼續嘗試連接(比如繼續對該IP地址進行路由, 發出SYN/ACK數據包等等),直至確信無法連接。當然,這時已流逝了 大量的寶貴時間。值得注意的是,黑客們是不會使用那些正在工作的IP地址的。 因為這樣一來,真正IP持有者會收到SYN/ACK響應,而隨之發送RST給受攻擊 主機,從而數開連接。前面所措述的過程可以表示為圖2的模式。
    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
    圖2
    在時刻1時,攻擊主機把大批SYN請求發送到受攻擊目標(在此階段,是那個 被信任的主機),使其TCP隊列充滿.在時刻2時,受攻擊目標向它所相信的IP 地址(虛假的IP)作出SYN/ACK反應;在這一期間,受攻擊主機的TCP模塊會對 所有新的請求予以忽視.不同的TCP保持連接隊列的長度是有所不同的.BSD 一般是5,Linux一般是6。使被信任主機失去處理新連接的能力,所贏得的 寶貴空隙時間就是黑客進行攻擊目標主機的時間,這使其偽裝成被信任主機 成為可能。
    序列號取樣和猜測
    前面已經提到,要對目標主機進行攻擊,必須知道目標主機使用的數據包 序列號?,F在,我們來討論黑客是如何進行預測的。他們先與被攻擊主機 的一個端口(SMTP是一個很好的選擇)建立起政黨的連接。通常,這個 過程被重復若干次,并將目標主機最后所發送的ISN存儲起來。黑客還 需要估計他的主機與被信任主機之間的RTT時間(往返時間),這個RTT時間 是通過多次統計平均求出的。RTT對于估計下下個ISN是非常重要的。前面已經 提到每秒鐘ISN是非常重要的。前面已經提到每秒種ISN是非常重要的。前面 已經提到每秒ISN是非常重要的。前面已經提到每秒鐘ISN增加128000,每次 連接增加64000?,F在就不難估計出ISN的大小了,它是128000乘以RTT的一半, 如果此時目標主機剛剛建立過一個連接,那么再加上一個64000,再估計出ISN 大小后,立即就開始進行攻擊。當黑客的虛假TCP數據包進目標主機時,
    如果估計的序列號是準確的,進入的數據將被放置在接收緩沖器以供使用。
    如果估計的序列號小于期待的數字,那么將被放棄。
    如果估計的序列號大于期待的數字,并且在滑動窗口(前面講的緩沖)之內, 那么,該數據被認為是一個未來的數據,TCP模塊將等待其它缺少的數據。 如果估計的序列號大于期待的數字,并且不在滑動窗口(前面講的緩沖)之內, 那么,TCP將會放棄該數據并返回一個期望獲得的數據序列號。下面將要提到, 黑客的主機并不能收到返回的數據序列號。
    破壞行為......
    圖3是攻擊的全過程.
    1 z(B) -----SYN-----> A
    2 B <----SYN/ACK---- A
    3 Z(B) -----ACK-----> A
    4 Z(B) -----PSH-----> A
    圖3
    攻擊者偽裝成被信任主機的IP地址,此時,該主機仍在處在停頓狀態 (前面講的喪失處理能力),然后向目標主機的513端口(rlogin的端口號) 發送連接請求,如時刻1所示.在時刻2,目標主機對連接請求作出反應, 發送SYN/ACK數據包給被信任主機(如果被信任主機處于正常工作狀誠心, 那么會認為是錯誤并立即向目標主機返回RST數據包,但此時它處于停頓狀態). 按照計劃,被信任主機會拋棄該SYN/ACK數據包,然后在時刻3,攻擊者向目標 主機發送ACK數據包,該ACK使用前面估計的序列號加1(因為是正確認).如果 攻擊者估計正胡的話,目標主機將會接收該ACK。至此連接正式建立起來了。 在時刻4,將開始數據傳輸。一般地,攻擊者將在系統中放置一個后門, 以便侵入。經常會使用‘CAI+ + >> ~/.rhosts。之所以這樣是因為, 這個辦法迅速、簡單地為下一次侵入鋪平了道路。
    工作原理分析
    IP欺騙之所以可以成功是因為信任服務的基礎僅僅是建立在網絡地址的驗證上。 IP地址是容易被偽造的。攻擊過程最難的部分是進行序列號估計,估計精度 的高低是成功與否的關鍵所在。
    預防措施
    拋棄基于地址的信任策略
    阻止這類攻擊的一種非常容易的辦法就是放棄以地址為基礎的驗證。不允許 R*類遠程調用命令的使用;刪除rhosts文件;清空/etc/hosts equiv文件。 這將迫使所有用戶使用其它遠程通信手段。如telnet、ssh、skey等等。
    進行包過濾
    如果您的網絡是通過路由器接人Internet的,那么可以利用您的路由器來 進行包過濾。確信只有您的內部LAN可以使用信任關系,而內部LAN上的 主LAN以外的主機要慎重處理。您的路由器可以幫助您過濾掉所有來自于外部 而希望與內部建立連接的請求。
    使用加密法
    阻止IP欺騙的另一種明顯的方法是在通信時要求加密傳輸和通信和驗證。 當有多種手段并存時,可能加密方法最為適用。
    使用隨機化的初始序列號
    黑客攻擊得以成功實現的一個很重要的因素就是,序列號不是隨機選擇的 或者隨機增加的,Bellovin描述了一種彌補TCP不足的方法,就是分割序列號 空是。每一個連接將有自己獨立的序列號空間。序列號將仍然按照以前的 方式增加,但是在這些序列號空間中沒有明顯的關系??梢酝ㄟ^下列公式來 說明:
    ISN=M+F(localhost, localport, remotehost,remoteport)
    M:4微秒定時器
    F:加密HASH函數
    F產生的序列號,對于外部來說是不應該能夠被計算出或者被猜測出的。 Bellovin建議F是一個結合連接標識符和特殊矢量(隨機數,基于啟動時間 的密碼)的HASH函數。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>