IP 欺騙是利用主機之間的正常信任關係,偽造他人的IP 地址達到欺騙某些主機的目的。IP 地址欺騙只適用於那些通過IP 地址實現訪問控制的系統。實施IP
欺騙攻擊就能夠有效地隱藏攻擊者的身份。IP 地址的盜用行為侵害了網路正常用戶的合法權益,並且給網路安全、網路正常運行帶來了巨大的負面影響。
原理
所謂IP 欺騙, 就是利用主機之間的正常信任關係,偽造他人的IP 地址達到欺騙某些主機的目的。IP 地址欺騙只適用於那些通過IP 地址實現訪問控制的系統。實施IP 欺騙攻擊就能夠有效地隱藏攻擊者的身份。目前IP 地址盜用的行為非常常見,IP 地址的盜用行為侵害了網路正常用戶的合法權益,並且給網路安全、網路正常運行帶來了巨大的負面影響,因此研究IP 地址盜用問題,找到有效的防範措施,是當前的一個緊迫課題。IP 地址欺騙攻擊是指攻擊者使用未經授權的IP 地址來配置網上的計算機,以達到非法使用網上資源或隱藏身份從事破壞活動的目的。
TCP/IP 協定早期是為了方便地實現網路的連線,但是其本身存在一些不安全的地方,從而使一些別有用心的人可以對TCP/IP 網路進行攻擊,IP 欺騙就是其中的一種。IP 欺騙是利用了主機之間的正常信任關係來進行的, 如Unix 主機中, 存在著一種特殊的信任關係。假設用戶在主機A 和主機B 上各有一個賬號ABC,用戶在主機A 上登錄時要輸入A 上的賬號ABC,在主機B 上登錄時要輸入B 上的賬號ABC,兩主機將ABC 當作是互不相關的賬號,這給多伺服器環境下的用戶帶來了諸多的不便,為了杜絕這個問題,可以在主機A 和主機B 間建立起兩個賬號的相互信任關係。
IP 協定是TCP/IP 協定組中面向連線、非可靠傳輸的網路協定, 它不保持任何連線狀態的信息, 它的工作就是在網路中傳送數據報,並且保證它的完整性, 如果不能收到完整的數據報, IP 會向源地址傳送一個ICMP 錯誤信息, 期待重新傳送, 但是這個ICMP報文可能會丟失。IP 不提供保障可靠性的任何機制, 每個數據包被鬆散地傳送出去, 可以這樣對IP 堆疊進行更改,在源地址和目的地址中放人任何滿足要求的IP 地址, 即提供虛假的IP 地址。
正是因為IP 協定自身的缺陷給IP 欺騙提供了機會。但TCP 協定要對IP 包進行進一步地封裝, 它是一種相對可靠的協定,TCP協定作為保障兩台通訊設備之間數據包順序傳輸協定,是面向連線的,它需要連線雙方確認同意才能進行數據交換。它的可靠性是由數據包中的多位控制字來提供的,如數據序列(
SYN)和數據確認(
ACK)。TCP 向每個數據位元組分配一個序列號,並向已經成功接收的,源地址所傳送的
數據包表示確認,在確認的同時還攜帶下一個期望獲得的數據序列號。TCP 序列編號可以看作是32 位的計算器從0 到232—1 排列,每一個TCP 連線交換的數據能順序編號,通過ACK 對所接收的數據進行確認, 並指出下一個期待接收的數據序列號。TCP 協定在雙方正式傳輸數據之前,需要用“三次握手”來建立一個穩健的連線。在實際利用TCP/IP 協定進行通信時,為了提供對TCP 模組的並行訪問,TCP 提供了特殊的用戶接收(即連線埠)。連線埠是作業系統核心用來標示不同的網路進程,是嚴格區分傳輸層入口的標示。TCP 連線埠與IP 地址一起提供網路端到端的通信。在Internet 上,任何一個連線都包含了源IP 地址、源地址連線埠、目的IP位址和目的地址連線埠。伺服器程式一般都是被綁定在標準的連線埠號上。如FTP 服務被綁定在21 號連線埠,WWW服務被綁定在80號連線埠,Telenet 服務被綁定在23 號連線埠。
欺騙過程
在攻擊某一主機前, 首先要查找被這台主機信任的計算機。計算機用戶可以通過許多命令或連線埠掃描確定下來,許多黑客就是利用連線埠掃描技術非常方便地在一個區域網路內捕捉主機間的相互信任關係,為進一步的IP 欺騙提供了機會。假設主機Z 企圖入侵主機A,而主機A 信任主機B。如果冒充主機B 對主機A 進行攻擊,簡單使用主機B 的IP 地址傳送SYN 標誌給主機A,但是當主機A 收到後,並不把SYN+ACK 傳送到攻擊的主機上,而是傳送到真正的主機B 上去,而主機B 根本沒有傳送SYN 請求,導致欺騙失敗。所以如果要冒充主機B,首先要看主機B 是否關機,否則應設法讓主機B 癱瘓,確保它不能收到任何有效的網路數據。事實上有許多方法可以達到這個目的,如SYN 洪水攻擊、
TTN、Land 等攻擊。
對目標主機A 進行攻擊,必須知道主機A 的數據包序列號。可以先與被攻擊主機的一個連線埠建立起正常連線,並記錄主機A的ISN,以及主機Z 到主機A 的大致的RTT(Round Trip Time)值。這個步驟需要重複多次以便得出RTT 的平均值。主機Z 知道了主機A 的ISN 的值和增加規律(例如每秒增加12 800,每次連線增加64 000)後,也就知道了從主機Z 到主機A 需要RTT/2 的時間。此時必須立即進行入侵,否則在這期間有其他主機與主機A 連線,ISN 將比之前得到的多64000。估計出
ISN 的大小,就開始著手進行攻擊。當然虛假的TCP 數據包進入目標主機時,如果剛才估計的序列號準確,進入的數據將放置在目標主機的
緩衝區中。但是在實際攻擊過程中往往沒有這么幸運。如果估計的序列號小於正確值,那么將被放棄。而如果估計的序列號大於正確值,並且在緩衝區的大小之內,那么該數據被認為是一個將來的數據,TCP 模組等待其他缺少的數據。如果估計序列號大於期待的數值且不在緩衝區之內,TCP 將會放棄它並返回一個期待獲得的數據序列號。
主機Z 向主機A 傳送帶有SYN 標誌的數據段請求連線,只是源IP 地址寫成主機B 的IP 地址,而且目的連線埠是TCP 專用的513 號連線埠(rlogin 服務連線埠)。主機A 向主機B 回送SYNal- ACK 數據段,但主機B 已經無法回響,主機B 的TCP 層只是簡單的丟棄來自主機A 的回送數據段。目標主機立刻對連線請求作出反應,發更新SYNd- ACK 確認包給被信任主機,因為被信任主機B 仍然處於癱瘓狀態,它當然無法收到這個包,緊接著攻擊者主機Z 向目標主機A 傳送ACK 數據包。
如果攻擊者估計正確的話,目標主機將會接收到該
ACK,連線就正式建立,可以進行數據傳輸了。但是主機A 仍然會向主機B 傳送數據,而不是向主機Z 傳送,主機Z 仍然無法接收到主機A 發往主機B 的數據包,所以主機Z 必須按照rlogin 協定的標準假冒主機B 向主機A 傳送類似#cat++>>~/.rhosts 這樣的命令,主機A 就會與主機Z 建立信任關係,開始相互的數據傳送,入侵也就完成了。完成本次攻擊後,就可以不用口令直接登錄到目標主機上。
這樣,一次網站的IP 欺騙就已經完成,在目標機上得到了一個Shell許可權,接下來就是利用系統的溢出或錯誤配置擴大許可權,當然最終目的還是要獲得伺服器的
root許可權。
防範對策
IP 欺騙之所以可以實施,是因為信任伺服器的基礎建立在網路地址的驗證上,在整個攻擊過程中最難的是進行序列號的估計,估計精度的高低是欺騙成功與否的關鍵。針對這些,可採取如下的對策
禁止基於IP 地址的信任關係
IP 欺騙的原理是冒充被信任主機的IP 地址,這種信任關係是建立在基於IP 地址的驗證上,如果禁止基於IP 地址的信任關係,使所有的用戶通過其他遠程通信手段進行遠程訪問,可徹底地防止基於IP 地址的欺騙。
安裝過濾路由器
如果計算機用戶的網路是通過
路由器接入Internet 的,那么可以利用計算機用戶的路由器來進行包過濾。確信只有計算機用戶的內部LAN 可以使用信任關係,而內部LAN 上的主機對於
LAN 以外的主機要慎重處理。計算機用戶的路由器可以幫助用戶過濾掉所有來自於外部而希望與內部建立連線的請求。通過對信息包的監控來檢查IP 欺騙攻擊將是非常有效的方法,使用netlog 或類似的包監控工具來檢查外接口上包的情況,如果發現包的兩個地址(即源地址和目的地址)都是本地域地址,就意味著有人要試圖攻擊系統。
使用加密法
阻止IP 欺騙的另一個明顯的方法是在通信時要求加密傳輸和驗證。當有多個手段並存時,加密方法最為合適。3.4.4 使用隨機化的初始序列號IP 欺騙另一個重要的因素是初始序列號不是隨機選擇或者隨機增加的,如果能夠分割序列號空間,每一個連線將有自己獨立的序列號空間,序列號仍然按照以前的方式增加,但是在這些序列號空間中沒有明顯的關係。
在網路普及的今天,
網路安全已經成為一個不容忽視的問題。對IP 欺騙, 最重要的是作好安全防範。