探测远程主机操作系统指纹.doc_第1页
探测远程主机操作系统指纹.doc_第2页
探测远程主机操作系统指纹.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

探测远程主机操作系统指纹 操作系统探测技术主要有以下几种方式:获取标识信息  在很多探测工具中都使用了此项技术来获得某些服务的标识信息。它往往是通过对二进制文件的收集和分析来实现的。tcp分段(标准/非标准)响应分析  它是依靠不同操作系统对特定分段的不同反应来区分的。比较流行的工具有savage的queso和fyodor的nmap,他们都使用了很多来自于这种技术的变种。icmp响应分析  它是刚推出不久的一种技术。它通过发送upd或icmp的请求报文,然后分析各种icmp应答。ofir arkin的x-probe就是使用的这种技术,在通常情况下,x-probe工作的比较好,但是在防火墙阻塞某些协议时,得到的结果就不那么尽如人意了。初始化序列号(isn)分析  在tcp栈中不同的exploits随机产生,通过鉴别足够的测试结果来确定远程主机的操作系统。特殊的操作系统  拒绝服务同样可以用在操作系统指纹的探测上,而不仅仅是被黑客所使用。在一些非常特殊的情况下,拒绝服务能探测到准确的结果。在本文中,着重以nmap为例,介绍一下探测远程主机操作系统指纹的方法。有许多技术可以用来定义网络栈指纹。基本上,你只要找出操作系统间的不同并写探测器查明它们。如果你合并足够这些,你可以非常细致的区分它们。下面介绍一些这种技术:fin 探测器 - 这里我们送一个fin包(或任何其他包不带ack 或syn标记)给一个打开的端口并等待回应。正确的rfc793行为是不响应,但许多有问题的实现例如 ms windows, bsdi, cisco, hp/ux,mvs,和irix 发回一个reset。许多现有工具利用这个技术。bogus 标记探测器 - queso 是一个用这种技术的扫描器。它是设置一个未定义的tcp “标记”(64或128)在syn包的tcp头里。linux机器到2.0.35之前在回应中保持这个标记。其他os还没发现有这个错误。然而,一些操作系统象是复位连接当它们得到一个syn+ bogus包的时候。这一行为对辨识它们有用。tcp isn 取样 - 这个主意是找出当响应一个连接请求时由tcp 实现所选择的初始化序列数式样。这可分为许多组例如传统的64k(许多老unix机器),随机增量(新版本的solaris, irix, freebsd,digital unix, cray, 和许多其他的),真“随机”(linux 2.0.*,openvms,新的aix,等)。windows 机器(和一些其他的)用一个“时间相关”模型,每过一段时间isn 就被加上一个小的固定数。不用说,这几乎和老的64k 行为一样容易攻破。当然最让人喜欢的技术是”常数”。机器总是使用确切同样的isn 。而3com的集线器(用0x803)和apple laserwriter打印机(用0xc7001 )就是这样。你也可以通过例如计算其随机数的变化量,最大公约数,以及序列数的其他函数和数之间的差异再进一步分组。不分段位 - 许多操作系统开始在送出的一些包中设置ip的”dont fragment”位。这带来多种性能上的好处(尽管它也可能是讨厌的 - 这就是nmap的分段扫描对solaris机器无效的原因)。无论如何,不是所有的os都这样做而且另一些做的场合不同,所以通过注意这个位我们甚至能收集目标os的更多信息。tcp 初始化窗口 - 这只包括了检查返回包的窗口大小。较老的扫描器简单地用一个非零窗口在rst包中来表示“bsd 4.4 族”。新一些的如queso 和nmap则保持对窗口的精确跟踪因为它对于特定os基本是常数。这个测试事实上给出许多信息,因为有些可以被唯一确定(例如,aix 是所知唯一用0x3f25的)。在它们“完全重写”的nt5 tcp 栈中,microsoft 用的是0x402e。有趣的是,这和openbsd 与freebsd 中所用的数字完全一样。ack 值 - 不同实现中一些情况下ack域的值是不同的。例如,如果你送了一个fin|psh|urg 到一个关闭的tcp 端口。大多数实现会设置ack 为你的初始序列数,而windows 和一些傻打印机会送给你序列数加1 。若你送一个syn|fin|urg|psh 到一个打开的端口,windows 会非常古怪。一些时候它送回序列号,但也有可能送回序列号加1, 甚至还可能送回一个随机数。icmp 错误信息终结 - 一些操作系统跟从rfc 1812的建议限制各种错误信息的发送率。例如,linux 内核(在net/ipv4/icmp.h)限制目的不可达消息的生成每4 秒钟80个,违反导致一个1/4 秒的处罚。测试的一种办法是发一串包到一些随机的高udp 端口并计数收到的不可达消息。icmp 消息引用 - rfc 规定icmp错误消息可以引用一部分引起错误的源消息。对一个端口不可达消息,几乎所有实现只送回ip请求头外加8 字节。然而,solaris 送回的稍多,而linux 更多。这使得nmap甚至在没有对方没有监听端口的情况下认出linux 和solaris 主机。icmp 错误消息回应完整性 - 机器会把原始消息的一部分和端口不可达错误一起送回。然而一些机器倾向于在初始化处理时用你的消息头作为“草稿纸”所以再得到时会有些许的改动。例如,aix 和bsdi送回一个ip“全长”域在20字节处。一些 bsdi,freebsd,openbsd,ultrix,和vaxen 改变了你送的ip id 。因为ttl 改变而改变了检查和,有些机器(aix, freebsd, 等)送回错误的或0 检查和。总之,nmap作9 种测试在icmp错误上以分辨出这类细微差别。服务类型 - 对于icmp端口不可达消息可察看送回包的服务类型(tos)值。几乎所有实现在这个icmp错误里用0 除了linux 用0xc0。这不是标准的tos 值,而是一个未使用优先域(afaik) 的一部分。尽管不知道为什么如此,但如果他们改成0 我们还能够分辨旧系统_而且_还能分辨出旧系统和新系统。tcp 选项 - 这简直是泄漏信息的金矿。它的好处在于:1) 这通常是可选的,所以并非所有实现都支持。2) 若一个实现发出设置了选项的请求,目标通过设置它在回应中表示支持。3) 可以在一个数据包中设置而一次测试所有选项。                        nmap发送这些选项的几乎所有可能的包:window scale=10; nop; max segment size = 265; timestamp; end of ops;当你得到回应,看看那个选项被送回也就是被支持。一些操作系统如最近的freebsd 机器支持上面所有的,而其他,如linux 2.0.x支持的则很少。最近的linux 2.1.x 内核支持上面所有的。另一方面,它们又有更易受攻击的tcp 序列生成方式。即使几个操作系统支持同样的选项集,有时仍可以通过选项的值分辨出它们。例如,如果送一个小的mss值给linux机器,它会用那个mss 生成一个回答给你。其他主机会给你不同的值。甚至即使你得到同样的支持选项集和同样得值,你仍可以通过选项提供的顺序和填充字进行辨识,例如solaris返回nntnwme表示;而linux 2.2.122返回menntnw。同样的选项,同样的值,但不同顺序!没见过其他os检测工具利用tcp 选项,但它非常有用。因同样原因有其他几个有用的选项我会探测,象那些支持t/tcp和选择性确认。开发年代 - 甚至使用上面所有测试,nmap仍不能从tcp 栈区分win95,winnt,或win98。但你可以简单的进行早期的windowsdos 攻击(ping of death, winnuke, 等)而比当时的如teardrop和land多做一些。就是在每个攻击之后,ping它们看是否垮掉了。等到你最后crash 掉它们,你就能缩小的某一服务包或补丁。syn洪水限度 - 一些操作系统会停止新的连接尝试如果你送太多的伪造s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论