第二章 背景知識
2.4 封包攔截技術
任兩台電腦間,要透過網路互相傳送資料時,會先將資料交由網路卡封裝打包,然 後透過網路線或電話線傳送至對方,對方電腦再藉由網路卡接收資料。在正常的情況 下,我們傳送給對方的資料只有對方可以收到,但由於資料在傳送過程中是完全開放的
(Broadcast),也就是每個人都可以透過某些技術就可以收到原本不屬於自己的網路封 包,以下將介紹這項技術原理。
2.4.1 封包攔截原理
網路模型架構(OSI,Open System Interconnection)將網路通訊功能劃分為七層模 型,各司其職,互相依存、合作。這七層分別為:應用層(Application Layer)、表示層 (Presentation Layer)、會話層(Session Layer)、傳輸層(Transport Layer)、網路層(Network Layer)、資料連結層(Data Link Layer)及物理層(Physical Layer)。而 TCP/IP 體系也同樣遵 循這七層標準,只不過在某些 OSI 功能上進行了壓縮,所以實際上我們打交道的 TCP/IP 僅僅有四層而已,網路上的分層結構決定了在各層上的協議分佈及功能實現,從而決定
Tracker
P
P
P P
P P
了各層上網路設備的使用。
圖 16TCP/IP 層級模型
乙太網路(Ethernet)和 TCP/IP 可以說是相互相成的,兩者的關係幾乎是密不可分,
乙太網路在網路存取層提供物理上的網路連線功能,而 TCP/IP 工作在上層,使用 32 位元的 IP 位址,乙太網則使用 48 位元的 MAC 位址,兩者間使用 ARP 和 RARP 協議進 行相互轉換。從我們圖 16 TCP/IP 的模型圖中可以清楚的看到兩者的關係。
載波監聽/衝突檢測(CSMA/CD)技術被普遍的使用在乙太網路中,所謂載波監聽是 指在乙太網路中的每台站點(Host)都具有同等的權利,在傳輸自己的資料時,首先監 聽傳輸通道是否空閒,如果空閒,就傳輸自己的資料,如果通道被佔用,就等待通道空 閒。而衝突檢測則是為了防止發生兩個站點同時監測到網路沒有被使用時而產生衝突。
乙太網路採用廣播機制,所有與網路連接的工作站都可以看到網路上傳遞的資料。
因為在乙太網路中,所有的通訊都是廣播的,也就是說通常在同一個網段的所有網 路介面都可以訪問在物理媒體上傳輸的所有資料,而每一個網路介面都有一個唯一的硬 體位址,這個硬體位址也就是網卡的 MAC 位址,大多數系統使用 48 bit 的位址,這個 位址用來表示網路中的每一個設備,一般來說每一塊網卡上的 MAC 位址都是不同的,
每家網卡製造公司會得到一段位元址,然後用這段位址分配給其生產的每個網卡一個位 址。在硬體位址和 IP 位址間使用 ARP 和 RARP 協議進行相互轉換。 在正常的情況下,
一個網路介面應該只回應這樣的兩種封包資料:
1.與自己硬體位址相匹配的封包資料。
(promiscuous mode),在這種模式下工作的網卡能夠接收到一切通過它的資料,而不管 實際上資料的目的地址是不是他。這實際上就是我們封包攔截的基本原理,讓網卡接收 一切他所能接收的資料。
2.4.2 封包抓取函式庫(Libpcap)
Libpcap 全名是 Packet Capture Library,為 Unix/Linux 平臺下的網路封包攔截函式 庫,由 Berkeley 大學 Lawrence Berkeley National Laboratory 研究院的 Van Jacobson、Craig Leres 和 Steven McCanne 編寫,目前的最新版本為 0.9。大多數網路監控軟體都以它為 基礎。Libpcap 可以在絕大多數類 Unix 平臺下工作,此函數庫提供的 C 函數介面可用於 需要截取經過網路介面封包的系統開發上。該函數庫支援 Linux、Solaris 和 BSD 系統平 臺。利用 Libpcap 函數庫來完成一個網路封包截取程式主要可以分成五個步驟:
(1) 首先要決定監聽網路介面卡名稱,在 Linux 系統上通常是 eth0,在 BSD 系統中就是 x11,在這個步驟中我們也可以利用 Libpcap 所提 供的函數來取得預設的網路卡名稱。
(2) 在這個步驟中主要是初始化一個封包監聽會話(sniffing session),
藉由 Libpcap 所提供的函數,我們可以設定我們所要監聽的網路介 面卡。
(3) 在第三步驟中,定訂封包過濾規則,例如我們只對 TCP 且通訊埠 為 23 的封包感興趣,則我們可以設定如下規則字串。
〝 tcp and port 23 〞
(4) 在步驟 3 所設定的過濾規則,必須透過 BPF compiler 編譯,然後利 用 Libpcap 提供的函數套用在特定的封包監聽會話中。
(5) 當封包流經我們監聽的網路卡時,若符合我們步驟 3 所設定的過濾 條件,則會被截取交由後端程式進行分析,如不符則會乎忽略捨棄。
圖 17 網路資料截獲流程