国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

IP包頭TTL字段在網絡分析中的應用
2009-08-25   網絡

TTL介紹

TTLtime to live)生存時間字段設置了IP數據報能夠經過的最大的路由器數,TTL字段是由發送端初始設置的,每個處理該數據報的路由器都需要將其TTL值減1,當路由器收到一個TTL值為0的數據報時,路由器會將其丟棄。

TTL字段的目的是防止數據報在選路時無休止地在網絡中流動。例如,當路由器癱瘓或者兩個路由器之間的連接丟失時,可能會造成路由環路,而路由器可能根據其路由表將該數據報一直循環轉發下去。這種情況下,就需要一種機制來給這些循環傳遞的數據報上加上一個生存上限,TTL字段正是實現這種機制的手段。

TTLIP數據報頭中的字段,其在IP頭部的位置如下圖所示:

 


1  TTL字段在IP報頭的位置
 

通過上圖,我們可以發現,TTL字段占了8bit,那么一般而言,最大的TTL值就是2^8=255啦。

 

應用分析案例 

介紹完TTL字段的作用,接下來我們分別來看一下在實際的網絡分析過程中, TTL字段能夠給我們提供哪些有用的信息和幫助。

2.1 識別操作系統

根據操作系統和傳輸協議的不同,其TTL字段的值也不同,那么我們可以根據IP數據報的TTL字段來大體識別相應的操作系統類型。下圖為各種操作系統在傳輸TCPUDP時默認使用的TTL值:

2  不同操作系統默認情況下的TTL

 

絕大多數的用戶都不會主動的修改其操作系統默認的TTL值,因此黑客會利用這個特性來簡單判斷目的主機的操作系統,從而實施相應的攻擊計劃,而在我們網絡維護和分析的過程中,可以通過對異常數據包的TTL值的分析來簡單判斷異常主機的操作系統,從而縮小我們的故障定位范圍,提高故障解決的效率。

2.2 發現網絡環路

在計算機網絡中,環路一般分為兩種,一種為二層物理環路,另一種為三層路由環路。

二層物理環路一般是由于二層交換機出現了物理連接上的環路并且二層交換機上未啟用STP生成樹協議導致的。二層物理環路一旦產生,其導致的廣播風暴會給網絡帶來致命的威脅。由于數據包在二層環路間轉發時,其TTL值不會遞減,因此,我們可以利用這個特點,通過分析數據包的TTL值字段來定位網絡中是否存在二層物理環路。如果同一數據包(根據IP報頭中的IP標識字段來定位)多次出現而且其TTL值一直保持一致,那么就說明網絡中出現了二層的物理環路了。    

三層路由環路一般是由于路由策略配置不當導致的。我們前面在介紹TTL時,已經說明TTL主要是為了防止路由環路的情況出現而設置的,當網絡出現路由環路時,IP數據報會在路由環路間不斷的循環轉發最終使其TTL值遞減為0,我們可以利用路由環路的這個特性和TTL值來定位路由環路,如下圖所示:

路由環路情況下IP數據報的TTL

 

當我們在網絡分析過程中發現TTL=1IP數據包(多播報文除外)時,我們就需要關注是否存在網絡路由環路了,我們一般會結合IP數據報的標識字段,來快速的定位出網絡中存在路由環路,如果同一數據包反復出現,而且其TTL值呈遞減的趨勢并最終變為1,那么就說明當前的網絡中存在三層的路由環路了。

2.3 檢測是否經過了路由設備

IP數據報經過路由設備時,該路由設備在轉發時一般會將其TTL值減1,因此,我們可以根據路由設備后所抓取數據包的TTL值來判斷該數據包是否已經經過路由設備。這個在實際網絡分析過程中似乎用處不大,但是在一些特殊的網絡管理情況下,我們需要知道某些數據包是否經過了路由設備,例如,在一個對網絡訪問限制較為嚴格的網絡環境中,部分重要的服務器可能只有某幾個網段的機器可以訪問,其他網段的IP地址是沒有訪問權限的,那么,就可能出現某些別有用心的人利用具有訪問權限的IP地址做NAT地址轉換間接訪問受限服務器資源的情況,具體如下圖所示:


通過NAT非法訪問服務器端示意圖
 

網絡管理者當然不期望這種情況發生,因為它很可能會帶來各種致命的網絡安全問題。在這種情況下,訪問權限的主機訪問受限訪問服務器時,經過有訪問權限主機的NAT和轉發,因此,其IP數據報的TTL值比系統初始值小1,那么,我們就可以利用這個特性,在網絡中部署網絡分析系統,對網絡中的數據包進行捕獲,通過查看數據包的TTL值來判斷網絡中是否存在NAT設備,從而定位出利用路由設備進行越權訪問的主機。

這種方法也是電信所使用的ADSL多用戶檢測技術之一。

2.4 檢測數據包的不對稱路由

我們知道IP是不可靠的的協議,它不能保證數據包在傳輸的過程中會被丟失、失序,而IP選路功能可以讓同一連接的數據包通過不同的路徑進行轉發,這種特性提高了IP數據包的轉發效率,但有時也會帶來不必要的麻煩,例如,在使用基于狀態檢測的防火墻環境中,如果在TCP連接建立階段的三次握手報文經過不同的路徑轉發,那么,很可能導致TCP應用異常(由于防火墻沒有收到完整的TCP三次握手的數據包,因此無法正常建立TCP狀態表),如下圖所示:


不對稱路由示意圖
 

在這種情況下,我們一般可以通過在服務器端與客戶端分別traceroute對端地址來判斷數據包來回路徑的是否一致,我們也可以通過在客戶端與服務器端同時抓包,分析數據包的TTL值來確定客戶端與服務器端在轉發數據包時經過的路由跳數是否一致,從而判斷數據包來回的路由路徑是否一致。

2.5 發現TCP會話劫持

會話劫持(Session Hijack)是指攻擊者使用一些技術手段將攻擊主機偽裝成客戶端或服務器的應用程序,在客戶端與服務器之間進行數據傳輸,從而導致服務器或客戶端誤認為攻擊主機是自己想要進行數據交互的合法主機。

黑客一般會利用TCP會話劫持來實現對數據包的監聽,從而從中獲取很多機密的敏感信息,包括用戶名和口令等;運營商也經常使用TCP會話劫持技術來推送廣告,或由于一些特殊的原因而干擾客戶端的正常應用。

會話劫持利用了TCP/IP工作原理來設計攻擊根據TCP/IP中的規定,使用TCP協議進行通訊需要提供兩段序列號,TCP協議使用這兩段序列號確保連接同步以及數據傳輸的可靠性,系統的TCP/IP協議棧依據時間或線性的產生這些值。在通訊過程中,雙方的序列號是相互依賴的,這也就是為什么稱TCP協議是可靠的傳輸協議(具體可參見RFC 793)。如果攻擊者在這個時候進行會話劫持,結果肯定是失敗,因為會話雙方不認識攻擊者,攻擊者不能提供合法的序列號;所以,會話劫持的關鍵是預測正確的序列號,攻擊者可以采取嗅探技術獲得這些信息。在討論TCP會話攻擊之前,我們先來看一下TCP序列號的相關知識,在每一個數據包中,都有兩段序列號,它們分別為:

SEQ:當前數據包中的第一個字節的序號
ACK:期望收到對方數據包中第一個字節的序號

假設雙方現在需要進行一次連接,服務器的相關TCP段中的字段為:

S_SEQ:將要發送的下一個字節的序號
S_ACK:將要接收的下一個字節的序號
S_WIND:接收窗口
客戶端相關TCP段中的字段為:
C_SEQ:將要發送的下一個字節的序號
C_ACK:將要接收的下一個字節的序號
C_WIND:接收窗口
它們之間必須符合下面的邏輯關系,否則該數據包會被丟棄,并且返回一個ACK包(包含期望的序列號)。
C_ACK <= C_SEQ <= C_ACK + C_WIND
S_ACK <= S_SEQ <= S_ACK + S_WIND

  接下來我們一起來看一下TCP會話劫持過程,假設現在主機A和主機B進行一次TCP會話,C為攻擊者,劫持過程如下:

AB發送一個數據包
SEQ (hex): X ACK (hex): Y
FLAGS: -AP--- Window: ZZZZ,包大小為:60

B回應A一個數據包
SEQ (hex): Y ACK (hex): X+60
FLAGS: -AP--- Window: ZZZZ,包大小為:50

AB回應一個數據包
SEQ (hex): X+60 ACK (hex): Y+50
FLAGS: -AP--- Window: ZZZZ,包大小為:40

BA回應一個數據包
SEQ (hex): Y+50 ACK (hex): X+100
FLAGS: -AP--- Window: ZZZZ,包大小為:30

攻擊者C冒充主機A給主機B發送一個數據包
SEQ (hex): X+100 ACK (hex): Y+80
FLAGS: -AP--- Window: ZZZZ,包大小為:20

BA回應一個數據包
SEQ (hex): Y+80 ACK (hex): X+120 
FLAGS: -AP--- Window: ZZZZ,包大小為:10

現在,主機B執行了攻擊者C冒充主機A發送過來的命令,并且返回給主機A一個數據包;但是,主機A并不能識別主機B發送過來的數據包,所以主機A會以期望的序列號返回給主機B一個數據包,隨即形成ACK風暴。如果成功的解決了ACK風暴,就可以成功進行會話劫持了。這里涉及到攻擊主機C所處的位置了,攻擊主機C必定處于主機A與主機B之間,那么主機A的數據包到主機B的數據包路徑基本一致,也就是說,主機A與主機B間的數據包的TTL值基本上固定的,那么當攻擊主機C處于主機A與主機B之間實施TCP會話劫持時,其劫持發向主機A與主機B的數據包的TTL值肯定與原本主機A與主機B間的通訊數據包的TTL值不一樣,我們就可以利用這一特性,通過抓取并分析這些數據包,發現TCP會話攻擊行為。

2.6 發現局域網內中間人攻擊

局域網內的中間人攻擊一般首先采用arp欺騙的手段,讓局域網內被攻擊主機的流量全部經過實施攻擊的主機,再由實施攻擊的主機將相關數據包轉發到網關設備上(需攻擊主機開啟路由轉發服務),從而使被攻擊主機的數據流都經過實施攻擊的主機,這樣,實施攻擊的主機就可以抓取相應的數據包,收集相應的敏感信息了(用戶名和密碼)。一般的中間人攻擊(特別是有意的攻擊)其在流量不大的情況下,很難被用戶發現,因為,對用戶的網絡訪問影響很小,用戶基本上感覺不到“中間人”的存在。

實施這種攻擊的工具比較多,(最著名、使用最簡單的windows下實施局域網中間人攻擊的工具就是cain了,當然,我們也可以直接使用sniffer類工具構造欺騙包實施欺騙),有時候在不具備抓包環境的交換網絡中,我們也可以通過中間人攻擊的方式抓取全網的數據包。具體局域網中間人攻擊的示意圖如下所示:


6  局域網中間人攻擊示意圖
 

我們來簡單看一下局域網中間人攻擊的行為特征:

首先需要進行arp欺騙(具有arp欺騙的一些特征);

其次需要經過攻擊主機轉發數據包;

攻擊主機在轉發數據包后需要發送icmp重定向數據包給被攻擊主機。

我們通過上面三個網絡行為特征,可以很容易的定位一個局域網中間人攻擊行為,但是,我們如果只看到arp欺騙行為的話,并沒有辦法定位到底是不是一個局域網中間人攻擊行為,而icmp重定向包在實施有意的中間人攻擊時,“黑客”一般會使用本機防火墻過濾icmp重定向包,在網絡中就不會看到icmp重定向包了,在這種情況下,我們可以發現,本應該發送給網關的數據包經過了攻擊主機的轉發,因此,其TTL值比原先正常的數據包的TTL1,我們可以通過抓包分析數據包的TTL變化來定位局域網中是否存在類似的攻擊;另一方面,考慮到網關設備操作系統默認的TTL值與攻擊主機操作系統的TTL值一般都是有差別的,那么,我們也可以使用以下最簡單的方法來定位:利用ping命令ping網關地址,根據ping返回的TTL值來判斷是否是當前的正確的網關。 

2.7 發現IDS等旁路部署的安全設備的阻斷行為

現在在網絡中存在大量的安全設備,有些安全設備是旁路部署的,例如IDS、網絡行為管理系統等,這些安全設備通過交換機的端口鏡像(或其他方式)收集網絡中的數據包,再通過對數據包的重組和分析,完成對網絡主機相關網絡行為的檢測和審計,同時,可以根據管理員設置的安全策略,管理控制網絡相關主機的網絡訪問行為。一般針對基于TCP的應用,其主要通過向客戶端和服務器端發送TCP RESET包來阻斷非授權TCP應用,針對基于UDP應用則發送ICMP端口不可達報文來阻斷非授權的UDP應用。

在這種情況下,由于RSTICMP端口不可達數據報文不是真正的服務器端發送的,而是安全設備構造的虛假欺騙報文,我們可以通過抓取數據包,查看相應數據包的TTL值來確認這種情況的存在,其分析的原理跟分析TCP會話劫持的原理是一樣的,在此就不作重復說明了。

補充說明與總結

 

3.1 補充說明

1、有些NAT設備在轉發數據包時,不會將TTL值減1,這個跟具體設備的實現有關。

2、TTL值是可以人工修改的。在windows環境下可以通過修改注冊表來實現對系統TTL值的設置,具體方法如下:

windows注冊表中,按照下面的路徑找到defaultTTL,雙擊其修改即可。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters


7  windows系統修改默認TTL值圖示
 

3、很多組播應用為將多播數據限制在一個局域網內會將其TTL值設為1;還有些特殊的局域網應用考慮到信息的安全性,不希望將其跨路由傳輸到局域網以外的網絡,其可能會將其TTL設置為1;

4、路由設備在收到TTL01的數據包時,路由是不會轉發這個數據包的,主機如果收到TTL01的數據包則提交給上層應用程序處理。

3.2 總結

TTL字段在實際的分析過程中有著非常多的應用,我上面已經列舉了很多,但其實我們大家只要深入理解了TTL字段的本質作用,就可以在更多的實際分析過程中靈活地運用其來定位故障或發現異常。

熱詞搜索:

上一篇:神州數碼內網安全綜合解決方案
下一篇:啟明星辰等級保護整體解決方案

分享到: 收藏
主站蜘蛛池模板: 巴林左旗| 房山区| 屏东县| 肃南| 三台县| 永济市| 灵寿县| 连南| 沾益县| 资兴市| 济宁市| 桐庐县| 平舆县| 宜都市| 宁南县| 信阳市| 松桃| 溧水县| 昌宁县| 岗巴县| 民权县| 静安区| 泰顺县| 夏邑县| 涞水县| 天镇县| 建平县| 镇平县| 眉山市| 潢川县| 邵武市| 永善县| 高阳县| 新密市| 武城县| 景宁| 交城县| 都江堰市| 徐汇区| 文昌市| 左贡县|