文章目錄
- 前言
- 常用協議分析-ARP 協議
- 常用協議分析-ICMP 協議
- 常用協議分析-TCP 協議
- 常用協議分析-HTTP 協議
前言
作為一款高效免費的抓包工具,wireshark可以捕獲并描述網路資料包,其最大的優勢就是免費、開源以及多平臺支持,在GNU通用公共許可證的保障范圍下,用戶可以免費獲取軟體和代碼,并擁有對其原始碼修改和定制的權利,如今其已是全球最廣泛的網路資料包分析軟體之一,接下來我就帶大家用WireShark 實戰:使用 WireShark 對常用協議抓包并分析原理
常用協議分析-ARP 協議
地址決議協議(英語:Address Resolution Protocol,縮寫:ARP)是一個通過決議網路層地址來找尋資料鏈路層地址的網路傳輸協議,它在 IPv4 中極其重要,ARP 是通過網路地址來定位 MAC 地址,
開始抓包—過濾 arp

我們使用 nmap 來基于 ARP 協議進行掃描
┌──(root xuegod53)-[~]
└─# nmap -sn 192.168.1.1

我們看一下我們抓取到的資料包
分析第一個請求包

查看 Address Resolution Protocol (request) ARP 請求包內容:

Address Resolution Protocol (request) #ARP 地址決議協議 request 表示請求包
Hardware type: Ethernet (1) #硬體型別
Protocol type: IPv4 ( 0x0800 ) #協議型別
Hardware size: 6 #硬體地址
Protocol size: 4 #協議長度
Opcode:_ request ( 1 ) #操作碼,該值為 1 表示 ARP 請求包
Sender MAC address: VMware_f1:35:ee (00:0c:29:f1:35:ee) #源 MAC 地址
Sender IP address: 192.168.1.53 . #源 IP 地址
Target MAC address: 00:00:00_ 00: 00:00 (00: 00: 00 :00: 00:00) #目標 MAC 地址
Target IP address: 192.168.1.1 #目標 IP 地址
我們來分析第二個資料包 ARP 的應答資料包

查看: Address Resolution Protocol (reply) ARP 地址決議協議

Address Resolution Protocol (reply) #ARP 地址決議協議 reply 表示回復包
Hardware type: Ethernet (1) #硬體型別
Protocol type: IPv4 ( 0x0800 ) #協議型別
Hardware size: 6 #硬體地址
Protocol size: 4 #協議長度
Opcode:_ reply ( 2 ) #操作碼,該值為 2 表示 ARP 回復包
Sender MAC address: XXXXXXXXXXXX (9c:61:21:75:55:50) #源 MAC 地址
Sender IP address: 192.168.1.1 #源 IP 地址
Target MAC address: VMware_f1:35:ee (00:0c:29:f1:35:ee) #目標 MAC 地址
Target IP address: 192.168.1.53 #目標 IP 地址
總結:我們可以看到到應答包補全了自己的 MAC 地址,目的地址和源地址做了替換我們再來看兩個資料包的請求和程序
192.168.1.53 廣播:誰有 192.168.1.1 的 MAC 地址?
192.168.1.1 應答:192.168.1.1 的 MAC 地址是 xxxxxxxxxxx
很有趣的一個程序不是嗎?
常用協議分析-ICMP 協議
我們把之前的資料包清空掉然后篩選 ICMP 協議的資料包

打開一個終端
┌──(root xuegod53)-[~]
└─# ping xuegod.cn -c 1
我們只發送一個 ping 包,方便我們分析發送完之后停止抓包即可,

我們先看請求包的內容我們可以看到這是個 4 層的協議包

下面我們開始分析 ICMP 協議包:
ICMP 協議分析請求包

ICMP 協議分析應答包

作業程序:
本機發送一個 ICMP Echo Request 的包
接受方回傳一個 ICMP Echo Reply,包含了接受到資料拷貝和一些其他指令
常用協議分析-TCP 協議
首先是清空資料包然后篩選 tcp 開始抓包

我們模擬一下 tcp 會話建立,那最簡單的方式是什么呢?
我們通過 Xshell 遠程連接 Kali Linux 就會捕獲到完整的 TCP3 次握手的鏈接,


抓完資料包之后我們就停止抓包,接下來我們開始分析 TCP 的資料包
TCP 協議最核心的概念無非就是 3 次握手 4 次斷開,我們先講 TCP 的 3 次握手

查看 TCP 協議:
我們先來看第一個資料包 SYN 資料包

下面這樣圖是打開標志位的詳細資訊

我們從以上資訊就可以看出這是一個 SYN 資料包,SYN=1 表示發送一個鏈接請求,這時 Seq 和
ACK 都是 0
我們分析第二個資料包

Flags 位資訊

我們可以看到服務端收到 SYN 連接請求回傳的資料包 SYN=1,ACK=1 表示回應第一個 SYN 資料
包,
我們看第三個資料包

到這里三次握手程序就結束了,
我們生成一個圖表來觀察資料互動的程序

點擊顯示過濾器

前面 3 個就是 TCP 建立鏈接的程序,后面的就是相互通信的程序了這個時候 seq 就會根據資料包的
大小改變,

我們清空一下資料包來看一下斷開鏈接是一個什么樣的程序.

我們在 Xshell 視窗中輸入 exit 退出

我們重新到 WireShark 生成圖示

們分析一下程序,我們在終端輸入 EXIT 實際上是在我們 Kali 上執行的命令,表示我們 SSHD 的
Server 端向客戶端發起關閉鏈接請求,
第一次揮手:服務端發送一個[FIN+ACK],表示自己沒有資料要發送了,想斷開連接,并進入
FIN_WAIT_1 狀態
第二次揮手:客戶端收到 FIN 后,知道不會再有資料從服務端傳來,發送 ACK 進行確認,確認序號
為收到序號+1(與 SYN 相同,一個 FIN 占用一個序號),客戶端進入 CLOSE_WAIT 狀態,
第三次揮手:客戶端發送 [FIN+ACK] 給對方,表示自己沒有資料要發送了,客戶端進入
LAST_ACK 狀態,然后直接斷開 TCP 會話的連接,釋放相應的資源,
第四次揮手:服務戶端收到了客戶端的 FIN 信令后,進入 TIMED_WAIT 狀態,并發送 ACK 確認消
息,
服務端在 TIMED_WAIT 狀態下,等待一段時間,沒有資料到來,就認為對面已經收到了自己發送的
ACK 并正確關閉了進入 CLOSE 狀態,自己也斷開了 TCP 連接,釋放所有資源,當客戶端收到服務端的ACK 回應后,會進入 CLOSE 狀態并關閉本端的會話介面,釋放相應資源,
常用協議分析-HTTP 協議
我們還是篩選 TCP 協議因為 HTTP 是 TCP 的上層協議,所以我們過濾 TCP 的資料會包含 HTTP 協
議的資料包

我們打開一個終端輸入下面命令,
┌──(rootxuegod53)-[~]
└─# curl -I baidu.com

curl 是一個在命令列下作業的檔案傳輸工具,我們這里用來發送 http 請求
-I 大寫的 i 表示僅回傳頭部資訊,
我們可以看到我們抓到了 TCP 的 3 次握手 4 次斷開

第 4 個和第 6 個是我們的 HTTP 資料包

第一步:我們我們發送了一個 HTTP 的 HEAD 請求
第二步:服務器收到我們的請求回傳了一個 Seq/ACK 進行確認
第三步:服務器將 HTTP 的頭部資訊回傳給我們客戶端 狀態碼為 200 表示頁面正常
第四步:客戶端收到服務器回傳的頭部資訊向服務器發送 Seq/ACK 進行確認
發送完成之后客戶端就會發送 FIN/ACK 來進行關閉鏈接的請求,
各位親愛的小哥哥小姐姐沒文章到此就結束了
想要獲取文章視頻+原始碼和筆記的
請添加我們的小姐姐

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291793.html
標籤:其他

