操作系统指纹探测实验

操作系统指纹

作为网络操作系统,系统的指纹实际上来源于TCP/IP协议栈。TCP/IP协议栈技术只是在RFC文档中描述,并没有一个统一的行业标准,各个公司在编写应用于自己的操作系统的TCP/IP协议栈时,对RFC文档做出了不尽相同的诠释,造成了各个操作系统在TCP/IP协议的实现上有所不同。好比人类的指纹,每个普通人都有指纹,但是没有两个人的指纹是一模一样的。通过比较不同的操作系统的TCP/IP协议栈的细微差异,就可以判定操作系统类型及版本,这种方式也称为“指纹方法学”。

TCP/IP协议栈指纹以独特的方式解决了操作系统辨识的问题,再加上一般的网络管理员不会有意识地修改操作系统的网络堆栈参数,所以很多探测程序就充分组合这些不同的参数,判断出操作系统的类型与版本。例如nmap能够可靠地区分出Solaris 2.4、Solaris 2.5-2.5.1 和Solaris 2.6,也能区分2.0.30、2.0.31-34 或2.0.35 版本的Linux 内核。

常见的指纹识别技术

利用操作系统指纹,需要掌握TCP/IP协议栈指纹的识别技术。目前常用的指纹识别技术包括:

(1)FIN探测:这种技术的方法是发送一个FIN包(或任何其他不带ACK或SYN标记的包)到一个打开的端口并等待回应。正确的RFC793(最新的)中规定系统将不予响应.但许多有问题的实现例如MSWINDOWS,BSDI,CISCO,HP/UX,MVX和RIX会发回一个RESET。正是这些问题的存在,使得可以区分一部分操作系统。

(2)是否设置分段位:许多操作系统开始设置不分段位,从而增进系统的一些性能,但也促进了操作系统的识别。

(3)TCP初始窗口大小:这个方法简单地说是检查返回包的窗口大小。有些操作系统可以简单地用这种方法精确的识别。例如AIX使用的窗口大小为16165。

(4)ACK值:许多操作系统的ACK值是不标准的,带有自己的特征。

(5)ICMP出错信息的频率: 一些操作系统按照RFC1812,限制了出错ICMP包的发送频率。

(6)ICMP消息引用:RFC(最新的)规定ICMP错误消息可以引用一部分引起错误的源消息。对一个端口不可达消息,几乎所有操作系统只送回IP请求头外加8字节。然而,SOLARIS送回的稍多,而UNUX更多。这使得甚至在对方没有监听端口的情况下认出UNUX和SOLARIS主机。

(7)TOS:有些系统在返回ICMP端口不可达信息时,TOS值不为0。

(8)分段的处理:一些系统在处理重复的IP分段信息时采用的方法是不同的。

(9)TCP选项:不同的操作系统对于TCP选项的支持是不同的。有的多些,有的小些。且在处理返回时存在着格式和顺序的不同。这些可以很好的用于识别系统。

(10)SYN洪泛:一些操作系统当接收较多的孤立SYN包时,会停止接收新的连接,从而保证系统的稳定。所以可以发送一定数量(典型8个)的SYN包来根据系统的处理方式区别系统。

仅仅依据一两种方法来认定某台主机用的是什么操作系统,这样的结果是不可信的。但综合上述方法一起使用,使用的方法越多,得出的结果越可信。当然,远程主机开放的端口越多,指纹识别结果的准确度也越高。

操作系统指纹的消除

操作系统指纹既然来源于操作系统本身,那么它的彻底消除应该依赖于操作系统的开发商。一方面,如果操作系统开发商对操作系统指纹的负面效应有充分认识的话,他们在技术上完全有可能消除系统指纹,至少可以大大减少指纹效应。另一方面,如果RFC文档对TCP/IP协议的实现有非常标准的、统一的要求,那么操作系统开发商设计出来的系统对网络信息的响应都一样,这样的话上述TCP/IP协议栈指纹识别技术就不再有意义了,也就没有操作系统指纹这一问题了。

有时为了消除操作系统指纹,会使用一些对抗扫描、对抗指纹识别的软件:有一个叫inflog可以对抗NMAP等软件的扫描,而且是免费软件。或者采用其他的一些技术:

采用防火墙:扫描软件的准确性是靠获取尽可能多的有关目标主机TCP/IP协议栈的信息来保证的,防火墙能或多或少地影响扫描软件的准确性。对个人用户,装一个个人防火墙并设置得当的话,可以极大地减少操作系统的指纹效应:对公司集团用户,最好使用带NAT(网络地址转换)功能的防火墙网关或代理型的防火墙网关。

系统管理员要注意修改应用程序的banner: 像FTP、TELNET和微软IIS服务等应用层软件,其默认的banner都会把操作系统的类型和版本显示出来。在网络安全问题极其严峻的今天,聪明的系统管理员一定要注意修改这些banner,而且不妨来个“弄虚作假”以起到迷惑作用。

探测常使用工具

Ping

Ping是DOS命令,一般用于检测网络通与不通 ,也叫时延,其值越大,速度越慢。 Ping不仅仅是windows下的命令,在unix和linux下也有这个命令,ping只是一个通信协议,是ip协议的一部分,tcp/ip 协议的一部分,Ping 在Windows系下是自带的一个可执行命令。利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障。应用格式:Ping IP地址。该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。 Ping指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行Ping命令抢占你的网络资源,导致系统变慢,网速变慢。严禁Ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。通常的情况下你如果不用作服务器或者进行网络测试,可以放心的选中它,保护你的电脑。

ping IP地址,通过Ping命令显示的参数来判断对方机器的系统。TTL 字段值可以帮助我们识别操作系统类型:UNIX及类UNIX 操作系统ICMP回显应答的TTL字段值为 255,Compaq Tru64 5.0 ICMP回显应答的TTL字段值为64,微软Windows NT/2K操作系统 ICMP回显应答的TTL字段值为128,微软 Windows 95 操作系统 ICMP回显应答的TTL字段值为32。

Nmap

Nmap是一个免费开放的网络扫描和嗅探工具包,也叫网络映射器(Network Mapper),其基本功能有3个:一是探测一组主机是否在线;其次是扫描主机端口,嗅探所提供的网络服务;三是可以推断主机所用的操作系统。通常,网络管理员利用Nmap来进行网络系统安全的评估,而黑客则用其扫描网络,通过向远程主机发送探测数据包,获取主机的响应,并根据主机的端口开放情况,得到网络的安全状况,寻找网络的安全状况,寻找寻在漏洞的目标主机,从而实施下一步的攻击。

Nmap使用TCP/IP协议栈指纹来准确地判断出目标主机的操作类型。首先,Nmap通过对目标主机进行端口扫描,找出有哪些端口正在目标主机上监听。当侦测到目标主机上有多于一个开放的TCP端口、一个关闭的TCP端口和一个关闭的UDP端口时,Nmap的探测能力是最好的。然后,Nmap对目标主机进行一系列测试,利用得出的测试结果简历相应的目标主机的Nmap指纹。最后,将此Nmap指纹与指纹库中指纹进行查找匹配,从而得出目标主机的操作系统类型,所使用的参数即为:“-O”选项。

Xprobe

Xprobe2是基于ICMP栈指纹特征的主动探测远程操作系统类型的工具,通过主动发送UDP和ICMP请求报文到目标主机来触发ICMP消息,根据ICMP消息中网络特征值进行基于签名数据库的模糊匹配以及合理的推测,通过模糊矩阵库统计分析来探测操作系统,从而确定远程操作系统的类型。

在Xprobe2探测过程中,会发送不同类型的数据包到目标主机上,同时也会受到目标主机发送的响应数据包。当每收到响应数据包时,都会根据数据包的网络特征值进行打分,来预测是何种操作系统的可能性。例如,3分代表肯定,2分代表有可能是,1分代表有可能不是,0分代表肯定不是。然后,针对不同的操作系统类型i,将每次测试的得分数进行加和,以总分来判断远程操作系统的类型,其判断的模糊矩阵。在整个探测过程中,Xprobe2将依次进行三类测试,分别是探索模块、信息采集模块和指纹模块。因此,Xprobe2与Nmap的严格匹配操作系统指纹不同,它会根据与签名数据库探测数据包的特征值推测出结果。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腿没发霉的霉腿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值