1、ICMP重定向概念:
ICMP重定向技術,是用來提示主機改變自己的主機路由從而使路由路徑最優化的一種ICMP報文。其概念理解的要義是原主機路由不是最佳路由,而其默認網關提醒主機優化自身的主機路由而發送的報文。
最能說明ICMP重定向意義的典型拓撲如下:

2、ICMP重定向細節:
(1)報文格式:
| 幀首部 |
IP首部 |
ICMP重定向首部 |
ICMP重定向數據 |

ICMP重定向負載部分
| 類型:5 |
代碼:0(0~3) |
校驗和 |
| 建議使用的最優路由next-hop地址 |
||
| IP首部 |
||
| IP報文有效載荷的前8bytes |
||

代碼0~3代表的含義:
| 代碼 |
描述 |
| 0 |
網絡重定向 |
| 1 |
主機重定向 |
| 2 |
服務匹配條件下網絡重定向 |
| 3 |
服務匹配條件下主機重定向 |
·建議使用的最優路由地址:
路由器或其他網關類設備的接口地址。
·IP首部:
原ICMP報文IP報頭。
·IP報文有效載荷的前8bytes:
原ICMP報文中的類型、代碼、校驗、序列號等字段。

(2)發生條件:
·數據包的入接口和路由后的指定的出接口是同一個接口。
·數據包的源IP地址和該包應走的下一跳IP屬於同一網段。
·數據報非源路由的(這種情況應該比較少見了,源路由多見於Token Ring)。
·系統開啟重定向功能。
·受到ICMP重定向攻擊。
(3)系統響應:
·大部分windows系列OS會選擇添加一條主機路由作為默認動作。
·部分UNIX系列和UNIX-LIKE系列OS同樣選擇添加一條主機路由作為默認動作。
·部分UNIX系列和UNIX-LIKE系列OS以及一般而言絕大多數路由類網絡設備會忽略。
·Linux等可以作為路由器的OS針對ICMP重定向有着不同的標准動作選擇。
3、ICMP重定向應用:
(1)單純的提供路由優化選項建議。
(2)定向改變數據流傳輸路由路徑。
(3)通過優化路由改善服務的質量。
(4)進行非法的網絡攻擊入侵行為。
4、ICMP重定向攻擊:
從安全的角度來講,ICMP重定向報文沒有協議狀態檢查,以及合法性機制驗證,十分類似ARP報文,可以輕而易舉的進行欺騙攻擊。
當然不同的操作系統對於受到的ICMP重定向報文也會按照自己的一些標准進行過濾,例如Windows之接受來自其自身默認網關的ICMP重定向報文,其余來源ICMP重定向報文則被丟棄,但偽造網關發送報文十分容易。
ICMP攻擊可以達到的目的:流量的嗅探劫持、中間人代理權(這兩點差不多)
舉例說明:
·拓撲如下:

過程說明:
(1)正常時,user通過交換機Switch連接到網關設備Gateway,利用默認網關與跨網段的 服務器Server通信。
(2)異常情況下,攻擊者Attacker可以偽造網關向user發送ICMP重定向報文,可以結合 ARP欺騙技術,然后用戶user主機路由變成流量要通過Attacker來進行轉發通信。
(3)攻擊者可以截獲、提取、分析、修改、重放用戶user的數據包,造成多種安全威脅。
5、ICMP重定向防御:
(1)網關端:
·關閉ICMP重定向(no ip redirects)。
·變長子網掩碼划分網段。
·使用網絡控制列表(ACL)和代理。
(2)主機端:
可以使用防火牆等過濾掉ICMP報文,或使用反間諜軟件監控。
