探测服务器操作系统,3.9 操作系统探测技术

3.9  操作系统探测技术

操作系统探测也是网络安全扫描中的一个重要组成部分,它是网络攻防研究的重点内容之一。在很多探测工具中都使用了此项技术来获得某些服务的标识信息,操作系统探测技术的发展也非常迅速,出现了很多技术,其中***代表性的是Nmap的基于协议栈指纹的扫描。

常用的网络协议是标准的,因而从理论上讲各个操作系统的协议栈应该是相同的。但是,在实际情况中,各种操作系统的协议栈的实现存在细微的差异。这些差异称作网络协议栈的指纹。由于每个操作系统对于网络部分的实现不尽相同,虽然在一些核心功能上都是一样的,但有些细节可以区分,这样就为识别操作系统提供了条件。TCP/IP规范并不是被严格地执行,每个不同的实现将会拥有它们自己的特性,这样就为成功探测带来了可能。规范可能被打乱,一些选择性的特性被使用,而其他的一些系统则可能没有使用。某些私自对IP协议的改进也可能被实现,这就成为了某些操作系统的特性。

根据TCP数据包的响应来进行探测,它是依靠不同操作系统对特定TCP的不同反应来区分的。它们产生一组TCP和UDP请求发送到远程目标主机的开放端口或者未开放端口。远程主机响应的有用信息就会被探测工具接收到,然后对其进行分析。对TCP协议族来说,这些差异通常表现在数据包头的标志字段中,如窗口、ACK序号、TTL等的不同取值。通过对这些差别进行归纳和总结,可以比较准确地识别出远程系统的类型。

TTL(Time To Live)是数据包的存活时间,表示一个数据包在被丢弃之前可以通过多少跃点。不同操作系统的默认TTL值往往是不同的。DF位表示不分段的标志,在IP协议中设定,不同操作系统对DF位有不同的处理方式,有些操作系统设置DF位,有些不设置DF位,还有一些操作系统在特定场合设置DF位,在其他场合不设置DF位。Window Size表示TCP接收或者发送窗口大小,它决定了接收信息的机器在收到多少数据包后发送ACK包,一个特定操作系统的默认Window Size基本是常数。

ACK序号也可以用来判断,不同的操作系统处理ACK序号时是不同的。如果发送一个含有FIN,PSH,URG的数据包到一个关闭的TCP 端口,大多数操作系统会把回应ACK包的序号设置为发送的包的初始序号,而Windows 系统则会发送序号为初始序号加1的ACK包。发送一个只有FIN标志位的TCP数据包给一个打开的端口,Linux等系统不响应,有些系统,例如 MS Windows、CISCO、HP/UX等,发回一个RESET数据包。在SYN包的TCP头里设置一个未定义的TCP 标记,目标系统在响应时,有的会保持这个标记,有的不保持,还有一些系统在收到这样的包的时候会复位连接。还可以利用初始化序列号ISN来识别,不同的操作系统在选择TCP ISN时采用不同的方法。一些UNIX系统采用传统的64K递增方法,较新的Solaris,IRIX,FreeBSD,Digital UNIX,Cray等系统采用随机增量的方法,Linux 2.0、OpenVMS、AIX等系统采用真随机方法。Windows系统采用一种时间相关的模型。还有一些系统使用常数,在做IP包的分段重组时,不同的操作系统处理方式不同。有些操作系统会用新IP段覆盖旧的IP段,而有些会用旧的IP段覆盖新的IP段。不同的操作系统有不同的默认MSS值,对不同的MSS值的回应也不同。

根据ICMP报文响应分析,由于很多操作系统对于ICMP报文的响应不尽相同,这样就可以利用ICMP报文进行探测,可以发送正常的ICMP报文或者非正常的ICMP报文,观察目标主机的响应,分析相应的结果。在发送ICMP错误信息时,不同的操作系统有不同的行为。RFC 1812建议限制各种错误信息的发送率,有的操作系统做了限制,而有的没做。RFC 规定ICMP错误消息可以引用一部分引起错误的源消息。在处理端口不可达消息时,大多数操作系统送回IP请求头外加8 字节。Solaris 送回的稍多,Linux 更多。有些操作系统会把引起错误消息的头做一些改动再发回来。例如,FreeBSD、OpenBSD、ULTRIX、VAXen等会改变头的ID。这种方法比较有用,甚至可以在目标主机没有打开任何监听端口的情况下就识别出Linux和Solaris。对于ICMP端口不可达消息,返回包的服务类型(TOS)值有时也是有差别的。

综上所述,各种识别远程操作系统的方法有很多,但大部分都是根据不同操作系统的异同来进行判断的,只要某种操作系统具有自己独有的特征,就可以利用此特征进行识别判断。

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值