admin管理员组

文章数量:1531792

摘要——现在有一些针对不同方面的独立网络安全知识库。在互联网上,也有很多网络安全相关的内容以文字的形式存在。融合这些网络安全相关信息可以是一项有意义的工作。在本文中,我们提出了一个框架来整合现有的网络安全知识库并从文本中提取网络安全相关信息。在该框架中,我们构建了一个以漏洞为中心的本体,并训练了一个斯坦福命名的实体识别器,以从文本中提取网络安全相关实体。最后,通过实验,我们验证了一个名为 useGazette 的特征对于在网络安全领域训练命名实体识别器的重要性。

关键词——网络安全;知识库;本体;命名实体识别器

一、引言

目前,一些关于网络安全的知识库是针对网络安全领域的某个方面建立起来的。例如,CVE 是一个漏洞数据库,其中所有漏洞都被赋予了统一的 ID,ID 由 MITER 定义为统一的格式。 Snort 建立了丰富的规则库,用于检测入侵行为。一些知名的反病毒厂商也建立了庞大的病毒特征库。此外,网络已成为知识和信息的主要来源,互联网上有许多与网络安全相关的内容。如安全博客、黑客论坛、安全公告等,都是网络安全信息的集中区域。充分利用来自各种知识库和网络的网络安全相关信息,然后将所有这些安全相关知识放在一起,将有助于入侵检测、态势感知。

根据数据源的类型,主要工作分为两个部分。一个部分是整合现有的知识库,这些主要是结构化数据。我们可以使用一些自动化工具来完成这项工作。另一部分是从非结构化文本中提取网络安全相关实体。 Web是我们获取网络安全新知识的重要来源,也是构建网络安全基础的动态更新和增量迭代的基础。互联网上公开有大量网络安全相关信息(包括漏洞描述、安全公告、博客等)。然而,这些都是非结构化数据,只有网络安全领域的专家才能理解。对于自动化系统,这些非结构化数据是不可用的。如何提取网络安全相关实体是我们需要研究的。

在本文中,我们提出了一个构建网络安全知识库的框架。在该框架中,我们构建了一个以漏洞为中心的网络安全本体。在信息提取方面,我们采用基于规则和机器学习相结合的方法。

二、相关作品

A.本体构建

巴尔的摩县马里兰大学的 Undercoffer 等人完成了一项重要的工作。他们开发了一种本体来对攻击和相关实体进行建模 [1]。 Ontology 为以后的研究奠定了基础。但他们提出的本体只是针对攻击的。为了表示与网络安全领域相关的概念和实体,A Joshi [2] 提出了一种网络安全本体,该本体源自 Undercoffer 提出的本体。他们扩展了本体以提供捕获 NVD 模式结构和安全漏洞利用概念的模型关系。该本体包含 11 种实体类型(漏洞、产品、手段、后果等)。此外,More S [3] 扩展了 Undercoffer 提出的本体,并在推理逻辑中添加了规则。本体包括 3 个基本类别:手段、后果和目标

还有一家名为 MITRE 的公司一直在研究为网络安全领域开发本体的方法[4][5]。 MITRE 为网络安全领域的特定主题领域创建并维护了多个标准和数据集。丰富的数据库成为他们最大的优势。基于 Undercoffer 和 MITRE 之前的努力,M Iannacone [6] 提出了一种用于网络安全知识图谱的本体。此处描述的本体代表了迭代设计过程的结果,旨在创建一种知识表示,该知识表示可以有效地组合网络安全领域内尽可能多的数据源。在生成的本体中,共有 15 个实体类型和 115 个属性。

B. 信息抽取

信息抽取技术已经引起了越来越多的学者的关注。国内外已有大量研究成果。目前,知识抽取主要有两种方法。首先是基于知识工程。此方法严重依赖提取规则。但它可以使系统处理特定领域的信息提取问题。早期的信息抽取系统通常是基于抽取规则的。缺点是需要领域相关的专业人士和语言学家共同参与系统的开发。由于提取准确率高,现阶段还有很多基于知识工程的提取系统。 

Undercoffer 等人的工作 [7] 描述了一个系统,其中定义了一个本体来提取攻击信息。这项工作是基于对 4000 多个入侵和攻击系统的策略的修订。这项工作介绍了手段和后果类。他们通过使用语义网络的最佳实践来采用基于规则的方法。Shabana等人 [8] 描述了一种从漏洞的文本描述中提取信息的系统。在系统中,他们使用基本的 TFIDF 分数从 CVE 中提取信息。Lowis L 等人 [9] 提出了另一种分类 SOA 漏洞的方法。他们在 CVE 上使用简单的字符串匹配来对不同类别的数据集进行分类,并且没有使用任何机器学习技术对 CVE 进行分类。这项工作主要对面向服务的架构漏洞感兴趣。基于规则的方法具有准确率高的优点,但是对于找不到明显规则的词条,我们需要采用其他方法来提取它们。

第二种方法基于机器学习。基本步骤是通过大量的训练数据训练信息提取模型,然后我们可以使用提取模型提取相关信息。这种方法不需要专业人员预先定义规则,但需要足够的训练数据才能达到更好的效果。

Lal R [10] 提出了一个系统,可以从非结构化文本中识别相关实体,主要讨论网络攻击和软件漏洞。他们训练了一个命名实体识别器来识别有关网络安全的实体。 Mulwad V [11] 开发了一个框架,用于从 Web 文本中检测和提取有关漏洞和攻击的信息。他们训练了一个 SVM 分类器来识别潜在的漏洞描述。分类器使用标准的 unigram bag of words 向量模型。一旦确定了潜在的漏洞描述,他们就会使用 OpenCalais 等标准命名实体识别工具提取与安全相关的实体和概念。以上2项研究采用机器学习的方法从非结构化文本中自动提取安全相关信息。在有足够的训练数据之前,这种方法无法准确识别与安全相关的实体。对于特定领域的信息提取,我们采用基于规则和机器学习相结合的方法。

C. 网络安全知识库

  • 漏洞数据库:现有比较丰富的漏洞库有中国国家信息安全漏洞数据库[12]和美国国家漏洞数据库[13]。这些数据库收集了各种漏洞。漏洞信息包括漏洞名称、漏洞描述、漏洞优先级、破坏方式等,以及对应的特征等信息。目前,中美两国建立的漏洞数据库都遵循共同的命名标准,这使得来自完全不同数据库的任何漏洞都可以在同一个标​​准中使用。该标准极大地促进了漏洞信息的共享。
  • 攻击规则库:收集现有攻击的信息。这些信息包括攻击名称、攻击类型、协议、攻击特征、攻击描述、严重性和其他属性。 Snort 攻击规则库是一个比较完善的攻击规则库。每个规则都存储为文件中的一行。
  • 进程知识库:在计算机上,有一些进程在后台运行,有的占用系统资源过多,有的使系统运行缓慢,也有一些进程可能是间谍软件或木马。红黑联盟和中国大百科总结了很多流程的相关知识,建立了流程知识库。

三、框架设计

如图 1 所示,我们提出了一个用于构建网络安全知识库的框架。框架主要涉及本体的构建和网络安全相关信息的提取。 

在图1中,框架主要包括数据源、信息抽取和本体三部分。数据源分为结构化数据和非结构化数据。对于信息提取,我们开发了一种结合基于规则和机器学习的方法来提取网络安全相关实体。显示在框架底部的本体将为信息提取奠定基础。因此,构建合适的本体非常重要。

至于知识的存储,我们选择以图的形式存储。知识图谱是谷歌在2012年提出的概念[14]。它是以图的形式存储实体、实体之间的关系的语义网络。知识图谱的优势是显而易见的。关联查询的效率高于传统的存储方式。这是一种灵活的存储形式,很容易更新。我们构建的是一个网络安全领域的垂直知识图谱。垂直知识的构建需要考虑知识的深度和整体的层次结构。因此,我们采用自上而下的方法,首先构建了网络安全本体。在本体的基础上,我们从结构化和非结构化数据中提取网络安全信息。接下来,我们将介绍本体构建和网络安全信息提取两个主要部分。

A、网络安全本体的构建

为了从结构化和非结构化数据中提取网络安全相关信息。我们分析了网络安全相关的短文本,包括漏洞描述和安全公告。同时,我们参考了网络安全领域已经存在的本体。我们构建了一个以漏洞为中心的本体。本体中有十一种实体类型。下图是我们构建的网络安全本体。

 如图 2 所示,有七种实体类型。全部描述如下:

  • 漏洞:在本体中相当重要。其他实体类型以脆弱性为核心进行扩展。漏洞数据库中的每条记录对应一个漏洞类型的实例。每个漏洞都有自己唯一的 cve ID。中国国家信息安全漏洞数据库中也有一个cnnvd编号。
  • 软件:在这个本体中,软件是一个基类。它包括操作系统和浏览器,它们都是软件的子类。
  • OS:软件子类(如Ubuntu14.04)
  • Browser:软件子类(如Firefox、Chrome等)
  • Consequence:攻击结果(如信息泄露、拒绝服务)
  • Mean:方法漏洞利用(如内存溢出)
  • 攻击:对于大多数攻击,攻击可以看作是针对某个漏洞的入侵。攻击过程可以是漏洞利用的过程。
  • 恶意软件:是在计算机系统上执行恶意任务的程序,如蠕虫和木马,它们通过破坏软件进程来控制系统
  • 警报:是IDS 产生的有关安全事件的信息。

B. 提取网络安全相关实体 

在框架中,数据源主要有结构化数据和非结构化数据两类。对于结构化数据,我们可以使用 D2R 映射工具将关系数据库中的数据转换为 RDF 数据。出现一个问题,Snort 攻击规则在文件中存储为一行。我们用java开发了一个小程序来提取攻击规则中每个字段的信息。有一个字段以 cve number 作为其值。我们通过 cve 编号将攻击规则与漏洞相关联。此外,为了将流程知识整合到知识库中,我们提取了isTrojan、isAdware等关键属性来确定流程的类型。如果 isTrojan 和 isAdware 的值为 true,则视为 Malware 实例。有了这些知识,我们就可以根据系统上是否存在恶意软件来评估风险程度。

接下来,我们将重点介绍如何从非结构化文本中提取信息。在本文中,我们采用基于规则和机器学习的方法来提取网络安全相关实体。我们将参考网络安全本体来提取实体。

1)基于规则的方法

对于ConsequenceMean等实体类型,我们可以使用基于规则的方法来提取对应的实体。首先,我们定义了一组触发词。触发词是指起识别和标记作用的词。它可以激活提取任务。因此,触发词的出现意味着附近更有可能存在实体。根据触发方向,触发字可分为正向触发、反向触发、双向触发三种。因此,建立触发词表是基于规则的方法提取实体的关键。我们可以依靠触发词列表来完成提取任务。

我们为ConsequenceMean建立了触发词列表。结果的触发词可以直接导致攻击将导致的结果的出现。 Mean 的触发与上述情况类似。例如,有两个漏洞,编号分别为“CVE-2016-9802”和“CVE-2016-9793”。它们的描述如下图所示。

如图 3 所示,在第一个描述中,漏洞利用正在处理损坏的转储文件,而后果是崩溃。在第二个描述中,漏洞利用是利用 CAP_NET_ADMIN 能力,而后果是拒绝服务。

 在“by”、“via”等之后有更多可能的Mean实例。在“cause”、“result in”之后,总是有Consequence的实例。在分析了许多简短的描述之后,我们总结了ConsequenceMean的触发词列表。触发词表如表一所示:

基于触发词列表,我们建立了可以终止提取过程的触发规则。表二给出了ConsequenceMean的触发规则。

2)基于机器学习的方法

条件随机场Conditional Random Fields是一种基于统计序列识别和分割的无向图模型。该模型的主要思想来自最大熵模型。最简单的形式是线性CRF,即模型中的节点形成线性结构。线性 CRF 对应于有限状态机,非常适合标记线性数据序列。

 命名实体识别问题可以定义为序列的注释,即观察到的单词是否属于预定义的一组特征。条件随机场是标注序列的概率模型。它没有独立的假设,可以任意选择特征,对所有特征进行全局归一化,得到全局最优解。它保留了条件概率框架的优点,例如最大熵马尔可夫模型。它还解决了标记偏差的问题。因此,条件随机场模型适用于命名实体识别。简单链 CRF 是目前命名实体识别的最佳方法 [15]。它对概率分布p(y|x) 建模,其中 x 是观察序列,y是标签序列。p(y|x)由下式(1)计算。

 

 N 是标记数,M 是特征数。通常,是二元的,如公式(2)所示。

 斯坦福 NER(命名实体识别)[16] 提供了线性链条件随机场(CRF)序列模型的一般实现。因此,它也被称为 CRFClassifier。在本文中,我们依靠斯坦福命名实体识别器来提取网络安全相关实体。斯坦福 NER 中有许多功能选项。我们使用斯坦福 NER 基础实现来训练提取模型,因为我们的目标也是训练命名实体识别器,但在网络安全领域。

选择特征对于构建模型很重要。我们应该选择能够更好地识别网络安全相关实体的特征。良好的特征组合是训练好的提取模型的关键。斯坦福 NER 提供了 70 多个可用于训练模型的特征 [17]。确定合适的特性并不是一件容易的事,因为关于这些特性的文档并不多。现有的特征选择算法对我们的工作没有帮助。我们必须分析特征并选择我们认为对训练模型有用的。然后我们通过实验验证我们的想法。经过多次实验,我们确定了一个用于训练命名识别器的特征集。并取得了较好的识别效果。我们确定用于训练命名识别器的特征集中的特征如下:

  • UseNGrams:从字母 n-gram (即单词的子串)中生成特征。
  • MaxNgramLeng:该特征的值类型是int。如果此特征的值为正,则模型中不会使用高于此值的 n-gram。在本文中,我们将 maxNGramLeng 的值设置为 6。
  • UsePrev:这可以为我们提供 <previous word, class of previous word> 的特征,并与其他选项一起启用其他先前的特征,例如 <previous tag, class>。这会产生基于当前单词和一对 <previous word, class of previous word> 之间关系的特征。当存在属于同一类的连续单词时,此功能将非常有用。
  • UseNext:类似于 UsePrev 的功能。
  • UseWordPairs:它基于两对:<Previous word, current word, class> 和<current word, next word, class>。
  • UseTaggySequences:这是一个重要的特征,它使用类的序列而不是单词。它使用一、二、三阶类和标签序列交互特征。
  • UseGazettes:如果为真,则使用将由其他标志定义的公报功能。
  • Gazette:值可以是一个或多个文件名(名称以逗号、分号或空格分隔)。如果提供的公报是从这些文件中加载的。每行应该是一个实体类名,后跟空格,后跟一个实体(可能是多个标记的短语,单词之间有一个空格)。
  • CleanGazette:如果为 true,则仅当 Gazette 中的整个单词匹配时才会触发此功能。如果公报中有一个单词“Windows 7”,那么整个单词应该在文档中匹配。
  • SloppyGazette:如果为真,则当任何公报条目的标记匹配时,就会触发公报功能。在这种情况下,“Windows”可以与“windows 7”匹配。

在本文中,我们将 Gazette 的特性用于软件和操作系统类。斯坦福 NER 提供了两个选项来实现 Gazette 功能。通过一些实验,证明 Gazette 的特性和 cleanGazette 的选项被证明是一个非常好的选择,因为它提高了 OS 和 Software 类的识别精度。

为了使用这个特性,我们总结了漏洞数据库中的influence_platform字段的信息,并构建了实体字典。字典中的第一列是实体类型,第二列对应于具体的实体。

四。实验与分析

A. 数据源

我们在实验中使用的数据来自马里兰大学标记的数据集[18]。目前,关于Person、Location和Organization的命名实体识别的相关研究较多。网络安全等特定领域的命名实体识别研究还很少,导致网络安全领域的标注数据集相对较少。马里兰大学计算机科学系的研究生借助基于网络的注释工具 brat 对网络安全相关的文本进行注释。他们注释的文字主要包括以下四个来源:

  •  Adob​​e 安全公告
  • 安全博客 
  • 常见漏洞枚举 (CVE)
  • Microsoft 安全公告

如表 III 所示,它提供了每个数据集的相关信息。

B. 评价标准

在信息检索和提取系统中,有两个主要的评价指标,包括精度和召回率。有时,为了综合评价系统的性能,通常会计算准确率和召回率的调和平均值。也就是我们通常所说的FMeasure。在本文中,我们使用了 F1,它是 FMeasure 的特殊形式。 Precision、Recall 和 F1 由真阳性、假阳性和假阴性定义。定义如下:

  •   真阳性(TP):它是那些被正确标记为属于特定类的类成员的集合。
  • 误报(FP):它是那些被错误标记为属于特定类的类成员的集合。
  • 假阴性(FN):它是那些未被系统标记为任何类别但实际上属于某个类别的项目的集合。

 

C. 实验结果

 我们将来自四个数据源的注释数据合并到一个数据集中。为了验证 useGazettes 的影响,我们构建了三个模型(NER1、NER2、NER3)。 NER1 没有选择 useGazettes 作为其功能,NER2 使用了 useGazettes 并选择了 cleanGazette 选项。 NER3 也使用了 useGazettes,但它的选项是 sloppyGazette。然后我们采用十倍交叉验证的方法来评估这些模型。我们将数据分成十个数据块。十分之九的块用作训练数据。其余数据块用作测试数据。下表显示了三个模型的 Precision、Recall 和 F1 测量的平均值。

一开始,我们选择没有 UseGazettes 的特征来训练第一个 NER 模型。 NER1的平均识别结果如表IV所示。我们可以看到Consequence的精度是比较高的。在 F1 度量上,Software 和 Consequence 的识别率接近。它们的识别率高于其他实体类型。也就是说,Software 和Consequence 的识别在整体识别效果上取得了不错的表现。

然后我们使用了包括 useGazettes 在内的功能,并选择了 cleanGazette 选项来训练名为 NER2 的第二个 NER 模型。第三个模型名为 NER3 是基于包括 useGazettes 在内的特征进行训练的,其中有 sloppyGazette 作为其选项。平均识别结果见表五。

如表五所示,在NER2的识别结果中,Software的识别取得了良好的整体表现。至于NER3,它是对获得高F1值的OS的认可。在软件和操作系统的识别方面,NER3的整体表现优于NER2。结果意味着 sloppyGazette 选项有助于识别网络安全相关实体。 NER2 和 NER3 中后果和均值的 F1 度量仍然很低。两者都低于 70%。接下来,为了对三种模型进行直观的比较,我们呈现下图。

如图 4 所示,对于 Software 和 OS 的识别准确率,包括召回率和 F1 度量,NER2 和 NER3 均高于 NER1。结果验证了 UseGazettes 在网络安全领域训练命名实体识别器的重要性。至于 Consequence 和 Mean,实体字典很难构建。没有公报,识别准确率不会太高。我们可以采用基于规则的方法来提取它们。

 五、结论和今后的工作

 我们提出了构建网络安全知识库的框架。在该框架中,我们在现有本体的基础上构建了以漏洞为中心的网络安全本体。此外,为了提取网络安全相关信息,我们采用了基于规则和机器学习相结合的方法。网络安全领域的注释数据集相对较小。对于小规模数据集,只能使用传统的机器学习方法。因此,斯坦福 NER 被用来训练一个提取器来提取网络安全相关实体。但识别准确率需要进一步提高。

今后我们要做的工作就是不断丰富网络安全知识库。然后我们将研究基于知识库的入侵检测和态势感知。

 

本文标签: 网络安全知识库文献框架Framework