一、什么是TTL TTL(Time To Live,生存时间)是IP协议包中的一个值,当我们使用Ping命令进行网络连通测试或者是测试网速的时候,本地计算机会向目的主机发送数据包,但是有 的数据包会因为一些特殊的原因不能正常传送到目的主机,如果没有设置TTL值的话,数据包会一直在网络上面传送,浪费网络资源。数据包在传送的时候至少会 经过一个以上的路由器,当数据包经过一个路由器的时候,TTL就会自动减1,如果减到0了还是没有传送到目的主机,那么这个数据包就会自动丢失,这时路由 器会发送一个ICMP报文给最初的发送者。举个例子,如果一个主机的TTL是64,那么当它经过64个路由器后还没有将数据包发送到目的主机的话,那么这个数据包就会自动丢弃。 二、如何通过TTL来判断目的主机的操作系统类型 不同的操作系统的默认TTL值是不同的,可以通过TTL值来判断主机的操作系统,但是当用户修改了TTL值的时候,就会误导我们的判断,所以这种判断方式也不一定准确。下面是默认操作系统的TTL: WINDOWS NT/2000 TTL:128 WINDOWS 95/98 TTL:32 UNIX TTL:255 LINUX TTL:64 WIN7 TTL:64 我们先来看两个例子: 例1: D:\Documents and Settings\hx>ping 61.152.93.131 Pinging 61.152.93.131 with 32 bytes of data: Reply from 61.152.93.131: bytes=32 time=21ms TTL=118 Reply from 61.152.93.131: bytes=32 time=19ms TTL=118 Reply from 61.152.93.131: bytes=32 time=18ms TTL=118 Reply from 61.152.93.131: bytes=32 time=22ms TTL=118 Ping statistics for 61.152.93.131: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss Approximate round trip times in milli-seconds: Minimum = 18ms, Maximum = 22ms, Average = 20ms 例2: D:\Documents and Settings\hx>ping 61.152.104.40 Pinging 61.152.104.40 with 32 bytes of data: Reply from 61.152.104.40: bytes=32 time=28ms TTL=54 Reply from 61.152.104.40: bytes=32 time=18ms TTL=54 Reply from 61.152.104.40: bytes=32 time=18ms TTL=54 Reply from 61.152.104.40: bytes=32 time=13ms TTL=54 Ping statistics for 61.152.104.40: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss Approximate round trip times in milli-seconds: Minimum = 13ms, Maximum = 28ms, Average = 19ms 例1里面的TTL值是118,比较接近128,所以我们可以初步判断这台机器的操作系统是Windows操作系 统,128-118=10,所以它经过了10个路由器(不包含本机路由器)到达目的主机。例2中我们可以看到TTL值是54,比较接近64,所以可以判 断出这台机器使用的是Linux的操作系统,64-54=10,所以一共经过了10个路由器(不包含本机路由器)。有人也许会问为什么第二个例子中不认为它的TTL默认值是128,然后经过了74个路由器,所以128-74=54呢?首先,路由器在选择路径的时候会选择最佳的路由路径,当然,如果你想知道它经过了哪些路由器的话,可以使用cmd命令里面的tracert命令来查看,详情如下: D:\Documents and Settings\hx>tracert 61.152.104.40 Tracing route to 61.152.104.40 over a maximum of 30 hops 1 13 ms 16 ms 9 ms 10.120.32.1 2 9 ms 9 ms 11 ms 219.233.244.105 3 12 ms 10 ms 10 ms 219.233.238.173 4 15 ms 15 ms 17 ms 219.233.238.13 5 14 ms 19 ms 19 ms 202.96.222.73 6 14 ms 17 ms 13 ms 202.96.222.121 7 14 ms 15 ms 14 ms 61.152.81.86 8 15 ms 14 ms 13 ms 61.152.87.162 9 16 ms 16 ms 28 ms 61.152.99.26 10 12 ms 13 ms 18 ms 61.152.99.94 11 14 ms 18 ms 16 ms 61.152.104.40 Trace complete. 可以看到,如果不包含本机路由的话(第一个路由地址10.120.32.1为本机网络IP),数据包是经过了10个路由器,而不是前面所说的74个路由器。 三、如何修改本机电脑上面的默认TTL值 通过修改本机上的TTL值可以混淆攻击者的判断(当然,很少有用户会这么做)。TTL值在注册表的位置 是:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters (通过在cmd命令里面输入:regedit,然后回车的方式可以打开注册表)。其中有个DefaultTTL的DWORD值,其数据就是默认的TTL值 了,我们可以修改DefaultTTL里面的TTL默认值,但不能大于十进制的255。
|