返回文章列表

解構網路封包:OSI模型與IPv4結構深度解析

本文深度解析網路封包的基礎理論,從開放系統互連(OSI)模型出發,逐層闡述數據從應用層到實體層的封裝過程。文章詳細拆解IPv4封包的標頭結構,解釋版本、存活時間(TTL)、協議等各欄位的具體功能與意義。透過理解封包生成與傳輸的底層機制,專業人士能更有效地進行網路監控、故障排除與滲透測試,彌合資訊科技與工業自動化領域的知識差距。

網路通訊 資訊安全

在工業控制系統(ICS)與資訊科技的交匯點,對網路流量的透徹理解是確保系統安全與穩定的基石。本章節從網路通訊最基本的單位——封包(Packet)切入,系統性地回顧其生成過程。我們將依循開放系統互連(OSI)模型的七層架構,探討數據如何被逐層封裝與處理,從應用層數據轉變為實體層的位元流。接著,文章聚焦於網際網路協議第四版(IPv4)的封包結構,詳細解析其標頭中的各個欄位,如來源位址、存活時間(TTL)與協議類型。掌握這些基礎知識是進行有效滲透測試的前提,更是診斷網路問題、優化通訊效能的關鍵能力。

第六章:封包深度解析

玄貓認為,在前一章中,我們已經了解了交換埠分析器(SPAN)和測試存取點(TAP),以及如何在實驗室環境中設定鏡像埠,並使用Wireshark、Tcpdump和TShark監聽工程軟體與Koyo Click可程式邏輯控制器(PLC)之間的流量。我們還探討了SPAN/鏡像和TAP在ICS環境中的應用。本章將進一步深入探討程式與PLC之間的通訊線路,並使用Wireshark更詳細地研究這些封包。

封包分析的重要性:

  • 滲透測試成功關鍵:如前一章所述,擷取和分析流量對於滲透測試的成功至關重要。
  • 環境理解:對環境、資產、活動和協議的透徹理解同樣關鍵。
  • 提取關鍵資訊:本章將引導您如何擷取和分析流量,以提取確保未來成功的關鍵資訊。

本章結構:

本章將涵蓋以下主要議題:

  • 封包的生成過程:了解封包如何在網路中形成。
  • 網路上的封包擷取:實際操作如何在網路中擷取封包。
  • 檢查封包以獲取關鍵資訊:學習如何從封包中提取有價值的資訊。

技術要求:

為了完成本章的學習,您需要準備以下工具:

  • Wireshark/TShark:已安裝。
  • Netresec工業PCAP檔案:從指定連結下載三個PCAP檔案,我們將在「分析封包以獲取關鍵資訊」部分使用它們。

封包的生成過程:

為了更好地理解網路中發生的情況,我們將快速回顧「封包101」。

  • 封包本質:封包是位元組大小的數據中繼,用於將數據從源資產傳輸到目標資產。
  • TCP/IP協議:例如,傳輸控制協議(TCP)和網際網路協議(IP)組成了著名的TCP/IP術語,它們是網際網路運行的基礎。
  • 數據重組:這些數據中繼在經過一系列交換器後會被重新組裝,從而使我們能夠發送電子郵件、瀏覽網站、下載軟體補丁、串流媒體、監控電梯、控制火車、製造產品、生產能源以及執行許多其他有趣且動態的活動。
  • OSI模型:要完全理解封包及其工作原理,了解封包如何在開放系統互連(OSI)模型的各層之間移動至關重要。

此圖示:封包生成與OSI模型概念

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

rectangle "應用層 (Layer 7)" as app_layer
rectangle "表示層 (Layer 6)" as presentation_layer
rectangle "會話層 (Layer 5)" as session_layer
rectangle "傳輸層 (Layer 4)" as transport_layer
rectangle "網路層 (Layer 3)" as network_layer
rectangle "資料連結層 (Layer 2)" as data_link_layer
rectangle "實體層 (Layer 1)" as physical_layer

cloud "數據 (Data)" as data
cloud "封包 (Packet)" as packet
cloud "幀 (Frame)" as frame
cloud "位元 (Bits)" as bits

data --> app_layer : 應用數據
app_layer --> presentation_layer : 數據格式化
presentation_layer --> session_layer : 會話管理
session_layer --> transport_layer : 分段 (Segments)
transport_layer --> network_layer : 封裝 (Datagrams/Packets)
network_layer --> data_link_layer : 成幀 (Frames)
data_link_layer --> physical_layer : 位元傳輸

packet <--> network_layer
frame <--> data_link_layer
bits <--> physical_layer

note right of app_layer
用戶與應用程式互動的層次。
end note

note right of transport_layer
TCP/UDP協議在此層運作,
負責數據的可靠傳輸或快速傳輸。
end note

note right of network_layer
IP協議在此層運作,
負責邏輯定址和路由。
end note

note right of physical_layer
實際的電氣或光學信號傳輸。
end note

@enduml

看圖說話:

此圖示展示了封包生成與OSI模型概念。它描繪了數據從應用層(Layer 7)開始,逐層向下傳輸的過程。在每一層,數據都會被添加特定的標頭和尾部,並轉換為不同的形式。例如,在傳輸層(Layer 4),數據被分段為Segments,並由TCP/UDP協議處理。在網路層(Layer 3),Segments被封裝成Datagrams或Packets,並由IP協議負責邏輯定址和路由。在資料連結層(Layer 2),Packets被轉換為Frames,最終在**實體層(Layer 1)位元(Bits)**的形式進行實際的電氣或光學信號傳輸。理解這個分層模型對於掌握封包的結構、傳輸機制以及網路故障排除和安全分析至關重要。

OSI模型深度解析與IPv4封包結構

玄貓認為,理解網路通訊的基礎在於掌握開放系統互連(OSI)模型。這個模型在1980年代中期被開發並採用,旨在建立一個標準框架,描述系統如何透過網路進行互動的七個層次。

此圖示:OSI模型分層

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

rectangle "應用層 (Application Layer)" as L7
rectangle "表示層 (Presentation Layer)" as L6
rectangle "會話層 (Session Layer)" as L5
rectangle "傳輸層 (Transport Layer)" as L4
rectangle "網路層 (Network Layer)" as L3
rectangle "資料連結層 (Data Link Layer)" as L2
rectangle "實體層 (Physical Layer)" as L1

L7 -[hidden]-> L6
L6 -[hidden]-> L5
L5 -[hidden]-> L4
L4 -[hidden]-> L3
L3 -[hidden]-> L2
L2 -[hidden]-> L1

note top of L7
**應用層 (Layer 7)**
用戶直接互動的軟體介面,如SCADA、HMI。
協議:HTTP, FTP, DNS。
end note

note top of L6
**表示層 (Layer 6)**
數據編碼、加密與解密,確保數據可被應用層理解。
end note

note top of L5
**會話層 (Layer 5)**
建立、管理和終止設備間的通訊會話,確保數據流暢。
end note

note top of L4
**傳輸層 (Layer 4)**
協商速度、數據速率、流量控制和錯誤檢查。
協議:TCP, UDP。
end note

note top of L3
**網路層 (Layer 3)**
使用IP位址在源和目標節點之間路由數據。
end note

note top of L2
**資料連結層 (Layer 2)**
邏輯鏈路控制 (LLC) 和媒體存取控制 (MAC),
實現節點間直接通訊。交換器在此層運作。
end note

note top of L1
**實體層 (Layer 1)**
物理連接,如乙太網路線或無線網卡,傳輸原始位元流。
end note

@enduml

看圖說話:

此圖示清晰地展示了OSI模型的分層結構,從最上層的應用層到底層的實體層。每一層都承擔著特定的功能,共同協作以實現網路通訊。應用層是使用者直接互動的介面,例如SCADA和HMI系統。表示層負責數據的編碼、加密和解密。會話層建立和管理設備間的通訊會話。傳輸層處理數據的傳輸可靠性、流量控制和錯誤檢查,TCP和UDP協議在此層運作。網路層負責使用IP位址進行數據路由。資料連結層處理節點間的直接通訊,交換器主要在此層運作。最底層的實體層則涉及實際的物理連接和位元傳輸。理解這些層次如何協同工作,對於深入分析網路行為和封包結構至關重要。

各層次的詳細解釋:

  • 應用層(Layer 7):允許使用者直接與軟體互動,例如SCADA介面、人機介面(HMI)、數據歷史庫等。相關協議包括HTTP、FTP和DNS。
  • 表示層(Layer 6):負責數據編碼、加密和解密,確保數據能從會話層傳輸到應用層並被正確理解。
  • 會話層(Layer 5):當RTU、PLC、流量電腦、控制器、氣相層析儀伺服器等設備需要相互連接時,會建立通訊管道,稱為「會話」。此層負責管理這些會話的建立、維護和終止。
  • 傳輸層(Layer 4):協商速度、數據速率、流量控制和錯誤檢查。TCP和UDP協議在此層運作。
  • 網路層(Layer 3):使用IP位址在網路的源和目標節點之間路由數據。
  • 資料連結層(Layer 2):包含邏輯鏈路控制(LLC)和媒體存取控制(MAC)兩個子層,促進節點間的直接通訊。大多數網路交換器在此層運作。
  • 實體層(Layer 1):指物理連接,例如插入乙太網路埠的纜線或在網路上互動的無線網卡。

IPv4封包結構

玄貓認為,在對OSI模型及其各層之間的互動有了基本了解之後,我們將概述IPv4封包的結構。理解這些基本資訊對於從事IT安全或自動化行業的人員都至關重要,它有助於彌合兩個領域之間的知識鴻溝。

IPv4封包的整體設計:

IPv4封包由多個標頭欄位組成,這些欄位提供了路由和處理封包所需的重要資訊。

IPv4封包標頭欄位解析:

  • 版本(Version):通常為數字「4」,表示這是最常見的IP版本。
  • IP標頭長度(IP Header Length):指定IP標頭的長度,以32位元為增量單位。
  • 服務類型(Type of Service, ToS):用於確定服務的品質或優先級。
  • 總長度(Total Length):指定封包的總大小,以位元組為單位。
  • 識別(Identification):網路使用此欄位來重建任何被分段的封包。
  • 標誌(Flags):控制分段。包含三個位元:第一個為0,第二個為「不分段」(Don’t Fragment, DF)位元,第三個為「更多分段」(More Fragments, MF)位元。
  • 分段偏移(Fragment Offset):確定封包分段在原始封包中的位置。
  • 存活時間(Time To Live, TTL):此欄位作為循環預防機制,每經過一個路由器就減1,直到歸零則丟棄封包。
  • 協議(Protocol):用於通訊正在使用的協議。TCP的值為6,UDP的值為17。
  • 標頭檢查和(Header Checksum):儲存一個檢查和,用於處理錯誤。
  • 來源IP位址(Source IP Address):儲存來源IP位址。
  • 目標IP位址(Destination IP Address):儲存目標IP位址。
  • 選項(Options):通常不使用此欄位。
  • 數據(Data):將傳輸到節點的資訊。

此圖示:IPv4封包結構

@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_

skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100

rectangle "IPv4封包結構" {
component "版本 (4 bits)" as version
component "IP標頭長度 (4 bits)" as ihl
component "服務類型 (8 bits)" as tos
component "總長度 (16 bits)" as total_length
component "識別 (16 bits)" as identification
component "標誌 (3 bits)" as flags
component "分段偏移 (13 bits)" as fragment_offset
component "存活時間 (8 bits)" as ttl
component "協議 (8 bits)" as protocol
component "標頭檢查和 (16 bits)" as header_checksum
component "來源IP位址 (32 bits)" as source_ip
component "目標IP位址 (32 bits)" as destination_ip
component "選項 (0-320 bits)" as options
component "數據 (可變長度)" as data
}

version -[hidden]-> ihl
ihl -[hidden]-> tos
tos -[hidden]-> total_length
total_length -[hidden]-> identification
identification -[hidden]-> flags
flags -[hidden]-> fragment_offset
fragment_offset -[hidden]-> ttl
ttl -[hidden]-> protocol
protocol -[hidden]-> header_checksum
header_checksum -[hidden]-> source_ip
source_ip -[hidden]-> destination_ip
destination_ip -[hidden]-> options
options -[hidden]-> data

note right of version
通常為 '4'
end note

note right of ihl
IP標頭長度
end note

note right of tos
服務品質/優先級
end note

note right of total_length
封包總大小 (位元組)
end note

note right of identification
重建分段封包
end note

note right of flags
分段控制 (DF, MF)
end note

note right of fragment_offset
分段在原始封包中的位置
end note

note right of ttl
循環預防機制
end note

note right of protocol
使用協議 (TCP=6, UDP=17)
end note

note right of header_checksum
錯誤處理
end note

note right of source_ip
來源IP位址
end note

note right of destination_ip
目標IP位址
end note

note right of options
通常不使用
end note

note right of data
傳輸到節點的資訊
end note

@enduml

看圖說話:

此圖示詳細描繪了IPv4封包的結構,展示了其標頭中包含的各個欄位及其相對位置和大小。從版本IP標頭長度服務類型來源IP位址目標IP位址以及數據部分,每個欄位都承載著封包在網路中正確傳輸和處理的關鍵資訊。例如,TTL(存活時間)欄位用於防止封包在網路中無限循環,而協議欄位則指示了封包中承載的數據屬於哪種上層協議(如TCP或UDP)。理解這些欄位的具體功能,對於網路故障診斷、安全分析以及開發網路應用程式都至關重要,它揭示了網路通訊的底層機制。

結論:

深入剖析本章所闡述的網路通訊基礎後,我們得以洞見資安專業能力的核心構成。許多實務工作者常遇到的瓶頸,並非工具操作不熟練,而是對OSI模型、封包結構等底層原理的理解不足,導致在面對複雜的ICS/OT網路異常時,僅能見樹不見林,難以進行根本原因分析。本章的價值在於將抽象的理論(OSI七層架構)與具體的數據結構(IPv4標頭)緊密結合,它揭示了唯有將這份基礎知識內化為分析直覺,才能真正駕馭Wireshark等工具,從看似雜亂的流量中精準提煉出關鍵情資。

展望未來,隨著IT與OT的深度融合,網路邊界日益模糊,這種跨越應用層到實體層的垂直知識體系,將成為區分資安專家與普通技師的關鍵分水嶺。能夠流利解讀封包語言的專家,才能在融合後的複雜環境中掌握診斷與防禦的主動權。

玄貓認為,回歸並精通這些網路通訊的「第一原理」,並非耗時的學術探究,而是對自身專業價值的最高效投資,更是奠定未來在工業控制系統安全領域取得卓越成就的穩固基石。