通过TTL值判断是什么系统:
TTL(Time To Live,生存时间)是IP协议包中的一个值,当我们使用Ping命令进行网络连通测试或者是测试网速的时候,本地计算机会向目的主机发送数据包,但是有的数据包会因为一些特殊的原因不能正常传送到目的主机,如果没有设置TTL值的话,数据包会一直在网络上面传送,浪费网络资源。数据包在传送的时候至少会经过一个以上的路由器,当数据包经过一个路由器的时候,TTL就会自动减1,如果减到0了还是没有传送到目的主机,那么这个数据包就会自动丢失,这时路由器会发送一个ICMP报文给最初的发送者。
例如:如果一个主机的TTL是64,那么当它经过64个路由器后还没有将数据包发送到目的主机的话,那么这个数据包就会自动丢弃。
不同的操作系统的默认TTL值是不同的, 所以我们可以通过TTL值来判断主机的操作系统,但是当用户修改了TTL值的时候,就会误导我们的判断,所以这种判断方式也不一定准确。
下面是默认操作系统的TTL:
1、WINDOWS NT/2000 TTL:128
2、WINDOWS 95/98 TTL:32
3、UNIX TTL:255
4、LINUX TTL:64
5、WIN7 TTL:64
从TTL值,我们可以大致判断主机的数据包经过多少个路由器到达目的主机,那么我们如何知道它经过了哪些路由器,从TTL的值可以看出主机的数据包经过64-59=5个路由器到达目的主机,那么如何确认经过5个路由器的这个数值是正确的呢?使用cmd命令里面的tracert命令来查看。
通过修改本机上的TTL值可以混淆攻击者的判断(当然,很少有用户会这么做)。TTL值在注册表的位置是:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters (通过在cmd命令里面输入:regedit,然后回车的方式可以打开注册表)。其中有个DefaultTTL的DWORD值,其数据就是默认的TTL值了,我们可以修改DefaultTTL里面的TTL默认值,但不能大于十进制的255。
操作步骤:
1.打开“记事本”程序,编写批处理命令:
@echo REGEDIT4>>ChangeTTL.reg
@echo.>>ChangeTTL.reg
@echo [HKEY_LOCAL_MACHlNE\System\CurrentControlSet\Services\Tcpi\Parameters]
>>ChangeTTL.reg
@echo "DefaultTTL"=dword:000000">>ChangeTTL.reg
@REGEDIT /S/C ChangeTTL.reg
2.把编好的程序另存为以.bat为扩展名的批处理文件, 点击这个文件,你的操作系统的缺省TTL值就会被修改为ff,即 10进制的255,也就是说把你的操作系统人为地改为UNIX系统了 。同时,在该文件所在的文件夹下会生成一个名为 ChangeTTL.reg 的注册表文件。如果你想运行完这个批处理文件而不产生ChangeTTL.reg文件,可以在此批处理文件的最后一行加上 deltree/Y ChangeTTL.reg,就可以无须确认自动删除ChangeTTL.reg文件 。
说明:在上面的命令中,echo是DOS下的回显命令,如 果想看到程序执行过程,请将“@”去掉。“> >”产生的内容将追加到它后面的文件即ChangeTTL.reg中。 而“DefaultTTL"=dword?000000ff”则是用来设置系统缺省TTL 值的,如果你想将自己的操作系统的TTL值改为其他操作系统的 ICMP回显应答值,请改变“"DefaultTTL"”的键值,要注意将 对应操作系统的TTL值改为十六进制才可以。
这样,当入侵者Ping你的机器时,他得到的就是一个假 的TTL值,这个假的TTL值就会误导对方,使入侵者的判断出现失误,因为针对不同的操作系统的入侵方法并不一样,所以用 这个方法欺骗对方,可以让他摸不着头脑。
如果使用DOS命令去ping某网站,提示请求超时,原因可能是这个网站有硬件检测防御系统来防止DDOS攻击。
使用cmd命令:systeminfo
如果系统有打补丁的话,我们可以把系统的补丁与我们自己的提权补丁进行比对,通过系统没有的提权补丁来进行系统提权。