APP下载

基于威胁情报的自动生成入侵检测规则方法

2022-02-15赵倩崇郑荣锋田智毅孙思琦

计算机工程与设计 2022年1期
关键词:分类器段落情报

刘 亮,赵倩崇,郑荣锋,田智毅,孙思琦

(1.四川大学 网络空间安全学院,四川 成都 610065; 2.四川大学 电子信息学院,四川 成都 610065)

0 引 言

入侵检测系统(intrusion detection system,IDS)作为提高网络安全访问的有效手段[1],在应对日益频繁的网路热点事件时的更新能力受到了越来越多的关注。IDS通过实时监视系统,对发现的异常情况进行告警,其检测能力受制于规则的准确性和丰富性,良好的规则更新能够提升对正在发生的热点事件的应对能力。

针对以上问题,本文提出了一种基于威胁情报的自动生成入侵检测规则方法,利用网络中公开传播的、能够及时描述当前网络安全环境的开源威胁情报文本(cyber threat intelligence,CTI),使用深度学习算法提取IoC数据,自动生成入侵检测规则,应对当前热点安全威胁和高级持续威胁(advance persistence threat)。陷落指标数据(indicator of compromise,IoC)可用于识别计算机系统是否被攻击者入侵的信息,包括网络安全事件相关的IP地址、域名、电子邮件地址等信息。开源威胁情报文本是由网络安全领域的专业人员针对于最新发生的网络安全热点事件撰写的、包含完整事件过程的报告,其中包含丰富的IoC数据,可被用于提升计算机网络应对网络安全热点事件的能力。本文即是研究自动地从网络威胁情报文本中精确地提取IoC信息,并及时地形成可用的入侵检测规则。

本文的创新点主要为:

(1)使用基于条件共现度的方法对IoC所在段落进行特征扩展和文档重构,提高IoC数据提取准确率;

(2)使用基于3层LSTM和CNN网络结构的ResLCNN深度学习模型验证所提取的IoC数据真实性,达到了91%的IoC数据提取准确率;

(3)将开源威胁情报应用于入侵检测系统的规则生成,实现了IDS规则的及时自动更新,提升应对热点网络安全威胁的能力。

1 相关工作

为了实现自动更新规则数据库,文献[2]提出了一种结合机器学习和神经网络生成规则的方法Dendron。Dendron同时利用了决策树和遗传算法,以生成出语言可解释的准确的检测规则,同时将启发式方法集成到生成过程中。该方法可以高精度地检测网络攻击,但没有考虑大规模数据集的训练时间。文献[3,4]都提出了利用蜜罐安全机制来区分来自客户端的传入流量和攻击者发起的流量的IDS。文献[2]提出的Dendron和文献[3,4]提出的基于蜜罐的规则生成算法都需要足够数量的规则攻击样本以提取良好的规则。除此之外,文献[5]提出了一种基于关联规则数据挖掘技术来检测网络探针攻击的改进Snort IDS规则的程序。以上这些规则更新方法只能提取已知攻击行为的特征,或者在原有特征的基础上寻找最佳的一般表达式,无法针对当前发生的热点网络安全事件做出及时更新。

目前,威胁情报最普遍的使用场景是事后攻击检测,即利用IoC数据进行日志检测,发现内部被攻陷的主机等重要风险。这种情况下可以发现传统安全产品无法发现的很多威胁,对于安全运营有较大的帮助[6]。但是将开源威胁情报直接用于入侵检测系统等实时攻击检测技术的研究还很少。文献[7]提出的CyTIME系统利用威胁情报共享协议TAXII协议,从威胁情报共享平台中收集威胁情报数据,并将其转化为结构统一的STIX格式,最后生成用于入侵检测的规则。但该系统只能收集结构化的CTI并将其转为IDS规则,针对从难度更大且实用性更强的非结构化的数据例如文本中收集IoC没有实现。从非结构化的数据中准确提取IoC是一项挑战性的自然语言处理技术。在文献[8]中,Yuan和Liao等提出一种自动从博客文章中收集IoC的系统iACE,他们将问题建模为图相似问题,如果IoC项具有与训练集相似的图结构,则将其识别出来。文献[9]提出利用卷积神经网络CNN自动提取IoC的系统iGen。文献[8,9]都只关注了句子级别的特征,并且没有将其与上下文关联,准确率较低。

本文提出的基于威胁情报的自动生成入侵检测规则方法,首先从网络安全公司、组织搭建的开源威胁情报网站中收集可能与网络安全事件相关的文章,文章分类模块使用Word2Vec进行特征提取,训练监督学习模型,该模型自动将文章分为威胁情报文本和非威胁情报文本;然后定位IoC所在的段落并使用条件共现度算法进行特征扩展和子文档重构,并使用深度学习网络验证IoC真实性。最后,入侵检测系统构建模块将提取出的IoC转换为入侵检测系统规则,构建入侵检测系统。

2 基于威胁情报的自动生成入侵检测规则方法

本文提出的基于威胁情报的自动生成入侵检测规则模型如图1所示。

该模型主要包含4个模块,威胁情报收集与预处理模块、文章分类模块、IoC提取模块和入侵检测系统构建模块。①威胁情报收集与预处理模块包含数据收集组件和文本预处理组件,数据收集组件在各大开源威胁情报网站上定期收集可能与网络安全事件相关的文章,然后使用预处理组件进行数据清洗与文本预处理;②文章分类模块使用Word2Vec进行特征提取,利用AdaBoost算法训练文章分类模型,该模型自动将文章分为威胁情报文本和非威胁情报文本;③IoC提取模块首先通过静态规则定位可能包含IoC的段落,使用条件共现度算法进行特征扩展和子文档重构,交由基于ReslCNN 深度学习网络的IoC验证模型验证IoC;④最后,入侵检测系统构建模块将提取出的IoC转换为可以应用于开源入侵检测系统Snort的规则,构建入侵检测系统。

图1 整体方法模型

2.1 威胁情报收集与预处理

数据收集组件定期在不同的开源威胁情报网站上收集文章,所获得的原始HTML脚本中有很多噪声信息,包括标签、广告链接、视频等,需要通过预处理模块提取HTML 脚本中的文本内容。预处理组件还对原始文本进行停用词去除和词性还原。为了节约数据存储空间、提高后续分类准确率,在预处理阶段去除应用广泛但自身并无明确意义的停用词。由于收集来的文本中同一原型的词经常以不同的形态出现,并且在训练模型提取特征时通常将这些单词当作多个词进行处理,故使用词形还原将单词的不同形式统一为词的原始形式,以提高特征提取的准确性及效率。

2.2 文章分类模型

尽管开源威胁情报网站发布的文章大多为CTI信息,但其中也夹杂着产品广告、安全技术指导等非IoC文章。本模块将从威胁情报收集与预处理模块传来的所有文章中提取包含妥协指标IoC的文章。首先通过正则匹配过滤掉所有不包含候选IoC(IP、域名、url、哈希值等)的文章,之后通过自然语言处理技术提取特征构建文章分类模型。

特征提取:在威胁情报领域往往会有层出不穷的新的词汇,并且描述网络安全事件的文章篇幅往往较长,采用传统的词袋模型会引发维度灾难,严重影响计算速度。Word2Vec模型可以很好地解决上述问题。相较于传统NLP的高维、稀疏的表示法,Word2Vec是一种可以进行高效率词嵌套学习的预测模型,训练出的词向量是低维、稠密的。除此之外,Word2Vec模型训练的词向量包含词的语义信息且能体现词之间的线性关系[10],因此本系统利用基于Skip-gram模型的Word2Vec模型训练威胁情报语料中的词汇,得到文章每个词的词向量。

Skip-gram模型共分为3层:输入层、隐藏层和输出层。输入层中每个词由独热编码方式表示,输入层与隐藏层之间的权重矩阵W的第i行代表词汇表中第i个单词的权重,最后模型还有N个结点的隐藏层,隐藏层节点hi就是输入层输入的加权求和。隐藏层h公式如下

(1)

输出层是输入节点的上下文,窗口大小为C, 模型输出结点C*V也是由对应输入结点的加权求和计算得到,输出层节点公式如下

(2)

最后使用softmax函数对输出层的多项式分布进行归一化,将模型的归一化输出作为目标函数,然后通过交叉熵方法获得损失函数,并通过反向传播算法更新变量权重,该算法连续迭代直到网络收敛。

构建IoC文章分类模型:为训练分类模型,手工标注在各大开源威胁情报网站上收集的400篇文章(包括299篇非威胁情报文本和101篇威胁情报文本文章),并将这些文章分为训练集和测试集。利用Word2Vec模型提取的特征,本模块使用AdaBoost算法来训练IoC文章分类模型。AdaBoost是一种可以显著提高一般分类器分类精度的方法,它可以联合几个初等分类器构成一个新分类器,本系统采用AdaBoost算法提高模型训练的精度。

模型训练过程如下:在每轮训练中,添加新的弱分类器。如果已经对样本点进行了准确分类,则在构建下一个训练集时减少其权重;相反,如果样本点未正确分类,则其权重会增加。最终改进的强分类器,采用不同弱分类器的加权组合,即某个数据被分为哪一类要由各分类器权值决定[11]。

其中,计算弱分类器在最终分类器中所占的权重αt, 如下

(3)

然后需要更新威胁情报样本数据中训练样本的权值分布

(4)

2.3 IoC提取

本模块的任务是在IoC文章中准确识别并提取IoC。如果直接在IoC文章中使用静态规则(例如正则表达式、关键词匹配)提取IoC存在很高的误报率。如图2所示,图中的3个段落来自3篇不同的IoC文章,如果单纯依靠静态规则匹配会将图中的所有候选IoC(符合IoC格式的字符串)都当作真实IoC提取出来,但事实上只有第一段中的IP地址、域名和第三段中的IP地址才是真正的IoC。

图2 包含候选IoC的段落示例

本文采用深度学习的方法,训练一个以带有候选IoC的段落为输入,以是否为IoC为输出的文本分类器。自然段落有数据量小,高维性和特征稀疏(如图2所示)等特点,这增大了文本分类的难度。为了解决该问题,本模块先利用条件共现度对原有文本进行特征扩展和文本重构,使用Word2vec将重构之后的段落转换为低维度的词向量,最后输入结合了CNN和LSTM优势的ReslCNN深度学习网络进行模型训练。

特征扩展和文本重构:本文没有选择候选IoC所在的句子而是选择以候选IoC所在的段落为基本单位进行特征扩展和模型训练。由于自然段落是一种基本的语言结构,自然段落中的内容将集中描述一个主题,因此它代表了一个连贯的语义文本段。此外,自然段落比句子和块包含更多的词汇信息并且大小适中[12]。

本模块首先要将每篇IoC文章以自然段落为基本单位拆分成具有独立语义结构的子文档。但是,将具有较少单词的段落视为基本的语义结构会为后续的特征扩展带来误差,因此,有必要确定在处理过程中是否可以将自然段落当成具有独立语义结构的子文档。每个不能被划分为独立语义结构的段落都将被合并到下一个段落中。判定规则如下

(5)

(6)

其中, [δ] 表示取整操作。

在对原始IoC文章进行语义结构拆分之后,每个子文档内的词共同说明了一个主题的内容,而单个词无法准确定位文本的语义内容,因为单个词表达的语义相对广泛。而当单词同时出现或组合成较长单元的短语时,可以更精确地表达文本的语义关系。另外,只用普通的词共现方法往往不能准确判断文档重点描述的语义信息。例如“Phorpiex”和“攻击”共现时,不容易判定该段落内容描述的是“Phorpiex为攻击者”还是“Phorpiex为被攻击者”;其次,若在一个段落中,“木马”和“攻击”,以及“木马”和“检测”的共现次数相同,无法判定本段落在更偏重于描述“木马攻击”的手段还是更偏重于描述“检测木马”的手段。为了解决文本内容的语义歧义,本文采用文献[13]中提出的条件共现度方法度量原始段落中任意两个词的依存性,并根据词语间的条件共现度对原始段落进行特征词扩充和重构[13]。

(7)

(8)

然后,为了突出词语组合后在段落中的语义强度,在求得词间的条件共现度后,乘以段落内相应的两个词语词频的和与ρ的差值,即

(9)

其中,ρ用来控制词语组合的强度,ρ越小,则强度越大,反之,则强度越小。

最后,依据上述两步操作后获得的组合词及其权重的整数部分,对拥有独立语义结构的段落特征进行扩充和重构。在重构过程中,将这些组合词按其权重的整数部分进行重复。

如图3所示,我们从一个段落中提取出3个词,分别为“木马”、“检测”和“攻击”,分别用a代表“木马”,b代表“检测”,c代表“攻击”,并取ρ=2。 首先根据该段落的共现矩阵计算条件共现度矩阵;然后强调组合词语义,根据文档语义提高组合词的权重;最后进行特征词扩充及文本重构。从最后的重构文档内容可以看出,“木马检测”、“木马攻击”和“检测木马”是关键内容。此外,可以清楚地分辨出“木马检测”比“木马攻击”更重要。

图3 特征扩充及文本重构示例

构建ReslCNN模型:在对包含候选IoC的原始段落进行特征扩展和文本重构之后,需要训练模型来验证候选IoC是否为真实IoC。对自然段分类属于短文本分类的范畴,目前,短文本分类模型通常是浅层网络,即一层或两层CNN或LSTM,相对于深层神经网络特征表达能力较差。但是深层神经网络模型效果受梯度消失影响。

为了解决上述问题,本文使用文献[14]提出的基于3层LSTM和CNN网络结构的ResLCNN(residual-LSTM-CNN)深度学习模型,如图4所示。ResLCNN模型以Word2vec词向量构成的段落矩阵作为输入,第1层LSTM根据隐藏层和记忆单元获取文本时序特征,随后残差层包含两层LSTM,接着CNN层使用多个卷积核进行卷积运算,并提取最优卷积特征通过softmax分类。ResLCNN模型为了获取更复杂的特征,将3层LSTM结合CNN构建深层网络,同时在第1层LSTM输出与CNN层输入之间添加恒等映射,构建残差层缓解训练模型阶段低网络层梯度消失问题[13]。

图4 ResLCNN模型框架

设Mi代表第i层的输入,其中i∈{1,2,3,4}。F表示残差函数,权重为W。 残差层运算如下

M4=F(M2,W)+M2

(10)

残差层的输入为M2, 输出直接作为第4层CNN的输入M4, 进而得出式(10)。式(10)反向求导的过程为

(11)

IoC生成:通过比对IoC文章和非IoC文章,比对真IoC与假IoC的段落,总结出约260个与IoC有关的关键词。本模块通过静态规则从真IoC段落中提取出IoC和IoC的类型。

2.4 入侵检测系统构建

随着越来越多的网络安全威胁和攻击不断出现,传统的IDS面对的挑战是规则滞后无法应对最新的威胁。现有的规则更新方法基本都是取出已知攻击行为的特征,或者在原有特征的基础上寻找最佳的一般表达式,无法完整表达现在和未来的安全状况。而将威胁情报用于构建入侵检测系统,能够根据过去和当前网络安全状况动态调整防御规则。

在众多入侵检测系统中,Snort占主流地位。Snort是一种开源的轻量级网络入侵检测系统,可以进行实时数据流量分析和记录IP网络数据包,检测不同的攻击方式,对攻击进行实时报警,具有很好的扩展性和可移植性。本文基于Snort构建入侵检测系统。

如图5所示,Snort规则包含规则头部和选项两部分,规则头部中,action指明规则被触发后所执行的动作,proto表示规则所使用的协议,例如TCP、UDP或ICMP,在Snort3中,协议可以为空,接下来是源IP地址,源端口号,目的IP地址,目的端口号,规则选项定义了用于分析数据包负载以检测攻击的模式。将IoC转换为IDS规则的算法如算法1所示。

图5 Snort规则格式

算法1:IDS规则生成算法

输入:IoC文件IoCs

输出:IDS规则R

(1)R← 0

(2)foreachIoCinIoCsdo

(3)ifIoCcontainsblacklistsIPaddressesthen

(4)ExtractIPaddresses,creationtime,typefromIoC

(5)GeneratethecorrespondingsecurityrulerwithIPaddresses,creationtime,type

1) 对刀片刃面进行局部气体渗碳以及淬火和低温回火热处理后能达到使刀片具有沿横截面上的表里硬度差,达到表层硬(硬度≥60HRC)、心部韧(硬度≤35HRC)的目的。

(6)AddrtoR

(7)elseifIoCcontainsblacklisteddomainnamesthen

(8)Extractblacklisteddomainnames,creationtime,typefromIoC

(9)Generatethecorrespondingsecurityrulerwithblacklisteddomainnames,creationtime,type

(10)AddrtoR

(11)elseifIoCcontainsfilehashthen

(12)Extracthash,hashtype,creationtime,typefromIoC

(13)Generatethecorrespondingsecurityrulerwithhash,hashtype,creationtime,type

(14)AddrtoR

(15)elseifIoCcontainsmalwarethen

(16)Extractmalwarename,malwaretype,malwaresignature,creationtime,typefromIoC

(17)Generatethecorrespondingsecurityrulerwithmalwarename,malwaretype,malwaresignature,creationtime,type

(18)AddrtoR

(19) …

(20)endif

(21)endfor

(22)returnR

3 实验结果及分析

3.1 实验数据

采用Python3.6程序语言实现本文算法,通过爬虫在30个开源威胁情报网站进行文章收集、分类和IoC提取,包括AlienVault、badcyber、FireEye、Freebuf等威胁情报平台。本系统共收集了3100篇网络安全文章,其中包含910篇IoC文章,从中提出共2300个包含候选IoC的段落,其中1500个段落包含真实IoC,800个段落包含虚假IoC。其中IoC类型分布见表1。

表1 IoC类型分布

3.2 评价指标

在文章分类和IoC提取实验中评价指标采用准确率P, 召回率R和调和平均值F1, 其计算公式为

(12)

(13)

(14)

其中,TP表示正确告警条数;FP表示误报条数;FN表示漏报条数;TN表示正确未告警条数。准确率P表示正确识别的正类占所有预测为正类的比率;召回率R表示正确识别的正类占所有实际为正类的比率;调和平均数F1表示准确率与召回率的综合值。

在入侵检测系统构建实验中采用评价指标漏报率FNR和误报率FPR

(15)

(16)

漏报率FNR是错误识别的正类占所有预测为负类的比率,误报率FPR是错误识别的负类占所有实际为负类的比率,FNR、FPR越低,表示检测效果越好。

3.3 实验结果

3.3.1 文章分类与IoC提取实验

在提取IoC实验中,基于条件共现度的特征扩充算法是提高IoC提取准确率的关键算法,所以本文将使用特征扩充前的文本和特征扩充后的文本分别进行IoC提取,实验结果对比见表2。

表2 IoC提取实验结果

实验结果表明,基于条件共现度的特征扩充算法显著地提高了提取IoC的准确率。除此之外,本文将本系统所使用的IoC提取模型与其它方法进行了对比,包括分别使用TF和TF-IDF算法提取特征的SVM(支持向量机分类器)和朴素贝叶斯分类器。采用10折交叉验证技术,比较了准确率、召回率和调和平均值。如表3所示,本系统以93%的准确率,90%的召回率生成IoC,性能优于其它方法。

文献[8]提出的iACE在高精度提取IoC方面也取得较好效果。但是该方法从其使用的数据集中手动提取了5283个特征,这意味着iACE运用在其它数据集中精度无法保证。但是在本系统中,特征不用手动提取,使用条件共现度方法进行特征扩展后,由ResLCNN深度学习模型自动选择特征。该特性使得本系统在任何数据集上都具有更强的适应性。

表3 IoC提取实验结果

3.3.2 IDS检测实验

本文将从威胁情报中提取出的IoC转化为snort规则,转化过程如图6所示,转化后的规则被应用到入侵检测系统中。

为在实验环境下采用统一标准对本文所提出的基于威胁情报的自动生成入侵检测规则方法加以验证,本文采用malware-traffic-analysis[15]网站公开的恶意代码,该数据集包含了Angler、Boleto、EITest、Emotet、Nuclear、Trickbot等知名恶意代码相关的流量数据。本文在实验室环境下搭建了Snort入侵检测系统,并将使用生成的规则对该数据集中的恶意流量进行检测。表4中从上至下恶意代码发现时间从远到近,其中DRIDEX FROM LINK-BASED MALSPAM是最新发生的网络安全事件中采集的流量。同时,本文选取文献[16]和文献[17]所提出的入侵检测系统作为对照。文献[16]提出基于分层时空特征的入侵检测系统(HAST-IDS),首先使用深度卷积神经网络(CNN)学习网络流量的低层空间特征,然后使用长短期记忆网络学习高层时间特征。文献[17]提出了一种新颖的入侵检测系统,该系统结合了不同的分类器方法,这些方法基于决策树和基于规则的概念,即REP树、JRip算法和Forest PA。具体来说,第一种和第二种方法将数据集的特征作为输入,将网络流量分类为攻击/良性。除了将第一分类器和第二分类器的输出作为输入之外,第三分类器还使用初始数据集的特征。实验结果见表4。

图6 IoC转snort规则举例

表4 异常流量检测结果对比/%

结果显示,随着恶意代码的发现时间越近,本系统的检测漏报率越低,文献[16]和文献[17]的检测漏报率越高,而本系统的误报率始终低于文献[16]和文献[17]。在MALSPAM PUSHES FORMBOOK的检测中,本系统的漏报率最高,检测效果最差,而对于最新发现的DRIDEX FROM LINK-BASED MALSPAM的检测效果优于其它文献提出的入侵检测方法。这是因为对于文献[16]和文献[17],流量数据类型的规模和数据量的大小对预测模型的训练效果有显著的影响,如果检测流量规模和数据量足够大时检测效果优于本系统,所以对于越早发现的恶意代码检测效果越好。尽管本系统生成的规则多数只包含了数据包头的信息,但在热点网络安全事件还未有足够流量规模用以训练时具有较好的检测结果,优于其它系统。并且因为本系统可以从威胁情报中获得较为准确的IoC数据,可以生成更加可靠的规则,所以误报率始终低于其它系统。

最终结果表明,文本所设计的基于威胁情报的自动生成入侵检测规则方法能够有效捕捉开源威胁情报中的有效数据,有效帮助提升应对APT攻击,提升网络安全防护能力。

4 结束语

本文提出基于威胁情报的自动生成入侵检测规则方法,将威胁情报用于构建入侵检测系统,能够根据过去和当前网络安全状况动态调整防御规则。该系统先在不同开源威胁情报网站收集网络安全文章,训练文本分类模型,之后通过条件共现度算法进行特征扩展和文本重构,使用深度学习网络训练IoC提取模型。最后,入侵检测系统构建模块将提取出的IoC转换为可以应用于开源入侵检测系统Snort的规则,构建入侵检测系统。实验结果表明,本系统能够准确分离出与安全事件相关的文章,提取出文章中的IoC信息,能够有效为新的攻击生成IDS规则。

在下一步的工作中,将汇总来自多个事件/来源的数据并与其它信息进行补充,聚合IoC以便生成准确率更高的IDS规则。

猜你喜欢

分类器段落情报
情报
情报
情报
趣味•读写练 答案
基于朴素Bayes组合的简易集成分类器①
【短文篇】
心理小测试
基于特征选择的SVM选择性集成学习方法
夏天,爱情的第四段落
基于差异性测度的遥感自适应分类器选择