CN110213124A - 基于tcp多会话的被动操作系统识别方法及装置 - Google Patents
基于tcp多会话的被动操作系统识别方法及装置 Download PDFInfo
- Publication number
- CN110213124A CN110213124A CN201910372005.XA CN201910372005A CN110213124A CN 110213124 A CN110213124 A CN 110213124A CN 201910372005 A CN201910372005 A CN 201910372005A CN 110213124 A CN110213124 A CN 110213124A
- Authority
- CN
- China
- Prior art keywords
- tcp
- session
- fingerprint
- sessions
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/06—Generation of reports
- H04L43/062—Generation of reports related to network traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/18—Protocol analysers
Abstract
本发明实施例提供一种基于TCP多会话的被动操作系统识别方法及装置,方法包括:获取设备在预设时间段内产生多次TCP会话的流量数据,以及所述流量数据中的TCP数据包;对各TCP数据包中的IP和TCP协议字段进行解析,获取各字段的解析结果,将任一TCP会话对应的解析结果中的预设字段作为该TCP会话的单会话指纹;将相邻两个TCP会话的单会话指纹中同一字段的解析结果进行比较,将所有字段的比较结果作为所有TCP会话的多会话特征;将所有单会话指纹的组合和多会话特征组成多会话指纹,从指纹库中查找出多会话指纹,将查找的多会话指纹对应的操作系统作为识别结果。本发明实施例提高了操作系统识别的准确率和精度。
Description
技术领域
本发明属于网络安全技术领域,尤其涉及一种基于TCP多会话的被动操作系统识别方法及装置。
背景技术
随着互联网的发展,越来越多的设备都连接到了互联网上,而保护这些设备的安全非常重要。操作系统识别是通过远程主机所发送的TCP/IP数据包检测和确定主机的操作系统类型和版本。首先,从消极的角度看攻击者需要检测目标主机的操作系统,是为了利用其漏洞进行攻击。其次,从积极的方面看网络管理员也需要操作系统识别。网络管理员需要尽可能的了解本网络中的信息,包括了解连接到网络中的主机的操作类型和版本。例如,如果运行旧版本操作系统的设备很容易被攻击。通过使用操作系统识别技术,网络管理员可以清楚掌握哪台机器的操作系统需要升级。
操作系统指纹则是指从某一操作系统所发出的网络数据包中提取的可以区分不同操作系统的特征。其原理是不同的操作系统厂商在实现TCP/IP协议栈时出现了细微的差别,这些差别具有独特的特性,故而被称为“指纹”。例如IP(Internet Protocol Address,互联网协议地址)协议的TTL(Time To Live,缓存的生存时间)字段以及TCP(TransmissionControl Protocol,传输控制协议)的窗口字段和选项字段等就是最常见的可以区分不同操作系统的预设字段。
操作系统识别技术分为主动和被动两类。主动操作系统指纹识别需要精心构造不同的数据包并发送出去,根据返回的结果来分析目标的具体操作系统。此方法最大的缺点在于发送的数据包会被防火墙或者入侵检测系统拦截,并且会暴露自身的信息。被动操作系统指纹识别比主动操作系统指纹识别来说比较限制,只能被动的接受流量,从流量中分析出操作系统信息。传统的被动操作系统识别技术主要根据TCP会话建立时发送的数据包中的IP和TCP协议的预设字段来识别不同类型和版本的操作系统,其中的代表性工具就是p0f。此外,操作系统识别本质上是一个分类问题,因此新的方法是采用机器学习分类算法训练出模型来识别出操作系统。
目前被动操作系统技术主要分为两类方法,一是传统基于指纹库匹配的识别方法;二是基于机器学习分类算法训练模型的识别方法。传统的操作系统识别方法所开发的工具均带有操作系统指纹库,识别出通过匹配指纹库给出结果。匹配成功时给出识别结果,匹配不成功时无法给出结果。而基于机器学习分类算法训练模型的识别方法,可以对未知操作系统进行结果预测,预测的结果也只能在已有模型的操作系统范围内。但是这两种方法本质上都是需要提取特征项,包括可以直接作为特征的字段或者间接计算的特征项。特征项的好坏决定了两种方法的给出的识别结果的正确率。现有的特征提取方法根据一个TCP会话的特征项进行匹配或识别,导致对相同类型不同版本的操作系统往往难以区分。
发明内容
为克服上述现有的操作系统识别方法安全性差且相同类型不同版本的操作系统往往难以区分导致的识别精度低的问题或者至少部分地解决上述问题,本发明实施例提供一种基于TCP多会话的被动操作系统识别方法及装置。
根据本发明实施例的第一方面,提供一种基于TCP多会话的被动操作系统识别方法,包括:
获取设备在预设时间段内产生多次TCP会话的流量数据,以及各所述TCP会话产生的流量数据中的TCP数据包;
对各所述TCP数据包中的预设字段进行解析,获取各所述预设字段的解析结果,将任一所述TCP会话所产生的TCP数据包中所有预设字段的解析结果作为该TCP会话的单会话指纹;
将相邻两个所述TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有所述预设字段的比较结果作为所有所述TCP会话的多会话特征;
将所有所述单会话指纹组合和所述多会话特征作为所有所述TCP会话的多会话指纹,从预先获取的指纹库中查找出所述多会话指纹,将所述指纹库中所述多会话指纹对应的操作系统作为所述设备的操作系统识别结果。
根据本发明实施例第二方面提供一种基于TCP多会话的被动操作系统识别装置,包括:
获取模块,用于获取设备在预设时间段内产生多次TCP会话的流量数据,以及各所述TCP会话产生的流量数据中的TCP数据包;
解析模块,用于对各所述TCP数据包中的预设字段进行解析,获取各所述预设字段的解析结果,将任一所述TCP会话中TCP数据包所有预设字段的解析结果作为该TCP会话的单会话指纹;
比较模块,用于将相邻两个所述TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有所述预设字段的比较结果作为所有所述TCP会话的多会话特征;
识别模块,用于将所有所述单会话指纹的组合和所述多会话特征作为所有所述TCP会话的多会话指纹,从预先获取的指纹库中查找出所述多会话指纹,将所述指纹库中所述多会话指纹对应的操作系统作为所述设备的操作系统识别结果。
根据本发明实施例的第三个方面,还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器调用所述程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的基于TCP多会话的被动操作系统识别方法。
根据本发明实施例的第四个方面,还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的基于TCP多会话的被动操作系统识别方法。
本发明实施例提供一种基于TCP多会话的被动操作系统识别方法及装置,该方法通过在预设时间段内获取设备建立各TCP会话的单会话特征项,根据所有TCP会话的单会话特征项提取出所有TCP会话的多个多会话特征项,将所有多会话特征项和各TCP会话的单会话特征项进行组合,从而获取所有TCP会话的多会话指纹,根据多会话指纹与指纹库的匹配结果,能够较准确识别出该设备的操作系统的类型和版本,本实施例克服了单会话特征的局限性,提高了操作系统识别的准确率和精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于TCP多会话的被动操作系统识别方法整体流程示意图;
图2为本发明实施例提供的基于TCP多会话的被动操作系统识别装置整体结构示意图;
图3为本发明实施例提供的电子设备整体结构示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
在本发明的一个实施例中提供一种基于TCP多会话的被动操作系统识别方法,图1为本发明实施例提供的基于TCP多会话的被动操作系统识别方法整体流程示意图,该方法包括:S101,获取设备在预设时间段内产生多次TCP会话的流量数据,以及各所述TCP会话产生的流量数据中的TCP数据包;
其中,设备为操作系统未知,需要识别出操作系统的设备。预设时间段为预先设定的一个合理的时间段,在预设时间段内设备的IP地址未重新分配。目的端口为在预设时间段内设备访问的端口,本实施例不限于目的端口的种类。获取设备在预设时间段内进行访问目的端口而产生的多次TCP会话,每次TCP会话会产生相应的流量数据。将这些流量数据以pcap文件形式存放,pcap是一种通用的数据流格式。TCP数据包为TCP会话产生的流量数据中的数据包。本实施例对pcap文件进行离线处理,主要基于libpcap和mysql对pcap文件进行过滤和解析,然后存入数据库中。其中,libpcap是unix和linux平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础,mysql是一个关系型数据库管理系统。由于本实施例只涉及到TCP数据包,因此在获取到各TCP会话产生的流量数据中的TCP数据包后只对TCP数据包进行解析。
S102,对各所述TCP数据包中的预设字段进行解析,获取各所述预设字段的解析结果,将任一所述TCP会话所产生的TCP数据包所有预设字段的解析结果作为该TCP会话的单会话指纹;
预设字段为预先设定的IP和TCP协议中作为识别操作系统的特征项,包括TTL值、窗口大小和TCP选项等。对所有TCP会话产生的流量数据中TCP数据包的预设字段进行解析,获取每个TCP数据包中各预设字段的解析结果。将由同一TCP会话所产生的流量数据中TCP数据包的解析结果作为一个单会话指纹,即TCP会话与单会话指纹一一对应。
S103,将相邻两个所述TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有所述预设字段的比较结果作为所有所述TCP会话的多会话特征;
相邻两个TCP会话是指建立时间相邻的两个TCP会话。将相邻两个TCP会话的单会话指纹中同一预设字段的解析结果进行比较,例如将相邻两个TCP会话的单会话指纹中的IPID值进行比较,从而获取到所有TCP会话的单会话指纹中IPID值的变化规律。将每个预设字段的比较结果作为一个多会话特征项,因为其依赖于多个TCP会话,通过比较的方法计算出每个预设字段的多会话特征项。将所有预设字段的多会话特征项作为所有TCP会话的多会话特征。
S104,将所有所述单会话指纹和所述多会话特征进行组合,将组合结果作为所有所述TCP会话的多会话指纹,从预先获取的指纹库中查找出所述多会话指纹,将所述指纹库中所述多会话指纹对应的操作系统作为所述设备的操作系统识别结果。
将每个预设字段的多会话特征项和预设时间段内各TCP会话的单会话指纹组成多会话指纹,不考虑多会话指纹中各单会话指纹的排列顺序。根据预先获取的指纹库和该设备进行多次TCP会话的多指纹特征,获取该设备的操作系统识别结果。指纹库为存放多会话指纹与操作系统类型、版本之间的关联关系的数据库。指纹库中的多会话指纹按照上述TCP会话的多会话指纹的获取方法预先获得。从预先获取的指纹库中查找出多会话指纹的方法为若该设备对应的多会话指纹中的多会话特征项与指纹库中任一多会话指纹中的多会话特征项完全相同,且该设备对应的多会话指纹中的所有单会话指纹在指纹库中该多会话指纹的单会话指纹中都存在,则指纹库中的该多会话指纹为查找出的多会话指纹。
本实施例通过在预设时间段内获取设备建立各TCP会话的单会话特征项,根据所有TCP会话的单会话特征项提取出所有TCP会话的多个多会话特征项,将所有多会话特征项和各TCP会话的单会话特征项进行组合,从而获取所有TCP会话的多会话指纹,根据多会话指纹与指纹库的匹配结果,能够较准确识别出该设备的操作系统的类型和版本,本实施例克服了单会话特征的局限性,提高了操作系统识别的准确率和精度。
在上述实施例的基础上,本实施例中获取设备在预设时间段内产生多次TCP会话的流量数据的步骤之前还包括:对于任一类预设操作系统,创建具有任一版本的该类预设操作系统的虚拟机;基于所述虚拟机的脚本分别与各预设目的端口进行TCP会话;获取所述虚拟机的所有所述TCP会话的多会话指纹,将所述虚拟机的所有所述TCP会话的多会话指纹与所述任一版本的该类预设操作系统之间的关联关系存放到所述指纹库中。
具体地,为了构建指纹库,需要先创建多个虚拟机。在每个虚拟机上分别安装不同版本的各类操作系统,如Windows、Linux和MACOS三类主流操作系统。基于任一虚拟机上的脚本访问多个目的端口产生流量数据,如访问国内Alex Top10网站产生浏览器网络流量数据,该网站的目的端口为80和443,并且使用Telnet产生22、139、445和3389等其他目的端口的流量数据。虚拟机在访问任一目的端口时建立TCP会话。Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。采用上述对流量数据进行处理获取多会话指纹相同的方法,获取根据任一虚拟机产生的流量数据获取该虚拟机访问时所建立TCP会话的多特征指纹。将该虚拟机上所安装操作系统的类型和版本作为该虚拟机访问时所建立TCP会话的多特征指纹的标签。将任一多指纹特征和该多指纹特征的标签存入到指纹库中。
在上述实施例的基础上,本实施例中对各所述TCP数据包中的预设字段进行解析,获取各所述预设字段的解析结果的步骤之前还包括:获取各所述TCP数据包中SYN标志位和ACK标志位的值;对于任一所述TCP数据包,若该TCP数据包中的SYN标志位为1且ACK标志位为0,则将该TCP数据包确定为初始数据包;相应地,对各所述TCP数据包中的预设字段进行解析,获取各所述预设字段的解析结果的步骤具体包括:对各所述初始数据包中的预设字段进行解析,获取各所述预设字段的解析结果。
具体地,解析出各TCP数据包中SYN标志位和ACK标志位的值。其中,SYN表示同步序号,用来建立连接,ACK为确认序号。对各TCP会话产生流量数据中的每个TCP数据包进行判断,判断各TCP数据包的SYN是否值为1且ACK是否值为0。若满足两个条件,则说明为初始数据包。具体方法为对于各任一TCP数据包判断是否同时满足两个条件,如果不满足,则继续判断pcap文件是否读取完毕,未读取完毕则继续读取并解析单个TCP数据包,直到pcap文件读取完毕。
在上述各实施例的基础上,本实施例中所述预设字段包括中显示拥塞通知IP协议字段、报文生存时间字段、未分片时IPID值是否为0、TCP协议中的显示拥塞通知字段、窗口大小、TCP选项结束标识、TCP选项结束后填充字节数、TCP选项填充标识、TCP选项最大报文段长度、TCP选项窗口扩大因子、TCP选项选择性确认、TCP选项时间戳标识、TCP选项布局,以及所述窗口大小和所述TCP选项最大报文段长度之间的比值。
其中,显示拥塞通知IP协议字段ecn_ip_ect为RFC3168中设置的字段,使用IP首部TOS字段中的第7位。报文生存时间字段ttl表示TCP数据包在网络中的生存时间,每经过一跳减一,ttl为0时丢弃该TCP数据包。未分片时IPID是否为0字段qk_dfnz_ipid表示未设置分片时IPID值是否为0。显示拥塞通知TCP协议字段flag_CWR为RFC3168中设置的字段,使用了保留字段第5位。显示拥塞通知TCP协议字段flag_ECE为RFC3168中设置的字段,使用了保留字段第6位。窗口大小win表示可以接受的缓冲区大小。TCP选项结束标识tcpopt_eol为类型kind=0。TCP选项结束后填充字节数tcpopt_eol_padnum表示TCP选项结束后可能有填充。TCP选项填充标识tcpopt_nop为TCP选项结束标识的类型kind=1。TCP选项最大报文段长度tcpopt_mss与网络环境有关,kind=2。TCP选项窗口扩大因子tcpopt_wscale用于对窗口进行放大,类型kind=3。TCP选项选择性确认字段tcpopt_sack用于通知传输的另一方接收到的数据,kind=4。TCP选项时间戳标识tcpopt_ts_flag)为类型kind=8。TCP选项布局tcpopt_layout表示按照TCP选项出现的先后顺序排序。窗口和最大报文段长度比值qk_win_mss表示窗口大小与TCP选项最大报文段长度之间的比值。以上15个单会话特征项具有区分操作系统和版本的作用,因此根据这些单会话特征项提取出单会话指纹。
在上述各实施例的基础上,本实施例中所述多会话指纹包括所述单会话指纹的组合和根据所述预设字段中的IPID值和时间戳确定的多会话特征;其中,所述单会话指纹的组合通过以下步骤获取:将所有操作系统的不重复单会话指纹按预设顺序进行排序;将所述设备的每个单会话指纹与所有所述不重复单会话指纹进行比较,获取所述设备的每个单会话指纹在所述不重复单会话指纹中的位置;将所述位置对应的值设置为1,将所述不重复单会话指纹中除设置为1的位置以外的位置对应的值设置为0,生成一个二进制字符串,将所述二进制字符串作为所述单会话指纹的组合;相应地,将相邻两个所述TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有所述预设字段的比较结果作为所有所述TCP会话的多会话特征的步骤具体包括:将相邻两个所述TCP会话的单会话指纹中的IPID值进行比较,根据比较结果确定所有所述TCP会话的IPID值的变化结果;所述变化结果包括全局变化、局部变化和保持不变;对于任意相邻两个所述TCP会话,将该相邻两个所述TCP会话建立的真实时间之间的时长除以该相邻两个所述TCP会话单会话指纹中的时间戳之间的差值,将计算结果作为该相邻两个所述TCP会话单会话的时间戳增长单位;将所有所述TCP会话的IPID值的变化结果和相邻两个所述TCP会话的时间戳增长单位作为所有所述TCP会话的多会话特征。
具体地,根据解析出的预设字段的值,提取两个多会话特征项,即IPID变化值qk_ipid和时间戳增长单位qk_tcpopt_tsrate。具体将相邻两个TCP会话的单会话指纹中的IPID值进行比较,根据比较结果确定所有TCP会话的IPID值的变化结果,即IPID值为全局变化、局部变化或一直不变始终为0。计算任意相邻两个所述TCP会话建立的真实时间之间的时长和这两个TCP会话产生的TCP数据包中的时间戳的前四位之间的差值,将时长除以差值获取时间戳增长单位,单位为ms,RFC7323规定时间戳增长单位的范围为1-1000ms。
与现有的基于TCP单会话的被动操作系统识别方法相比,本实施例提高了相同类型不同版本的操作系统区分度。现有应用单会话指纹的识别与本实施例中应用多会话指纹识别在相同的虚拟机网络流量中识别结果对比如表1所示。其中,A类结果是指数据标记为Win7,识别结果为Win7,B类结果指数据标记为Win7,识别结果为Win7或Win8。表1中的数据表示两类识别结果的分布占比。可以看出采用多会话指纹显著提高了识别的精度。
表1现有方法与本实施例的识别结果对比
方法 | A类结果 | B类结果 |
单会话指纹 | 16.42% | 83.58% |
多会话指纹 | 46.88% | 53.12% |
在本发明的另一个实施例中提供一种基于TCP多会话的被动操作系统识别装置,该装置用于实现前述各实施例中的方法。因此,在前述基于TCP多会话的被动操作系统识别方法的各实施例中的描述和定义,可以用于本发明实施例中各个执行模块的理解。图2为本发明实施例提供的基于TCP多会话的被动操作系统识别装置整体结构示意图,该装置包括获取模块201、解析模块202、比较模块203和识别模块204;其中:
获取模块201用于获取设备在预设时间段内产生多次TCP会话的流量数据,以及各所述TCP会话产生的流量数据中的TCP数据包;
其中,设备为操作系统未知,需要识别出操作系统的设备。预设时间段为预先设定的一个合理的时间段,在预设时间段内设备的IP地址未重新分配。目的端口为在预设时间段内设备访问的端口,本实施例不限于目的端口的数量。获取模块201获取设备在预设时间段内进行访问而产生的多次TCP会话,每次TCP会话会产生相应的流量数据。由于本实施例只涉及到TCP数据包,因此在获取到各TCP会话产生的流量数据中的TCP数据包后只对TCP数据包进行解析。
解析模块202用于对各所述TCP数据包中的预设字段进行解析,获取各所述预设字段的解析结果,将任一所述TCP会话中TCP数据包所有预设字段的解析结果作为该TCP会话的单会话指纹;
预设字段为预先设定的TCP数据包中的字段。解析模块202对所有TCP会话产生的流量数据中TCP数据包的预设字段进行解析,获取每个TCP数据包中各预设字段的解析结果。将由同一TCP会话所产生的流量数据中TCP数据包的解析结果作为一个单会话指纹,即TCP会话与单会话指纹一一对应。
比较模块203用于将相邻两个所述TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有所述预设字段的比较结果作为所有所述TCP会话的多会话特征;
相邻两个TCP会话是指建立时间相邻的两个TCP会话。比较模块203将相邻两个TCP会话的单会话指纹中同一预设字段的解析结果进行比较,例如将相邻两个TCP会话的单会话指纹中的IPID值进行比较,从而获取到所有TCP会话的单会话指纹中IPID值的变化规律。将每个预设字段的比较结果作为一个多会话特征项,因为其依赖于多个TCP会话,通过比较的方法计算出每个预设字段的多会话特征项。将所有预设字段的多会话特征项作为所有TCP会话的多会话特征。
识别模块204用于将所有所述单会话指纹和所述多会话特征进行组合,将组合结果作为所有所述TCP会话的多会话指纹,从预先获取的指纹库中查找出所述多会话指纹,将所述指纹库中所述多会话指纹对应的操作系统作为所述设备的操作系统识别结果。
将每个预设字段的多会话特征项和预设时间段内各TCP会话的单会话指纹组成多会话指纹,不考虑多会话指纹中各单会话指纹的排列顺序。识别模块204根据预先获取的指纹库和该设备进行多次TCP会话的多指纹特征,获取该设备的操作系统识别结果。指纹库为存放多会话指纹与操作系统类型、版本之间的关联关系的数据库。指纹库中的多会话指纹按照上述TCP会话的多会话指纹的获取方法预先获得。从预先获取的指纹库中查找出多会话指纹的方法为若该设备对应的多会话指纹中的多会话特征项与指纹库中任一多会话指纹中的多会话特征项完全相同,且该设备对应的多会话指纹中的所有单会话指纹在指纹库中该多会话指纹的单会话指纹中都存在,则指纹库中的该多会话指纹为查找出的多会话指纹。
本实施例通过在预设时间段内获取设备建立各TCP会话的单会话特征项,根据所有TCP会话的单会话特征项提取出所有TCP会话的多个多会话特征项,将所有多会话特征项和各TCP会话的单会话特征项进行组合,从而获取所有TCP会话的多会话指纹,根据多会话指纹与指纹库的匹配结果,能够较准确识别出该设备的操作系统的类型和版本,本实施例克服了单会话特征的局限性,提高了操作系统识别的准确率和精度。
在上述实施例的基础上,本实施例中构造模块,用于对于任一类预设操作系统,创建具有任一版本的该类预设操作系统的虚拟机;基于所述虚拟机的脚本分别与各预设目的端口进行TCP会话;获取所述虚拟机的所有所述TCP会话的多会话指纹,将所述虚拟机的所有所述TCP会话的多会话指纹与所述任一版本的该类预设操作系统之间的关联关系存放到所述指纹库中。
在上述实施例的基础上,本实施例中还包括筛选模块,用于获取各所述TCP数据包中SYN标志位和ACK标志位的值;对于任一所述TCP数据包,若该TCP数据包中的SYN标志位为1且ACK标志位为0,则将该TCP数据包确定为初始数据包;相应地,解析模块具体用于对各所述初始数据包中的预设字段进行解析,获取各所述预设字段的解析结果。
在上述各实施例的基础上,本实施例中所述预设字段包括中显示拥塞通知IP协议字段、报文生存时间字段、未分片时IPID值是否为0、TCP协议中的显示拥塞通知字段、窗口大小、TCP选项结束标识、TCP选项结束后填充字节数、TCP选项填充标识、TCP选项最大报文段长度、TCP选项窗口扩大因子、TCP选项选择性确认、TCP选项时间戳标识、TCP选项布局,以及所述窗口大小和所述TCP选项最大报文段长度之间的比值。
在上述各实施例的基础上,本实施例中所述多会话指纹包括所述单会话指纹的组合和根据所述预设字段中的IPID值和时间戳确定的多会话特征;其中,所述单会话指纹的组合通过以下步骤获取:将所有操作系统的不重复单会话指纹按预设顺序进行排序;将所述设备的每个单会话指纹与所有所述不重复单会话指纹进行比较,获取所述设备的每个单会话指纹在所述不重复单会话指纹中的位置;将所述位置对应的值设置为1,将所述不重复单会话指纹中除设置为1的位置以外的位置对应的值设置为0,生成一个二进制字符串,将所述二进制字符串作为所述单会话指纹的组合;相应地,比较模块具体用于:将相邻两个所述TCP会话的单会话指纹中的IPID值进行比较,根据比较结果确定所有所述TCP会话的IPID值的变化结果;所述变化结果包括全局变化、局部变化和保持不变;对于任意相邻两个所述TCP会话,将该相邻两个所述TCP会话建立的真实时间之间的时长除以该相邻两个所述TCP会话单会话指纹中的时间戳之间的差值,将计算结果作为该相邻两个所述TCP会话单会话的时间戳增长单位;将所有所述TCP会话的IPID值的变化结果和相邻两个所述TCP会话的时间戳增长单位作为所有所述TCP会话的多会话特征。
本实施例提供一种电子设备,图3为本发明实施例提供的电子设备整体结构示意图,该设备包括:至少一个处理器301、至少一个存储器302和总线303;其中,
处理器301和存储器302通过总线303完成相互间的通信;
存储器302存储有可被处理器301执行的程序指令,处理器调用程序指令能够执行上述各方法实施例所提供的方法,例如包括:获取设备在预设时间段内产生多次TCP会话的流量数据,以及所述流量数据中的TCP数据包;对各TCP数据包中的预设字段进行解析,获取各预设字段的解析结果,将任一TCP会话对应的解析结果作为该TCP会话的单会话指纹;将相邻两个TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有预设字段的比较结果作为所有TCP会话的多会话特征;将所有单会话指纹和多会话特征进行组合,获取多会话指纹,从指纹库中查找出多会话指纹,将查找的多会话指纹对应的操作系统作为识别结果。
本实施例提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述各方法实施例所提供的方法,例如包括:获取设备在预设时间段内产生多次TCP会话的流量数据,以及所述流量数据中的TCP数据包;对各TCP数据包中的预设字段进行解析,获取各预设字段的解析结果,将任一TCP会话对应的解析结果作为该TCP会话的单会话指纹;将相邻两个TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有预设字段的比较结果作为所有TCP会话的多会话特征;将所有单会话指纹和多会话特征进行组合,获取多会话指纹,从指纹库中查找出多会话指纹,将查找的多会话指纹对应的操作系统作为识别结果。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于TCP多会话的被动操作系统识别方法,其特征在于,包括:
获取设备在预设时间段内产生的多次TCP会话的流量数据,以及各所述TCP会话产生的流量数据中的TCP数据包;
对各所述TCP数据包中的P和TCP协议字段进行解析,获取各预设字段的解析结果,将任一所述TCP会话所产生的TCP数据包中所有预设字段的解析结果作为该TCP会话的单会话指纹;
将相邻两个所述TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有所述预设字段的比较结果作为所有所述TCP会话的多会话特征;
将所有所述单会话指纹的组合和所述多会话特征作为所有所述TCP会话的多会话指纹,从预先获取的指纹库中查找出所述多会话指纹,将所述指纹库中所述多会话指纹对应的操作系统作为所述设备的操作系统识别结果。
2.根据权利要求1所述的基于TCP多会话的被动操作系统识别方法,其特征在于,获取设备在预设时间段内产生多次TCP会话的流量数据的步骤之前还包括:
对于任一类预设操作系统,创建具有任一版本的该类预设操作系统的虚拟机;
基于所述虚拟机的脚本分别与各预设目的端口进行TCP会话;
获取所述虚拟机的所有所述TCP会话的多会话指纹,将所述虚拟机的所有所述TCP会话的多会话指纹与所述任一版本的该类预设操作系统之间的关联关系存放到所述指纹库中。
3.根据权利要求1所述的基于TCP多会话的被动操作系统识别方法,其特征在于,对各所述TCP数据包中的IP和TCP协议字段进行解析,获取各预设字段的解析结果的步骤之前还包括:
获取各所述TCP数据包中SYN标志位和ACK标志位的值;
对于任一所述TCP数据包,若该TCP数据包中的SYN标志位为1且ACK标志位为0,则将该TCP数据包确定为初始数据包;
相应地,对各所述TCP数据包中的IP和TCP协议字段进行解析,获取各预设字段的解析结果的步骤具体包括:
对各所述初始数据包中的IP和TCP协议中的所有字段进行解析,获取各所述预设字段的解析结果。
4.根据权利要求1-3任一所述的基于TCP多会话的被动操作系统识别方法,其特征在于,所述预设字段包括显示拥塞通知IP协议字段、报文生存时间字段、未分片时IPID值是否为0、显示拥塞通知TCP协议字段、窗口大小、TCP选项结束标识、TCP选项结束后填充字节数、TCP选项填充标识、TCP选项最大报文段长度、TCP选项窗口扩大因子、TCP选项选择性确认、TCP选项时间戳标识、TCP选项布局,以及所述窗口大小和所述TCP选项最大报文段长度之间的比值。
5.根据权利要求1-3任一所述的基于TCP多会话的被动操作系统识别方法,其特征在于,所述多会话指纹包括所述单会话指纹的组合和根据所述预设字段中的IPID值和时间戳确定的多会话特征;
其中,所述单会话指纹的组合通过以下步骤获取:
将所有操作系统的不重复单会话指纹按预设顺序进行排序;
将所述设备的每个单会话指纹与所有所述不重复单会话指纹进行比较,获取所述设备的每个单会话指纹在所述不重复单会话指纹中的位置;
将所述位置对应的值设置为1,将所述不重复单会话指纹中除设置为1的位置以外的位置对应的值设置为0,生成一个二进制字符串,将所述二进制字符串作为所述单会话指纹的组合;
相应地,将相邻两个所述TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有所述预设字段的比较结果作为所有所述TCP会话的多会话特征的步骤具体包括:
将相邻两个所述TCP会话的单会话指纹中的IPID值进行比较,根据比较结果确定所有所述TCP会话的IPID值的变化结果;所述变化结果包括全局变化、局部变化和保持不变;
对于任意相邻两个所述TCP会话,将该相邻两个所述TCP会话建立的真实时间之间的时长除以该相邻两个所述TCP会话单会话指纹中的时间戳之间的差值,将计算结果作为该相邻两个所述TCP会话单会话的时间戳增长单位;
将所有所述TCP会话的IPID值的变化结果和相邻两个所述TCP会话的时间戳增长单位作为所有所述TCP会话的多会话特征。
6.一种基于TCP多会话的被动操作系统识别装置,其特征在于,包括:
获取模块,用于获取设备在预设时间段内产生多次TCP会话的流量数据,以及各所述TCP会话产生的流量数据中的TCP数据包;
解析模块,用于对各所述TCP数据包中的预设字段进行解析,获取各所述预设字段的解析结果,将任一所述TCP会话中TCP数据包所有预设字段的解析结果作为该TCP会话的单会话指纹;
比较模块,用于将相邻两个所述TCP会话的单会话指纹中同一预设字段的解析结果进行比较,将所有所述预设字段的比较结果作为所有所述TCP会话的多会话特征;
识别模块,用于将所有所述单会话指纹的组合和所述多会话特征作为所有所述TCP会话的多会话指纹,从预先获取的指纹库中查找出所述多会话指纹,将所述指纹库中所述多会话指纹对应的操作系统作为所述设备的操作系统识别结果。
7.根据权利要求6所述的基于TCP多会话的被动操作系统识别装置,其特征在于,所述预设字段包括IP协议中的显示拥塞通知字段、报文生存时间字段、未分片时IPID值是否为0、TCP协议中的显示拥塞通知字段、窗口大小、TCP选项结束标识、TCP选项结束后填充字节数、TCP选项填充标识、TCP选项最大报文段长度、TCP选项窗口扩大因子、TCP选项选择性确认、TCP选项时间戳标识、TCP选项布局,以及所述窗口大小和所述TCP选项最大报文段长度之间的比值。
8.根据权利要求6或7所述的基于TCP多会话的被动操作系统识别装置,其特征在于,所述多会话指纹包括所述单会话指纹的组合和根据所述预设字段中的IPID值和时间戳确定的多会话特征;
其中,所述单会话指纹的组合通过以下步骤获取:
将所有操作系统的不重复单会话指纹按预设顺序进行排序;
将所述设备的每个单会话指纹与所有所述不重复单会话指纹进行比较,获取所述设备的每个单会话指纹在所述不重复单会话指纹中的位置;
将所述位置对应的值设置为1,将所述不重复单会话指纹中除设置为1的位置以外的位置对应的值设置为0,生成一个二进制字符串,将所述二进制字符串作为所述单会话指纹的组合;
相应地,所述比较模块具体用于:
将相邻两个所述TCP会话的单会话指纹中的IPID值进行比较,根据比较结果确定所有所述TCP会话的IPID值的变化结果;所述变化结果包括全局变化、局部变化和保持不变;
对于任意相邻两个所述TCP会话,将该相邻两个所述TCP会话建立的真实时间之间的时长除以该相邻两个所述TCP会话单会话指纹中的时间戳之间的差值,将计算结果作为该相邻两个所述TCP会话单会话的时间戳增长单位;
将所有所述TCP会话的IPID值的变化结果和相邻两个所述TCP会话的时间戳增长单位作为所有所述TCP会话的多会话特征。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述基于TCP多会话的被动操作系统识别方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至5任一项所述基于TCP多会话的被动操作系统识别方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910372005.XA CN110213124A (zh) | 2019-05-06 | 2019-05-06 | 基于tcp多会话的被动操作系统识别方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910372005.XA CN110213124A (zh) | 2019-05-06 | 2019-05-06 | 基于tcp多会话的被动操作系统识别方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110213124A true CN110213124A (zh) | 2019-09-06 |
Family
ID=67787009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910372005.XA Pending CN110213124A (zh) | 2019-05-06 | 2019-05-06 | 基于tcp多会话的被动操作系统识别方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110213124A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107276900A (zh) * | 2016-04-06 | 2017-10-20 | 中国移动通信集团浙江有限公司 | 一种互访信息的获取方法及装置 |
CN110519128A (zh) * | 2019-09-20 | 2019-11-29 | 西安交通大学 | 一种基于随机森林的操作系统识别方法 |
CN110545219A (zh) * | 2019-09-25 | 2019-12-06 | 杭州安恒信息技术股份有限公司 | 工业资产的被动识别方法、装置和电子设备 |
CN110868409A (zh) * | 2019-11-08 | 2020-03-06 | 中国科学院信息工程研究所 | 一种基于tcp/ip协议栈指纹的操作系统被动识别方法及系统 |
CN112929239A (zh) * | 2021-03-23 | 2021-06-08 | 无锡畅云网络有限公司 | 一种防火墙重置tcp链路的检测方法 |
CN114189346A (zh) * | 2021-10-09 | 2022-03-15 | 安徽工业大学 | 操作系统识别方法和装置 |
CN114662557A (zh) * | 2022-02-10 | 2022-06-24 | 北京墨云科技有限公司 | 基于机器学习的主机操作系统识别方法及装置 |
CN115051977A (zh) * | 2022-06-24 | 2022-09-13 | 绿盟科技集团股份有限公司 | 一种Web机器人的识别方法、装置、设备和介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7231665B1 (en) * | 2001-07-05 | 2007-06-12 | Mcafee, Inc. | Prevention of operating system identification through fingerprinting techniques |
US7496662B1 (en) * | 2003-05-12 | 2009-02-24 | Sourcefire, Inc. | Systems and methods for determining characteristics of a network and assessing confidence |
US7543056B2 (en) * | 2002-01-15 | 2009-06-02 | Mcafee, Inc. | System and method for network vulnerability detection and reporting |
CN103544089A (zh) * | 2013-10-13 | 2014-01-29 | 西安电子科技大学 | 基于Xen的操作系统识别方法 |
CN105554009A (zh) * | 2015-12-28 | 2016-05-04 | 成都千牛信息技术有限公司 | 一种通过网络数据获取设备操作系统信息的方法 |
CN105959321A (zh) * | 2016-07-13 | 2016-09-21 | 中国人民解放军理工大学 | 网络远程主机操作系统被动识别方法及装置 |
CN106789934A (zh) * | 2016-11-29 | 2017-05-31 | 北京神州绿盟信息安全科技股份有限公司 | 一种网络设备识别方法及系统 |
CN107292154A (zh) * | 2017-06-09 | 2017-10-24 | 北京奇安信科技有限公司 | 一种终端特征识别方法及系统 |
CN108846275A (zh) * | 2018-04-11 | 2018-11-20 | 哈尔滨工程大学 | 基于ripper算法的未知操作系统类型识别方法 |
-
2019
- 2019-05-06 CN CN201910372005.XA patent/CN110213124A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7231665B1 (en) * | 2001-07-05 | 2007-06-12 | Mcafee, Inc. | Prevention of operating system identification through fingerprinting techniques |
US7543056B2 (en) * | 2002-01-15 | 2009-06-02 | Mcafee, Inc. | System and method for network vulnerability detection and reporting |
US7496662B1 (en) * | 2003-05-12 | 2009-02-24 | Sourcefire, Inc. | Systems and methods for determining characteristics of a network and assessing confidence |
CN103544089A (zh) * | 2013-10-13 | 2014-01-29 | 西安电子科技大学 | 基于Xen的操作系统识别方法 |
CN105554009A (zh) * | 2015-12-28 | 2016-05-04 | 成都千牛信息技术有限公司 | 一种通过网络数据获取设备操作系统信息的方法 |
CN105959321A (zh) * | 2016-07-13 | 2016-09-21 | 中国人民解放军理工大学 | 网络远程主机操作系统被动识别方法及装置 |
CN106789934A (zh) * | 2016-11-29 | 2017-05-31 | 北京神州绿盟信息安全科技股份有限公司 | 一种网络设备识别方法及系统 |
CN107292154A (zh) * | 2017-06-09 | 2017-10-24 | 北京奇安信科技有限公司 | 一种终端特征识别方法及系统 |
CN108846275A (zh) * | 2018-04-11 | 2018-11-20 | 哈尔滨工程大学 | 基于ripper算法的未知操作系统类型识别方法 |
Non-Patent Citations (3)
Title |
---|
STEVE HUMER&ASHLEY MURPHY,: ""OS Fingerprinting Techniques&Tools"", 《CS-455: CRYPTOGRAPHY&NETWORK SECURITY》 * |
刘英,: ""基于TCP协议可选项的远程操作系统识别"", 《信息安全与通信保密》 * |
沙超,: ""一种基于TCP/IP协议栈的操作系统识别技术"", 《计算机技术与发展》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107276900A (zh) * | 2016-04-06 | 2017-10-20 | 中国移动通信集团浙江有限公司 | 一种互访信息的获取方法及装置 |
CN110519128A (zh) * | 2019-09-20 | 2019-11-29 | 西安交通大学 | 一种基于随机森林的操作系统识别方法 |
CN110545219A (zh) * | 2019-09-25 | 2019-12-06 | 杭州安恒信息技术股份有限公司 | 工业资产的被动识别方法、装置和电子设备 |
CN110868409A (zh) * | 2019-11-08 | 2020-03-06 | 中国科学院信息工程研究所 | 一种基于tcp/ip协议栈指纹的操作系统被动识别方法及系统 |
CN112929239A (zh) * | 2021-03-23 | 2021-06-08 | 无锡畅云网络有限公司 | 一种防火墙重置tcp链路的检测方法 |
CN112929239B (zh) * | 2021-03-23 | 2023-02-17 | 无锡畅云网络有限公司 | 一种防火墙重置tcp链路的检测方法 |
CN114189346A (zh) * | 2021-10-09 | 2022-03-15 | 安徽工业大学 | 操作系统识别方法和装置 |
CN114662557A (zh) * | 2022-02-10 | 2022-06-24 | 北京墨云科技有限公司 | 基于机器学习的主机操作系统识别方法及装置 |
CN115051977A (zh) * | 2022-06-24 | 2022-09-13 | 绿盟科技集团股份有限公司 | 一种Web机器人的识别方法、装置、设备和介质 |
CN115051977B (zh) * | 2022-06-24 | 2023-09-19 | 绿盟科技集团股份有限公司 | 一种Web机器人的识别方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110213124A (zh) | 基于tcp多会话的被动操作系统识别方法及装置 | |
EP3544236B1 (en) | Method and system for training and validating machine learning algorithms in data network environments | |
CN109951500B (zh) | 网络攻击检测方法及装置 | |
CN109117634B (zh) | 基于网络流量多视图融合的恶意软件检测方法及系统 | |
CN107360145B (zh) | 一种多节点蜜罐系统及其数据分析方法 | |
CN108833437A (zh) | 一种基于流量指纹和通信特征匹配的apt检测方法 | |
CN108965347A (zh) | 一种分布式拒绝服务攻击检测方法、装置及服务器 | |
CN107566192B (zh) | 一种异常流量处理方法及网管设备 | |
US11888874B2 (en) | Label guided unsupervised learning based network-level application signature generation | |
WO2018057691A1 (en) | Unsupervised classification of web traffic users | |
CN108600270A (zh) | 一种基于网络日志的异常用户检测方法及系统 | |
CN105959321A (zh) | 网络远程主机操作系统被动识别方法及装置 | |
CN113179260A (zh) | 僵尸网络的检测方法、装置、设备及介质 | |
CN107209834A (zh) | 恶意通信模式提取装置、恶意通信模式提取系统、恶意通信模式提取方法及恶意通信模式提取程序 | |
CN110519228B (zh) | 一种黑产场景下恶意云机器人的识别方法及系统 | |
CN112291226B (zh) | 一种网络流量的异常检测方法及装置 | |
EP4169223A1 (en) | Method and apparatus to detect scripted network traffic | |
EP3790260B1 (en) | Device and method for identifying network devices in a nat based communication network | |
CN112235242A (zh) | 一种c&c信道检测方法及系统 | |
CN112073364A (zh) | 一种基于DPI的DDoS攻击识别方法、系统、设备及可读存储介质 | |
KR20130126830A (ko) | 실시간 응용 시그니쳐 생성 장치 및 방법 | |
CN114205146B (zh) | 一种多源异构安全日志的处理方法及装置 | |
Zolotukhin et al. | Detection of anomalous http requests based on advanced n-gram model and clustering techniques | |
CN112291213A (zh) | 一种基于智能终端的异常流量分析方法及装置 | |
EP4224364A1 (en) | Device identification method, apparatus and system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20211001 |
|
AD01 | Patent right deemed abandoned |