資料包分析基礎
資料包分析
- 資料包嗅探或協定分析:指捕獲和解析網絡上線上傳輸資料的過程,為了能更好的了解網絡上正在發生的事情。
目的
軟體:Tcpdump、Omnipeek、Wireshark
監聽網絡線路
集線器嗅探方式
流經集線器的所有網絡資料包都會被發送到每一個集線器連接配接的端口。
交換機嗅探方式
端口鏡像、集線器輸出、使用網絡分流器、ARP欺騙方式等四種方式
- 端口鏡像
設定連接配接的交換機的端口鏡像功能,将交換機其他一個或多個端口的經過的資料包複制一份到嗅探器連接配接的端口上。
- 集線器輸出
目标裝置和交換機間插接一個集線器,嗅探器也接在集線器上;在交換機不支援端口鏡像的時候可以使用這個方法,這個類似于,将兩者之間的資料包“共享”給集線器上其他的端口。
- 網絡分流器
有聚合的和非聚合的兩種類型,都是安置在兩個裝置間來嗅探所有流經的網絡通信,聚合的是三個接口,非聚合的是四個端口。
- ARP欺騙
通過發送包含虛假MAC位址的ARP欺騙資訊,劫持其他計算機流量的過程;它是在交換式的網絡中進行進階技術。
使用Cain&Abel 軟體進行ARP進行欺騙

當ARP劫持開始後,即可通過Wireshark軟體進行抓包分析。
路由器嗅探方式
在處理涉及多個網段與路由器問題的同時,需要将嗅探器移動到不同位置上;由此才可以獲得一個完整的網絡拓撲。
Wireshark 軟體使用
查找:Ctrl+F
Ctrl+F:查找(過濾)
搜尋類型 | 例子 |
---|---|
Display filter (表達式篩選) | Not ip ip.addr=xxx.xxx.xxx.xxx Arp |
Hex Value (十六進制值篩選) | 00:ff Ff:ff 00:a1:b2:f0 |
String (字元串篩選) | Workstationl UserB Domain |
标記:Ctrl+M 或 右擊菜單
标記了之後,資料包的顯示會加深。
時間顯示格式
相對時間:Ctrl+T
捕獲選項:Ctrl+K
名字解析:
- 類型:
- MAC位址解析:MAC位址轉為IP位址
- 網絡層名字解析:IP轉為DNS名稱(網址)
- 傳輸層名字解析:将端口轉為協定
- 使用外部網絡名稱解析器
- 弊端:
解析可能失敗;打開檔案都要重新解析一遍;解析DNS名字會産生額外流量;解析過程占用系統資源。
協定解析:
過濾器
- 過濾器BPF文法:
BPF限定詞 | 說明 | 例子 |
---|---|---|
Type | 名字或數字代表的意義 | Host,net,port |
Dir | 指明資料來源和目的 | src,dst |
Proto | 限定使用的協定 | Ether,ip,tcp,udp,http,ftp |
邏輯運算符: 與 && 或 || 非 !
表達式 | 說明 |
---|---|
src 192.168.1.11 && port 80 | 捕獲源位址是192.168.1.11 和源端口或目标端口是80的流量 |
Host xxx.xxx.xxx.xxx | 捕獲某個IP位址的計算機流量 |
Host testserver2 | 捕獲某個主機名的計算機流量 |
Ether host xxx.xx.xx.xx | 捕獲某個MAC位址的計算機流量 |
Src host xx.xxx.xxx.x | 捕獲來自某個計算機的流量 |
Dst host xx.x.x.x | 捕獲前往某個計算機的流量 |
Port xxxx | 捕獲指定端口的流量 |
!port xxx | 捕獲除指定端口以外的所有流量 |
Icmp[0] == 3 | 捕獲偏移量為0值為3(目标不可達)的Icmp資料包流量 |
Icmp[0] == 8 or icmp[0] == 0 | 捕捉代表 echo 請求 或 echo恢複的ICMP資料包流量 |
Icmp[0:2] == 0x0301 | 捕捉以類型 3 代碼 1表示的目标不可達、主機不可達的ICMP資料包流量 |
Tcp[13] & 1==1 | 捕捉設定了FIN位的TCP資料包 |
Tcp[13] & 2==2 | 捕捉設定了SYN位的TCP資料包 |
Tcp[13] & 4==4 | 捕捉設定了RST位的TCP資料包 |
Tcp[13] & 8==8 | 捕捉設定了PSH位的TCP資料包 |
Tcp[13] & 16==16 | 捕捉設定了ACK位的TCP資料包 |
Tcp[13] & 32==32 | 捕捉設定了URG位的TCP資料包 |
Tcp[13] == 18 | 捕捉TCP SYN-ACK資料包 |
Ether host 00:00:00:00:00 | 捕捉流入或流出mac位址的流量 |
!Ether host 00:00:00:00:00 | 捕捉流入或流出mac位址以外的所有的流量 |
Broadcast | 捕捉廣播流量 |
Udp | 捕獲UDP流量 |
- 顯示過濾器
使用自帶的過濾表達式來過濾顯示資料:
- 比較操作符
- 邏輯操作符
- 過濾器舉例
過濾器表達式 | 說明 |
---|---|
! tcp.port == 3389 | 排除RDP流量 |
Tcp.flags.syn == 1 | 具有SYN标志位的TCP資料包 |
Tcp.flags.rst == 1 | 具有RST标志位的TCP資料包 |
! arp | 排除ARP流量 |
http | 所有HTTP流量 |
Tcp.port == 23 || tcp.port ==21 | 文本管理流量 |
Smtp || pop || imap | 文本email流量 |
Ip.addr == xxx.xx.xx.xx | 指定IP的流量 |
Frame.len <= xxx | 長度小于xxx位元組的資料包 |
流量分析和圖形化功能
網絡端點
統計每個端點的位址、發送或收到的資料包的數量和位元組數
每一個IP就是一個網絡端點
網絡會話
統計A和B端點間會話的發送或收到的資料包的數量和位元組數
協定分層
可以檢視各種協定的分布統計情況
資料包長度分析
跟蹤TCP資料流
ps:【Wireshark軟體無法實作tcp碼流跟蹤】
圖形展示
- 檢視 IO 圖
通過x軸(資料包廂隔時間)、Y軸(資料包數量上限)來調整顯示的IO圖形,通過圖像過濾器可以将不同的流量以不同的顔色顯示IO圖像對比。
- 雙向時間圖
基于兩個端口間TCP連接配接對話,确認資料包已被成功接收所需的時間,可與會話統計配合使用。
- 資料流圖
對于連接配接可視化以及将一段時間中的資料流顯示出來,配合對話統計使用,可以檢視兩端點之間的資料流。
【統計—FlowGraph…】
資料包标記
- 警告資訊【不正常通信中的異常資料包】
- 丢失:上一段資料包丢失時
- 延收:已确認丢失的資料包,又收到其他ACK包時
- 保活:當一個連接配接的保活資料包出現時
- 零窗:接收方達到視窗大小,發出一個零視窗通知時
- 亂序:當資料包被亂序接收時
- 重傳:一次重傳會在收到一個重複ACK的20ms内進行
- 注意資訊【正常通信中的異常資料包】
- 重傳:收到重複的ACK或重傳計時器逾時
- 重複ACK:當主機沒有收到下一個期望序列号的資料包是,會發生資料重複的ACK
- ACK【】
- 零窗探查:零視窗通知包發出後,用來監視TCP接收視窗的狀态
- 保活ACK:用來響應保活資料包
- 零窗ACK:用來響應零視窗探查資料包
- 視窗已滿:通知傳輸主機其接收者的TCP接收已滿
- 對話資訊【通信的基本資訊】
- 視窗更新:接收者發出,通知發送者TCP接收視窗大小被改變
資料包分析
通用底層網絡協定
位址解析協定ARP
ARP頭
偏移位 | 0~7 | 8~15 |
---|---|---|
硬體類型 | ~ | |
16 | 協定類型 | ~ |
32 | 硬體位址長度 | 協定位址長度 |
48 | 操作 | ~ |
64 | 發送方的MAC1 | ~ |
80 | 發送方的MAC2 | ~ |
96 | 發送方的MAC3 | ~ |
112 | 發送方的協定位址1 | ~ |
144 | 目标的MAC1 | ~ |
160 | 目标的MAC2 | ~ |
176 | 目标的MAC3 | ~ |
192 | 目标的協定位址1 | ~ |
208 | 目标的協定位址2 | ~ |
資料包分析
上述的均為:request(請求包),下圖為(reply)響應包
無償的ARP
當IP位址發生改變後,網絡主機中緩存的IP和MAC映射就失效了,為了防止通信錯誤,無償ARP請求被發送到網絡中,強制所有收到它的裝置更新ARP映射緩存。
IP協定
IP頭
- 服務類型[級别]:優先級标志位和服務類型标志位,用來進行QoS
- 辨別符:識别一耳光資料包或被分片資料包的次序;唯一
- 标記符:标記資料包是否為一組分片資料包的一部分
- 分片偏移:該資料包是個分片,資料包按分片偏移值順序重組
- 生存時間:TTL —— 逾時TTL時間,資料包被丢棄
資料包分析
IP分片
将一個資料流分為更小的片段,是IP用于解決跨越不同類型網絡時可靠傳輸的一個特性。基于資料鍊路層所使用的最大傳輸單元MTU的大小,預設是1500位元組(不包含14位元組的以太網頭本身),當資料包大小大于MTU時會被分片。
傳輸控制協定TCP
TCP頭
- 序号:表示一個TCP片段。
- 确認序号:希望從另一個裝置得到的下一個資料包序号
- 緊急指針:如果設定了URG位,緊急指針将告訴CPU從資料包的哪裡開始讀取資料
TCP端口
- 1~1023:标準端口組;特定服務會用到标準端口
- 1024~65535:臨時端口組;作業系統會随機地選擇一個端口讓某個通信單獨使用
下面為TCP建立連接配接時的三次握手包的資料包
TCP标志
TCP的三次握手
- A發送SYN,請求建立連接配接
- B發送SYN、ACK
- A發送ACK
【通俗介紹】:
A向B發送建立連接配接的邀請,B收到A的SYN之後,向A發送收到的SYN并發送自己的ACK,表示自己收到了,并且發送ACK同意A和B建立連接配接;A收到ACK之後,就和B建立了連接配接。
設定TCP資料包序列号的顯示方式:
TCP的四次斷開
TCP重置
- 當TCP連接配接中途突然掉線,使用RST标志位之處連接配接被異常終止或拒絕連接配接請求
使用者資料包協定UDP
UDP頭
資料包分析
網際網路控制消息協定ICMP
ICMP頭
ICMP類型和代碼
Type | Name | Info |
---|---|---|
Echo Reply | Echo 回複 | |
1 | Unassigned | 未指派 |
2 | Unassigned | 未指派 |
3 | Destination Unreachable | 目标不可達 |
4 | Source Quench (Deprecated) | 報源抑制(棄用) |
5 | Redirect | 重定向 |
6 | Alternate Host Address | 修改主機位址 |
7 | Unassigned | 未指派 |
8 | Echo REauest | Echo請求 |
9 | Router Advertisement | 路由器公告 |
10 | Router Solicitation | 路由器請求 |
11 | Time Exceeded | 逾時 |
12 | Parameter Problem | 參數問題 |
13 | Timeestamp | 時間戳 |
14 | Timestamp Reply | 時間戳應答 |
……………………
Echo請求和響應【ping xx.xx.xx.xx】
路由跟蹤【tracert x.x.x.x】
路由跟蹤将TTL自加1的過程一直持續到路由到達目的IP,與路徑上的每一個路由進行通信并echo傳回一個響應包。