设为首页 收藏本站
查看: 918|回复: 0

[经验分享] 通过iptables 修改数据包TTL,来隐藏traceroute 时的路由跳数

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-9 09:19:39 | 显示全部楼层 |阅读模式
原理
程序利用增加存活时间(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 -tmangle -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 TTLvalue)
       This module matches the time to livefield in the IP header.

       --ttl-eq ttl
              Matches the given TTL value.

       --ttl-gt ttl
              Matches if TTL is greater thanthe given TTL value.

       --ttl-lt ttl
              Matches if TTL is less than thegiven 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 fieldcan potentially be very dangerous, so it should be avoided at any cost.

       Don’t ever set or increment the value onpackets 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 specificvalue or range of values.

       [!] --length length[:length]


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-75359-1-1.html 上篇帖子: Linux 中 vi / vim 编辑器的简单介绍后续增加强大的功能 下篇帖子: Linux配置本地网络YUM源 数据包
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表