您好,登錄后才能下訂單哦!
原理
程序利用增加存活時間(TTL)值來實現其功能的。每當數據包經過一個路由器,其存活時間就會減1。當其存活時間是0時,主機便取消數據包,并發送一個ICMP TTL數據包給原數據包的發出者。
程序發出的首3個數據包TTL值是1,之后3個是2,如此類推,它便得到一連串數據包路徑。注意IP不保證每個數據包走的路徑都一樣。
?
實現
主叫方首先發出 TTL=1 的 UDP 數據包,第一個路由器將 TTL 減1得0后就不再繼續轉發此數據包,而是返回一個 ICMP 超時報文,主叫方從超時報文中即可提取出數據包所經過的第一個網關地址。然后又發出一個 TTL=2 的 UDP 數據包,可獲得第二個網關地址,依次遞增 TTL 便獲取了沿途所有網關地址。
需要注意的是,并不是所有網關都會如實返回 ICMP 超時報文。出于安全性考慮,大多數防火墻以及啟用了防火墻功能的路由器缺省配置為不返回各種 ICMP 報文,其余路由器或交換機也可被管理員主動修改配置變為不返回 ICMP 報文。因此 Traceroute 程序不一定能拿全所有的沿途網關地址。所以,當某個 TTL 值的數據包得不到響應時,并不能停止這一追蹤過程,程序仍然會把 TTL 遞增而發出下一個數據包。一直達到默認或用參數指定的追蹤限制(maximum_hops)才請勿追蹤。
依據上述原理,利用了 UDP 數據包的 Traceroute 程序在數據包到達真正的目的主機時,就可能因為該主機沒有提供 UDP 服務而簡單將數據包拋棄,并不返回任何信息。為了解決這個問題,程序設計者使用了一個技巧,因 UDP 協議規定端口號必須小于 30000 ,他故意違反協議設置了一個大于 30000 的端口號,所以目標主機收到數據包后唯一能做的事就是返回一個“端口不可達”的 ICMP 報文,于是主叫方就將端口不可達報文當作跟蹤退出的標志。
?
?
隱藏此后的4跳路由
Iptables -t mangle -A PREROUTING -m ttl --ttl-gt 1 -j TTL --ttl-inc 4
在PREROUTING鏈上抓數據包只要是TTL大于1的 ?將TTL加4.
?
驗證配置
iptables -t mangle -nvL
Chain PREROUTING (policy ACCEPT 684G packets, 41T bytes)
?pkts bytes target???? prot opt in???? out???? source?????????????? destination????????
?684G?? 41T TTL??????? all? --? *????? *?????? 0.0.0.0/0??????????? 0.0.0.0/0?????????? TTL match TTL > 1 TTL increment by 4
?
?
Ttl? (match TTL value)
?????? This module matches the time to live field in the IP header.
?
?????? --ttl-eq ttl
????????????? Matches the given TTL value.
?
?????? --ttl-gt ttl
????????????? Matches if TTL is greater than the given TTL value.
?
?????? --ttl-lt ttl
????????????? Matches if TTL is less than the given TTL value.
?
?TTL? (change TTL value)
?????? This? is? used? to modify the IPv4 TTL header field.? The TTL field determines how many hops (routers) a packet can traverse
?????? until it’s time to live is exceeded.
?
?????? Setting or incrementing the TTL field can potentially be very dangerous, so it should be avoided at any cost.
?
?????? Don’t ever set or increment the value on packets that leave your local network!? mangle table.
?
?????? --ttl-set value
????????????? Set the TTL value to ‘value’.
?
?????? --ttl-dec value
????????????? Decrement the TTL value ‘value’ times.
?
?????? --ttl-inc value
????????????? Increment the TTL value ‘value’ times.
禁止PC機上tracert
?iptables -A FORWARD? -p icmp -m length --length 92 -j DROP
length
?????? This? module? matches? the? length of the layer-3 payload (e.g. layer-4
?????? packet) of a packet against a specific value or range of values.
?
?????? [!] --length length[:length]
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。