TCP/IP協議中的安全問題

      本文爲論文《A Look Back at “Security Problems in the TCP/IP Protocol Suite”》的讀書筆記。

      在計算機安全課程上,涉及到TCP/IP的時候,曾經強調TCP/IP種存在不少的安全問題,但是這並不意味TCP/IP的性能或安全性不好,因爲TCP/IP的誕生本身就不是立足於安全,而是主要解決網絡間的通信問題。然而,隨着TCP/IP的發展,很多方面都被一些不法分子所利用,從而體現出TCP/IP中的不少安全問題。

       在《A Look Back at “Security Problems in theTCP/IP Protocol Suite”》一文中,作者主要闡述了協議級的安全問題。可以看到TCP/IP協議存在的一些不足,一些主要是由於host主機依賴IP源地址來尋求認證,另一些則是主要利用了網絡中的某些控制協議,尤其是路由協議。在該文中,作者沒有涉及具體協議在執行過程種的不足,而是討論了通用的協議本身。

       以下是該文中涉及到的一些TCP/IP安全問題。

 

       1.TCP序列預測

       這種安全問題屬於會話劫持的會話欺騙,因爲它創建了一個僞造的TCP會話,而不是盜用現有的TCP會話。由於TCP協議的初始建立連接可以看到:通過三次握手開始建立TCP連接,首先,客戶端發送一個具有SYN標誌的數據包,然後服務器端回覆一個具有初始序列號並且設置了SYN和ACK的數據包,客戶端通過發送一個確認數據包來結束連接,該確認數據包的序列號是接收序列號加1,與此同時還設置了ACK標誌。而TCP序列預測的概念是:攻擊者通過企圖猜測TCP開始時服務器發送的初始序列號,從來建立了僞造的TCP會話。

       由於是預測TCP序列號,首先可以使得TCP序列號的隨機產生粒度不再像以前那樣粗粒度,提高攻擊者的預測難度。

       TCP序列預測攻擊的關鍵是預測不使用隨機數的序列號,現代的TCP協議都是使用僞隨機數生成器來確定序列號,這會使得序列號的預測不是那麼得容易,但是仍然存在受到攻擊的可能性。攻擊者可以通過以下來實現攻擊:

       攻擊者對受害客戶端發送拒絕服務攻擊,其中主要的目的是防止客戶端干擾自己的攻擊。

       攻擊者向目的服務器發送一個SYN數據包,將源IP地址僞造成受害客戶端的IP地址。

       在等待服務器想客戶端發送響應這段很短時間之後,攻擊者通過發送一個ACK數據包來結束TCP握手,該ACK數據包的序列號是預測的下一個序列號,並再次將源IP地址僞造成受害客戶端的IP地址。

       從而,攻擊者可以像受害客戶端一樣向服務器發送請求。

       關於TCP序列預測的攻擊,也存在一些防禦。

 

       2.路由攻擊

       濫用路由機制和路由協議是最簡單的基於協議的攻擊。由於不同的路由協議,可以衍生出不同的攻擊方法,其中很大一部分基於host主機的源IP地址認證。

       首先是IP源路由,顧名思義,該協議是使得發送者按照數據包發來的路徑,原路反向發送信息的協議。而攻擊者可以通過在中途篡改IP源地址來實現攻擊 ,從而使得返回的數據包按照預先設計的路徑來發送。

       對付這類的攻擊,最好的方法是讓那 些在局部網絡種的網關拒絕讓外部的一些包聲稱自己來源於該局域網。但是目前的技術卻做不到這一點。一個簡單一點的方法是拒絕那些事先被認證的連接。這類防禦的另一種方式是分析IP源路由,如果它是來自於自身所列出的安全網關的話就接受該路由。

       路由攻擊還有路由信息協議攻擊。路由信息協議是一種在內部網絡使用的路由協議,它可以通過不斷地交換路由信息來讓路由器動態地適應網絡的變化。這些信息包括路由器可以連接到哪些網絡,到達這些網絡的距離有多遠。最主要的是路由器對於傳來的信息是不進行的檢查的,從而存在弊端,可以被攻擊。

       對於RIP攻擊來說,要比源路由攻擊容易對付,而且採用的方式也是大致相似。其中一種防禦就是對於路由器接收到的信息有一定的懷疑精神,也就是說對於接收到的數據包進行一定的驗證,如果不存在的欺詐行爲,屬於正常的路由傳播,那就接收,否則就拒絕。

       接着是外部網關協議,這是一個自治系統之間的傳輸路由信息的所有協議,它相對於內部路由協議。外部路由協議發起對等路由器之間的探測與鑑別,兩個對等路由器建立起一個TCP連接並執行報文交換。

       在該文中,作者還講述了Internet控制報文協議(ICMP)。ICMP主要是用於IP主機和路由器之間傳輸控制信息。其中控制信息是指網絡是否暢通,主機是否可達訪問,路由是否可用等一些控制信息。可以看到這些信息並不傳輸用戶的數據,但是卻爲用戶的數據傳輸提供了必不可少的保證。

       首先可以預想到的是,ICMP可以用來進行簡單的DOS攻擊,比如Destination unreachable和 Time to Live Exceeded。最普遍的是ping洪水攻擊,ping工具向主機發送ICMP回顯請求,反過來,它又使用ICMP回顯應答作爲響應。爲了實施攻擊,功能強大的計算機向單個受害服務器發出大量回顯請求。如果攻擊者能建立的ping請求比受害者服務器能處理的請求多,且受害服務器有足夠的網絡帶寬來接受所有這些請求的話,則受害服務器被這些網絡流量淹沒,並逐漸開始丟棄合法的連接。

       針對ICMP的攻擊,也是可以有方法進行一定程度的防禦。首先可以看到這類的攻擊主要是基於網絡帶寬的攻擊,並且host主機也不會對ICMP數據包進行預處理。於是,爲了限制網絡帶寬,可以在路由器上對ICMP數據包進行帶寬限制,將ICMP佔用的帶寬控制在一定的範圍內,第二種方法則是爲了對ICMP數據包進行一定程度的處理,比如拒絕處理全部的ICMP數據包。

      

       3.潛在危險的領域

       在該部分,作者使用了一個短語“Here be dragons”來表示了在某些領域的危險或者潛在的安全問題。作者的意思是很多協議在本質上沒有缺陷,因此沒有受到攻擊被濫用。作者舉了幾個例子來說明這一點:finger服務,電子郵件,域名系統,FTP等。

       首先以電子郵件爲例。電子郵件在互聯網上可能是最應用廣泛最有價值的服務了。但是之前由於郵件服務器不使用認證信息的緣故,它很容易受到攻擊。隨後,在電子郵件中就逐漸發展了加密和身份驗證。否則攻擊者可以很簡單的使用IP嗅探就可以截獲電子郵件的信息。提高機密性的途徑之一就是在傳輸層或者應用層對電子郵件進行加密。

       域名系統(DNS)是一個基本的應用層協議,它是現在的網絡中必不可少的一個功能。其主要的功能是提高一個分佈式的數據庫來映射IP地址和host名字。該協議之中會存在一些攻擊,比如DOS攻擊以及密碼收集等。

       通過DNS來解析域名,用戶會相信一個事實:DNS請求都會被正確解析。但是攻擊者就可以通過攻擊DNS,把域名嫁接到不存在或者惡意的網站去。攻擊者可以監聽所有希望被翻譯爲IP地址的請求,然後提供一個已經被推翻的機器,這樣可以使得攔截者監視這臺機器上的流量,並且截獲密碼等。這就是所謂的網絡”phishing” 。

       關於DNS的攻擊,其實還包括DNS緩存中毒,雖然在該文中沒有涉及,但是該類型的攻擊同樣威脅巨大。其主要方式是使得DNS服務器緩存虛假的DNS記錄。

       該文還講述了FTP的安全問題。作者認爲FTP本身並不存在缺陷,但是在FTP執行的時候卻需要使用者更多的注意。FTP使用登錄和密碼組合來實現認證,但是這只是客戶段發給服務器端的,但是這不能保證服務器端同樣給客戶端一定的驗證信息。

 

       4.平凡的攻擊

       作者還介紹了一些在互聯網種最普遍的攻擊。

       局域網的存在很大程度上緩解了IP資源,但是這同樣會存在不少的問題,比如局域網的脆弱性。如果一個局域網中採用了ARP協議,那麼局域網內的攻擊也會很容易實現。由於ARP協議是用來實現網絡層和數據鏈路層的解析,則一旦有攻擊者使得這種解析映射變成他所希望的那樣,那麼正常的通信會被篡改,從而實現攻擊,也就是所謂的ARP欺騙。其實現過程主要的依據就是ARP協議缺乏對信息的驗證方案,網絡種任意一臺計算機都可以聲稱自己是具有請求的IP地址。一旦接收ARP響應的計算機更新了ARP列表,那麼LAN中的計算機就不能正常通信。

       由於缺乏身份驗證,但是一旦採用身份驗證的話,ARP欺騙將變的不是那麼容易。其中可以採用受信任的用戶組。

       另外一種解決方法就是使用靜態ARP表,這樣也就排除了攻擊者的IP響應了,而是由管理員來統一分配。

 

       從以上的攻擊來看,主要的防禦可以簡單的概括爲以下幾類:驗證,加密和信任系統。

       從該文的分析可知,有幾點是很明顯的。第一,依靠IP源地址來通信驗證是既不可靠的。第二,序列號的設定也是不安全的。一定要讓序列號是不容易被他人獲知的,即使是本機的使用者。然後,在互聯網中,一些控制機制看似可以保證通信的完整性,但是並不能保證通信的安全性,所以在使用的時候必須給以足夠的保障,這樣才能不被攻擊者利用。

發佈了47 篇原創文章 · 獲贊 10 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章