🦈
🧂 前言
今天會分享什麼是Network Forensic,以及經典分析工具Wireshark的使用
🛜 Network Forensic
首先講一下什麼是封包,封包是網路通訊的基本單位,就像郵件一樣。當你在網路上傳送資料時,這些資料不會一次全部送出去,而是被切割成很多小塊,每一塊就是一個封包。比如說,當你下載一個1MB的檔案時,這個檔案會被切割成幾千個封包,每個封包大約1500位元組左右。每個封包都有固定的結構,就像信封一樣。
封包的最外層是標頭(Header),裡面包含了這個封包要去哪裡、從哪裡來、用什麼方式傳送等資訊。標頭裡最重要的資訊包括:
- 來源IP位址:這個封包是從哪台電腦送出來的
- 目標IP位址:這個封包要送到哪台電腦
- 協定類型:這個封包使用什麼通訊協定(HTTP、HTTPS、FTP等)
- 時間戳記:這個封包是什麼時候產生的
- 封包大小:這個封包有多大
- 序號:這個封包在整個資料流中的位置
封包的內容部分(Payload)則是實際要傳送的資料。比如說,如果你在瀏覽網頁,HTTP封包的內容就是網頁的HTML程式碼。如果你在登入網站,封包的內容可能包含你的帳號密碼。
source : https://webhostinggeeks.com/blog/what-is-data-packet/
網路層面追蹤和分析資料傳輸的過程。當網路攻擊發生時,攻擊者會在網路中留下痕跡,這些痕跡就記錄在網路封包裡。Network Forensic 就是找出攻擊者是怎麼進來的、做了什麼、拿走了什麼資料
常見的網路鑑識工具是Wireshark
🦈 Wireshark
下載連結:https://www.wireshark.org/download.html
Wireshark是目前最受歡迎的開源網路協定分析器。這款功能強大的軟體不僅能夠即時監控網路流量,更能深入分析各種網路協定的詳細內容,為網路故障排除、協定開發和安全分析提供全方位的支援,另外也能夠識別和解析超過2000種不同的網路協定,從常見的TCP/IP協定族到專用的工業控制協定,幾乎涵蓋了所有可能遇到的網路通訊場景。這種全面的協定支援不僅包括即時協定解析,還允許用戶根據需要添加自定義協定支援。
下載後打開主頁會有兩個部分,第一個是 open,另一個是 Capture
- open 是開啟已經錄好的 pcap 檔
- Capture 是可以選擇你的網卡,點進去後可以開始抓封包
假設我們打開了一個錄好的 pcap 封包
中間主視窗
顯示抓到的所有封包
• No.:封包編號(依捕獲順序)
• Time:相對於第一個封包的時間戳記
• Source:封包來源 IP
• Destination:封包目的 IP
• Protocol:協定類型(如 TCP、HTTP、SSH)
• Length:封包大小(bytes)
• Info:協定的摘要資訊(像是 TCP 的 SYN/ACK、HTTP 的 GET 請求等等
中間封包的顏色也會根據不同的 protocol 或狀態更改顏色
左下方視窗
顯示選中封包的協定分層解析
• Frame:物理層資訊(長度、介面等)
• Ethernet / Data-link 層(此例省略,因為用 utun8 介面抓)
• Internet Protocol Version 4 (IPv4):來源 IP 100.112.165.2 → 目的 IP 192.168.1.125
• TCP:來源埠 60665 → 目的埠 5000,Seq / Ack / WinSize 等控制資訊
• HTTP:協定層解析到 GET / HTTP/1.1
右下方視窗
以十六進制(左半邊)+ ASCII(右半邊)顯示原始封包內容。
另外也可以對選中的封包按右鍵,使用其他功能,除了 copy 之後還可以 follow。
follow 的功能是將一個 TCP 連線裡的 HTTP 封包資料串起來,可以看到完整的瀏覽器請求或伺服器回應
另外最上方有一個 Statistic 可以選,它會幫你整理一些資訊並統計
這邊介紹幾個常用功能
Conversation
這裡可以看到 Wireshark 統計的所有兩個 IP 地址之間的傳輸狀況
Path length
這邊可以看到封包長度的統計
Protocol Hierarchy
這邊會看到所有封包協定的統計結果
除此之外,Wireshark 提供了 filter 的功能,可以快速過濾出想要看的封包
這邊整理了一些基本 filter 語法
# 特定IP位址
ip.addr == 192.168.1.1
# 來源IP
ip.src == 192.168.1.1
# 目標IP
ip.dst == 192.168.1.1
# IP範圍
ip.addr >= 192.168.1.1 and ip.addr <= 192.168.1.100
# 網段
ip.addr == 192.168.1.0/24
# 特定埠號
tcp.port == 80
udp.port == 53
# 來源埠
tcp.srcport == 22
# 目標埠
tcp.dstport == 443
# 埠範圍
tcp.port >= 8000 and tcp.port <= 9000
# 基本協定
tcp
udp
icmp
http
https
dns
ssh
ftp
# 組合協定
tcp and http
udp and dns
# HTTP請求方法
http.request.method == "GET"
http.request.method == "POST"
http.request.method == "PUT"
# HTTP狀態碼
http.response.code == 200
http.response.code >= 400
# HTTP主機
http.host == "example.com"
# HTTP URI
http.request.uri contains "login"
http.request.uri contains "admin"
# 特定時間範圍
frame.time >= "2024-01-01 10:00:00"
frame.time <= "2024-01-01 11:00:00"
# 相對時間
frame.time >= "2024-01-01 10:00:00" and frame.time <= "2024-01-01 10:30:00"
# 封包大小
frame.len > 1000
frame.len < 100
# 資料長度
tcp.len > 500
udp.length > 100
結論
今天介紹了什麼是 Network Forensic,以及 Wireshark 的使用,Wireshark 的功能還有很多,接下來幾天也會介紹一些其他的工具或者 Wireshark 的其他功能。