文档名称 文档密级
? 其他应用层协议分析
2.2.1 TTL (Time To Live)。
TTL 是 IP 包头中定义的一个字节。这一字节用来控制数据包不会被在网络上过度传输,每当数据包经过一个路由设备,TTL值就会减小1。当此值为 0 时,路由器就会丢弃这个数据包,以避免环路、错误的路由带来对网络的损害。并没有协议来规范起始 TTL 值的填充,而不同的操作系统根据自己的设计目的,因此对于 TTL起始值可以发现明显的操作系统差异。例如:
? APC Web/SNMP 管理卡 60 ? Cisco 2900交换机 255 ? Compaq Tru64 5.0 64 ? HP ProCurve Switch 64 ? Linux Kernel 2.0 64 ? Linux Kernel 2.2+ 255 ? Macintosh OSX 255 ? Novell Netware 128 ? Windows XP/2000/2003/Vista 128 ? Windows 95 32 ? Windows 95A/B 128 ? Cisco Catalyst 6000 60 ? Linksys 打印机服务器 32
可以看到大多数TTL是 32,64,128,255,而现在的 Windows系列普遍采用128,*nix系统热衷于255。 64/32通常被不少较早的特定功能的打印机或者网络设备所选择。如果捕获到一个数据包的 TTL= 125, 那么通常意义上,这意味着这台主机的起始 TTL是 128,位置在3跳路由之外。TTL的取值只能作为一种估算,网上也有不少文档提供一些修改TTL起始值以便来迷惑指纹识别的方法,但其不失为一种快捷而且通用的手段,为操作系统指纹识别作第一步的数据准备。
2014-10-07
H3C机密,未经许可不得扩散 第5页, 共21页
文档名称 文档密级
2.2.2 TCP指纹分析
TCP/IP 的定义可以参阅 RFC 793。随后,很多专业人士为 TCP 扩展了许多标准,包括 RFC 896、1122、1144、1323、1644、2018、2140、2414、2415、2681、3390??,由于不断推陈出新的标准以及很多开发设计人员对这些标准的理解不同,各个操作系统、各个时期的版本对于同样的通讯规范的实现和把握有相当多的不同之处。这其中最明显的差异来自于TCP 三向握手过程中的参数和选项的选择,在FIN/RST包中也有类似情况产生。一个非常成熟的p0f的工具非常完整了实施了基于TCP 的被动指纹识识别。简单来看看p0f采用的技术包括以下范围:
? TCP SYN包中的DF标记位 ? 起始的TCP 窗口尺寸 ? TCP SYN包的大小 ? 起始TTL (如上一节所提) ? TCP 扩展选项与顺序
某些特定版本操作系统的bug或显著特征,例如: ? AIX 4.3的SYN包起始 TCP窗口是45046,TTL是64
? FreeBSD 5.1的SYN的起始 TCP窗口是65535,DF为 1,有效包长
60。
? Windows Vista SYN的起始窗口为 8192,有效包长52,同时带有Nop
等 TCP选项。
? Windows 2003的 MSS = 1460而起始TCP Window 是 65535。 ? Windows XP会显示特异的65520的起始窗口,并且伴随一些特定的
选项扩展。
而操作系统的编写人员甚至会在每个 Service Pack 里使用不同的参数,因此不同的操作系统版本号、语言版本都可能伴随不同的表现现象。
SYN+ACK的包的指纹则略有不同,但同样可以指出相当多的操作系统信息。例如:
? MACOS 10.2.6的 SYN+ACK包中会包含33304尺寸的起始窗口大小 基于TCP的被动分析技术已经出现多年,网上也出现了一些开源项目专门从事指纹库的收集和建立,例如p0f-db 的项目。目前,根据TCP 可以识别的操作系统类型已经达到以百计数。不过由于很多操作系统的 TCP 指纹有较多
2014-10-07
H3C机密,未经许可不得扩散
第6页, 共21页
文档名称 文档密级
相近之处,这种技术的判别精度始终是个问题,很难被真正应用到商业环境中去。这样的困境直到进一步深入的基于协议分析的指纹识别技术出现才得以改观。
每个厂家在设计网络操作系统时,为了体现竞争优势,往往会在很多具体的服务与协议的具体实现上动脑筋。同时各个版本的操作系统不断升级,也有刚性需求为自身区分准确的版本和兼容性信息,这使得基于协议分析的指纹识别成为可行。
2.2.3 SMB指纹分析
微软的SMB协议的BROWSER 部分,准确的携带了操作系统类型和版本信息。如下图:
微软的 SMB BROWSER 广播里会标明自己的操作系统版本为 5.x (Wireshark 里的字段号是browser.os_major, browser.os_minor.)。准确来说是 Windows NT/2000/XP/2003分别对应 4.0/5.0/5.1/5.2,略微值得一提的是 Windows Vista和Windows 7被微软看来和 Windows 2003没什么区别,始终保持 5.2的版本号。如果是*nix系统下,就会采用替代的 samba服务,
而 samba服务会填充不同的版本号,例如 4.9,同时会在Host Comment里填写 Samba服务的版本号。
Browser 本身也有版本号描述,例如 15.1 , 11.3, 21.4 等等。 这些版本号也能够佐证具体的Windows或Samba的版本。
SMB 的登录会话(Session Setup)协议会话里也有很多包含版本信息的部分; 尤其是返回部分
2014-10-07
H3C机密,未经许可不得扩散 第7页, 共21页
文档名称 文档密级
例如在上图中可以看到, SMB详细地报告了操作系统版本,甚至连发布的小版本号和Service Pack信息也毫无保留。这里填写的数据也可能是
Samba的版本号或者其他Windows版本。文字编码通常是 Unicode 格式。同样的,双方交换的加密方法和认证方式也可以用来作为判别操作系统的类型的依据。
2.2.4 DHCP指纹分析
DHCP协议本身是各个网络终端设备都能够支持的必备协议之一,用来申请获得动态 IP地址, DHCP本身包含的操作系统信息简直可以说是丰富多彩。DHCP的包格式如下:
基于udp 68/67端口的 DHCP是对bootp的扩展,在bootp的协议后如果包含了 0×63825363 (网络顺序) 这段magic cookie,则是dhcp头的开始。Dhcp的所有部分都是以Option 的方式描述,每个option第一个字节会说明 option类型,第二个字节会定义这个 option的长度,之后的对应长度里是option的值。
例如:
? 类型为53的Option是DHCP包的类型描述,包含了 Inform,
2014-10-07
H3C机密,未经许可不得扩散
第8页, 共21页
相关推荐: