網路安全 網路傳輸
深入的傳輸層和連結層
計算機系統通常需要與其他系統進行通訊;這是透過將它們置於同一網路上來實現的。有許多不同的技術可以使計算機在不同型別的網路上進行通訊。在本節中,我們將深入探討大多數網路中使用的協議。
我們使用的網路由多個協議組成,其中一些在本課程中有所介紹。網路中還有許多其他協議在使用,所有這些協議都有可能帶來安全風險。
TCP (“傳輸控制協議”)
就像 IP 使用 IP 地址進行定址一樣,TCP 和 UDP 也使用埠。埠,表示為 0 到 65535 之間的數字,決定了哪個網路服務應該處理請求。
在下面的圖片中,我們可以看到一個 TCP 資料包,以及任何人在網路上檢查流量時會看到它的樣子。
我們可以看到圖形顯示了源埠和目標埠各 16 位,UDP 也一樣。序列號和確認號用於三次握手和可靠地傳輸資料。我們還可以看到用於指示資料包型別的控制位。其他頭部也起著重要作用,但超出了安全課程的範圍。
TCP 三次握手
TCP 使用三次握手來允許兩個系統進行通訊。握手使用 32 位 PRNG(“偽隨機數生成器”)數字來建立握手。握手強制雙方都打算進行通訊。
這是一張說明圖
TCP 如何進行通訊的說明
- 客戶端透過傳送一個頭部中的控制位 SYN 設定的資料包來啟動通訊,在序列號欄位中包含一個 PRNG 數字,並指定目標埠。網路層(第 3 層)允許資料包傳送到遠端系統。此資料包稱為 SYN 資料包。
- 伺服器接收資料包,讀取來自客戶端的序列號並構造響應。響應在確認欄位中包含客戶端的序列號加上 1。此外,響應包含 SYN 和 ACK 控制位,序列號設定為伺服器的 PRNG 數字。此資料包稱為 SYN/ACK 資料包。
- 客戶端接收 SYN-ACK 資料包,併為了完成握手,返回一個設定了 ACK 控制位的資料包。最後一個數據包還透過在頭部的確認欄位中返回伺服器的 PRNG 數字來確認它。
這個過程通常被稱為 SYN、SYN/ACK、ACK 三次握手。
在下面的圖片中,我們可以看到兩個主機正在執行三次握手:
螢幕截圖顯示了使用 Wireshark 工具捕獲和檢查資料包。Wireshark 是一個非常有用的實用工具,因為它允許我們視覺化資料包並進行更深入的檢查。螢幕截圖顯示了代表三次握手的 3 個數據包。注意源列和目標列,它們代表正在通訊的兩個方。Info 欄位顯示源埠和目標埠,包括(方括號內)SYN、SYN/ACK 和 ACK。
下一個螢幕截圖顯示了三次握手後各方之間通訊的資料。TCP 資料包中的資料在圖片底部附近被高亮顯示。
截圖顯示了一條發給 W3School 學生的問候。您能看到它嗎?
欺騙流量
如今,網路對任何人以他們想要的方式建立資料包幾乎沒有任何限制。任何人都可以建立具有任意頭部欄位值的任意資料包。這被稱為欺騙,允許攻擊者代表他人傳送流量。
TCP 在協議中內建了安全性,但這依賴於 PRNG(“偽隨機數生成器”)數字生成器的強度。如果通訊雙方的序列號可以被猜測,TCP 的安全性可能會受到損害,因為攻擊者可以透過 TCP 進行欺騙通訊。
許多協議很容易被欺騙,但 TCP 提供了一些抵抗能力。UDP 和 ICMP 等協議不提供類似的保護。
欺騙資料包通常由具有 root / 系統許可權的攻擊者執行,即作業系統上的最高許可權。原因是作業系統強制使用 API,迫使使用者遵守 RFC(“請求意見書”)中指定的通訊規則。如果攻擊者沒有最高許可權,他們將無法在網路上建立自己的資料包。
UDP (“使用者資料報協議”)
UDP 用於不需要 TCP 的彈性和安全性的流量,通常是 VOIP 等應用程式,但在現代世界中,越來越多的應用程式使用 UDP 來支援具有內建彈性和安全性的快速資料包傳輸,這些功能已整合到 OSI 模型的更高層;QUIC 就是一個例子。
檢視 UDP 頭部,我們可以看到相同的源埠和目標埠,但沒有序列號或控制位。該協議的開銷少得多,從而實現了更快的資料傳輸。
由於 UDP 沒有三次握手等功能,UDP 很容易被欺騙。
交換式網路
系統透過交換機連線到 LAN(“區域網”)。交換機使用 MAC(“媒體訪問控制”)地址進行定址,而不是更廣為人知的 IP 地址。交換機在區域網上傳輸流量,例如您的家庭網路或組織內的分支機構。MAC 地址被設計為唯一的,但只要管理員有許可權,任何人都可以更改他們的 MAC 地址。
MAC 地址由 6 個八位位元組定義,例如:FC:F8:AE:12:34:56
前三個八位位元組代表製造通訊裝置的組織,稱為 OUI(“組織唯一識別符號”)。上面的 MAC 地址分配給了 Intel 公司。您可以在許多地方搜尋 MAC 地址,例如:https://www.adminsub.net/mac-address-finder/intel。
後三個八位位元組由製造商確定。
ARP
ARP(“地址解析協議”)是允許計算機系統知道哪個 MAC 地址屬於哪個 IP 地址的協議。如果流量需要路由,計算機系統將把流量轉發到系統上配置的預設閘道器。
ARP 像 DNS 一樣,是一種將一個地址解析為另一個地址的協議。每當系統嘗試與 LAN 上的 IP 地址通訊時,它都會檢查其 ARP 快取,以檢視最近是否解析過。
您可以檢查自己的 ARP。只需在 Linux 或 Windows 上執行命令 arp -a
。這會顯示您的系統最近與哪些系統通訊過。
Alice:有人知道 192.168.10.10 的 MAC 地址嗎?
Bob:當然了 Alice,這是我的 MAC 地址。
VLAN(“虛擬區域網”)
VLAN,通常稱為私有 VLAN,是一種交換機將標籤(或 VLAN ID)嵌入幀中的方式。多個交換機然後可以確保 LAN 上的計算機系統只能與某些其他系統通訊,即與具有相同 VLAN ID 的其他系統通訊。