第 10 章 :Wireshark 封 包 分 析 軟 體 10-1 Wireshark 簡 介 10-2 Wireshark 的 安 裝 方 法 10-3 Wireshark 的 使 用
Wireshark 簡 介 - 發 展 歷 史 Wireshark (http://www.wireshark.org/) 是 一 個 開 放 原 始 碼 (open source software) 軟 體, 採 用 Gnu Public License (GPL) 授 權 最 初 Wireshark 由 Gerald Combs 發 展 其 架 構, 但 進 一 步 研 發 和 維 護 則 由 Wireshark team 負 責 Wireshark 起 源 自 1997 年, 當 時 Gerald Combs 需 要 一 種 工 具 排 解 網 路 疑 難 及 學 習 更 多 網 路 知 識 因 此, 他 開 始 撰 寫 Ethereal 系 統 (Wireshark 的 前 身 ) Wireshark 有 多 項 強 大 的 特 色, 如 支 援 多 數 的 網 路 協 定 豐 富 的 過 濾 語 言 易 於 查 看 TCP 會 談 經 重 構 後 的 數 據 流 等 等
Wireshark 簡 介 - 操 作 平 台 Wireshark 適 合 大 多 數 Linux/UNIX 平 台 與 Windows 平 台 以 下 平 台 皆 可 安 裝 與 使 用 Wireshark: Apple Mac OS X Debian GNU/Linux FreeBSD Gentoo Linux HP-UX Mandriva Linux NetBSD OpenPKG Red Hat Fedora/Enterprise Linux rpath Linux Sun Solaris/i386 Sun Solaris/Sparc Windows 2000, XP Home, XP Pro, XP Tablet PC, XP Media Center, Server 2003 or Vista
Wireshark 安 裝 方 法 -Linux 一 般 在 Linux 下 安 裝 應 用 軟 體 可 區 分 RPM 及 原 始 碼 兩 種 方 式, 而 Fedora 8 已 內 附 Wireshark 最 新 版 1.0.0, 所 以 安 裝 步 驟 十 分 簡 單 : yum y install wireshark wireshark-gnome 由 於 要 編 譯 Wireshark 首 先 必 須 先 安 裝 好 所 需 要 的 套 件 與 相 依 函 式 庫, 所 以 需 要 安 裝 以 下 套 件 和 必 要 的 開 發 套 件 : yum y install gcc byacc flex gtk2-devel libpcap-devel openssl-devel pcre-devel libcap-devel 安 裝 完 後, 即 可 至 Wireshark 官 方 網 站 下 載 最 新 的 tarball 檔 案, 開 始 進 行 安 裝 的 步 驟
Wireshark 安 裝 方 法 -Linux( 續 ) 以 下 的 示 範 皆 使 用 root 身 份 進 行 操 作, 首 先 下 載 Wireshark 最 新 版 本 的 tarball 並 解 壓 縮 : cd /usr/local/src wget http://www.wireshark.org/download/src/wireshark- 1.0.0.tar.gz tar zxvf wireshark-1.0.0.tar.gz 接 著 進 行 偵 測 系 統 環 境 以 產 生 稍 後 編 譯 需 要 的 Makefile 在 此 我 們 加 上 prefix 參 數 來 指 定 Wireshark 的 安 裝 目 錄, 以 避 免 日 後 維 護 上 的 困 難 : cd wireshark-1.0.0./configure --prefix=/usr/local/wireshark1.0.0 最 後 進 行 編 譯 與 安 裝 :make && make install 要 執 行 Wireshark 時 要 指 定 絕 對 路 徑 : /usr/local/wireshark1.0.0/bin/wireshark
Wireshark 安 裝 方 法 -Linux( 續 ) 若 您 是 安 裝 Fedora 8 所 提 供 的 rpm 套 件, 我 們 可 從 圖 形 化 視 窗 的 [ 應 用 程 式 ]->[ 網 際 網 路 ]->[Wireshark Network Analyzer] 啟 動 Wireshark
Wireshark 安 裝 方 法 -Windows 版 若 要 在 Windows 平 台 上 安 裝 Wireshark, 除 了 下 載 Windows 版 本 的 Wireshark 程 式 外, 須 先 安 裝 WinPcap (Windows 系 統 所 需 要 的 封 包 擷 取 程 式 ) 至 Wireshark 官 方 網 站 (http://www.wireshark.org/) 下 載 Wireshark 主 安 裝 程 式, 目 前 最 新 版 本 為 1.0.0, 安 裝 程 式 的 檔 名 是 wireshark-setup-1.0.0.exe
Wireshark Windows 版 本 安 裝 畫 面 一
Wireshark Windows 版 本 安 裝 畫 面 二
Wireshark Windows 版 本 安 裝 畫 面 三
Wireshark 在 Windows 啟 動 路 徑
Wireshark 的 通 信 協 定 目 前 Wireshark 支 援 680 多 個 通 信 協 定 和 封 包 種 類, 使 用 者 可 以 在 以 下 網 站 http://www.wireshark.org/docs/dfref/, 查 到 Wireshark 所 支 援 的 通 信 協 定 Wireshark 主 要 視 窗 分 成 三 個 封 包 清 單 窗 格 (packet list pane) 封 包 內 容 窗 格 (packet details pane) 封 包 位 元 組 窗 格 (packet bytes pane)
Wireshark 的 主 要 視 窗 功 能 表 列 一 般 工 具 列 篩 選 工 具 列 封 包 清 單 窗 格 封 包 內 容 窗 格 封 包 內 容 窗 格 ( 位 元 組 格 式 ) 狀 態 列
Wireshark 主 要 視 窗 功 能 說 明 功 能 表 列 : 執 行 Wireshark 各 項 功 能 一 般 功 能 列 : 快 速 啟 動 功 能 表 列 中 常 用 功 能 篩 選 工 具 列 : 在 filter 欄 位 中 輸 入 特 定 語 法 來 過 濾 封 包 清 單 窗 格 中 的 封 包, 語 法 輸 入 錯 誤 時, 欄 位 背 景 會 呈 現 紅 色, 這 類 語 法 稱 為 顯 示 篩 選 器 (display filter) 封 包 清 單 窗 格 (packet list pane) : 顯 示 封 包 列 表, 所 列 出 的 可 能 是 目 前 擷 取 的 封 包, 或 是 之 前 存 檔 的 封 包 清 單, 預 設 值 會 以 為 第 一 個 欄 位 ( 流 水 號 ) 來 排 序 封 包 內 容 窗 格 (packet details pane) : 會 依 封 包 清 單 窗 格 所 選 擇 的 封 包 而 改 變,Wireshark 將 該 封 包 內 容 解 碼 後, 以 較 直 覺 較 易 理 解 的 分 層 形 式 顯 示 出 來 封 包 位 元 組 窗 格 (packet bytes pane) : 顯 示 內 容 和 封 包 內 容 窗 格 相 同, 但 以 位 元 組 的 格 式 來 呈 現, 當 使 用 者 選 取 封 包 內 容 窗 格 中 的 協 定 欄 位 時, 此 處 相 對 應 的 位 元 組 會 自 動 反 白 狀 態 列 : 顯 示 目 前 程 式 狀 態 或 其 他 詳 細 資 訊
Capture 功 能 視 窗
Capture Options 重 要 常 用 的 欄 位 設 定 Capture Options 重 要 常 用 的 欄 位 設 定 :Interface: 會 顯 示 出 Wireshark 在 你 的 系 統 上 所 找 到 的 所 有 網 路 卡, 但 你 只 能 選 取 一 個 作 為 封 包 擷 取 的 介 面 Capture packets in promiscuous mode: 此 選 項 可 讓 你 指 定 Wireshark 使 用 雜 亂 模 式 (promiscuous mode) 擷 取 封 包, 若 選 取 此 項, 則 所 有 經 過 你 選 取 網 路 卡 的 封 包 都 會 被 擷 取 下 來 ; 若 不 選 取 此 項, 則 被 擷 取 下 來 的 封 包 只 會 有 兩 種 可 能,ㄧ 種 是 別 人 發 給 你, 另 一 種 是 你 發 給 別 人 Capture Filter: 指 定 擷 取 過 濾 器 運 算 式, 擷 取 想 要 的 特 定 封 包 這 裡 的 Filter 與 篩 選 工 具 列 的 Filter( 見 圖 10.11) 是 不 一 樣 的 在 這 裡 是 指 在 封 包 擷 取 進 行 中 且 同 時 過 濾 封 包 (Filter while capturing), 這 是 使 用 linux 的 tcpdump 命 令 primitive expressions 來 做 過 濾, 而 篩 選 工 具 列 的 Filter 是 指 已 擷 取 完 畢, 在 上 層 的 視 窗 中 檢 視 封 包 時 過 濾 出 想 要 的 封 包 (Filter packets while viewing), 所 以 這 兩 者 所 使 用 的 運 算 式 是 不 同 的 Update list of packets in real time: 指 定 Wireshark 在 擷 取 封 包 過 程 中, 能 夠 及 時 更 新 list pane 最 上 層 視 窗 中 的 封 包 資 訊
Capture Options 重 要 常 用 的 欄 位 設 定 ( 續 ) Automatic scrolling in live capture: 此 項 功 能 須 在 Update list of packets in real time 被 選 取 的 前 提 下 才 能 啟 用 ; 而 此 功 能 會 即 時 將 主 畫 面 捲 到 最 新 擷 取 的 封 包 資 料 否 則 就 必 須 自 己 手 動 捲 動 畫 面 到 最 新 的 封 包 資 料 Enable MAC name resolution: 指 定 Wireshark 是 否 將 網 路 卡 MAC address 的 前 三 個 位 元 組 轉 換 成 製 造 商 名 稱 Enable network name resolution: 指 定 Wireshark 是 否 將 IP address 轉 換 成 DNS 網 域 名 稱 Enable transport name resolution: 指 定 Wireshark 是 否 將 通 信 埠 號 碼 (port numbers) 轉 換 成 協 定 名 稱 (protocols)
Wireshark 過 濾 資 訊 Wireshark 有 兩 種 過 濾 的 語 言 : 擷 取 中 過 濾 (Filter while capturing) 在 擷 取 封 包 過 程 中, 已 過 濾 符 合 條 件 的 封 包 檢 視 中 過 濾 (Filter packets while viewing) 在 擷 取 完 畢 後, 經 由 Filter 顯 示 你 有 興 趣 的 封 包, 隱 藏 不 感 興 趣 的 封 包
擷 取 中 過 濾 (Filter while capturing) 選 取 [Capture] -> [Capture Filters] 會 出 現 下 列 對 話 框, 能 利 用 此 功 能 來 編 輯 一 個 擷 取 過 濾 規 則, 儲 存 作 為 以 後 之 用 可 直 接 在 Filter 點 選, 亦 可 於 Filter name 輸 入 TCP or UDP port 80 (HTTP) 作 命 名, 在 Filter string 輸 入 port 80, 按 New 鈕, 即 將 此 新 規 則 加 入 Capture Filter, 並 按 Save 鈕 儲 存 以 後 可 在 Capture Options 的 Capture Filter 選 取 此 規 則 做 為 過 濾 選 項
檢 視 中 過 濾 (Filter packets while viewing) 假 設 對 特 定 封 包 有 興 趣, 例 如, 目 的 主 機 位 址 為 192.168.186.128 且 協 定 為 http 也 就 是 說 TCP port 為 80 的 封 包 點 選 視 窗 左 上 角 的 Filter 按 鈕 或 是 選 取 Analyze->Display Filters, 將 出 現 Display Filter 交 談 框
過 濾 運 算 式 之 一 開 啟 Filter Expression 交 談 框 在 Field name 欄 位 捲 動 scroll bar 找 到 IP 並 且 展 開 樹 狀 結 構, 選 取 ip.src, 然 後 點 選 Relation 欄 位 的 ==( 等 於 ), 在 Value 欄 位 輸 入 192.168.186.128, 按 下 確 定 鈕 即 出 右 圖 中 Filter string 欄 位 所 呈 現 的 表 示 式
檢 視 中 過 濾 之 二
過 濾 運 算 式 之 二 再 開 啟 Filter Expression 交 談 框 依 照 前 面 所 提 方 式 找 到 TCP 展 開 並 點 選 tcp.port, 然 後 點 選 Relation 欄 位 的 = =( 等 於 ), 在 Value 欄 位 輸 入 80, 如 右 圖
檢 視 中 過 濾 之 三
過 濾 後 結 果
Following TCP streams 我 們 如 果 想 要 知 道 交 談 中 傳 送 的 封 包, 或 是 想 了 解 在 整 個 TCP 會 談 中, 應 用 層 下 了 那 些 命 令 處 理 了 那 些 資 料 順 序 為 何, 便 可 用 Wireshark Wireshark 提 供 一 個 很 好 用 的 工 具, 讓 你 更 容 易 分 析 了 解 TCP 會 談 的 過 程
選 取 Follow TCP Stream 路 徑 此 以 HTTP 為 例, 使 用 Wireshark 擷 取 HTTP 封 包 結 果 使 用 滑 鼠 點 右 鍵 顯 示 快 捷 功 能 表, 選 取 Follow TCP Stream 如 右 圖, 會 顯 示 出 HTTP 的 TCP 會 談 的 結 果
Follow TCP Stream 可 直 接 顯 示 HTTP 完 整 的 封 包 表 頭 可 以 看 到 兩 台 主 機 在 TCP 會 談 整 個 過 程, 可 看 到 完 整 的 HTTP 表 頭 如 上 圖
觀 看 過 濾 結 果 的 資 料 形 式 ASCII EBCDIC HEX Dump: 以 十 六 進 位 形 式 顯 示 ( 如 下 圖 ) C Arrays:TCP stream 會 顯 示 成 C 語 言 陣 列 形 式
參 考 資 料 A. Orebaugh, G. Morris, E. Warnicke, and G. Ramirez,Ethereal Packet Sniffing,SYNGRESS, 2004 A. Orebaugh, G. Ramirez, J. Burke, G. Morris, L. Pesce, and J. Wright, Wireshark & Ethereal Network Protocol Analyzer Toolkit,SYNGRESS,2007 R. Sharpe and E. Warnicke,Wireshark User s Guide, http://www.wireshark.org/download/docs/user-guidea4.pdf Wireshark,http://www.wireshark.org/ WinPcap (Windows 系 統 所 需 要 的 封 包 擷 取 程 式 ) 下 載 網 址 :http://www.winpcap.org/