Mylearningpath(網路安全高階應用)TCP/IP高階技術

科技小能手發表於2017-11-14

本篇文章的內容主要討論關於TCP/IP中資料包一些理論,包括針對於IP資料包的格式,ICMP資料包等內容,包括使用hping工具模擬一些常見的攻擊,並使用sniffer pro檢視正常報文和攻擊報文的差別。

IP資料包

      IP資料包由首部,資料兩部分組成。

image

      這裡看的是IP資料包的首部,可以看到以下資訊。每一行佔32個位元,即4個位元組,目的IP地址往上的資訊都是固定內容,則固定需要20個位元組,選項為非固定資訊,可變長度,選項最多可長達40個位元組。

版本:表示IP版本號,目前版本為IPv4。此位佔4個位元。 

首部長度:表示IP資料包的首部長度,佔4個位元位。一般IP資料包頭長度為20位元組。(首部長度佔4個位元,則可以有15個位元組,表示在IP資料包頭中有15行,每行為32個位元,則4個位元組,所以IP資料包首部最多長達60個位元組。) 

區分服務:表示資料包的優先順序和服務型別,佔8個位元,用於實現QoS的要求。 

總長度:表示IP資料包的長度,包括首部和資料,佔16位元,最長為65535位元組。 

標識:IP資料包的標識(在IP分片中會詳細介紹),佔16位元。 

標誌:標誌欄位,佔3位元。 

分片偏移:在IP分片中的偏移量,佔13位元。 

TTL:生存時間,當資料包經過一個路由器,TTL值減去1,當為0時,丟棄資料包。 

協議號:在此IP資料包中封裝的上層協議,如TCP,UDP等。 

效驗和:佔16位元位,用於檢查資料是否被篡改。

IP分片的原理

      如同IP資料包一樣,在資料鏈路層也會有相應的幀格式,並且資料楨中所包含的資料,也就是上層IP資料包的大小也是有限制的,最大值被稱為MTU(最大傳輸單元),乙太網的MTU值為1500位元組,PPP鏈路的MTU值為296位元組。但是我們通訊所產生的資料流量並不一定小於MTU,在乙太網中,當資料大於1500時,就會出現IP分片,將資料分成幾部分傳送。在IP分片的時候,就需要用到上述IP資料包首部中的第二行中的資訊了。標識,同時傳送多個資料的時候會產生不同的IP分片,標識就是用來確定此資料包中包含的資料是哪個資料中的分片。標誌用來確認這是否是此資料中多個IP分片中的最後一個,而分片偏移就是用來接收方進行分片重組的,相當於序號,通過序號來進行分片重組。

下面通過sniffer pro 抓包工具來證實IP分片。

實驗拓撲:PC1和PC2分別連線路由器的兩端。PC1使用windows作業系統,裝上sniffer軟體進行抓包,而PC2使用Linux系統進行IP分片的證實。 

PC1 :  IP  200.1.1.10  MASK  255.255.255.0  閘道器: 200.1.1.1 

PC2 :  IP  192.168.1.10  MASK  255.255.255.0  閘道器: 192.168.1.1 

路由器的兩個介面分別是PC的兩個閘道器,實現通訊。

實驗步驟:

setup  : 安裝sniffer pro軟體。 

setup  : 網路相關配置,達成通訊。 

setup  : 開始sniffer工具,並且設定自己為監控的物件。

image

 

選擇監控的網路卡之後,選擇規定過濾 define filter,在其中設定自己的IP地址為監控物件。

image

確定之後,點選左上角開始按鈕開始監控。

我們在linux主機(PC2)使用PING命令進行分片證實。

首先抓到第一個包

image

從第一個包中可以得到以上資訊,通過第二個資料包對比,就可以看出差異。

image

      通過以上實驗,說明確實會產生IP分片。在以前的作業系統中,當出現一些利用分片偏移錯誤的資料包傳送給系統,會直接導致系統癱瘓,如今已經有了很好的防範不會產生如此後果。我們在linux主機上安裝Hping工具,就可以模擬這種攻擊。

安裝過程就掠過了。

在Linux系統下鍵入以下指令碼 

#!/bin/bash 

for ((i=1;i<50;i++)) 

do 

hping 200.1.1.10 –1 –x –d 1000 –N $i –c 1 

hping 200.1.1.10 –1 –d 200 –g 400 –N $i –c 1 

done

      這樣就模擬了利用分片偏移錯誤而形成的淚滴攻擊。其中-1表示hping中的icmp模式,-x表示more fragments 標誌,表示後續還有資料,未發完。-d為資料包大小,-N為標識,-c為數量。正常資料包第二個包的分片偏移應該為980,而第二次傳送的資料包我們用-g設定分片偏移為400 則產生了淚滴攻擊的效果。

ICMP報文

      ICMP報文就封裝在IP資料包中,分為差錯報告和查詢報文。

查詢報文:type 8  type 0都屬於查詢報文。當我們ping一臺主機,ping通會產生兩種報文,回送請求(8)和回送應答(0)就是這兩種型別了。 

差錯報告報文:差錯報告報文總共分為 type3 終點不可達  type 4 源點抑制 type 5 改變路由 type 11超時 type 12引數問題 

type 3  : 終點不可達,終點不可達的資料包由中間路由發出,當此路由器不能將資料傳送給目的主機或者找不到目的主機時,將資料包丟棄,再給源傳送type3 的報文。終點不可達分為16種,常見的有1 主機不可達,3埠不可達。顯示為 type 3 code =1。 


還有一種常見的為type 11超時報文,他的code值為0或者1,0的情況為:每個資料包都有ttl值,當一個路由器接到一個ttl值為0的資料包,則直接丟棄,併傳送type 11 code =0的報文給源,而1為目的主機使用,當目的主機超過一定時限還沒有收到全部的資料分片時,會給源傳送 type = 11 code =1的報文。

本文轉自 鄭偉  51CTO部落格,原文連結:http://blog.51cto.com/zhengweiit/406278


相關文章