发明内容
本申请实施例的目的在于提供一种网络资产识别方法及装置、存储介质及电子设备,以改善上述技术问题。
为实现上述目的,本申请提供如下技术方案:
第一方面,本申请实施例提供一种网络资产识别方法,包括:获取目标资产使用的数字证书;解析所述数字证书,并根据解析出的信息项生成所述数字证书的证书指纹;将所述证书指纹与规则库中的规则进行匹配,若匹配成功,则获取匹配的规则相对应的资产识别结果。
上述方法利用各类加密协议中使用的数字证书中的特征构建证书指纹,并将证书指纹和规则库中的规则进行匹配以实现资产识别,由于数字证书中往往包含了较丰富的资产属性信息,因此该方法可以有效提高网络资产的识别率。
在第一方面的一种实现方式中,所述获取目标资产使用的数字证书,包括:针对所述目标资产的加密端口发起安全套接字层(Secure Sockets Layer,简称SSL)连接,以获取所述目标资产在SSL协议中使用的数字证书。
SSL证书是目前使用最为普遍的一类数字证书,本申请提供的方法可以适用于SSL证书,即具有较高的实用价值。另外,若只识别SSL证书,本申请方案可以采用固定的探测方式(固定使用SSL协议),用户无需根据目标资产自行选择探测协议(现有的安全指纹识别方法针对于不同的资产,需要用户自行选择不同协议的数据包进行探测),从而有利于简化用户操作,降低方法的使用门槛。
在第一方面的一种实现方式中,所述获取目标资产使用的数字证书,包括:获取目标资产使用的证书链,并将所述证书链尾端的证书确定为所述目标资产使用的数字证书。
获取到的证书可能是单个证书,也可能是证书链,对于证书链的情况,本申请提供的方法只关心证书链尾端的证书,因为该证书的内容直接与目标资产相对应。
在第一方面的一种实现方式中,所述证书指纹中包含固定的字段,所述根据解析出的信息项生成所述数字证书的证书指纹,包括:对于所述证书指纹中包含的字段,若从所述数字证书中解析出了对应的信息项,则在生成所述证书指纹时将字段的值设置为解析出的信息项,若从所述数字证书中未解析出对应的信息项,则在生成所述证书指纹时将字段的值设置为空字串。
在上述实现方式中,所有数字证书的证书指纹均包含相同的字段,便于用户进行规则配置。
在第一方面的一种实现方式中,所述方法还包括:获取一类资产的至少一个数字证书;根据所述至少一个数字证书生成针对该类资产的新规则,并在所述新规则或修正后的所述新规则通过验证后,将通过验证的规则加入所述规则库。
规则库中的规则可以离线维护,也可以在线更新。提供在线更新的方式使得规则库的维护更加灵活,位于现场环境中的用户(如客户、运维人员)也能够根据实际资产的分布状况向规则库中添加新的规则,从而可以有效提高资产的识别率,增强方案在不同资产环境中的适应性。在线更新时,可以先根据一类资产(想要添加规则的一类数字资产)数字证书自动生成新规则(即规则草稿),然后利用已有数据对生成的规则进行验证,用户可根据验证结果对规则进行修改(或不修改),重复此验证过程直至在规则通过验证后,将其加入规则库。
在第一方面的一种实现方式中,所述至少一个数字证书为多个数字证书,根据多个数字证书生成针对该类资产的新规则,包括:解析所述多个数字证书,并根据解析出的信息项生成所述多个数字证书对应的多个证书指纹;其中,每个证书指纹中均包含相同的字段;初始化针对该类资产的新规则,并通过遍历所述多个证书指纹中包含的字段以更新所述新规则;其中,针对每个字段,执行以下规则更新步骤:若该字段在各个证书指纹中的取值完全相同,则将该字段的取值添加到所述新规则中;若该字段在各个证书指纹中的取值不完全相同,则将该字段在各个证书指纹中的取值中相同的部分保留、不同的部分用通配符替代后添加到所述新规则中。
在上述实现方式中,可根据某类资产的多个数字证书自动生成规则草稿,从而大大简化了规则配置过程,显著降低了规则配置门槛,使得位于现场环境中的用户也可以轻松参与到规则的维护中来。
在第一方面的一种实现方式中,所述方法还包括:调整所述规则库中规则的匹配顺序,以使所述匹配顺序与资产环境中资产的分布规律保持一致;其中,所述匹配顺序是指在将所述规则库中的规则与资产进行匹配时的先后顺序。
根据实际资产环境中资产的分布规律调整规则的匹配顺序,即根据资产的分布规律将匹配概率越高的规则的匹配顺序提前,匹配概率越低的规则的匹配顺序延后,这样每个证书指纹匹配的平均次数就会降低,从而有利于提高规则匹配的效率,加快资产识别进度。
在第一方面的一种实现方式中,所述调整所述规则库中规则的匹配顺序,以使所述匹配顺序与资产环境中资产的分布规律保持一致,包括:在执行对所述资产环境中的资产进行识别的任务时,统计所述规则库中每条规则匹配成功的次数,并根据统计得到的次数计算所述规则库中每条规则匹配成功的概率;根据所述规则库中每条规则匹配成功的概率调整所述规则库中规则的匹配顺序;其中,匹配成功的概率越高的规则对应的匹配顺序越靠前。
上述实现方式给出了统计规则匹配概率的一种具体方案。
在第一方面的一种实现方式中,在所述获取目标资产在加密协议中使用的数字证书之前,所述方法还包括:通过安全指纹识别确定存在所述目标资产。
本申请的方案可作为安全指纹识别的一种补充措施,先通过安全指纹确认资产的存在,然后再获取资产的数字证书,并基于证书指纹进行资产识别。
在第一方面的一种实现方式中,在所述获取与匹配的规则相对应的资产识别结果之后,所述方法还包括:整合所述该资产识别结果与通过安全指纹识别得到的资产识别结果,获得整合后的资产识别结果。
对于利用安全指纹识别难以获得的资产属性,可利用证书指纹识别的结果对其进行完善,当然对于利用安全指纹识别已经可以获得的资产属性,则可继续保留。特别地,若利用安全指纹识别已经能够有效识别目标资产的关键属性,则可以仅将证书指纹进行展示(目前一些资产识别任务有展示证书信息这方面的需求)。
第二方面,本申请实施例提供一种网络资产识别装置,包括:证书获取模块,用于获取目标资产使用的数字证书;证书指纹生成模块,用于解析所述数字证书,并根据解析出的信息项生成所述数字证书的证书指纹;资产识别模块,用于将所述证书指纹与规则库中的规则进行匹配,若匹配成功,则获取匹配的规则相对应的资产识别结果。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
第四方面,本申请实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
具体实施方式
现有的网络资产识别方法,在目标资产的端口开放较少,或已有端口特征不明显时难以识别资产关键属性。发明人长期研究发现,目标资产使用的数字证书中往往会包含资产的大量属性信息,从而提出一种基于数字证书进行资产识别的方法,以提高资产识别率。该网络资产识别方法可以配合现有的网络资产识别方法(例如,安全指纹识别等)使用,作为一种补充识别措施,当然也不排除单独使用。
下面先简单介绍一下数字证书的概念。数字证书在网络交易等有敏感数据传输的情况下使用较多,主要用于标识身份、提供加密功能。随着当前网络安全问题频发,大多数网站、应用、产品为了提高安全性能,大都提供加密协议(如SSL协议)传输数据,并使用相应的数字证书(如SSL证书)来获得认证、加密功能。
目前网络上使用的数字证书,一部分是通过权威证书颁发机构(CertificateAuthority,简称CA)颁发的证书,还有一部分是使用自签的证书。一些公开的知名网站通常会用CA颁发的证书来表明自己的身份,CA会验证域名的所有权并颁发证书,这就能保证网站是安全而且合法的。而使用自签证书的情况,由于自证身份并不可信,自签证书主要起到加密功能,用于无需身份证明的场合。大部分厂商开发的产品,主要需求是通过证书的数据加密功能来获取安全保护,因此会采用自签证书,这类证书也是本申请的方案所重点关注的证书。
无论哪种数字证书,通常都包含如下信息项中的一个或多个:证书版本、序列号、签名算法、签名哈希算法、颁发者信息、使用者信息、有效期、公钥信息以及证书扩展选项。而很多厂商会在自签证书中写入跟厂商、产品、型号等信息相关的内容,结合证书的其他属性,为基于数字证书进行资产识别提供了依据。
需要指出,本申请的方案并虽然不限定数字证书的类型,但考虑到SSL证书(即SSL协议中使用的数字证书)在使用上的广泛性,后文主要以SSL证书为例进行说明,这样也使得方案更具实用价值,但这些例子不应当视为对本申请保护范围的限制。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
图1示出了本申请实施例提供的网络资产识别方法的一种可能的流程。该方法可以但不限于由一软件产品(后文有时将其称为识别软件)执行,图6示出了一种可运行该软件产品的电子设备。参照图1,该方法包括:
步骤S100:获取目标资产使用的数字证书。
目标资产即要识别的网络资产,一些实现方式中,在步骤S100执行之前,已经事先探明了目标资产的存在,例如,在步骤S100执行之前,已经通过安全指纹识别发现了目标资产,从而在步骤S100中可以从目标资产处获取数字证书,关于安全指纹识别,在阐述图4时还会进一步介绍,这里暂时从略。另一些实现方式中,在执行步骤S100以前已经通过某些渠道获得了目标资产使用的数字证书,则在步骤S100中可以直接读取之前获得的数字证书。
以数字证书是SSL证书的情况为例,在步骤S100中,可以针对目标资产的加密端口发起SSL连接,通过SSL握手协议来获取目标资产使用的SSL证书。
常见的加密端口及对应的加密协议包括:tcp443端口—HTTPS协议、tcp465端口—SMTP+SSL协议、tcp993端口—IMAP+SSL协议、tcp995端口—POP3+SSL协议、tcp3389端口—RDP协议等,这些加密协议都可视为SSL协议和上层协议(如HTTP、SMTP)的组合,但获取证书只需使用SSL协议即可,对其上层协议无需关心。例如,目标资产的Web UI界面如果启用了HTTPS协议,则可以通过SSL握手协议中的Certificate协议获取目标资产使用的SSL证书。
至于哪些端口是加密端口,可以通过端口探测得知。例如,在安全指纹识别的过程中,下发了针对80、443、25、110等端口的探测任务,安全指纹识别的结果会指示识别软件80端口是HTTP协议,443端口是HTTPS协议,25端口是SMTP协议等,从而在步骤S100中可以针对443端口发起SSL连接。
鉴于SSL证书是目前使用最为普遍的一类数字证书,因此在某些实现方式中,也可以限定为只基于SSL证书进行资产识别,此时本申请的方案可以采用固定的探测方式(通过SSL握手)去获取数字证书,从而有利于简化用户操作,降低方法的使用门槛。反观一些现有方法,例如安全指纹识别,针对于不同的资产,可能需要选择不同协议的数据包进行探测,这使得普通用户难以掌握具体的探测方法。
进一步的,步骤S100中获取到的数字证书可能是单个证书,也可能是证书链,对于获取到证书链的情况,本申请中的网络资产识别方法只将证书链尾端的证书视为目标资产使用的数字证书,对证书链的上游证书则不关心,因为只有尾端证书的内容直接与目标资产相对应。
步骤S110:解析数字证书,并根据解析出的信息项生成数字证书的证书指纹。
数字证书的格式遵循一定的标准,从而可以根据该标准解析证书内容,将其转化为可读性更高、更容易进行特征提取的形式,即证书指纹。例如,对于一个x.509格式的证书,其可读性比较差,也不易进行特征提取,在获得该证书后,可以根据x.509的格式标准从中解析出证书版本、序列号、签名算法、签名哈希算法、颁发者信息、使用者信息、有效期、公钥信息、证书扩展选项等一个或多个信息项。进而,可以根据解析出的部分或全部的信息项生成证书指纹。可以理解的,若选择部分信息项生成证书指纹,可选择那些能够体现目标资产特征的,或者说能够将目标资产与其他资产区分开来的信息项。
在一种可选的方案中,证书指纹的格式为:
Item 1:value 1;
Item 2:value 2;
……
Item n:value n;
其中,每行表示一个字段,Item为该字段的名称,value为该字段的值。假如选用证书中的证书版本、序列号、签名算法、颁发者信息、有效期、使用者信息这几个信息项生成证书指纹,则一个证书指纹的实例如下:
Version:3;
Serial Number:1;
Signature Algorithm:md5WithRSAEncryption;
Issuer:CN=SHARP MX-3138NC,L=Abeno,ST=Osaka,C=JP,O=SharpCorporation,OU=Document Systems Group;
Validity Not Before:Jan 1 00:00:00 2010GMT,Not After:Jan 1 00:00:002030GMT;
Subject:CN=SHARP MX-3138NC,L=Abeno,ST=Osaka,C=JP,O=SharpCorporation,OU=Document Systems Group;
此证书指纹根据Sharp打印机Web管理页面的证书生成,由于打印机在该页面开启了认证(即需要登录才能访问该页面),因此采用安全指纹识别等方法无法直接从页面获取明确的设备信息,但是页面的证书中却体现了设备的主要信息,因此可以使用数字证书进行该设备的识别。
在一些实现方式中,证书指纹中包含固定的字段,对于证书指纹中包含的字段,若从数字证书中解析出了对应的信息项,则在生成证书指纹时将字段的值设置为解析出的信息项,若从数字证书中未解析出对应的信息项,则在生成证书指纹时将字段的值设置为空字串。即,不论证书中实际包含哪些信息项,所有证书指纹中均包含相同的字段,此举使得证书指纹在格式上得以统一,便于后续步骤中针对证书指纹进行统一的规则配置等操作。进一步的,还可以限定证书指纹中的字段按照固定的顺序排列,此时所有证书指纹中字段的排列顺序也是相同的。
例如,证书指纹中包含证书版本、序列号、签名算法、颁发者信息、有效期、使用者信息这几个固定的字段,若解析证书时解析出了证书版本为3,则将证书版本(Version)字段的值设置为3,若解析证书时并未解析出序列号,则将序列号(Serial Number)字段的值设置为空字串。
进一步的,证书指纹中的一些字段还包括子字段,例如使用者信息(Subject)字段还包括国家C(代表Country)、组织O(代表Organization)等子字段,若证书指纹中的字段是固定的,既指普通字段是固定的,又指普通字段的子字段也是固定的。对于证书指纹中包含的子字段,若从数字证书中解析出了对应的信息项,则在生成证书指纹时将子字段的值设置为解析出的信息项,若从数字证书中未解析出对应的信息项,则在生成证书指纹时将子字段的值设置为空字串。
例如,若使用者信息字段固定包含CN、L、ST、C、O、OU几个子字段,解析证书时并未解析出使用者信息中的组织一项,但解析出了使用者信息中的其他项,则将使用者信息(Subject)字段的中的O子字段的值设置为空字串,CN、L、ST、C、OU子字段的值设置为解析出的信息项。
后文中为简单起见,在阐述时主要以普通字段为例,不专门讨论子字段。
步骤S120:将证书指纹与规则库中的规则进行匹配,若匹配成功,则获取匹配的规则相对应的资产识别结果。
规则库由若干条规则构成,规则库在执行步骤S120之前已经构建好。当然,在使用过程还可以对规则库进行离线维护或在线更新,在后文中还会进一步阐述,此处暂时从略。
规则库中的每条规则都可以和证书指纹进行匹配,每条规则的匹配方式包括但不限于:一个或多个字段的字符串匹配,或者,一个或多个字段的模式匹配。以一个字段为例,字符串匹配可以指该字段的值和规则中指定的值完全相同;模式匹配可以指该字段的值满足规则中指定的模式,例如,一个正则表达式。
规则库中的每条规则都对应一个预先指定好的资产识别结果,该结果中包含网络资产的若干属性,从而,若某条规则与证书指纹匹配成功,则可以得到该规则对应的资产识别结果,即成功识别了目标资产。若规则库中的所有规则都未能与证书指纹匹配,则表明当前的规则库尚不能有效识别目标资产,此时可以采取添加新规则等措施,后文会具体阐述。
在进行规则匹配时,可以采用逐条匹配的方式,匹配到某条规则就终止匹配过程。当然也不排除采取并行处理的方式,例如,将规则库划分为多个规则集合,每个规则集合中的规则分别与证书指纹进行匹配,各规则集合的匹配过程可以并行执行。
在一种可选的方案中,规则采用如下格式实现:
expression==result
其中,expression部分可以是字符串关键字(用于上面说的字符串匹配)、正则表达式(用于上面说的模式匹配)等,可与证书指纹进行匹配,而result部分则为资产识别结果,即在此种规则格式中,资产识别结果也作为规则的一部分。result部分可以包含但不限于设备类型(device_type)、产品(product)、版本(verison)、型号(model)、固件(firmware)、通用平台枚举项(cpe)等信息,其格式为key/value/。
对应步骤S110中打印机的例子,一条能够成功匹配的规则可以是:
Subject:CN=SHARP MX-3138NC,L=Abeno,ST=Osaka,C=JP,O=SharpCorporation,OU=Document Systems Group
==device_type/printer/product/Sharp MX-3138NCprinter/model/mx-3138nc/cpe:/h:sharp:mx-3138nc/。
按照Subject字段进行字符串匹配,由于证书指纹中Subject字段的值和expression部分中Subject字段的值相同,因此该规则与证书指纹匹配成功,之后根据该规则的result部分可以识别出目标资产的设备类型为打印机、产品为Sharp MX-3138NC打印机、型号为mx-3138nc,cpe信息为h:sharp:mx-3138nc。
以上规则可以通过寻找多个同类设备(例如,同型号的Sharp打印机),通过人工对比其证书指纹进行总结后得到,当然也可以自动生成规则后再由人工进行修改,具体见后文阐述。
综上所述,在本申请实施例提供的网络资产识别方法中,利用各类加密协议中使用的数字证书中的特征构建证书指纹,并将证书指纹和规则库中的规则进行匹配以实现资产识别,由于数字证书中往往包含了较丰富的资产属性信息,因此该方法可以有效提高网络资产的识别率。
规则库中的规则可以离线维护,也可以在线更新。离线维护可以是指在识别软件上线或者升级之前,由用户(例如,开发人员)进行规则配置的过程。在线更新可以指在识别软件的使用过程,由用户(例如,开发人员、客户、运维人员)进行规则配置的过程。
提供在线更新的方式使得规则库的维护更加灵活,位于现场环境(实际进行资产识别的环境,非开发环境)中的用户也能够根据实际资产的分布状况向规则库中添加新的规则,从而可以有效提高资产的识别率,增强方案在不同资产环境中的适应性。例如,一些设备只安装在现场环境中,开发环境中并不存在这些设备,从而开发人员在进行离线维护时很难针对这些设备配置相应的资产识别规则,因此识别软件上线后也无法有效识别这类设备,但现场环境中的运维人员则可以明确获知这些设备的存在,从而可以针对这些设备配置相应的资产识别规则,并将新规则动态地添加到规则库中,增强识别软件的资产识别能力。
下面介绍一种规则在线更新的方法,参照图2,该方法包括:
步骤S200:获取A类资产的至少一个数字证书。
A类资产即用户想要添加规则的一类网络资产,A类资产可以是任意一类资产,此处将其命名为“A类资产”只是为了方便阐述而已。例如,A类资产可以是未能成功识别的一类资产,比如通过常规的安全指纹识别未能成功识别A类资产,之后通过本申请的方法(步骤S100至步骤S120)也未能成功识别A类资产,其原因可能是规则库中不包含A类资产的相关规则,比如A类资产对应的设备仅在现场环境中存在。
A类资产可以包含一个或多个网络资产(当然它们都属于A类,例如都属于同型号的Sharp打印机),从而A类资产对应一个或多个数字证书,这些数字证书可以通过步骤S100中介绍的方式获取,此处不再重复阐述。
步骤S210:根据A类资产的至少一个数字证书生成针对A类资产的新规则。
步骤S210可以由识别软件自动执行,具体生成新规则的方法可以参考后文对图3的阐述,此处暂时从略,当然也不排除由人工拟定一个新规则。需要指出,步骤S210中生成的针对A类资产的新规则可以只是一个规则草稿,在后续步骤中可能对其进行修正。
步骤S220:对新规则进行审核/修正。
可以由人工对生成的新规则进行审核,若认为存在问题则可进行修正,若认为不存在问题则可以保留原规则继续执行后续步骤。当然,作为识别软件应提供相应的规则审核/修正界面。
步骤S230:利用已有数据对审核/修正后的新规则进行验证。
步骤S230中的已有数据可以包括步骤S200中获得的A类资产的证书,当然还可以包括其他类资产的证书。对规则进行验证可以是指:验证经步骤S220审核/修正后的新规则是否能够与这些A类资产的证书指纹相匹配,并且不会匹配到其他类资产的证书指纹。当然,作为识别软件应提供相应的规则验证界面,便于用户执行验证操作并获知验证结果。
步骤S240:判断规则是否通过验证。
若规则通过了验证,则执行步骤S250,若未通过验证,则需要跳转到步骤S220,对规则进行迭代,直至在某次迭代后规则通过验证。
步骤S250:将通过验证的规则加入到规则库中。
通过验证的规则将被加入到规则库中,作为规则库中的一条新规则,参与后续的资产识别。
在一些实现方式中,步骤S210可以通过执行图3中的方法自动生成新规则(规则草稿)。参照图3,该方法包括:
步骤S211:解析A类资产的至少一个数字证书,并根据解析出的信息项生成数字证书对应的至少一个证书指纹。
步骤S211中生成证书指纹的方式可以参考步骤S110,此处不再重复阐述。需要注意,步骤S211中的每个证书指纹中均包含相同的字段,并且在可选的方案中,这些字段在证书指纹中的排列顺序也是相同的。
步骤S212:初始化针对A类资产的新规则。
在步骤S212中指定该新规则的一个初始值,在后续步骤中会更新该初始值,并在图3中的流程结束时,得到最终的针对A类资产的新规则。例如,若规则采用expression==result的格式,在步骤S212中可以初始化一条expression部分为空字串,result部分为针对A类资产的识别结果的新规则。
步骤S213:判断步骤S211中是否生成了多个证书指纹。
若生成了多个证书指纹,则执行步骤S214至步骤S218,若只生成了一个证书指纹,则执行步骤S219。其中,步骤S214至步骤S218是一个迭代过程,该迭代过程用以遍历多个证书指纹中包含的字段,每次迭代对一个字段进行访问。可以理解的,步骤S213中也可以判断步骤S211中是否存在多个数字证书,这和判断是否存在多个证书指纹是等价的。
步骤S214:获取所有证书指纹中同一个字段的值。
在一种实现方式中,由于证书指纹中的每个字段都包含字段名称,因此可以通过字段名称获取所有证书指纹中同一个字段的值;在另一种实现方式中,若证书指纹中的字段都按照固定的顺序排列,则按照字段的排列顺序在各个证书指纹中每次取一个字段的值,就可以得到所有证书指纹中同一个字段的值。
步骤S215:判断步骤S214中的字段在各个证书指纹中的取值是否完全相同。
若该字段在各个证书指纹中的取值完全相同,则执行步骤S216,若该字段在各个证书指纹中的取值不完全相同,则执行步骤S217。
步骤S216:将步骤S214中字段的取值添加到新规则中。
例如,有两个证书指纹,其中Item1字段的值都是“aabbcc”,则可以在新规则的expression部分末尾添加“Item1:aabbcc”(字段名称也一起添加到了新规则中)。
步骤S217:将步骤S214中字段在各个证书指纹中的取值中相同的部分保留、不同的部分用通配符替代后添加到新规则中。
例如,有两个证书指纹,其Item1字段的值分别是“aabbcc”和“aaddcc”,即前两个字符和后两个字符是相同的,中间两个字符不同,则可以在新规则的expression部分末尾添加“Item1:aa.*cc”(字段名称也一起添加到了新规则中),其中,正则表达式(可视为一种通配符)“.*”表示匹配零个或多个字符,当然该正则表达式也可以使用其他通配符代替,此处只是举例。
步骤S218:判断是否遍历完证书指纹中的所有字段。
若已经遍历完,则结束流程,此时得到的新规则就是规则的自动生成结果,若还未遍历完,则跳转到步骤S214继续遍历下一个字段。
步骤S219:将整个指纹添加到新规则中。
由于执行步骤S219的条件是步骤S211中只生成了一个证书指纹,从而也不必像步骤S214、S215那样对比多个证书指纹,直接将当前的证书指纹作为规则中的匹配条件(expression部分)即可结束流程,此时得到的新规则就是规则的自动生成结果。当然,若在某些实现方式中,规则和证书指纹中的字段格式存在区别,本步骤中可适当进行格式转换。
图3中的方法可根据某类资产的一个或多个数字证书自动生成规则草稿,从而大大简化了规则配置过程,显著降低了规则配置门槛,使得位于现场环境中的用户也可以轻松参与到规则的维护中来,有利于丰富规则库,提高资产识别率。
在本申请的方案中,一些特性的实现有助于支持规则的在线更新。其一是采用固定的探测方式(例如,通过SSL握手)去获取数字证书,避免现场环境中的用户自行进行协议、探测包的选择,降低其操作难度,同时也使得返回的数据在内容上比较一致(都是SSL证书),便于开展规则配置;其二是证书指纹采用规范的格式(例如,固定的字段、固定的字段顺序)呈现,便于用户理解证书内容,从而可以有效地进行规则配置;其三是根据获得的证书自动生成规则草稿,用户只需在草稿的基础上进行审核或者少量修改,配置负担显著减轻。
在步骤S120中进行规则匹配时,若采用逐条匹配的方式,则匹配效率与规则的匹配顺序密切相关。其中,匹配顺序是指在将规则库中的规则与资产进行匹配时的先后顺序,若进行规则匹配时按照规则的加载顺序进行匹配,则规则的匹配顺序和规则的加载顺序是相同的。可以理解的,将匹配概率(匹配成功的概率)越高的规则的匹配顺序提前,匹配概率越低的规则的匹配顺序延后,这样每个证书指纹匹配的平均次数就会降低,将有利于提高规则匹配的效率,加快资产识别进度。
简言之,在一些实现方式中,可以调整规则库中规则的匹配顺序,以使调整后规则的匹配顺序与实际资产环境中资产的分布规律保持一致。例如,若现场环境中打印机数量较多,则可以将规则库中有关打印机的规则的匹配顺序提前,以便这些打印机资产的证书指纹在进行匹配时通过少数几次比较就能够实现匹配。
有时,某个资产环境中资产的分布规律可能是一种先验信息,此时可以直接根据该先验信息设置规则库中规则的匹配顺序;但更多的时候,资产环境中资产的分布规律是未知的,因此规则的匹配顺序只能在执行实际资产识别任务的过程中去调整,一种可能的调整方式如下:
针对规则库中的每条规则都设置一个匹配概率字段,初始时匹配概率字段可设置为一个默认值,在执行针对资产环境中的资产的识别任务时(每个任务可针对一批网络资产,例如一个网段中的所有网络资产进行识别),统计每条规则匹配成功的次数,并根据统计得到的次数计算每条规则匹配成功的概率,以此概率更新规则对应的匹配概率字段的值。最后,根据该匹配概率字段的值调整规则库中规则的匹配顺序,调整原则为:匹配成功的概率越高的规则对应的匹配顺序越靠前。
以上规则排序调整可以分成多个调整周期逐步进行,每个调整周期为一个预设的时间段,在该时间段内统计每条规则的匹配概率并进行规则匹配顺序的调整(既可以每执行完一个资产识别任务就进行一次排序调整,也可以在调整周期结束时再进行排序调整)。调整周期结束后就将规则的匹配顺序固定下来,以此顺序去进行资产识别,直到进入下一轮调整周期,或者,资产环境发生了重大的变化,或者,规则库进行了重大升级。这样持续性地进行规则匹配顺序的调整,可以使规则的匹配顺序总是同步于资产环境中资产分布规律的变化,进而使得资产识别效率总是维持在较高的水平。
下面再介绍一下安全指纹识别与本申请实施例提供的网络资产识别方法的结合使用,其中的加密协议以SSL为例。可以理解的,本申请提出的方法也可以和其他现有资产识别方法结合使用,或者单独使用。参照图4,该方法包括:
步骤S300:执行基于安全指纹的资产识别。
安全指纹识别主要是通过主动探测的方式向目标发送特定探测包,根据目标响应的数据包的特征(即指纹)来判断目标的服务、应用、操作***、设备相关的信息。以服务识别为例,不同协议数据格式、交互方式差别很大,所以在安全指纹识别中没有通用的探测方式来识别所有服务,需要针对不同服务设计不同的探测包,并维护一个包含不同服务的探测报文和识别响应的匹配表达式的数据库,来判断端口上运行的服务及应用程序、版本、设备等信息。
通过安全指纹识别,可以确定目标资产的存在(例如,扫描获得其IP地址),并且还可以确定目标资产在哪些端口上使用了SSL加密协议。当然,安全指纹识别也可能识别出目标资产的一些属性,但这些属性未必完善,可能存在某些关键属性的缺失。
步骤S310:判断目标资产是否采用了SSL加密协议。
若目标资产的某个端口上采用了SSL加密协议,则执行步骤S320,若目标资产未采用了SSL加密协议,则直接结束流程。
步骤S320:执行基于证书指纹的资产识别。
步骤S320的具体实现可参考图1中的方法,此处不再重复阐述。
步骤S330:整合两种资产识别方式下的识别结果。
整合两种资产识别结果可以实现两种网络资产识别方法的优势互补,最大程度地提高资产识别率。在一些实现方式中,可以将步骤S300得到的识别结果和步骤S330得到的识别结果整理为类似的格式,例如,都按照result部分的格式整理。然后依次对比各项识别结果,若基于安全指纹的识别结果中不包含某一项信息,或者某一项信息不完整,则尝试从基于证书指纹的识别结果中补充或完善该项信息。即,对于利用安全指纹识别难以获得的资产属性,可利用基于证书指纹识别的结果对其进行完善,当然,对于利用安全指纹识别已经可以获得的资产属性,则可继续保留。特别地,若利用安全指纹识别已经能够有效识别目标资产的全部关键属性,仍然可以尝试获取目标资产的数字证书并生成证书指纹,此时可以仅将证书指纹进行展示,因为目前一些资产识别任务有展示证书信息这方面的需求。
进一步的,在某些可选方案中,也可以先对安全指纹识别结果进行判断,当判断出其对某一资产的关键属性识别效果不佳、且该资产使用SSL加密协议时,才采用基于证书指纹的方式对该资产的属性进行进一步识别。
图5示出了本申请实施例提供的网络资产识别装置400的一种可能的结构。参照图5,网络资产识别装置400包括:
证书获取模块410,用于获取目标资产使用的数字证书;
证书指纹生成模块420,用于解析所述数字证书,并根据解析出的信息项生成所述数字证书的证书指纹;
资产识别模块430,用于将所述证书指纹与规则库中的规则进行匹配,若匹配成功,则获取匹配的规则相对应的资产识别结果。
在网络资产识别装置400的一种实现方式中,证书获取模块410获取目标资产使用的数字证书,包括:针对所述目标资产的加密端口发起安全套接字层SSL连接,以获取所述目标资产在SSL协议中使用的数字证书。
在网络资产识别装置400的一种实现方式中,证书获取模块410获取目标资产使用的数字证书,包括:获取目标资产使用的证书链,并将所述证书链尾端的证书确定为所述目标资产使用的数字证书。
在网络资产识别装置400的一种实现方式中,所述证书指纹中包含固定的字段,证书指纹生成模块420根据解析出的信息项生成所述数字证书的证书指纹,包括:对于所述证书指纹中包含的字段,若从所述数字证书中解析出了对应的信息项,则在生成所述证书指纹时将字段的值设置为解析出的信息项,若从所述数字证书中未解析出对应的信息项,则在生成所述证书指纹时将字段的值设置为空字串。
在网络资产识别装置400的一种实现方式中,证书获取模块410还用于:获取一类资产的至少一个数字证书;
所述装置还包括:规则更新模块,用于根据所述至少一个数字证书生成针对该类资产的新规则,并在所述新规则或修正后的所述新规则通过验证后,将通过验证的规则加入所述规则库。
在网络资产识别装置400的一种实现方式中,所述至少一个数字证书为多个数字证书,规则更新模块根据多个数字证书生成针对该类资产的新规则,包括:解析所述多个数字证书,并根据解析出的信息项生成所述多个数字证书对应的多个证书指纹;其中,每个证书指纹中均包含相同的字段;初始化针对该类资产的新规则,并通过遍历所述多个证书指纹中包含的字段以更新所述新规则;其中,针对每个字段,执行以下规则更新步骤:若该字段在各个证书指纹中的取值完全相同,则将该字段的取值添加到所述新规则中;若该字段在各个证书指纹中的取值不完全相同,则将该字段在各个证书指纹中的取值中相同的部分保留、不同的部分用通配符替代后添加到所述新规则中。
在网络资产识别装置400的一种实现方式中,所述装置还包括:规则排序模块,用于调整所述规则库中规则的匹配顺序,以使所述匹配顺序与资产环境中资产的分布规律保持一致;其中,所述匹配顺序是指在将所述规则库中的规则与资产进行匹配时的先后顺序。
在网络资产识别装置400的一种实现方式中,规则排序模块调整所述规则库中规则的匹配顺序,以使所述匹配顺序与资产环境中资产的分布规律保持一致,包括:在执行对所述资产环境中的资产进行识别的任务时,统计所述规则库中每条规则匹配成功的次数,并根据统计得到的次数计算所述规则库中每条规则匹配成功的概率;根据所述规则库中每条规则匹配成功的概率调整所述规则库中规则的匹配顺序;其中,匹配成功的概率越高的规则对应的匹配顺序越靠前。
在网络资产识别装置400的一种实现方式中,所述装置还包括:安全指纹识别模块,用于在所述获取目标资产在加密协议中使用的数字证书之前,通过安全指纹识别确定存在所述目标资产。
在网络资产识别装置400的一种实现方式中,所述装置还包括:识别结果整合模块,用于在资产识别模块430获取与匹配的规则相对应的资产识别结果之后,整合该资产识别结果与通过安全指纹识别得到的资产识别结果,获得整合后的资产识别结果。
本申请实施例提供的网络资产识别装置400,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
图6示出了本申请实施例提供的电子设备500的一种可能的结构。参照图6,电子设备500包括:处理器510、存储器520以及通信接口530,这些组件通过通信总线540和/或其他形式的连接机构(未示出)互连并相互通讯。
其中,处理器510包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器510可以是通用处理器,包括中央处理器(CentralProcessing Unit,简称CPU)、微控制单元(Micro Controller Unit,简称MCU)、网络处理器(Network Processor,简称NP)或者其他常规处理器;还可以是专用处理器,包括图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network ProcessingUnit,简称NPU)、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuits,简称ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器510为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
存储器520包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),电可擦除可编程只读存储器(Electric Erasable Programmable Read-Only Memory,简称EEPROM)等。处理器510以及其他可能的组件可对存储器520进行访问,读和/或写其中的数据。
在存储器520中可以存储一个或多个计算机程序指令,处理器510可以读取并运行这些计算机程序指令,以实现本申请实施例提供的网络资产识别方法。
通信接口530包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互。通信接口530可以包括进行有线和/或无线通信的接口。
可以理解,图6所示的结构仅为示意,电子设备500还可以包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。图6中所示的各组件可以采用硬件、软件或其组合实现。电子设备500可能是实体设备,例如PC机、笔记本电脑、平板电脑、手机、服务器、嵌入式设备等,也可能是虚拟设备,例如虚拟机、虚拟化容器等。并且,电子设备500也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本申请实施例提供的网络资产识别方法。例如,计算机可读存储介质可以实现为图6中电子设备500中的存储器520。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。