分享

ping TTL

 322yangxinxing 2012-02-27
ping TTL
2010-05-22 23:20

Windows系统自带了一个功能强大的网络命令:Ping。利用Ping命令可以测试TCP/IP协议是否安装好,测试网络是否畅通等。

实例1:用Ping命令探测主机操作系统类型

要入侵远程计算机,首先得判断计算机的操作系统类型,其实用Ping命令就可以判断远程计算机的操作系统类型了。不同的操作系统的主机设置的TTL值是不同的,所以利用这个TTL值可以帮助识别操作系统类型。


提示:一般Windows 9X/ME的ICMP回显示TTL值为32;Windows NT/2000或者Windows XP操作系统ICMP回显应答TTL值为128;Linux KERNEL 2.2.x/2.4.x操作系统的TTL值为64;一般Unix及类Unix操作系统的TTL值为255。

如果要判断远程计算机“192.168.1.1”的操作系统类型,可运行命令:

ping 192.168.1.1

由TTL值为64可知该主机类型为Linux,由于该主机是一台ADSL路由器,使用的正是Linux系统。

用Ping命令探测主机操作系统类型

提示:虽然可以根据TTL值来判断操作系统类型,但是这个方法有时也不一定正确,因为管理员有可能通过注册表修改TTL值而达到欺骗的效果。

实例2:用Ping命令攻击远程主机

Ping命令带了一个“-t”的参数,可以不断的向某台主机发出大量的数据包,对远程主机进行攻击。当然仅在某一台计算机上运行此命令并不会产生什么效果,但如果成百台上千台的计算机同时运行此命令,那就形成了洪水攻击的效果。

虽然实际中我们是不会用Ping命令来进行攻击的,但是有必要了解这个命令的意义。例如执行命令:

ping 192.168.1.11 -t -l 65500

简单来说,TTL全程Time to Live,意思就是生存周期。
首先要说明ping命令是使用的网络层协议ICMP(Internet Control Message Protocol),所以TTL指的是一个网络层的网络数据包(package)的生存周期,这句话不懂的先回去复习OSI7层协议去。

第一个问题,为什么要有生存周期这个概念。

很显然,一个package从一台机器到另一台机器中间需要经过很长的路径,显然这个路径不是单一的,是很复杂的,并且很可能存在环路。如果一个数据包在传输过程中进入了环路,如果不终止它的话,它会一直循环下去,如果很多个数据包都这样循环的话,那对于网络来说这就是灾难了。所以需要在包中设置这样一个值,包在每经过一个节点,将这个值减1,反复这样操作,最终可能造成2个结果:包在这个值还为正数的时候到达了目的地,或者是在经过一定数量的节点后,这个值减为了0。前者代表完成了一次正常的传输,后者代表包可能选择了一条非常长的路径甚至是进入了环路,这显然不是我们期望的,所以在这个值为0的时候,网络设备将不会再传递这个包而是直接将他抛弃,并发送一个通知给包的源地址,说这个包已死。
其实TTL值这个东西本身并代表不了什么,对于使用者来说,关心的问题应该是包是否到达了目的地而不是经过了几个节点后到达。但是TTL值还是可以得到有意思的信息的。

每个操作系统对TTL值得定义都不同,这个值甚至可以通过修改某些系统的网络参数来修改,例如Win2000默认为128,通过注册表也可以修改。而Linux大多定义为64。不过一般来说,很少有人会去修改自己机器的这个值的,这就给了我们机会可以通过ping的回显TTL来大体判断一台机器是什么操作系统
TTL 字段值可以帮助我们识别操作系统类型。

UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255
Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64
微软 Windows NT/2K操作系统 ICMP 回显应答的 TTL 字段值为 128
微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32
当然,返回的TTL值是相同的

  但有些情况下有所特殊

LINUX Kernel 2.2.x & 2.4.x ICMP 回显应答的 TTL 字段值为 64
FreeBSD 4.1, 4.0, 3.4;
Sun Solaris 2.5.1, 2.6, 2.7, 2.8;
OpenBSD 2.6, 2.7,
NetBSD
HP UX 10.20
ICMP 回显应答的 TTL 字段值为 255
Windows 95/98/98SE
Windows ME
ICMP 回显应答的 TTL 字段值为 32
Windows NT4 WRKS
Windows NT4 Server
Windows 2000
ICMP 回显应答的 TTL 字段值为 128
  这样,我们就可以通过这种方法来辨别操作系统

TTL

LINUX 64
WIN2K/NT 128
WINDOWS 系列 32
UNIX 系列 255

  经过测试的操作系统如下:

LINUX Kernel 2.2.x, Kernel 2.4t1-6; FreeBSD 4.1,4.0,3.4; OpenBSD 2.7,2.6; NetBSD
1.4.2; Sun Solaris 2.5.1,2.6,2.7,2.8; HP-UX 10.20, 11.0; AIX 4.1, 3.2; Compaq
Tru64 5.0; Irix 6.5.3,6.5.8; BSDI BSD/OS 4.0,3.1; Ultrix 4.2-4.5; OpenVMS 7.1-2;
Windows 95/98/98SE/ME; Windows NT 4 Workstation SP3, SP4, SP6a; Windows NT 4
Server SP4; Windows 2000 Professional, Server, Advanced Server.

  附:

  ICMP报文的类型包括如下:

ECHO (Request (Type 8), Reply (Type 0))--回显应答,

Time Stamp (Request (Type 13), Reply (Type 14))--时间戳请求和应答,

Information (Request (Type 15), Reply (Type16))--信息请求和应答,

Address Mask (Request (Type 17), Reply (Type 18))--地址掩码请求和应答等

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多