iT邦幫忙

0

Cyber security -6 Module2-3 Packet inspection

  • 分享至 

  • xImage
  •  

Packet captures with tcpdump

Tcpdump

  • 是一個受歡迎的網路分析工具,預設安裝在許多 Linux 發行版上,也可以安裝在大部分類 Unix 作業系統上,例如 macOS。
  • 它可以輕鬆捕捉並監控網路流量,包含 TCP、IP、ICMP 等多種協議。
  • command line tool 用於擷取和分析網路流量。
  • 主要用途包括疑難排解網絡問題,辨識惡意活動等。
  • Tcpdump 用於捕捉網路流量。這些流量可以儲存為 packet capture 封包擷取檔(p-cap),該檔案包含從介面或網路攔截的資料封包。

指令解釋

  • 基本語法為:sudo tcpdump [-i interface] [option(s)] [expression(s)]
    sudo tcpdump -i any -v -c 1:
    • sudo:需要以管理員權限執行。
    • -i any指定使用的網路介面。
    • -v:verbose 模式,顯示詳盡的封包資訊。
    • -c 1count:指定捕捉封包數量,此處為捕捉 1 個封包。
  • 篩選功能:可針對 IP 位址、協議名稱或埠號進行篩選。

Packet資訊解析

  • 時間戳記 (Timestamp):顯示封包到達時間。
  • IP資訊:
    • 版本(如 IPv4):提供協議類型與封包長度。
    • 類型服務 (ToS):用十六進位表示,指定封包需特殊處理的方式。
    • 存活時間 (TTL):定義封包在網路上能存活的時間。
    • 識別碼、位移與旗標:提供封包分段與重組資訊(如 DF 表示不能分段)。
    • 協議欄位:表示封包的協議類型,例如 TCP(值為 6)。
  • TCP 特徵:
    • Flags:表示 TCP 旗標,例如 Push 標誌;ACK 確認數據流。
    • 檢查和 (Checksum):檢查封包頭部是否有錯誤。
  • 源與目標 IP 位址:包含流量方向與端口號。
功能 說明
tcpdump 定義 一個命令列網路協定分析工具,用於擷取和分析網路流量。
基本使用語法 sudo tcpdump [-i interface] [option(s)] [expression(s)]
捕捉網路介面 -i 參數,指定要捕捉流量的網路介面。
寫入/讀取檔案 使用 -w 將封包寫入檔案,使用 -r 讀取封包檔案。
詳細程度控制 使用 -v-vv-vvv 選項以控制輸出的詳細程度。
封包數量限制 -c 選項,用於指定要捕捉的封包數量。
禁用名稱解析 -n-nn 選項以禁用自動名稱解析,維持數字形式的輸出。
篩選表達式 使用篩選表達式來只擷取指定協定或條件的流量,支持布林運算符。 sudo tcpdump -r packetcapture.pcap -n 'ip and port 80'
支持的協議 TCP, IP, ICMP 等。
關鍵分析資訊 - Timestamp時間戳記:記錄到達時間- 套用協議相關指標如 TOS、TTL、Checksum、Flags。
優點 - 無需 GUI,輕量高效。- 常見於系統內建,使用方便。
缺點 - 僅能以文字顯示,對初學者理解不友好。

ifconfig 的功能

  • 主要用途:用來查看網路接口的狀態以及基本資訊,例如 IP 位址、子網掩碼、MAC 位址、傳輸狀態等。
  • 它是一個配置和診斷網路接口的工具,但本身不會用來捕捉網路封包。
  • 典型用途:
    • 列出系統中有哪些網路接口(例如 eth0, wlan0, lo 等)。
    • 檢查網路接口是否啟用(UP)或禁用(DOWN)。
    • ifconfig結果會顯示所有活動的網路接口及其配置。

-D

當你在命令行中執行 tcpdump 時,添加 -D 標誌可以列出系統上可用的網路介面。這一步通常是用來確認系統上所有可用的捕獲網路介面並選擇合適的一個來實際進行數據捕獲
tcpdump -D

使用 tcpdump 從 eth0 介面過濾即時網路封包資料。

sudo tcpdump -i eth0 -v -c5

-w

使用 -w 標誌,您可以將捕獲的網絡數據包寫入或保存到一個封包擷取檔案( packet capture file ),而不是僅僅在終端顯示出來。這非常有用,因為您可以用於後續的分析。在這個指令中,tcpdump 從所有網絡介面捕捉網絡流量,並將其保存到一個名為packetcapture.pcap 的封包擷取檔案中:
sudo tcpdump -i eth0 -nn -c9 port 80 -w capture.pcap &
此命令將使用以下選項在背景執行 tcpdump:

  • -i eth0:從 eth0 介面捕捉數據。
  • -nn:不嘗試將 IP 地址或端口解析為名稱。從安全角度來說,這是最佳實踐,因為查詢的數據可能無效。這也可以防止惡意行為者被調查所警告。
  • -c9:捕捉 9 個數據包後退出。
  • port 80:僅過濾端口 80 的流量。這是默認的 HTTP 端口。
  • -w capture.pcap:將捕捉的數據保存到指定的檔案中。
  • &:這是對 Bash Shell 的指示,用於將命令在背景中運行。

curl

curl opensource.google.com

  • curl 是一個命令行工具,用來向網路上的資源發送請求並接收響應,通常用於測試和檢查 HTTP/HTTPS 網站或 API 的行為。在這段文字中,指令的作用是模擬訪問一個網站,因此會自動產生網路流量。
  • HTTP 協議與 TCP port 80: HTTP(HyperText Transfer Protocol)是一個在網路上用於進行溝通的協議,主要用於瀏覽網站。HTTP 流量通常透過 port 80 傳送,這是分配給 HTTP 的常見端口。當 curl 開啟網站時,所有的請求與回應都透過 TCP port 80 傳遞,因此這些流量非常適合用工具(如 tcpdump)進行分析。

ls -l

  • Verify that packet data has been captured:
    ls -l capture.pcap

-r

使用 -r 旗標,你可以通過指定檔案名稱作為參數來讀取封包捕捉檔案。以下是一個讀取名為 packetcapture.pcap 的檔案的 tcpdump 指令範例:
sudo tcpdump -nn -r capture.pcap -v
-nn:禁用端口和協議名稱查找。
-r:從指定文件中讀取捕獲數據。
-v:顯示詳細的封包數據。

-X

使用 tcpdump 命令過濾 capture.pcap 捕獲文件中的擴展封包數據。
sudo tcpdump -nn -r capture.pcap -X
-nn : 禁用埠及協定名稱查詢。
-r : 從指定的檔案中讀取捕獲的資料。
-X : 以十六進位和 ASCII 格式顯示封包資料。安全分析員可以分析十六進位和 ASCII 輸出,以在惡意軟體分析或法證分析過程中檢測模式或異常。

  • 十六進位(Hexadecimal)使用0-9和A-F共16個符號表示數值,ASCII是一種將字符用於數位文本表示的編碼標準。

-v

依據您希望 tcpdump 列出多少封包訊息,可選擇三個詳細程度的層級。層級分別是 -v、-vv 和 -vvv。每增加一個 v,詳細程度會增加。如果您在尋找如封包 IP 標頭欄位的詳細資料時,verbose 選項會很有幫助。以下是一個以 verbosity 層級讀取 packetcapture.pcap 檔案的 tcpdump 命令範例:
sudo tcpdump -r packetcapture.pcap -v

-n

  • 若使用 -n 標誌,tcpdump 將會禁用名稱解析功能。因此,IP 地址和端口號會保持以數字形式顯示,而不會轉換為域名或協議名。
  • -nn 則進一步擴展了此功能,使其同時禁用主機名和端口的解析。
  • 例如:默認情況下,來自 80 端口的流量可能會顯示為協議 HTTP,但在使用 -n 或 -nn 時,則原樣顯示為數字 80
  • sudo tcpdump -r packetcapture.pcap -v -n

Wireshark 和 tcpdump

功能/特色 Wireshark tcpdump 共有功能
界面類型 圖形化使用者介面 (GUI),適合視覺化分析 命令列介面 (CLI),適合快速操作與自動化 -
資源使用 需要更多系統資源,適合桌面環境 資源需求低,適合遠端伺服器或嵌入式系統 -
封包分析功能 支援深度協議解析,能夠解碼多種協議 提供基本封包資訊,無法深入解碼 捕捉並分析網路流量
封包過濾 支援顯示過濾器與捕捉過濾器,適合更細緻的篩選 支援 Berkeley Packet Filter (BPF) 語法,適合捕捉時的過濾 支援過濾功能(例如 BPF 語法)
使用場景 適合詳細的封包分析與視覺化數據檢查 適合快速捕捉封包或自動化數據收集 都可用於網路故障排除與安全分析
支援的輸出格式 支援多種格式(如 pcap、JSON 等),可匯出供其他工具使用 主要輸出為 pcap 格式,適合後續分析 皆支援 pcap 格式,方便匯出與後續分析
開放原始碼 開放原始碼,免費使用

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言