笔记作者:Norns
原文标题:EXTRACTOR: Extracting Attack Behavior from Threat Report
原文作者:Kiavash Satvat, Rigel Gjomemo, V.N. Venkatakrishnan
发表会议:2021 European IEEE Symposium on Security and Privacy
原文链接:https://arxiv.org/pdf/2104.08618.pdf
网络威胁情报(CTI)是对网络威胁进行识别和响应的重要依据。然而,CTI报告通常含有大量的无关的文本,安全人员很难从大量的文本中提取出真正有效的信息。为了解决这个问题,本文提出了一个自动化工具EXTRACTOR用于自动从CTI报告中提取出攻击行为信息。实验的结果表明:EXTRACTOR可以有效地从CTI报告中提取出关于攻击行为的起源图(provenance graph),提取出来的起源图可以进一步被网络分析工具利用。
0x01 INTRODUCTION
CTI通常包含在技术报告等文本中,这些文本通常使用的是自然语言,这些文本中通常包含攻击行为、对系统造成的影响等信息。先前的工作使用自然语言处理(NLP)技术成功地从CTI报告中以威胁指标(Indicator of Compromise, IOC)的方式提取了与攻击行为有关的信息。然而,以往的工作忽视了IOC之间联系的重要性,没有完整地复原网络攻击行为。提取攻击行为需要一种方法来从自然语言写成的文本中提取出"who did what to whom", "where" and "where"。这种方法所面临的困难在于:
-
Verbosity:在CTI报告中,与攻击行为相关的描述可能只占很小一部分,其它部分充斥着大量无关信息。
-
CTI text complexity:CTI报告中使用的语句结构与日常生活中使用语言具有较大的差异,这使得传统的自然语言处理工具难以对CTI报告进行处理。
-
Relationship Extracot:对CTI报告中全局的信息进行提取需要理解攻击行为之间的关系,而理解技术报告中复杂的逻辑是NLP领域公认的难题。
在本文中,作者提出了EXTRACTOR用于解决这些问题。EXTRACTOR的目标是以图的形式描述CTI报告中攻击行为的全局信息。EXTRACTOR先将与攻击行为有关的信息从冗余的信息中提取出来,然后将将复杂的文本转换为容易理解的形式。为了解决第三个问题,EXTRACTOR使用语义角色标注(semantic role labeling, SRL)对句子进行处理。
0x02 PROBLEM AND BACKGROUND
A. Problem Description
上文提到,EXTRACTOR的目的是从CTI报告中提取用于描述攻击行为全局信息的起源图。在起源图中,将实体(e.g., process, registry keys)作为结点,结点之间连接的边表示结点发起的动作。
为了从CTI报告中提取出起源图,首先要在CTI报告中识别出与攻击行为有关的信息。因此,我们需要理解系统实体之间的联系和它们的行为。然后,我们必须克服CTI报告文本复杂性的问题。
B. Challenge
在上文中,已经对实现EXTRACTOR所面临的困难进行了介绍。在下文中,作者进行了更加详细的介绍:
-
Verbosity:在一整篇CTI报告中,描述在系统审计日志能观测到的攻击行为可能只占很小一部分。CTI攻击信息提取器需要将有用的,能在系统审计日志中观测到的信息从不必要的冗余信息中提取出来。
-
CTI Text Complexity:在网络空间安全领域中使用的语言具有很强的专业性,这使得传统的自然语言处理工具十分难以理解,这表现在:
-
标点符号:许多CTI报告不使用传统的语句分割符,NLP工具难以区分语句的边界。
-
专业名词:在网络空间安全领域中专业名词有其独特的含义,传统的NLP工具难以理解其中的特殊含义。
-
省略句:在CTI报告中的句子经常使用省略句,这种句子缺少主语或宾语,这使得传统NLP工具难以根据句子的成分对语句进行分析。
-
代词:忽略代词会使得代词出现在起源图中其所指示的实体所在的位置。
-
其它语言结构:不同的语言结构和语言使用技巧会使得传统NLP工具错误地对语句成分进行分类。
-
关系提取:在解决前两个问题后,需要确定"who to what to whome", "when and where",目前的方法会对除自然英语以外的句子照常破环,为此需要将语义分析引入这个领域。在EXTRACTOR中,作者利用SRL进行语义分析,这种技术可以理解句子中实体之间语义关系。
C. NLP background
在这一部分中,作者对文章中使用的NLP技术进行了介绍,包括:Part of Speech(POS),Dependency Parsing(DP)以及SRL。
0x03 APPROCH
EXTRACTOR包含以下四个部分:Normalization;Resolution;Summarization;Graph Generation。
A. Normalization
为了解决CTI文本复杂度的问题,EXTRACTOR先对CTI报告进行标准化,将报告中句子转换为更加简洁的形式。在Normalization模块中包含以下三步:
-
tokenization:针对CTI报告对句子进行拆分。将长句划分为短句。
-
Homogenization:在CTI报告中存在许多同义词,这些同义词指代的是同一个实体。在这一步中,将不同的同义词转化为特定的某个词。
-
Conversion:将CTI报告中的被动语态转化为主动语态,方便识别主语和宾语。
经过标准化后,报告中的长句子被转换为主动语态的短句子,且一个句子仅表示一个动作。
B. Resolution
对于自然语言处理来说,省略句、代词等用法会对语义造成影响。在EXTRACTOR中,作者对语句进行处理,消除句子中的歧义。在Resolution模块中包含以下三步:
-
主语省略句消除:这一步将丢失的主语补全。解决的办法是先找出CTI报告中所有的主语省略句,然后使用POS,DP以及dictionary系统找出候选词列表,并根据距离选择最可能的主语。
-
代词消除:代词消除是将代词转换为其指代的实体。解决的方法是使用NeuralCore,这个系统可以很好地完成任务,尤其是在进行标准化,主语省略句消除后。
-
同义词消除:在CTI报告中,为了避免句式重复,对于同一个意思通常有多种表述。这一步将表达同一个意思的表述转换为可能在CTI报告中出现的表述。文章中应用POS和DP结合CTI字典进行解决。
在完成Resolution后,文章中的句子有明确的主语,谓语以及宾语。
C. Text Summarization
Summarization部分将CTI报告中与攻击描述无关的部分去除,这一部分分为去除语句冗余和去除单词冗余两部分。
-
传统的去除语句冗余的方法是应用主题区分的方法将描述技术的部分与不是描述技术的部分区分开来。这种做法的问题在于技术描述部分并不都是在描述进攻行为。为了使分类模型更好地理解文本的语义,需要构建一个粒度更细的模型,这个模型需要可以理解文本的上下文信息。目前最好的方法是构建BERT模型,这种模型可以考虑每个词的上下文信息。
-
去除单词冗余包含两个部分,第一部分使用BiLSTM模型区分语句的语义,对句子中的单词的语义进行区分,第二部分去除不必要的单词。这种方法可能会使句子丢失重要的语义,解决的方法是移除一个句子成分仅当这个成分不包含能够被系统实体提取器(System Entity Extractor, SEE)生成的实体。
Text Summarization是EXTRACTOR的核心部分,负责降低文本的复杂度而保留与攻击行为相关的句子。
D. Graph Extraction
在前面的步骤生成简洁的,明确的,标准的语句后,可以使用这些语句生成起源图。尽管语句已经足够简洁,生成的起源图表意可能不够明确。为了区分主语和宾语的因果关系,可以使用SRL以及一些预先设定的规则区分因果关系以及信息流的方向。
-
Semantic Role Labeling
SRL可以将句子中每个组件与其语义标签联系起来。经过SRL处理后,句子中动作的发起者和承受者都能够被正确地标记出来。
-
Graph Buider(GB)
EXTRACTOR的最后一步是构建起源图。GB包含两步:第一步将文本中同一个SRL参数合并为同一个结点,然后利用SEE去除非系统实体;第二步,构建起源图。起源图包含node-edge-node三元组集合以及表的方向集合。
0x04 IMPLEMENTATION
这一部分介绍了EXTRACTOR的实现细节及使用的工具:
-
NLP toolkits:EXTRACTOR使用了最先进的NLP工具包,包括:spaCy POS,DP tagger,NLTK,以及Stanford。
-
Tokenization:Tokenization部分使用NLTK tokenizer。
-
Text Summarization:使用含有12层隐含层的BERT模型对语句进行识别。为了区分单词的语义,使用深层BiLSTM模型。这些模型都使用数据集重新进行训练。
-
SRL:使用已有模型并使用数据集重新进行训练。
-
数据集收集及字典构建:从公开的CTI报告收集数据集并利用领域专家的知识构建攻击字典。
0x05 EVALUATION
文章的第五部分介绍了EXTRACTOR的实验结果。为了评估EXTRACTOR的性能,文章设计了三个实验:第一个实验在公开的CTI报告中进行实验;第二个实验在DARPA数据集上进行实验;第三个实验使用大量的,非结构化的CTI报告进行实验。在实验中,主要评估EXTRACTOR能否有效地提取攻击信息,以及生成的起源图能否被攻击溯源系统使用。在前两个实验中,使用了攻击检测系统POIROT作为检测EXTRACTOR生成的起源图在攻击溯源中的有效性的攻击。在POIROT中,将CTI报告中提取的起源图和系统日志中提取的起源图作为输入,两个图的相似度作为输出。若相似度大于0.3,则认为系统遭受了CTI报告中描述的攻击。为了验证生成的起源图的正确性,作者将人工生成的起源图作为标签,将EXTRACTOR生成的起源图的边与其进行对比,并计算精确率和召回率。
A. Evaluation on Public CTI reports
B. Evaluation on the DARPA Transparent Computing Dataset
C. Large Scale Experiment
为了验证EXTRACTOR对不同写作风格写成的CTI报告的可扩展性,作者采用大量非结构化的CTI报告对EXTRACTOR进行验证。这些CTI报告与之前的数据集相比没有已有的起源图进行对比。针对这个困难,作者提出了一个解决办法:在CTI报告中,通常含有attack description section和solution section,这两个部分通常是对应的,由这两部分产生的起源图应该也具备某种相似性,如果两部分产生的起源图相似度较高,说明EXTRACTOR能够正确提取CTI报告中含有的信息。
0x06 Conclusion
本文设计了一个自动提取CTI报告中攻击信息的工具EXTRACTOR。EXTRACTOR在不同数据集上的验证实验表明:EXTRACTOR可以有效地提取CTI报告中的攻击信息,提取出的攻击信息以起源图的形式展示,且生成的起源图与人工生成的起源图能够进行匹配。除此之外,生成的起源图能够进一步地作为威胁检测系统的输入。
安全学术圈招募队友-ing, 有兴趣加入学术圈的请联系secdr#qq.com
本文始发于微信公众号(安全学术圈):EXTRACTOR:从威胁报告中提取攻击行为信息
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论