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