基于命令的黑客画像构建与攻击者识别方法
2023-05-16徐雅斌王振超庄唯
徐雅斌,王振超,庄唯
(1.北京信息科技大学 计算机学院 北京市 100101;2.北京信息科技大学 大数据安全技术研究所,北京市 100101;3.苏州市公安局网络安全保卫支队,苏州市 215000)
0 引言
互联网的飞速发展给我们带来诸多便利,同时也导致网络安全问题日益严重,威胁着国家的安全[1]。多种形式的入侵检测系统(intrusion detection system,IDS)能够有效检测出用户的异常行为或异常网络流量数据[2]。文献[3] 以Linux shell命令作为研究数据,设计并实现了基于规则库的异常操作检测方法;文献[4]通过序列模式挖掘原理挖掘角色正常行为,使用Knuth-Morris-Prcatt (KMP)算法进行模式匹配,判断角色当前行为是否存在异常;文献[5]提出改进的BV-Apriori算法与模糊集合技术结合的方法生成规则库来判断数据是否异常。通过构建规则库和正常行为模式进行匹配的方法无法检测出新型的攻击手段,并且其识别准确率非常依赖于规则库构建的准确性与完备性,如果规则库没有事先建立某异常规则,那么此种攻击完全无法检测出来,识别效率低下。
文献[6]将用户的命令序列以登录开始,以注销为结束,对这段时间内的命令序列分别进行基于活动的特征提取与基于用户角色的特征提取,然后使用长短期记忆(long short-term memory,LSTM)神经网络与自编码器模型进行训练和异常检测。文献[7]提取用户的行为特征、序列特征、角色特征和心理特征,提出一种异常检测模型,提高了识别准确率。文献[8]从每个用户的活动日志中提取计数特征和统计特征,在多自动编码器中加入门控循环单元(gated recurrent unit,GRU)与多头自注意力机制进行异常检测。文献[9]将每个序列中不同命令的个数作为分类特征,使用不同的分类算法进行异常识别。文献[10]使用欠采样方法一定程度上解决了数据不平衡问题,提高了识别准确率。
仅对命令序列进行数字特征提取无法表达出序列中各命令间的关联性,语言模型能够有效解决这一问题。文献[11]针对内部威胁的特征工程无法准确描述命令间的内部关系的问题,将命令数据视为文本,将日志数据转换为语料数据对原始数据进行处理,并使用此数据训练Word2Vec模型,计算单词之间的余弦相似度来确定某行为是否为可疑行为。文献[12-13]均采用独热编码来构建命令序列的词向量,然后使用不同的深度学习方法进行异常识别。文献[14]使用3种不同的语言模型进行特征提取,使用k-近邻(k-nearest neighbor,KNN)算法进行异常识别。文献[15]分别使用Doc2Vec、循环神经网络自编码器和循环神经网络降噪自编码器3种方法将日志数据转化为词向量。然后,使用随机森林、局部异常因子与支持向量机(support sector machine,SVM)分类器这3种不同的分类方法进行训练来识别异常,结果表明:使用循环神经网络降噪自编码器提取特征,采用随机森林训练的模型识别效果最好。
但是仅仅识别出异常,无法得出黑客的真实身份。因此,除了准确识别出黑客攻击行为外,还需对黑客进行详细、完备的描述,然后快速地对进入内网中的异常用户进行匹配,识别黑客身份。这是后续进行黑客溯源,找出黑客在现实中的身份的关键。
用户画像技术通过提取目标用户的某些特征,将真实用户用数字特征进行表示。目前用户画像技术在推荐系统[16]、搜索系统[17]等领域应用广泛。此外,还有研究将用户画像技术应用于大数据刑事侦察中[18],提出了基于用户画像技术的大数据侦察框架。文献[19]将用户画像技术应用于内部威胁检测,提出一种行为特征自动提取和局部全细节行为画像方法。文献[20]为正常用户建立用户画像,通过数据挖掘与数理统计等方法获取用户行为特征,与用户画像进行匹配,发现用户的异常行为。上述文献通过对正常用户或者对所有用户进行用户画像构建,然后识别异常的方法能够较为有效地发现异常行为,但是无法区分不同的攻击类型,也无法找出进行攻击行为的黑客。
针对以上问题,本文提出一种基于命令的黑客画像构建与攻击者识别方法。首先根据黑客用户的历史命令序列数据,提取能够有效区分不同黑客身份的黑客属性标签、命令序列统计标签、行为特征标签,形成初始黑客画像库;然后通过基于双向长短期记忆(bi-directional LSTM,BiLSTM)神经网络与注意力机制(attention mechanisms)的异常分类模型对用户的命令序列进行分类,得到异常用户;使用基于二次匹配的黑客识别算法对异常用户进行黑客识别。
1 异常命令序列识别模型的构建
为了能够识别出不同攻击类型的命令序列,本文构建了一种异常命令序列识别模型BiLSTM-Attention,模型结构及识别过程如图1所示。
图1 BiLSTM-Attention异常命令序列识别模型
BiLSTM-Attention异常序列识别模型主要分为4个部分。
1)词嵌入(word embedding)层。将用户的命令序列视为文本序列。首先利用Word2Vec模型对命令序列进行词嵌入,把输入命令序列中的每个词W转换为词向量V,将输入数据向量化,解决数字特征提取过程中存在的无法准确表示命令序列信息的问题。
2)BiLSTM层。LSTM通过门控状态能够记住重要的信息,忘记不重要的信息,可以捕捉到序列中的依赖关系。但是,如果序列较长,LSTM可能会遗忘掉先出现的信息,导致信息丢失。BiLSTM结合前向LSTM与后向LSTM,双向提取命令序列语义信息,将提取后的结果进行拼接得到包含双向信息的特征,可以对序列进行更加准确的特征提取。
此部分将word embedding层输出的词向量作为前向与后向LSTM的输入,将前向LSTM与后向LSTM的输出进行拼接,双向提取命令序列中的语义信息,如图2所示。前向LSTM每个单词得到对应的向量为{hL0,hL1,…,hLn},后向的LSTM每个词对应得到的向量为{hRn,…,hR1,hR0},拼接后得到的结果为{[hL0,hRn],[hL1,hRn-1],…,[hLn,hR0]}合并成为可从前后两个方向表达语义信息的向量Hc。每个单词位置的特征向量包含前后两个方向的信息,由此能够更加准确地提取序列中的信息,进行更加准确、细致的分类。
图2 BiLSTM结构图示
3)Attention层。使用注意力机制计算查询向量与各个输入单词的相似性来得到权重系数。权重越大,证明该词的重要性越强,能够使分类器更加关注命令序列中的对分类影响结果大的部分,从而提高识别准确率。注意力机制如图3所示。
图3 注意力机制图示
上层BiLSTM层的输出作为Attention层的输入,首先引入查询向量Query,通过点积模型打分函数计算Query和本层输入(即上层输出){H1,H2,…,Hn}之间的相关系数;然后使用Softmax函数进行归一化,得到在各个输入位置上的注意力分布{A1,A2,…,An},即为各个位置上的权重。权重越大,证明该部分越重要;最后,将所有位置的上层输入H与各位置的权重A进行加权求和作为句子的表示向量Context,如式(1)所示:
(1)
Context中包含序列中每个单词的信息。但是,对分类结果影响大的部分会分配更多的权重,其他部分则分配较少的权重,从而提高分类结果的准确性。
4)Softmax层。使用Softmax激活函数对经过Attention机制进行权重分配后的向量计算属于每个类别的概率分布,概率最大的为该命令序列所属的类别,即为正常序列或为某种类型的攻击序列。
2 基于命令序列的黑客画像构建及识别
2.1 基于命令序列的黑客画像
用户画像是指提取用户的各种特征,抽象出来标签化的用户模型,对用户进行完备的描述。本文提取黑客用户命令序列中的攻击类型标签、统计特征标签与行为特征标签,对黑客进行刻画并形成黑客画像,以区分不同类型的黑客,并用来识别黑客身份。
1)攻击类型标签。构建初始画像库时,攻击类型在原数据集中已被标注,因此可直接获取;待识别黑客进行检测时,通过本文构建的BiLSTM-Attention分类模型获得待识别黑客的攻击类型标签。
2)统计特征标签。对黑客用户的命令序列进行数理统计,得到包括以下特征的统计特征标签:
①行为频率。统计黑客的命令序列中,各个行为出现的次数,除以该黑客用户命令序列的总长度,得到该黑客用户的行为频率,并以字典形式进行表示。例如,某黑客用户的行为频率可表示为{行为1:P1,行为2:P2,…,行为n:Pn}。
②序列丰富度。通过式(2)计算得到黑客用户命令序列的序列丰富度:
(2)
式中:S为每条黑客命令序列中包含的不同的命令个数;N为数据集中所有的不同命令个数。根据黑客用户进行的攻击方式不同,序列丰富度存在较大差异性。例如,密码暴力破解攻击会频繁重复进行用户名和密码的提交操作,直到密码破解完成。因此,序列丰富度的值会较低。如果利用Meterpreter进行渗透攻击,命令会更加复杂,序列丰富度值会较大。该标签能够有效区分不同攻击类型的黑客。
③序列信息熵。通过式(3)计算得到黑客用户命令序列的序列信息熵:
(3)
式中p(xi)为黑客命令序列中某个命令的出现概率。熵越大,不确定性越大,其命令序列的随机性越大,证明该序列进行的攻击行为较为复杂;反之则证明攻击手段简单单一。因此可通过序列信息熵衡量不同黑客用户的攻击特点,区分不同攻击类型的黑客。
④关键命令。利用词频-逆文档频率(term frequency-inverse document frequency,TF-IDF)算法得到黑客命令序列中的每个命令的TF-IDF值,该值大于阈值的命令即为黑客进行攻击活动中发送恶意命令时的关键命令。TF-IDF值按式(4)计算:
(4)
式中:T为TF-IDF值;ni为命令在该条序列中出现的次数;k为此命令序列中的命令个数;D为命令序列总数;Di为包含该命令的命令序列数。当同一个黑客对不同对象进行攻击时,由于黑客的攻击手段是相同的,因此攻击命令序列中的关键命令也是相同或相似的。
3)行为特征标签。
①频繁序列:黑客用户在执行攻击行为时,其中某些具体的攻击步骤是重复的。因此,通过PrefixSpan算法对黑客的命令序列进行频繁序列挖掘。将每条黑客的命令序列以100个命令为单位进行切分,并对每一个切分后的命令序列块进行频繁序列挖掘,得到频繁命令个数大于等于5的前5个频繁序列作为该黑客的频繁序列集。不同的黑客由于攻击方式、攻击手段不同,其频繁序列也存在较大的差异。
②频繁序列个数:统计黑客在整条命令序列中,存在多少个频繁序列。频繁序列标签个数越多,证明黑客所进行的攻击手段越简单;反之,进行的攻击手段就越复杂。由此能够区分不同类型、不同身份的黑客。
2.2 黑客画像的构建
黑客画像的构建方式如图4所示。
图4 黑客画像构建过程
黑客画像的构建过程如下。
1)通过本文构建的BiLSTM-Attention命令序列识别模型识别出异常序列,得到异常序列的异常种类,作为攻击类型标签。
2)对识别为异常的命令序列,统计该序列中每个行为的出现频率,得到行为频率特征;利用式(7)与式(8)分别得到序列丰富度与序列信息熵;通过TF-IDF算法得到命令序列中的各命令的TF-IDF值,选TF-IDF值大于等于0.2的命令为关键命令。综合以上4项特征构成统计特征标签。
3)对命令序列使用PrefixSpan算法进行频繁模式挖掘,得到命令序列中的频繁序列。再统计整个命令序列中,包含多少个频繁序列,频繁序列与频繁序列个数构成行为特征标签。
将上述3项标签结合,构成能够描述不同黑客身份特点的黑客画像。
2.3 基于二次匹配的黑客识别算法
如果将异常命令与画像库中所有的黑客画像一一对比,识别效率将会降低,因此本文设计了基于二次匹配的黑客识别算法。该算法的实现原理如下:首先通过BiLSTM-Attention异常命令序列识别模型识别用户命令序列的攻击种类,然后按照2.2节中黑客画像的构建方式对识别出的异常用户提取统计特征与行为特征,并与黑客画像库中的黑客进行匹配,若匹配成功则能够确认黑客的身份,否则将提取的特征形成黑客画像,对画像库进行更新。
具体的算法步骤如下。
1)将待识别黑客按照攻击类型与黑客画像库中的黑客画像对应起来。
2)初步匹配。首先统计黑客画像库中相应攻击类型的黑客画像与待识别黑客相同关键命令的个数,然后通过频繁模式挖掘得到待检测用户的5个频繁序列,通过jaccard系数计算待检测黑客每条频繁序列与黑客画像每条频繁序列的相似度,相似度值最大的为待检测黑客与画像库中黑客的频繁序列相似度。相似度按式(5)计算:
(5)
把相同关键命令个数和频繁序列相似度相乘,如果该值大于1则跳转步骤3,继续进行二次匹配,否则初步匹配失败。
3)二次匹配。分别将待识别黑客与黑客画像库中黑客的相同行为频率值与序列丰富度、序列信息熵和频繁序列个数进行组合,得到待识别黑客与画像库中黑客的标签元组,通过计算两组数据的余弦相似度,得到待识别黑客与画像库中黑客的匹配度。
4)如果匹配度大于0.8则认为能够从画像库中找到与待识别黑客相同的用户,并由此得出待识别黑客的身份,否则回到步骤2。如果画像库中所有的黑客均不能与待识别黑客成功匹配,则待识别黑客为新型黑客添加到相应攻击类型的黑客画像库中。
3 实验
3.1 实验数据集
本实验选用ADFA-LD公开数据集。该数据集是澳大利亚国防学院对外发布的一套主机级入侵检测数据集合,包含了一种正常命令序列数据与6种不同攻击类型的异常命令序列数据,如表1所示。
表1 ADFA-LD数据集
3.2 评价指标
本实验采用准确率、精度、召回率、F1值和误报率作为评估模型识别效果的评价指标。
准确率代表所有正负例分类正确的比例,通过式(6)计算得到:
(6)
式中:A为准确率;nTP为实际值为正,预测同样为正的样例个数;nTN为实际值负,预测值为负的样例个数;nFP为实际值为负,预测值为正的样例个数;nFN为实际值为正,预测值为负的样本个数。
精度表示预测为正例的样本中实际为正例的比例。该值越大,证明在检测过程中误检的情况越少,可通过式(7)计算得到:
(7)
召回率表示真实值为正例的样本中预测正确的比例。该值越大,证明在检测过程中出现漏检的情况越少,可通过式(8)计算得到:
(8)
F1值综合了精度与召回率两个评价指标,可通过式(9)计算得到:
(9)
误报率是把本来是异常数据误认为正常的比例。在真实场景中,如果将黑客用户判断为正常用户会带来严重的损失,因此该值越小越好。误报率可通过式(10)计算得到:
(10)
3.3 实验结果及分析
3.3.1 不同特征提取方式的对比实验
为了验证本文提出的使用语言模型对异常命令识别的效果是否优于使用数字特征提取方法进行特征提取并分类的效果。我们将本文方法与文献[9]和文献[10]的方法进行了对比。文献[9]与文献[10]采用不同的特征提取方法对命令序列进行特征提取。其中,文献[9]考虑到了命令序列间的顺序影响,将序列中不同命令个数作为特征,提高数字特征的有效性;文献[10]考虑到了数据的不平衡问题并使用欠采样方法加以解决。本文方法与这两种方法的对比实验结果如表2所示。
文献[9]无法有效提取出命令序列中不同子序列之间的相互关系;文献[10]使用的欠采样方法会使正例数据中的部分信息丢失;而本文通过利用语言模型将命令序列转化为词向量的形式,并利用BiLSTM进行语义特征提取,能够双向提取命令序列中的语义特征,并且使用注意力机制给序列中对分类结果影响大的部分分配更多的权重,因此能够显著提高识别效果。
3.3.2 多分类识别效果的对比实验
识别出命令序列中属于不同攻击类型的异常命令序列能够有效提高黑客识别准确率。为了验证本文提出的模型是否能够将不同的异常命令序列准确识别,与文献[14]和文献[15]的方法进行了对比。文献[14-15]中的方法仅使用不同机器学习分类算法,对经过语言模型提取后的特征进行分类,其中文献[14]分别使用词袋(bag of words,BOW)模型、TF-IDF方法和N-Grams模型进行特征提取,然后使用k-近邻进行异常命令识别。对比实验结果如图5所示。
图5 多分类准确率对比结果
从图5可以看出,本文提出的BiLSTM-Attention异常命令序列识别模型对不同攻击类型的异常命令识别准确率均为最高。这是由于本文使用了注意力机制对BiLSTM提取的时序特征进行进一步的优化,能够关注到序列中对不同攻击类型的分类结果影响大的部分,并增大这部分的权重,因而本文提出的模型能够更加准确地对每个类别进行识别。
3.3.3 识别效率对比实验
与黑客画像一一比配的常规方法与本文提出的基于二次匹配黑客的识别方法进行时间耗费上的对比实验,结果如图6所示。
图6 黑客识别时间耗费
从图6中可以看出,在对不同攻击类型的黑客进行识别时,本文提出的基于二次匹配的识别方法在时间耗费上均远小于常规方法。原因在于本文提出的方法在匹配时,待识别黑客是与相同攻击类型比较,而不是与全部黑客画像进行比较,由此极大地提升了匹配速度;而且考虑到同种攻击类型的黑客仍会存在不同攻击手段,于是依据相同关键命令与频繁模式进行初步匹配,又缩小了匹配的范围。最后再进行相似度匹配,所以结果呈现出本文方法的匹配效率要远优于常规匹配方法,由此证明本文提出的匹配方法能够显著提高黑客识别效率。
3.3.4 黑客画像识别方法稳定性实验
随着画像库的不断更新,黑客画像数量会逐渐增多,影响黑客的识别效率。因此,本文分别设置30%,60%与100%总数据量的黑客画像数据,观察随着画像库中黑客画像数量的增多,使用不同的识别方法,时间耗费变化情况与不同数据量下的时间耗费增长率的情况,实验数据如表3与表4所示。
表3 常规方法在不同数据量下的时间耗费 s
表4 本文方法在不同数据量下的时间耗费 s
从表3~4能够看出,在不同画像库数据量下,本文所提算法的时间耗费均小于常规算法。为了更直观地观察不同匹配方法随着画像库数据量的增大,匹配时间增长率的变化情况,对不同攻击类型绘制出匹配时间增长率柱状图,如图7所示。
图7 不同数据量下时间耗费增长率
从图7可以看出,除了Webshell攻击外,本文提出的黑客识别算法在其余攻击类型中随着画像库数据量的成倍增长,时间耗费的增长率均小于常规方法。该实验结果证明,本文提出的基于二次匹配的黑客识别算法相较于常规算法更加稳定,能够有效缓解随着画像库中黑客画像的增多,匹配效率降低的问题。
4 结束语
为了准确、快速识别网络中的黑客,本文提出了基于命令的黑客画像与攻击者识别方法。首先构建BiLSTM-Attention网络模型识别不同攻击类型的命令序列,作为待识别黑客用户,然后提取待识别黑客用户的攻击类型标签、统计特征标签与行为特征标签构成黑客画像,与事先构建的黑客画像库通过本文提出的基于二次匹配的黑客识别算法进行匹配,识别黑客身份。在ADFA-LD公开数据集上进行的仿真实验表明,本文提出的BiLSTM-Attention网络模型能够非常准确地识别出黑客命令序列的不同异常类型。此外,基于二次匹配的黑客识别算法在匹配速度与稳定性方面,均要优于常规的匹配方法,大幅提高了黑客识别的效率。在后续的工作中,我们将继续深挖不同黑客的特征,构建更多区分度更高的黑客特征标签,完善黑客画像。此外,由于本文使用的数据集的样本量不够多,以后工作中将使用更多的数据来训练模型,提高模型泛化能力。