ICMP介紹
ICMP(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議簇的一個子協議,用於在IP主機、路由器之間傳遞控制訊息。控制訊息是指網路通不通、主機是否可達、路由是否可用等網路本身的訊息。這些控制訊息雖然並不傳輸使用者資料,但是對於使用者資料的傳遞起著重要的作用。
ICMP重定向
ICMP重定向報文是ICMP控制報文中的一種。是用來提示主機改變自己的主機路由從而使路由路徑最優化的一種ICMP報文。其概念理解的要義是原主機路由不是最佳路由,而其預設閘道器提醒主機優化自身的主機路由而傳送的報文。
ICMP重定向原理
ICMP重定向資訊是路由器向主機提供實時的路由資訊,當一個主機收到ICMP重定向資訊時,它就會根據這個資訊來 更新自己的路由表。由於缺乏必要的合法性檢查,如果一個黑客想要被攻擊的主機修改它的路由表,黑客就會傳送 ICMP重定向資訊給被攻擊的主機,讓該主機按照黑客的要求來修改路由表。
實驗環境:
攻擊機kali: 192.168.43.103 閘道器192.168.43.1
被攻擊機 centos 7:192.168.43.190 閘道器192.168.43.1
在此前需要開啟攻擊機的路由轉發功能,此處使用kali作為攻擊機
在etc/sysctl.conf 將轉發引數改為“1”
正常情況下,被攻擊機器ping baidu.com返回如下所示
發起攻擊
netwox 86 -f “host {被攻擊主機ip地址}” -g “{新指定的閘道器ip地址}” -i “{當前閘道器ip地址}”
netwox 86 -f "host 192.168.43.190" -g "192.168.43.103" -i "192.168.43.1"
這句話的意思是,嗅探網路中來自主機192.168.43.190的資料包,一旦出現,就以閘道器192.168.43.103的名義,向資料包的源地址傳送一個ICMP重定向報文,使之使用192.168.43.103作為預設的路由。
被攻擊後,被攻擊機器的資料包被重定向到了指定的閘道器,如下圖所示
紅色框中:
第二行:從localhost發出的資料被重定向到了攻擊機192.168.32.103
第三行:由於攻擊機開啟了IPV4轉發,攻擊機將資料包又重定向到了真正的閘道器192.168.32.1
關閉攻擊機的IP轉發,再進行測試
在etc/sysctl.conf 將轉發引數改為“0”
執行攻擊命令 netwox 86 -f "host 192.168.43.190 " -g "192.168.43.103" -i "192.168.43.1"
執行ping baidu.com檢視結果,可以看到雖然將目標機器與閘道器通訊的流量重定向到了192.168.43.103(攻擊機IP),但攻擊機沒有對流量進行轉發
解決方法:
忽略icmp重定向
Centos發行版本的系統可修改 /etc/sysctl.conf新增如下內容
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0