數據抓包分析基礎


數據包分析基礎

數據包分析

  • 數據包嗅探或協議分析:指捕獲和解析網絡上在線傳輸數據的過程,為了能更好的了解網絡上正在發生的事情。

    目的

    軟件:Tcpdump、Omnipeek、Wireshark

監聽網絡線路

集線器嗅探方式

流經集線器的所有網絡數據包都會被發送到每一個集線器連接的端口。

交換機嗅探方式

端口鏡像、集線器輸出、使用網絡分流器、ARP欺騙方式等四種方式

  1. 端口鏡像

設置連接的交換機的端口鏡像功能,將交換機其他一個或多個端口的經過的數據包復制一份到嗅探器連接的端口上。

  1. 集線器輸出

目標設備和交換機間插接一個集線器,嗅探器也接在集線器上;在交換機不支持端口鏡像的時候可以使用這個方法,這個類似於,將兩者之間的數據包“共享”給集線器上其他的端口。

  1. 網絡分流器

有聚合的和非聚合的兩種類型,都是安置在兩個設備間來嗅探所有流經的網絡通信,聚合的是三個接口,非聚合的是四個端口。

  1. 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 或 右擊菜單

1559623980229

標記了之后,數據包的顯示會加深。

時間顯示格式

相對時間: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
0 硬件類型 ~
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頭

1559645755707

  • 服務類型[級別]:優先級標志位和服務類型標志位,用來進行QoS
  • 標識符:識別一耳光數據包或被分片數據包的次序;唯一
  • 標記符:標記數據包是否為一組分片數據包的一部分
  • 分片偏移:該數據包是個分片,數據包按分片偏移值順序重組
  • 生存時間:TTL —— 超時TTL時間,數據包被丟棄

數據包分析

IP分片

將一個數據流分為更小的片段,是IP用於解決跨越不同類型網絡時可靠傳輸的一個特性。基於數據鏈路層所使用的最大傳輸單元MTU的大小,默認是1500字節(不包含14字節的以太網頭本身),當數據包大小大於MTU時會被分片。

傳輸控制協議TCP

TCP頭

  • 序號:表示一個TCP片段。
  • 確認序號:希望從另一個設備得到的下一個數據包序號
  • 緊急指針:如果設置了URG位,緊急指針將告訴CPU從數據包的哪里開始讀取數據

TCP端口

  • 1~1023:標准端口組;特定服務會用到標准端口

  • 1024~65535:臨時端口組;操作系統會隨機地選擇一個端口讓某個通信單獨使用

    下面為TCP建立連接時的三次握手包的數據包

1559653677687

1559653918394

1559654017131

TCP標志

1559654227936

TCP的三次握手

  • A發送SYN,請求建立連接
  • B發送SYN、ACK
  • A發送ACK

【通俗介紹】:

A向B發送建立連接的邀請,B收到A的SYN之后,向A發送收到的SYN並發送自己的ACK,表示自己收到了,並且發送ACK同意A和B建立連接;A收到ACK之后,就和B建立了連接。

設置TCP數據包序列號的顯示方式:

1559654977212

1559655065823

1559655245598

1559655378756

TCP的四次斷開

TCP重置

  • 當TCP連接中途突然掉線,使用RST標志位之處連接被異常終止或拒絕連接請求

用戶數據包協議UDP

UDP頭

1559658147510

數據包分析

1559658396089

互聯網控制消息協議ICMP

ICMP頭

1559658549488

ICMP類型和代碼

Type Name Info
0 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】

1559660894085

1559660996935

路由跟蹤【tracert x.x.x.x】

1559661754559

1559661981649

1559662354227

1559662378745

路由跟蹤將TTL自加1的過程一直持續到路由到達目的IP,與路徑上的每一個路由進行通信並echo返回一個響應包。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM