[摘要] 在網絡管理中,捕獲網絡中的數據包,并對其進行分析是查找和解決網絡故障的一個主要的辦法。在這個辦法中,對數據包的TTL字段進行判斷和分析會提高網絡管理人員判斷和解決問題的速度。本文對幾種典型的網絡問題,通過TTL字段進行分析,得到解決問題的辦法。網絡管理人員在實際工作中靈活運用數據包的TTL字段進行網絡故障分析,可以有效提高網絡管理的水平。
[關鍵詞] 網絡; 數據包; TTL; 分析
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2011 . 14. 044
[中圖分類號]TP393.07 [文獻標識碼]A [文章編號]1673 - 0194(2011)14- 0075- 02
1前言
網絡中的數據傳輸都是由數據包來承載的,而每個數據包都有一個TTL值。通過分析TTL值,可以實現對網絡拓撲變化的管理,發現網絡病毒或木馬,以及查找網絡攻擊源等,從而提高網絡的質量,降低網管的工作強度,實現對網絡的精細管理。
2TTL字段介紹
TTL(time to live)生存時間字段設置了IP數據報能夠經過的最大的路由器數,TTL 字段是由發送端初始設置的,每個處理該數據報的路由器都需要將其TTL 值減1,當路由器收到一個TTL值為0的數據報時,路由器會將其丟棄。TTL字段的目的是防止數據報在選路時無休止地在網絡中流動。例如,當路由器癱瘓或者兩個路由器之間的連接丟失時,可能會造成路由環路,而路由器可能根據其路由表將該數據報一直循環轉發下去。這種情況下,就需要一種機制來給這些循環傳遞的數據報上加上一個生存上限,TTL字段正是實現這種機制的手段。TTL字段在IP頭部的位置如圖1所示。
從圖1可知,TTL字段占了8位(bit),那么最大的TTL值為255。
3TTL字段在網絡管理中的運用
3.1通過TTL字段識別操作系統
操作系統和傳輸協議不同,其TTL字段的值也不同,可以根據IP數據報的TTL字段來大體識別相應的操作系統。表1為各種操作系統在傳輸TCP和UDP時默認使用的TTL 值。
在網絡維護和分析的過程中,網絡管理員可以利用這個特性,通過異常數據包的TTL值來簡單判斷異常主機的操作系統,從而縮小故障定位范圍,提高故障解決的效率。
3.2通過TTL字段發現路由環路
前面在介紹TTL字段時,已經說明TTL字段的功能主要是為了防止路由環路情況的出現。當網絡出現路由環路時,IP數據報會在路由環路間不斷循環轉發最終使其TTL值遞減為0,網絡管理人員可以利用路由環路的這個特性和TTL字段的值來定位路由環路。
在網絡分析過程中,如果發現TTL=1的IP數據包(多播報文除外)時,就需要關注是否存在網絡路由環路。網絡管理人員可以結合IP數據報的標識字段,快速定位網絡中存在的路由環路。
3.3通過TTL字段檢測是否經過了路由設備
當IP數據報經過路由設備時,該路由設備在轉發時一般會將其TTL字段的值減1。因此可以根據這一特點,分析數據包的TTL字段的值來判斷該數據包是否已經經過路由設備。這在實際網絡分析過程中似乎用處不大,但是在一些特殊的網絡管理情況下,網絡管理人員需要知道某些數據包是否經過了路由設備。例如,在一個對網絡訪問限制較為嚴格的網絡環境中,網絡管理人員不希望有人利用訪問權限較大的合法IP地址做NAT地址轉換,間接訪問受限的網絡資源。因為這樣的事情一旦發生,很可能會帶來嚴重的網絡安全問題。在這種情況下,就可以在網絡中部署相關網絡監控軟件,對網絡中的數據包進行捕獲,通過查看數據包的TTL字段的值來判斷網絡中是否存在NAT設備,從而定位出利用路由設備進行越權訪問的主機。這種方法也是電信運營商所使用的ADSL多用戶檢測技術之一。
3.4通過TTL字段檢測數據包的不對稱路由
IP協議是不可靠的協議,它不能保證數據包在傳輸的過程中不會丟失、失序,而IP協議的選路功能可以讓同一連接的數據包通過不同的路徑進行轉發。這種特性提高了IP數據包的轉發效率,但有時也會帶來不必要的麻煩。例如,在使用基于狀態檢測的防火墻環境中,如果在TCP連接建立階段的三次握手報文經過不同的路徑轉發,那么很可能導致TCP應用異常(由于防火墻沒有收到完整的TCP三次握手的數據包,因此無法正常建立TCP狀態表),如圖2所示。
在這種情況下,可以通過在客戶端與服務器端同時抓包,分析數據包的TTL字段的值來確定客戶端與服務器端在轉發數據包時經過的路由跳數是否一致,從而判斷數據包來回的路由路徑是否一致。
3.5通過TTL字段發現局域網內中間人攻擊
局域網內的中間人攻擊一般首先采用ARP欺騙的手段,讓局域網內被攻擊主機的流量全部經過實施攻擊的主機,再由實施攻擊的主機將相關數據包轉發到網關設備上(實施攻擊的主機開啟路由轉發策略),從而使被攻擊主機的數據流都經過實施攻擊的主機。這樣,實施攻擊的主機就可以抓取相應的數據包,收集相應的敏感信息了(用戶名和密碼)。一般的中間人攻擊(特別是有意的攻擊)其在流量不大的情況下很難被用戶發現。因為對用戶的網絡訪問影響很小,用戶基本上感覺不到“中間人”的存在。實施這種攻擊的工具比較多(如Windows系統下最著名攻擊軟件Cain)。有時候在不具備抓包環境的交換網絡中,網絡管理人員可以通過中間人攻擊的方式抓取全網的數據包。局域網中間人攻擊示意圖如圖3所示。
局域網中間人攻擊的行為特征:首先需要進行ARP欺騙(具有ARP欺騙的一切特征);其次需要經過攻擊主機轉發數據包;攻擊主機在轉發數據包后需要發送ICMP重定向數據包給被攻擊主機。
通過上面3個網絡行為特征,可以很容易地定位一個局域網中間人攻擊行為。但是,如果只看ARP欺騙行為的話,并沒有辦法定位到底是不是一個局域網中間人攻擊行為,而ICMP重定向包在實施有意的中間人攻擊時,“中間人”一般會使用本機防火墻過濾ICMP重定向包,在網絡中就不會看到ICMP重定向數據包了。在這種情況下,網絡管理人員可以通過數據包的TTL字段的值來判斷是否發生中間人攻擊。最簡單的方法就是PING網關地址,根據PING命令返回的TTL值來判斷是否是當前的正確的網關。
3.6發現IDS 等旁路部署的安全設備的阻斷行為
目前在網絡中存在大量的安全設備,有些安全設備是旁路部署的,如IDS、網絡行為管理系統等。這些安全設備通過交換機的端口鏡像(或其他方式)收集網絡中的數據包,再通過對數據包的重組和分析,完成對網絡主機相關網絡行為的檢測和審計。同時也可以根據網絡管理員設置的安全策略,管理控制相關主機的網絡訪問行為。一般針對基于TCP的應用,其主要通過向客戶端和服務器端發送TCP RESET數據包來阻斷非授權TCP應用,針對基于UDP應用則發送ICMP端口不可達報文來阻斷非授權的UDP應用。在這種情況下,可以通過抓取數據包,查看相應數據包的TTL字段的值來確認這種情況的存在。
4特殊情況說明
(1) 有些NAT設備在轉發數據包時,不會將TTL字段的值減1,這與具體設備的實現有關。
(2) TTL 值是可以人工修改的。在Windows 環境下可以通過修改注冊表來實現對系統TTL 值的設置,具體方法如下:在Windows注冊表中,按照下面的路徑找到defaultTTL(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters),雙擊其修改即可。
(3) 很多組播應用為將多播數據限制在一個局域網內會將其TTL值設為1。還有些特殊的局域網應用考慮到信息的安全性,不希望將其跨路由傳輸到局域網以外的網絡,可能會將其TTL設置為1。
(4) 路由設備在收到TTL為0或1的數據包時,路由是不會轉發這個數據包的,主機如果收到TTL為0或1的數據包則提交給上層應用程序處理。
5結語
數據包的TTL字段在實際的網絡分析中有著非常多的應用。網絡管理人員只要深入理解了TTL字段的本質,靈活運用,就可以在網絡維護工作中運用其來定位故障或發現異常,給網絡管理帶來極大的方便。
主要參考文獻
[1] [美]W·R·史蒂文斯(Richard Stevens). TCP/IP詳解[M]. 范建華,譯. 北京:機械工業出版社,2000:200-210.
[2] Peng T,Leckie C,Kotagiri R. Adjusted Probabilistic Packet Making for IP Traceback[C] // Proceeding of the 2nd IFIP Networking Conference(Networking 2002),Pisa,Italy,2002:697.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文