网络远程主机操作系统被动识别方法及装置的制造方法
【专利摘要】本发明公开一种网络远程主机操作系统被动识别方法及装置。方法包括如下步骤:(10)分组嗅探:嗅探并捕获由网络主机发送的TCP分组;(20)应用层数据分析:当为HTTP协议数据时,提取应用层数据中携带的操作系统信息,识别出操作系统,并提取TCP SYN分组中的操作系统特征更新由规则组成的特征库和由样本组成的样本库;(30)首部特征识别,当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特征库中规则匹配时,识别出操作系统;(40)最小距离识别:当不匹配时,基于最小距离,识别出操作系统;(50)识别结果输出:输出操作系统类别。本发明的识别方法,识别准确率高、能识别新版操作系统、特征库维护容易。
【专利说明】
网络远程主机操作系统被动识别方法及装置
技术领域
[0001]本发明属于电数字数据监控技术领域,特别是一种识别准确率高、能识别新版操作系统、特征库维护容易的综合应用层信息并基于最小距离的网络远程主机操作系统被动识别方法及装置。【背景技术】
[0002]准确、及时识别网络中远程主机所运行的操作系统,对网络安全具有重要意义。识别网络中远程主机操作系统的方法可分为主动识别和被动识别。
[0003]主动识别方法通过向目标系统主动发送若干探测分组,根据探测分组的响应来判断目标操作系统。Nmap、Xpr〇be等工具就是采用了这种主动识别方法。主动识别方法需要主动发送探测分组,大规模地探测会造成大量的网络流量,会对网络的正常服务造成影响,同时容易被安全检测软件发现甚至被误判为网络攻击。
[0004]被动识别方法则不主动发送探测分组,它通过嗅探网络流量,根据获取的网络分组包含的信息来判断目标操作系统,特别是可通过分组首部的一些字段来进行判断。采用被动识别方法的工具包括P〇f、ettercap等。被动识别方法的具体实现可有多种方法,主要包括两种方法:根据应用层数据进行判断、根据TCP/IP分组首部进行判断。
[0005]根据应用层数据判断操作系统的方法的基本原理是一些应用的应用层数据中包含操作系统的信息,例如在Web应用中HTTP协议的User-Agent字段包含了客户端操作系统的信息。但是,这种识别方法依赖于特定的应用,只能够利用特定应用的特定分组才能够识别操作系统,应用面比较窄。
[0006]根据TCP/IP分组首部判断操作系统的方法应用面比较宽,只要能够获得目标主机发送的TCP分组,就能够根据TCP首部和IP首部判断操作系统的类型。其基本原理是:采用被动嗅探的方式从网络中获取网络流量,当捕获的TCP分组是TCP SYN分组或者TCP SYNACK分组时,提取TCP分组首部以及该分组IP首部中的特征字段,这些特征字段的组合形成操作系统的特征;将提取的操作系统特征与特征库中的规则进行匹配;当操作系统特征与特征库中的规则完全匹配时,输出规则所示的操作系统,否则输出为未知。基于这种方法的典型工具包括 P〇f、ettercap 等。
[0007]综上所述,现有技术存在的问题是:对网络远程主机所运行的操作系统的识别准确率低、不能识别新版操作系统、特征库维护困难。
【发明内容】
[0008]本发明的目的在于提供一种网络远程主机操作系统被动识别方法,识别准确率高、能识别新版操作系统、特征库维护容易。
[0009]本发明的另目的在于提供一种网络远程主机操作系统被动识别装置。[〇〇1〇]实现本发明目的的技术解决方案为:
[0011] —种网络远程主机操作系统被动识别方法,其特征在于,包括如下步骤:
[0012](10)分组嗅探:嗅探并捕获由网络主机发送的TCP分组,包括TCP SYN分组和TCP SYNACK 分组;
[0013](20)应用层数据分析:分析TCP分组中携带的应用层数据,当为HTTP协议数据时, 提取应用层数据中携带的操作系统信息,识别出发送TCP分组的主机的操作系统,并提取 TCP SYN分组中的操作系统特征更新由规则组成的特征库和由样本组成的样本库,转至 (50)识别结果输出步骤;
[0014](30)首部特征识别:当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特征库中规则匹配时,识别出发送TCP分组的主机的操作系统,转至(50)识别结果输出步骤;
[0015](40)最小距离识别:当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特征库中规则不匹配时,基于最小距离,识别出发送TCP分组的主机的操作系统;
[0016](50)识别结果输出:输出发送TCP分组的主机的操作系统类别。
[0017]实现本发明另一目的的技术解决方案为:
[0018]—种网络远程主机操作系统被动识别装置,其特征在于,包括:
[0019]分组嗅探模块(10),用于嗅探并捕获由网络主机发送的TCP分组;
[0020]应用层数据分析模块(20),用于分析TCP分组中携带的应用层数据,当为HTTP协议数据时,提取应用层数据中携带的操作系统信息,识别出发送TCP分组的主机的操作系统, 并提取TCP SYN分组中的操作系统特征更新由规则组成的特征库和由样本组成的样本库, 转至(50)识别结果输出步骤;
[0021]首部特征识别模块(30),用于当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特征库中规则匹配时,识别出发送TCP分组的主机的操作系统,转至(50)识别结果输出步骤;[〇〇22]最小距离识别模块(40),用于当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特征库中规则不匹配时,基于最小距离,识别出发送TCP分组的主机的操作系统;
[0023]识别结果输出模块(50),用于输出发送TCP分组的主机的操作系统类别。[〇〇24]本发明与现有技术相比,其显著优点为:
[0025]1、本发明具有操作系统判断准确率高的特点,当特征库和应用层都无法判断操作系统时,综合利用特征库和样本库,采用基于最小距离的操作系统判断方法,可大大提高判断的准确率;
[0026]2、本发明具有可判断新版本操作系统类型的特点,新版本操作系统由于缺乏判断规则,无法判断其类型,基于最小距离的操作系统判断方法可判断新版本操作系统的类型;
[0027]3、本发明具有自动生成特征库规则的特点,利用应用层的分析结果,自动生成新的特征规则。
[0028]下面结合附图和【具体实施方式】对本发明作进一步的详细描述。【附图说明】
[0029]图1为本发明网络远程主机操作系统被动识别方法的主流程图。
[0030]图2为图1中应用层数据分析步骤的流程图。
[0031]图3为规则示例。[〇〇32]图4为特征字段示例。
[0033]图5为图1中首部特征识别步骤的流程图。
[0034]图6为本发明网络远程主机操作系统被动识别方法的准确率随应用层识别数据增加而变化的示意图。【具体实施方式】
[0035]如图1所示,本发明网络远程主机操作系统被动识别方法,包括如下步骤:[〇〇36](10)分组嗅探:嗅探并捕获由网络主机发送的TCP分组,包括TCP SYN分组和TCPSYNACK 分组;[〇〇37](20)应用层数据分析:分析TCP分组中携带的应用层数据,当为HTTP协议数据时,提取应用层数据中携带的操作系统信息,识别出发送TCP分组的主机的操作系统,并提取 TCP SYN分组中的操作系统特征更新由规则组成的特征库和由样本组成的样本库,转至 (50)识别结果输出步骤;
[0038]如图2所示,所述(20)应用层数据分析步骤包括:[〇〇39](21)协议判断:根据TCP分组的目的端口号,判定TCP分组的数据是否为HTTP协议;[〇〇4〇] (22)操作系统特征提取:如果目的端口为80端口,则提取TCP SYN分组及该分组所在IP分组首部的特征字段,形成操作系统特征;[0041 ](23)操作系统信息提取:在TCP分组中查找HTTP协议请求分组中的User-Agent字段,并提取该字段中的操作系统信息;[〇〇42](24)样本库更新:将从TCP SYN分组及该分组所在IP分组首部提取的操作系统特征和从HTTP协议User-Agent字段提取的操作系统信息形成样本和规则,将样本加入样本库;[〇〇43](25)特征库更新:如果形成的规则在特征库中无相同的规则,则将规则加入特征库。[〇〇44] 如图3所示,为规则示例。
[0045]规则是操作系统的特征的具体取值以及该取值对应的操作系统。如图3,这是规则的示例。各个字段间用“:”隔开,规则前9个字段分别对应图4中识别操作系统的特征字段, 最后一个字段为规则对应的操作系统。
[0046]规则的集合构成特征库。特征库的形成需要一个不断地积累过程。特征库中的规则可以通过人工分析网络流量的方式形成。但是,这种方式更新比较滞后,特征库中往往缺少新版本系统的特征,从而无法识别新版本系统。本发明应用层数据分析模块可根据应用层信息自动形成规则。
[0047]本发明提出样利用样本来判断操作系统。样本在形式上与规则相同。一个样本是系统在网络中运行过程中从TCP SYN分组以及该分组所在IP分组首部中提取操作系统特征以及通过分析结果判决模块或者应用层数据分析模块得到的操作系统识别结果所形成的一条记录。样本的集合形成样本库。随着系统的运行,样本库中的样本逐渐积累,随着样本数量的增长,样本库中的操作系统的分布体现了当前网络中操作系统的分布。[〇〇48](30)首部特征识别:当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特征库中规则匹配时,识别出发送TCP分组的主机的操作系统,转至(50)识别结果输出步骤;
[0049]如图4所示,所述特征字段包括TCP首部中的窗口大小、最大报文段大小、窗口比例因子、选择性ACK是否有效、TCP选项中是否包含N0P、时间戳选项是否有效、以及IP首部中的生存时间、IP是否分片标志位、IP分组长度。
[0050]如图5所示,为首部特征识别过程。[0051 ]所述(30)首部特征识别步骤包括:[〇〇52](31)操作系统特征获取:当捕获的TCP分组是SYN分组或者SYN ACK分组时,提取TCP分组首部以及该分组IP首部中的特征字段,形成操作系统特征;
[0053](32)特征匹配:将提取的操作系统特征与特征库中的规则进行匹配,根据操作系统特征与特征库中规则的匹配情况,识别出发送TCP分组的主机的操作系统。[〇〇54] 所述(32)特征匹配步骤包括:[〇〇55](321)当操作系统的特征与特征库中的规则唯一匹配时,该规则对应的操作系统为识别结果;
[0056](322)当操作系统的特征与特征库中的多个规则匹配时,所匹配的规则中指向最多的操作系统作为识别结果,如不同操作系统匹配规则数相同,则根据操作系统使用分布, 选择当前使用更为广泛的操作系统作为识别结果;[〇〇57](323)当操作系统的特征与特征库中的规则无匹配时,继续后续步骤。[〇〇58]应用层数据分析模块分析TCP分组中携带的应用层数据,提取应用数据中携带的操作系统信息并将结果发送至分析结果判决模块。一些应用层的数据会携带应用层的信息,比较常见的是HTTP协议的User-Agent字段中通常会携带操作系统信息。应用层中携带的操作系统信息只要应用程序不存在欺骗的行为,其准确度是100%,但是,相对于基于 TCP/IP分组首部特征字段的操作系统识别方法来说,携带操作系统信息的应用层数据较少,能够识别的主机较少。
[0059]本发明综合应用层的信息,将其作为一种辅助方法。一方面,可用于识别新版本的操作系统;另一方面,可作为自动产生特征库规则的方法,使特征库的维护更加容易。
[0060]基于TCP/IP分组首部特征字段的操作系统识别方法识别的准确率较低,其中一个重要的原因是对于同一个操作系统,其特征不唯一,这导致不同操作系统的特征存在相似性。然而,同一类别不同版本操作系统特征的相似性要大于不同类别的操作系统特征。
[0061]为了描述操作系统间的相似性,本发明定义了操作系统特征的距离为不相同的操作系统特征字段的数量。同样,操作系统特征与特征库中规则间的距离同样为不相同的操作系统特征字段的数量。操作系统间的相似性越大,则两者的距离越小。[〇〇62] TCP分组首部特征分析是在基本的基于TCP/IP分组首部特征字段的操作系统识别方法上的改进,考虑了操作系统的特征与多个规则匹配的情况,这时将结果判定为匹配规则中出现最多的操作系统。同时也考虑到可能出现不同操作系统匹配规则数相同的情况, 例如,对于操作系统特征A,分别匹配规则B、C,而规则B判断操作系统为S,规则C判断操作系统为S’,S和S’为不同的操作系统,那么如果当前操作系统S分布更为广泛,那么判定操作系统特征A对应的操作系统为S。
[0063]本发明中操作系统的分布来源于因特网知名网站的统计网站的统计数据,包括StatCounter和W3Techs。一种根据当前操作系统分布的排序如下:Windows 7、Windows 10、 Windows 8、Mac OS X、Windows 父?、1^]11?、1330、0&,;[11、]^:)-1^、3〇1&1'18。对于其它使用较少的系统排在Solaris之后,且认为分布相等。排序越靠前,认为其分布越广,出现的概率越大。
[0064]为了提高操作系统识别的准确率,采用了两级的识别结构,分别由TCP分组首部特征分析识别和基于最小距离的判断识别完成。[〇〇65](40)最小距离识别:当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特征库中规则不匹配时,基于最小距离,识别出发送TCP分组的主机的操作系统;[〇〇66]所述(40)最小距离识别步骤包括:
[0067](41)计算操作系统特征与特征库中规则以及样本库中样本的最小距离dmin;
[0068](42)找出特征库和样本库中与操作系统特征距离为dmin的所有规则和样本的集合R;
[0069](43)计算R中规则和样本指出的出现次数最多的操作系统类别S作为识别结果;
[0070](44)如果多个不同类别的操作系统出现次数相同,根据操作系统使用分布选择当前使用更为广泛的操作系统S作为识别结果。
[0071]基于最小距离的判断模块所采用的方法与K近邻方法相近,又存在区别。K近邻方法是以距离最近的K个邻居为判断依据。而基于最小距离的判断模块所采用的方法其距离为dmin的规则和样本的集合R中样本和规则的数量是不确定的,这与K近邻的方法存在差别。
[0072]基于最小距离的判断模块不仅利用了特征库,同时利用了样本库。特征库中的规则不能代表网络中操作系统的实际分布,每一条规则只能代表某一个操作系统可能的特征。但是,样本库则是当前网络中实际推断的结果,随着系统的不断运行,样本库中操作系统的分布能够趋近于网络中实际操作系统的分布,对特定样本的推断起到促进作用,能够提高操作系统识别的准确率。
[0073](50)识别结果输出:输出发送TCP分组的主机的操作系统类别。[〇〇74]所述(50)识别结果输出步骤包括:
[0075](51)将(20)应用层数据分析步骤识别出的发送TCP分组的主机的操作系统作为最终判定结果输出;
[0076](52)否则,将(30)首部特征识别步骤识别出的发送TCP分组的主机的操作系统作为最终判定结果输出,并将与该操作系统特征匹配的规则作为样本放入样本库;[〇〇77](53)否则,将(40)最小距离识别步骤识别出的发送TCP分组的主机的操作系统作为最终判定结果输出,并将提取的操作系统特征与判定的结果作为样本放入样本库。
[0078]本发明网络远程主机操作系统被动识别装置,其特征在于,包括:
[0079]分组嗅探模块(10),用于嗅探并捕获由网络主机发送的TCP分组;
[0080]应用层数据分析模块(20),用于分析TCP分组中携带的应用层数据,当为HTTP协议数据时,提取应用层数据中携带的操作系统信息,识别出发送TCP分组的主机的操作系统, 并提取TCP SYN分组中的操作系统特征更新由规则组成的特征库和由样本组成的样本库, 转至(50)识别结果输出步骤;[0081 ]首部特征识别模块(30),当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特征库中规则匹配时,识别出发送TCP分组的主机的操作系统,转至(50)识别结果输出步骤;[〇〇82]最小距离识别模块(40),当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特征库中规则不匹配时,基于最小距离,识别出发送TCP分组的主机的操作系统; [〇〇83]识别结果输出模块(50),用于输出发送TCP分组的主机的操作系统类别。
[0084]下面采用一个实际的案例说明本发明的效用。
[0085]采用VMware来构建测试环境,根据当前因特网中操作系统的使用情况,主要选择当前网络中常用的系统。这些系统包括:Windows系列(WinXP、Win7、Win8、Winl0、Win2003); Linux系列(Ubuntu server、Ubuntu、Centos server);Mac OS X系列等。在VMware中,将虚拟机的网络连接方式设置为NAT方式,在这个模式下,虚拟机通过虚拟网卡VMnetS进行转换与外界网络通信。在实际物理主机上布设Apache服务器构建Web服务器,同时,利用Serv-U 构建FTP服务器。从虚拟机中访问构建的Web服务器和FTP服务器,使用虚拟机上安装的不同的Web浏览器访问网站,例如IE浏览器和360浏览器,而Linux系统上安装的浏览器通常为 Firefox,使用ftp命令访问FTP服务器,同时尝试使用telnet命令访问Web服务器和FTP服务器。由于实际布设的操作系统已知,只需要根据其应用层信息和从TCP/IP分组中提取的操作系统特征进行判断,并与实际的操作系统进行对比,过程可控。
[0086]本发明选用的操作系统特征与ettercap软件采用的特征一致。可利用当前 ettercap最新版本0.8.2的特征库。在这个特征库中,能够识别的最新的Windows系统包括 WinXP、Win2003;能够识别的最新的Linux内核为2.6.11;能够识别的最新的Mac OS X系统为10.3.8。可见,特征库缺乏更新,较为陈旧。[〇〇87]首先,采用基本的基于TCP/IP分组首部特征字段的操作系统识别方法,只有 21.2%的操作系统特征能够与特征库中的特征精确匹配。总体上对操作系统类别的判断准确率为21.2%。这里很大一部分原因在于特征库中没有新版本操作系统的判断规则。[〇〇88]进一步采用本发明的TCP分组首部特征分析模块和基于最小距离的判断模块对数据进行分析,则对操作系统类别判断的准确率提高至91.92%。
[0089]如图6,当进一步综合应用层信息时,对操作系统类别的识别准确率随着应用层识别的操作系统的不断增加而不断提高。当应用层已经识别了40%的数据以后,对操作系统分类的准确率已经超过96%。
[0090]本发明综合应用层信息,采用基于最小距离的操作系统被动识别,可大大提高操作系统识别准确率、可识别新版本操作系统类型并可自动产生识别操作系统的规则。
【主权项】
1.一种网络远程主机操作系统被动识别方法,其特征在于,包括如下步骤:(10)分组嗅探:嗅探并捕获由网络主机发送的TCP分组,包括TCP SYN分组和TCP SYNACK 分组;(20)应用层数据分析:分析TCP分组中携带的应用层数据,当为HTTP协议数据时,提取 应用层数据中携带的操作系统信息,识别出发送TCP分组的主机的操作系统,并提取TCP SYN分组中的操作系统特征更新由规则组成的特征库和由样本组成的样本库,转至(50)识 别结果输出步骤;(30)首部特征识别:当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特 征库中规则匹配时,识别出发送TCP分组的主机的操作系统,转至(50)识别结果输出步骤;(40)最小距离识别:当从TCP SYN分组或者TCP SYNACK分组提取的操作系统特征与特 征库中规则不匹配时,基于最小距离,识别出发送TCP分组的主机的操作系统;(50)识别结果输出:输出发送TCP分组的主机的操作系统类。2.根据权利要求1所述的操作系统被动识别方法,其特征在于,所述(20)应用层数据分 析步骤包括:(21)协议判断:根据TCP分组的目的端口号,判定TCP分组的数据是否为HTTP协议;(22)操作系统特征提取:如果目的端口为80端口,则提取TCP SYN分组及该分组所在IP 分组首部的特征字段,形成操作系统特征;(23)操作系统信息提取:在TCP分组中查找HTTP协议请求分组中的User-Agent字段,并 提取该字段中的操作系统信息;(24)样本库更新:将从TCP SYN分组及该分组所在IP分组首部提取的操作系统特征和 从HTTP协议User-Agent字段提取的操作系统信息形成样本和规则,将样本加入样本库;(25)特征库更新:如果形成的规则在特征库中无相同的规则,则将规则加入特征库。3.根据权利要求1所述的操作系统被动识别方法,其特征在于,所述(30)首部特征识别 步骤包括:(31)操作系统特征获取:当捕获的TCP分组是TCP SYN分组或者TCP SYNACK分组时,提 取TCP分组首部以及该分组IP首部中的特征字段,形成操作系统特征;(32)特征匹配:将提取的操作系统特征与特征库中的规则进行匹配,根据操作系统特 征与特征库中规则的匹配情况,识别出发送TCP分组的主机的操作系统。4.根据权利要求3所述的操作系统被动识别方法,其特征在于,所述(32)特征匹配步骤 包括:(321)当操作系统的特征与特征库中的规则唯一匹配时,该规则对应的操作系统为识 别结果;(322)当操作系统的特征与特征库中的多个规则匹配时,所匹配的规则中指向最多的 操作系统作为识别结果,如不同操作系统匹配规则数相同,则根据操作系统使用分布,选择 当前使用更为广泛的操作系统作为识别结果;(323)当操作系统的特征与特征库中的规则无匹配时,继续后续步骤。5.根据权利要求1所述的操作系统被动识别方法,其特征在于,所述(40)最小距离识别 步骤包括:(41)计算操作系统特征与特征库中规则以及样本库中样本的最小距离dmin;(42)找出特征库和样本库中与操作系统特征距离为dmin的所有规则和样本的集合R;(43)计算R中规则和样本指出的出现次数最多的操作系统类别S作为识别结果;(44)如果多个不同类别的操作系统出现次数相同,根据操作系统使用分布选择当前使 用更为广泛的操作系统S作为识别结果。6.根据权利要求1所述的操作系统被动识别方法,其特征在于,所述(50)识别结果输出 步骤包括:(51)将(20)应用层数据分析步骤识别出的发送TCP分组的主机的操作系统作为最终判 定结果输出;(52)否则,将(30)首部特征识别步骤识别出的发送TCP分组的主机的操作系统作为最 终判定结果输出,并将与该操作系统特征匹配的规则作为样本放入样本库;(53)否则,将(40)最小距离识别步骤识别出的发送TCP分组的主机的操作系统作为最 终判定结果输出,并将提取的操作系统特征与判定的结果作为样本放入样本库。7.—种网络远程主机操作系统被动识别装置,其特征在于,包括:分组嗅探模块(10),用于嗅探并捕获由网络主机发送的TCP分组;应用层数据分析模块(20),用于分析TCP分组中携带的应用层数据,当为HTTP协议数据 时,提取应用层数据中携带的操作系统信息,识别出发送TCP分组的主机的操作系统,并提 取TCP SYN分组中的操作系统特征更新由规则组成的特征库和由样本组成的样本库,转至 (50)识别结果输出步骤;首部特征识别模块(30),用于当从TCP SYN分组或者TCP SYNACK分组提取的操作系统 特征与特征库中规则匹配时,识别出发送TCP分组的主机的操作系统,转至(50)识别结果输 出步骤;最小距离识别模块(40),用于当从TCP SYN分组或者TCP SYNACK分组提取的操作系统 特征与特征库中规则不匹配时,基于最小距离,识别出发送TCP分组的主机的操作系统;识别结果输出模块(50),用于输出发送TCP分组的主机的操作系统类别。
【文档编号】H04L29/08GK105959321SQ201610549933
【公开日】2016年9月21日
【申请日】2016年7月13日
【发明人】袁恩, 齐望东
【申请人】中国人民解放军理工大学