數據抓包分析基礎

數據包分析基礎

數據包分析

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

    目的

    軟件:Tcpdump、Omnipeek、Wireshark網絡

監聽網絡線路

集線器嗅探方式

流經集線器的全部網絡數據包都會被髮送到每個集線器鏈接的端口。併發

交換機嗅探方式

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

  1. 端口鏡像

設置鏈接的交換機的端口鏡像功能,將交換機其餘一個或多個端口的通過的數據包複製一份到嗅探器鏈接的端口上。操作系統

  1. 集線器輸出

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

  1. 網絡分流器

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

  1. ARP欺騙

經過發送包含虛假MAC地址的ARP欺騙信息,劫持其餘計算機流量的過程;它是在交換式的網絡中進行高級技術。blog

使用Cain&Abel 軟件進行ARP進行欺騙

當ARP劫持開始後,便可經過Wireshark軟件進行抓包分析。接口

路由器嗅探方式

在處理涉及多個網段與路由器問題的同時,須要將嗅探器移動到不一樣位置上;由此才能夠得到一個完整的網絡拓撲。ip


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返回一個響應包。

相關文章
相關標籤/搜索