Press "Enter" to skip to content

基于规则向量化的HTTP资产识别方法探索

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

一、背景简介

 

在资产探测识别当中,基于应用层协议的报文信息,利用知识规则按照特定方式对报文信息进行规则匹配来获取资产信息,是目前资产探测识别的主要手段。而基于HTTP协议层报文信息规则匹配的方法,是目前云计算、物联网、移动互联等场景下进行资产识别比较基础和常用的一种资产识别技术。

 

从整体上来看,基于HTTP协议报文进行资产识别,主要是基于特定HTTP请求的响应报文所进行的规则匹配。按照所关注匹配的响应报文的侧重不同来讲,基于HTTP协议的资产识别方法可以进一步被分为基于头部字段顺序差异与语法差异的识别方法、基于服务标识(Banner)的识别方法,以及基于处理方式差异的识别方法等 [1] 。

 

然而,无论匹配处理的对象是哪种响应报文或响应报文的哪一部分,基于特定知识规则匹配的资产识别方式均存在着诸如缺少弹性、关注信息局限以及抗干扰能力差等问题。比较典型的即人为信息修改/干扰所造成的匹配规则的失效问题。例如基于HTTP Banner信息进行资产识别方法,其主要通过对Banner中提取获得的Server、User-Agent、Authorization等Response头部字段进行匹配,来识别相应的资产信息。而实际场景当中,Banner信息很容易进行人为修改、模糊乃至伪装,这就使得相应的资产识别规则失效,甚至可能会被引导产生特定的误报结果 [2] 。

 

本文基于HTTP响应报文的Banner信息,首先对业务中单纯基于规则匹配进行资产识别的方法中所存在问题进行了总结和讨论,对一些典型问题结合具体实例进行了分析;然后,在对问题充分分析的基础上,结合NLP深度学习方法,基于分布式词向量模型对HTTP Banner响应头信息以及响应体进行了特异性向量化,并在规则匹配的基础上,基于SVD矩阵分解方法,探索讨论了一种基于匹配规则和文本向量化技术相结合的规则向量化技术;最后,结合实际的业务,基于规则向量的相似度计算模型,在规则匹配无法生效的场景下验证了规则向量资产的识别和推断能力。

 

二、资产规则匹配及其主要问题

 

在目前业务当中,基于应用层协议的资产识别技术,一般都是基于匹配规则进行的。这里的匹配规则主要是指基于字符串的正则表达式匹配和关键词匹配。一般由业务驱动形成匹配规则的流程如下表所示:

表1 由业务驱动的资产匹配规则形成

一般经过上述流程所形成的匹配规则,都能在特定业务环境中取得不错的识别效果。

 

但仔细分析该过程可以发现,上述流程所形成的匹配规则存在以下三个主要问题:

匹配规则对某些外部干扰、变动十分敏感;
匹配规则只关注到报文当中资产信息的局部特征;
匹配规则的质量无法保证,极易受报文样本的质量限制;

上述三个问题之间互有联系,也相互影响,但侧重稍有不同。下面将将结合具体业务数据,对三个问题进行进一步分析。

 

2.1 匹配规则对目标的某些变动干扰十分敏感

 

通常情况下,1条规则只能覆盖目标资产的部分样本实例,当响应报文中有关资产信息的模式某些字符发生轻微变动,该规则即无法完成对相应资产的匹配识别。这是硬匹配识别的主要特征,对匹配规则构成存在强依赖关系。

 

以对某国产WEB CMS框架的识别为例,在获得几乎所有报文样本当中,其框架信息都有关键字段构成,其形式如下图1所示。

图1 某国产WEB CMS框架的关键字段

这样按照匹配规则形成流程,基于关键特征信息,我们可以形成匹配规则如下表2所示:

 

资产某国产WEB CMS框架
匹配规则“””Powered by <strong>PHPCMS</strong> <em>(.*?)</em>”””

表2 基于报文样本所形成的某国产WEB CMS框架匹配规则

然而,在实际业务测试当中,我们发现了一些该资产新的报文样本,其特征类型并未发生改变,特征字段出现的位置也未发生改变,但关键信息构成发生了轻微变动,这导致了上述规则的识别失效。轻微变动的特征字段如下所示:

图2 某国产WEB CMS框架的轻微变动的特征

究其原因,核心在于我们无法穷举目标资产的所有具体实例。同时,由于应用层协议报文的灵活性,可以毫无约束的对相关字符进行人为修改,这就导致了基于匹配规则进行的资产识别无法覆盖所有的实例场景,而基于部分样本所抽取形成的匹配规则也极易被外部干扰,进而导致识别失效。

 

2.2 匹配规则只关注到报文当中资产信息的局部特征

 

匹配规则极易失效,也是因为匹配规则往往只能关注到报文当中资产信息的局部特征。基于相应资产样本报文所抽取的匹配规则,往往只是对所有样本报文共同的显式信息的特征抽取,这些特征往往是报文信息中的局部信息,无法反映出报文中所蕴含的诸如结构等其他全局信息和隐藏信息。

 

这种用来形成匹配规则的显式局部信息很容易被篡改、掩盖,这也将导致匹配规则对相应资产识别的失效。 我们以Nginx WEB服务器框架的识别为例,在301状态码下,基本上以Server响应头取值为Nginx的报文样本,都具有如下格式:

图3 301状态码下Nginx框架代表样本

显然,按照匹配规则形成以及HTTP协议响应头的含义理解,我们可以使用Server字段进行关键词匹配。但在这种情况下,诸如图4这种也是Nginx框架的报文样本,进行规则匹配是失效的。

图4 其他隐式含有nginx框架的报文样本

当然,这里使用HTML响应报文体中的nginx字段同样是可以完成对两种报文的匹配覆盖。然而,这里我们想要说明的是,出来局部特征Server字段以外,我们可以从整体报文中包含的结构信息来提取获得其属于nginx框架的全局特征信息,例如这里响应头顺序,我们即可以找到其一致性,进而脱离Server字段取值对资产判断的约束,避免人为信息模糊和修改所产生的误报问题。或者更进一步,使用基于RNN的序列建模技术,对报文的全局结构和上下文关联信息进行向量化表征,可以更好的判断两者的相似性,提高资产识别的抗干扰能力。

 

2.3 匹配规则的质量极易受报文样本质量的限制

 

在理想情况下,所有的报文样本具有共同的特征,1条匹配规则即可以覆盖所有的报文样本,完成相应资产的识别;而在极端情况下,所有的样本报文可能都不具有共同的可识别捕捉到的特征信息,这样每条样本可能都需要1条规则来匹配,而这种情况下对资产识别的结果置信度将会很低,很容易形成相应资产识别的误报。

 

我们仍以某国产WEB CMS框架的识别为例,在收集到的报文样本中,很难找到相对统一的资产规则特征。而在获取的特征当中,在进行进一步信息收集后,发现这些特征并非该资产独有,容易造成误报。因此针对该框架的识别,在花费大量成本进行报文样本收集后,构建了多条规则,且每条规则的置信度无法保证。

图5 某国产WEB CMS框架的报文样本示例1

图6 某国产WEB CMS框架的报文样本示例2

三、基于文本向量化技术的规则向量化方法探索

 

在上一节,我们基于资产匹配规则形成流程,结合实际业务场景,对基于匹配规则进行资产识别的方法中存在的主要问题进行了讨论。在本节我们基于分布式词向量训练模型与SVD方法,结合响应报文Header的特征向量,探索提出了一种规则向量化与资产刻画向量化的算法构建流程,对其在实际业务中的表现进行了讨论。

 

3.1 算法概述

图7 算法概览流程图

如图7为规则向量化算法的概览流程图,其整体上分为训练阶段和预测阶段两部分,训练中所使用的报文样本即实际网络中的应用层协议报文文本,规则知识库则来源于业务积累。在训练阶段会形成预训练的文本向量矩阵以及微调参数,详细的训练阶段算法计算流程如下所示:

对于未知报文的匹配识别,识别阶段的算法规则如下:

 

(1)将获取的待识别网络资产的响应报文输入到训练好的规则分析模型中进行规则分析,得到响应报文的规则特征,对响应报文的规则特征与各条资产识别规则的规则特征进行相似度计算;依据如下规则进行资产判别:

 

(2)

若存在相似度高于预设阈值的第一资产识别规则,则依据如下规则进行判定:

假设预设阈值为95%,该阈值直接影响的是判别结果的置信度;

若不存在相识度高于预设阈值的的第一资产识别规则,从各资产识别规则中选择与响应报文对应的规则特征之间的相似度最高的N条第二资产识别规则,将这N条第二资产识别规则对应的网络资产作为第一资产集合,并确定响应报文对应的规则特征与建立的各网络资产的规则特征之间的相似度,将与响应报文对应的规则特征之间相似度最高的M个网络资产作为第二资产集合,然后,从第一资产集合和第二资产集合中,确定待识别网络资产的资产识别结果。

在上训练阶段的算法流程当中,比较核心的是第3步与第4步——通过第3步,基于两种词向量(word级别与char级别)和两个文本级别的特征向量,通过对规则匹配标签的拟合训练,获得了有监督训练条件下统一表达的文本向量;通过第4步对同一规则下的样本向量进行矩阵分解,提取所有样本的共有信息来形成规则的向量化表达。下面我们对这两个计算过程进行简单介绍。

 

3.2 基于多种分布式词向量方法的文本向量化

 

首先需要说明的是为什幺要引入word级别和char级别两种词向量来对文本向量进行表征。其主要原因是word级别的词向量采用Word2Vec进行训练,能够很好地表征词的语义信息,对文本的上下文特征具有很好的刻画效果;而采用char级别的字符向量则主要是为了解决Word2Vec对于未登录词的向量化表示,能够进一步完善文本在结构上的信息表达。最后,将两种词向量进行综合,获得文本整体的向量表达。

 

其次,采用Doc2Vec对文本进行直接的文本向量刻画,是为了从整体上对文本的构成进行刻画,解决词向量训练方式只能反映词的局部上下文构成特征的问题。

 

由于许多重要信息都主要包含在响应报文的Header当中,因此这里额外引入了响应头的顺序特征向量,来对响应头的构成特点进行抽象表达。

 

最后,将这4种向量作为预训练嵌入层引入到如下训练模型当中,通过相应的参数映射获得文本向量的统一表达。

 

模型训练的结构图如下所示:

图8 统一文本向量训练简图

变换层线性映射公式如下:

最终的文本向量表达为:

3.3 基于SVD变换的规则向量化

图9 规则向量与资产向量计算

在经过有监督迭代之后,依据嵌入层微调参数与变换层参数,我们可以得到所有报文样本的文本向量。如图9所示,同一资产下可能对应的多个匹配规则下包含覆盖了多个样本,我们以样本作为信息描述的维度,基于如下公式对规则样本矩阵进行分解:

取V矩阵的第一特征向量

,则可以获得第 k 条资产识别规则的向量化表达为(即第 k 条资产识别规则的规则特征为):

最后,再按照图9计算方式,即可获得资产信息的向量化表示。

 

3.4 实验举例

 

如下所示,为实际业务中获得的Banner信息,按照已有的匹配规则对其进行匹配识别时,并未匹配到目标资产。响应头中的Server字段所代表的资产含义也并未存在于目前的资产知识库当中,因此常规情况下我们无法对其进行识别推测。

图10 实际数据

将上述样本利用上述模型进行向量化之后,与规则向量进行计算,在83%的置信条件下,我们可以推测出目标主机的WEB服务器框架类型,结果如下:

图11 模型计算结果

四、总结讨论

 

本文结合实际工作中基于匹配规则的资产识别经验,对其中的一些问题进行了讨论,提出了我们对相关问题的分析与认识,并基于此,结合NLP文本处理与SVD矩阵分解等技术,探索了一种基于规则向量化的资产识别方法。结合实际的业务数据,一定程度上验证了该方法的可行性。然而,在进行实际工程化计算展开时,我们依旧面临着以下一些问题:

 

(1)我们的可被规则匹配并标注的数据依旧太少,很难支撑其深度网络参数训练的数据规模,这导致了浅层迭代获得的参数稳定性相对较差,参数并未收敛到稳定点;

 

(2)模型对有些规则的向量化刻画效果比较好,可以对自身的规则样本进行很好的召回(置信度95%以上的相似度计算);然而还有一些规则的向量化效果比较差,向量中蕴含的规则信息噪声较多,对规则样本的识别召回效果较差;

 

(3)我们基于的训练数据全部来自于NTI平台,这就存在一个很大的问题——对于没有明显特征的Banner样本,即便模型依据相似度计算推测出目标的资产类型,我们也很难去实际验证;

 

(4)另外,由于同一端口暴露的资产信息具有多样性,模型的判断结果很容易由出现最多、最常见的资产类型主导,进而会忽略其他资产类型的识别判断。

 

五、参考文献

赵建军. 网络空间终端设备识别技术研究[D]. 兰州理工大学, 2016.
曹来成, 赵建军, 崔翔,等. 基于余弦测度下K-means的网络空间终端设备识别[J]. 中国科学院大学学报, 2016, 33(004):562-569.

六、附录:一种基于自然语言处理技术的自动资产发现全流程技术

 

从技术环节来上讲,本文所探索使用的技术属于基于自然语言处理技术的自动资产发现全流程技术中的一个环节,该技术整体架构由三部分构成,如下图所示:

图12 自动资产发现全流程技术

(1)知识库数据层:该层为基于标准资产数据源(如CPE等)以及开源的关于软件、计算机等信息技术领域的知识库所形成的整体的资产知识库,并对非结构化数据使用字符纠错、实体识别等NLP技术进行标准化CPE转换,该层可以为发现的种子资产提供标记与分类知识,目前该环境技术已经实现整体的技术预研;

 

(2)资产计算层:该层分为两个技术点,一个技术点即本文当中的方案,目的是对资产规则进行向量化描述,以便于进行未知报文的初步分类;另一个技术点主要是基于当前业务当中的资产识别规则,从规则当提取相应的资产元组以及资产实体关系规则;目前第二个技术点正在预研;

 

(3)资产发现层:该层主要是基于NTI等海量报文数据进行未知资产的发现与积累,其基于资产实体关系规则,利用NLP以及规则识别方法,从海量报文当中筛选出种子资产,然后依据资产知识库对种子资产进行自动核查,如果发现的种子资产为标准资产知识库当中的标准资产,则直接将种子资产对应的种子规则进行相应资产的标注与填充;如果发现的资产不在标准资产库当中,则基于外部知识库,对其进行标注查询,依据查询结果对相应的种子规则进行权重/置信度调整;目前该部分技术实现尚未展开。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注