112年關務三等資通網路
一、阻斷服務 (Denial of Service, DoS) 攻擊,是一種耗盡目標主機運算資源的攻擊手法。在 TCP/IP 協定疊 (protocol stack) 中,片段 (fragmentation) 功能是用來重組傳輸資料。然而,利用片段功能可達到阻斷服務攻擊效果。請說明 fragmentation 功能和如何利用此功能達到 DoS 攻擊之效果。(25分) |
答:
(一)fragmentation功能
1.功能:
(1)主要是處理封包的大小問題。由於不同的網路可能有不同的最大傳輸單位,當封包的大小超過該網路的 MTU 時,封包需要被分割成較小的分段才能進行傳輸。
(2)每個分段都包含了一部分的原始資料,以及一些標頭資訊 (如分段的順序、總分段的數量等)。
(3)這些分段獨立傳送,並且在達到目標主機時被重組,還原為原始的資料包。如果一個分段在傳輸過程中遺失,那麼整個資料包都需要被重新傳送。這種分割和重組的過程由 IP 層來負責。
2.舉例:
(1)如果封包經過路徑的 MTU 減小了,那麼分段可能會被再次分段。例如一個4,500 bytes 的資料負載被封裝進了一個沒有選項的 IP 封包 (即總長為4,520 bytes),並且在 MTU 為2,500位元組的鏈路上傳輸,那麼它會被分割成下兩個分段:
分段 |
大小 (bytes) |
標頭大小 (bytes) |
資料大小 (bytes) |
標記 更多分段 |
分段偏移量 (8 bytes) |
1 |
2,500 |
20 |
2,480 |
1 |
0 |
2 |
2,040 |
20 |
2,020 |
0 |
310 |
保留資料大小為2,480 bytes + 2,020 bytes = 4,500 bytes。偏移量是0和 0+2,480/8 = 310。
(2)當轉送到 MTU 為 1,500 bytes 的鏈路時,每個分段被分成兩個分段:
分段 |
大小 (bytes) |
標頭大小 (bytes) |
資料大小 (bytes) |
標記 更多分段 |
分段偏移量 (8 bytes) |
1 |
1,500 |
20 |
1,480 |
1 |
0 |
2 |
1,020 |
20 |
1,000 |
1 |
185 |
3 |
1,500 |
20 |
1,480 |
1 |
310 |
4 |
560 |
20 |
540 |
0 |
495 |
同樣,保留資料大小為1,480+1,000 = 2,480,1,480+540 = 2,020。同樣在這種情況下,對於所有帶有1的分段,更多分段 (More Fragments) 保持為1,對於到達的最後一個片段,它照常工作,就是 MF 位元只在最後一個片段中設置為0。當然,識別碼在所有重新分段的片段中繼續具有相同的值。這樣,即使分段被重新分段,接收方也知道它們最初都是從同一個封包開始的。
(3)最後一個偏移量和最後一個資料大小用於計算總資料大小:
495×8+540 = 3,960+540 = 4,500。
(二)如何利用fragmentation功能達到DoS攻擊的效果
1.惡意使用者可以利用分段功能產生大量的資料分段,然後將其傳送到目標主機。 這將導致目標主機需要消耗大量的運算資源來處理這些資料分段,從而造成運算資源的耗盡。
2.攻擊者可以通過傳送不完整或錯誤的資料分段來進行攻擊。例如攻擊者可以將一個封包分割成多個分段,然後只傳送部分分段,或者故意修改分段的順序。當目標主機嘗試將這些分段重組成原始資料包時,將會因為缺少部分資料或無法識別資料順序而失敗 (類似拼圖),進一步消耗運算資源。
3.攻擊者還可以利用 Teardrop attack 的方法進行攻擊。攻擊者會將資料分段的重組偏移值 (reassembly offset) 設定成互相重疊或者錯誤的值,使得目標主機在嘗試重組這些片段時產生問題,導致系統崩潰或重啟。透過這些方法,攻擊者可以利用片段功能進行阻斷服務攻擊,耗盡目標主機的運算資源。
4.防止攻擊的策略:
(1)限制分段的數量和大小:
網路系統可以限制一次可以接收的資料分段的數量和每個分段的大小。即使有人嘗試傳送大量或過大的分段來進行攻擊,系統可以拒絕接收。
(2)檢查並丟棄不完整或錯誤的資料分段:
網路系統可以檢查接收到的每個資料分段,如果發現有任何問題,就直接丟棄,不再嘗試去重組它。
(3)使用防火牆和入侵檢測系統來檢測和阻止潛在的攻擊:
防火牆和入侵檢測系統可以檢查所有進來的資料分段,並且阻止那些可能是攻擊的分段。