Chapter5 - 操作系统指纹扫描
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安全审计与安全扫描
计算机学院08级, 2011 春
张锋博士
副教授,硕士生导师
Jeff.F.Zhang@
计算机学院, 中国地质大学, 武汉
第5章操作系统指纹扫描1
概述
2
TCP/IP栈指纹扫描技术
3
ICMP栈指纹扫描技术
4
操作系统被动指纹扫描技术
第4章操作系统指纹扫描1
概述
2
TCP/IP栈指纹扫描技术
3
ICMP栈指纹扫描技术
4
操作系统被动指纹扫描技术
概述
操作系统指纹扫描的目的就是为了鉴别出目标主机所使用的操作系统类型
确定后续的攻击或防御方法
缩小尝试的范围
为什么可以
操作系统在协议上的不同就像人类的指纹,但没有两个人的指纹是相同的。
通过对不同操作系统的TCP/IP协议栈和ICMP协议栈存在的细微差异来判定操作系统类型和版本的技术
为什么可以
每个操作系统通常会使用它们自己的通信协议栈。
TCP/IP规范并不是被严格的执行,每个不同的实现都拥有它们自己的特性。
规范可能被打乱,一些选择性的特性被使用,而其他的一些系统则可能没有使用。
某些私自对IP协议的改进也可能被实现,这就成为了某些操作系统的特性。
相关技术和分类
早期简单探测方法
软件服务所旗标、错误信息等
应用软件开放的端口
容易被欺骗
telnet, ftp, http……
高级识别技术
设计操作系统的底层实现
准确性高、隐蔽性好
TCP/IP栈指纹,ICMP栈指纹,被动指纹……
Telnet服务旗标
ftp服务旗标
http信息
其它
http信息
TCP/IP栈指纹识别
TCP/IP栈指纹识别主要是依赖不同操作系统对特定分段的不同反应来区分的。
基于各版本操作系统TCP/IP协议体系实现上的不同,通过提交不同的IP数据包并分析目标主机所返回的响应数据包
比较其中各标记参数的不同就可以将不同的操作系统区分开
ICMP栈指纹识别
ICMP栈指纹识别主要是通过发送UDP或ICMP 的请求报文,然后分析各种ICMP应答,根据应答包的差异来区分不同的操作系统。
与TCP/IP栈指纹识别技术类似,ICMP栈指纹识别技术利用几个测试来执行对远程操作系统
TCP/IP堆栈的探测,
不同于TCP/IP识别技术的是,目前基于ICMP的操作系统识别技术只需要1~4个测试包就可以探测出一个操作系统类别。
被动指纹扫描
使用被动协议栈指纹识别技术隐密地识别远程OS。
在原理上和主动协议栈指纹识别相似,但是它从不主动发送数据包,只是被动地捕获远程主机返回的包来分析其操作系统类型和版本
其它方法
开放端口分析
SNMP探测
DNS查询
初始化序列号(Initial serial number,ISN)分析
……
第4章操作系统指纹扫描1
概述
2
TCP/IP栈指纹扫描技术
3
ICMP栈指纹扫描技术
4
操作系统被动指纹扫描技术
TCP/IP栈指纹扫描技术
理论依据:每一个操作系统的TCP/IP栈都有其特性。
每一个操作系统对各种各样畸形数据包的响应是不一样。
探测数据包 FIN探测
假标记(BOGUS flag)探测
TCP ISN取样探测
IP ID取样探测
TCP时间戳探测
DF(do not fragment,不分段)位探测 TCP初始窗口探测
ACK值探测
ICMP错误信息抑制探测
分段控制探测
TCP选项探测
TCP/IP栈指纹扫描实例分析 Queso中采用的方法是对指纹建立与软件部分相独立的数据库
NMap是后续产品。
Fingerprint Linux kernel 2.2.13
TSeq(Class=RI%gcd=<6%SI=<E5F68C&>24CA0)
T1(DF=Y%W=7F53%ACK=S++%Flags=AS%Ops=MENNTNW)
T2(Resp=N)
T3(Resp=Y%DF=Y%W=7F53%ACK=S++%Flags=AS%Ops=MENNTNW)
T4(DF=N%W=0%ACK=O%Flags=R%Ops=)
T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
T6(DF=N%W=0%ACK=O%Flags=R%Ops=)
T7(DF=N%W=0%ACK=S%Flags=AR%Ops=)
PU
(
DF=N%TOS=C0|A0|0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=F%ULEN=134%DAT=E )
Fingerprint Asanta IntraStack Ethernet Switch(6014 DSB Versions:BP(2.06), FW(1.03))TSeq(Class=C%Val=4090000)
T1(DF=N%W=400%ACK=S++%Flags=AS%Ops=M)
T2(Resp=Y%DF=N%W=0%ACK=S%Flags=APR%Ops=)
T3(Resp=Y%DF=N%W=400%ACK=S++%Flags=AS%Ops=M)
T4(DF=N%W=0%ACK=S%Flags=APR%Ops=)
T5(DF=N%W=0%ACK=S++%Flags=APR%Ops=)
T6(DF=N%W=0%ACK=S%Flags=APR%Ops=)
T7(DF=N%W=0%ACK=S%Flags=APR%Ops=)
PU
(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)
第4章操作系统指纹扫描1
概述
2
TCP/IP栈指纹扫描技术
3
ICMP栈指纹扫描技术
4
操作系统被动指纹扫描技术
28
ICMP栈指纹扫描技术
ICMP栈指纹扫描技术和TCP/IP栈指纹扫描技术的基本原理是一致的,都是通过发送构造的探测数据包,然后根据返回数据包的内容进行分析判别,从而确定相对应的操作系统类型和版本,
最早基于ICMP栈指纹识别技术的软件是Ofir Arkin编写的X-probe。
ICMP协议
ICMP(Internet Control Message Protocol)协议用来传送差错报文和其他一些需要注意的信息报文。
查询报文
差错报文
与IP同层,其数据是封装在IP数据包内传送的。
ICMP协议的正式规范见RFC 792。
ICMP协议
类型+代码=不同消息
ICMP栈指纹
ICMP报文的IP头
优先级子字段,分段标志字段,IP ID字段,
IP TTL字段,TOS字段
ICMP报文
ICMP错误信息引用,ICMP错误信息应答完整性,ICMP回显请求,其他ICMP信息
ICMP报文中的数据项
IP总长度,IP标识,IP分段标志和分段偏
移,IP首部校验和,UDP校验和
③ICMP回显请求
ICMP回显请求和应答的数据包格式如图5-10所示。
通常当ICMP请求回显信息(类型8)中ICMP代码段值不等于0时,基于Microsoft的操作系统会在返回ICMP回显应答数据包中设置ICMP代码段的值为0,而其他一些操作系统和网络设备则会使用ICMP回显请求中相同的ICMP代码段值。
图5-10 回显请求和应答数据报文格式
几种常见ICMP差错报文的格式
ICMP栈指纹扫描实例分析 X-probe I采用的识别方法是逻辑树法。
X-probe II采用模糊匹配识别法。
发送ICMP回显请求探测数据包,分析ICMP回显应答消息,细分“Linux内核2.2.x/2.4.x”结点,逻辑树如图5-13所
示。
图5-13 ICMP回显应答消息判断逻辑树
发送ICMP时间戳请求探测数据包;分析ICMP时间戳应答;区分“Sun Solaris 2.3-2.8、HPUX 11.x、MacOS 7.x-9.x”结点;参考图5-14确定操作系统。
图5-14 ICMP时间戳应答消息判断逻辑树
第4章操作系统指纹扫描1
概述
2
TCP/IP栈指纹扫描技术
3
ICMP栈指纹扫描技术
4
操作系统被动指纹扫描技术
40
被动指纹扫描技术
不主动向目标主机发送探测数据包
被动监测网络通信,分析正常数据流中远程主机所发出的数据包的一些特殊字段,与指纹数据库相比较,最终确定系统类型和版本
实现原理
被动指纹识别所考虑的因素称为“特征(signature)”,指用于判别通信信息种类的样板数据。
通常包括以下几个方面:
TTL
窗口大小
DF位
TOS
其它:初始化序列号(ISN)、IP标识、TCP选项、
IP选项或ICMP数据项初始化序列号(ISN)、IP标
识、TCP选项、IP选项或ICMP数据项
实现原理
被动指纹扫描实例分析
P0f
“wwww:ttt:mmm:D:W:S:N:I:操作系统描述”
wwww:窗口大小;
ttt:TTL,生存期;
mmm:最大段长度(maximum segment size,MSS);
D:DF位;
W:窗口扩大选项(window scaling),其中-1表示没有使用,其他值则为对应的值;
S:选择性应答选项,0表示未设置,1表示设置;
N:nop标记,0表示未设置,1表示设置;
I:报文的大小,-1表示未知大小。
举例如下:
8760:255:1460:1:0:0:0:44:Solaris 2.6 or 2.7(1)8192:128:1460:1:0:0:0:44:Windows NT 4.0(1)8192:128:1460:1:0:1:1:48:Windows 9x(1)2144:64:536:1:0:1:1:60:Windows 9x(4)16384:128:1460:1:0:1:1:48:Windows 2000(1)数据报文中还会有许多参数可以用来作为识别远程操作系统的“特征”,要利用这些特征还依赖于大量的相关信息的收集,所以在被动指纹扫描方面还有大量的工作需要继续研究。
思考
为什么操作系统能被远程识别出来?
操作系统指纹识别和机器学习的关系?
常见的操作系统指纹识别工具是什么?它们分别采用什么识别技术?。