论文:EXTRACTOR:ExtractingAttackBehaviorfromThreatReports
KiavashSatvat,RigelGjomemo,
Officalcode:
GitHub-ksatvat/EXTRACTOR
Myimplementation:
GitHub-jackaduma/ThreatReportExtractor
0x01.简介以前的研究,利用各种NLP技术自动提取CTI报告中以IOCs和威胁行动形式存在的知识。虽然这些工作为从CTI报告中自动提取威胁元素(IOCs和威胁行动)提供了一个良好的起点,但它们没有提取IOCs和威胁行动之间的关系,以提供攻击行为的全面视图。这种攻击行为的提取在威胁猎取活动中至关重要。特别是,提取攻击行为和攻击的全貌需要提取所涉及的实体(如文件和套接字)、行动(如系统调用)、它们之间的因果关系和时间依赖,以及实体之间的信息流。提取攻击行为需要一种能够从自然文本中理解"谁对谁做了什么"、"何时"和"何处"的方法。这项任务提出了几个挑战。
挑战2:CTI文本的复杂性以往方法的一个重要假设是,CTI报告的文本结构(a)相对简单,或者(b)遵循特定的语法结构,或者(c)假设在描述概念时有一些模式,或者(d)在表述句子时考虑主语、动词和宾语的稳定语法关系。虽然这些假设并不妨碍这些工作的目标,即孤立地提取IOC和威胁行动,但事实上,大多数CTI报告包含更复杂的特定领域背景(见第二节),这使得攻击行为的提取和因果推理更具挑战性。CTI报告在语法和语义上的复杂性、技术术语的普遍性以及这些报告中缺乏适当的标点符号,很容易影响报告的解释和攻击行为的提取。
挑战3:关系提取。正如所建议的,可以使用字符串匹配和分类器等方法提取IOC和威胁行动。然而,在保持整个报告中攻击的简明因果关系、时间和信息流的同时,提取大的画面要复杂得多,而且具有挑战性。事实上,准确解释技术报告中的复杂逻辑是已知的NLP中的一个公开问题。
在本文中,我们介绍了EXTRACTOR,它解决了这些挑战。EXTRACTOR的主要目标是以图的形式从技术报告中简洁地提取攻击行为的全貌。EXTRACTOR克服了第一个挑战,提出了一种新的文本总结方法,将攻击行为文本与其他文本区分开来。为了克服第二个挑战并优化整个系统的性能,EXTRACTOR使用了一套技术,将高度复杂的文本转化为更容易消费的形式。为了解决第三个挑战,EXTRACTOR使用了一种新颖的方法--语义角色标记(SRL),它允许我们通过推断"谁对谁做了什么"、"何时"和"何地"的事实来提取攻击行为和句子的主体、客体和行动(这些步骤的细节在第二和第三部分讨论)。最后,在最后一步中,SRL的结果以图的形式呈现,描述了攻击的步骤、人工制品、相关实体之间的因果信息流。
除了提取完整的攻击画面这一主要目标外,EXTRACTOR还遵循另外两个目标。
目标1:可操作的情报。我们希望自动构建我们称之为可操作的情报。我们希望从CTI报告中只提取可用于检测的信息,或威胁猎取。这意味着我们从文本中提取的攻击行为必须可以在系统审计日志中观察到,并且可以有效地用于威胁检测。这是每个从CTI报告中提取攻击信息的方法的一个重要目标。事实上,我们设想将EXTRACTOR的部署作为威胁狩猎行动的第一步。
EXTRACTOR通过几个重要的贡献大大超越了目前的技术水平。特别是,EXTRACTOR:
1)大大扩展了可以处理的CTI报告的范围,
2)比以前的研究,包括对攻击的因果关系和时间顺序的提取,
3)实现了提取攻击的人工制品之间的语义关系的新颖应用,使其能够获得一个更好的攻击图片,
4)实现了几个文本简化和减少(或总结)的新颖应用,使其能够在不损失有用信息的情况下浓缩文本。
0x02.问题和背景问题描述
本文的主要目标是从通用CTI报告中提取代表攻击行为的可操作图。我们所说的可操作性是指将提取的知识作为威胁猎取的信号这一重要目标。我们把这些图称为出处图。证据图是内核审计日志的常见表示方法。它们将系统中的事件(系统调用)表示为实体(进程、文件、套接字)之间的边。最近,在大量的研究中,证明图被成功地用于威胁检测和取证分析。
(theleft)isafreeadaptationfromthenjRAT,,(theright),nodessignifysystem
挑战
啰嗦性:一般来说,CTI报告可以是冗长的。包含有用信息的句子可能嵌套在与攻击无关的文本中,例如,介绍性细节。例如,在42页的DustySky报告中,只有11句话描述了在审计日志中可以观察到的实际攻击行为。我们使用一种新颖的总结技术将有用的内容与无用的内容分开(见III-C)。CTI文本复杂度。网络安全领域使用的语言有一些特殊性,NLP工具/技术(为更多的通用领域开发)往往难以应对。这使得这些工具的使用具有挑战性。我们在下面列出其中的一些特殊性。
标点符号:许多CTI报告没有使用句尾字符',!,?'来划分句子的界限。这使得流行的NLP工具包,如Stanford、NLTK和spaCy,很难理解CTI报告中真正的句子边界,导致文本中的长句子,每个长句子都包含几个短句子。例如,从对微软威胁报告中心的4020份威胁报告的观察中,我们注意到作者倾向于在一个句子中打包许多行动,因此使平均句子长度等于52个单词(有些例子每句长达313个单词)。相比之下,NLP工具通常被训练和设计的平均英语文本,每句大约包含14.4个单词。
特定领域的词:表示网络安全领域对象的词可能与普通英语中使用的词有不同的含义和语境,而NLP工具是在普通英语中训练的。例如,IP地址、路径、进程名称、系统调用名称和许多其他术语经常被普通NLP工具误解。这一挑战必须由一个能带来领域洞察力的机制来应对,以便为这些术语分配含义。
省略号:这个术语指的是句子中的一个缺口。
1)有一个缺失的主语,或
2)有一个缺失的宾语。这种结构在自然英语写作中并不常见,但在CTI报告中却非常常见,因为攻击被描述为行动的序列。例如,在图1中的以下位置创建一个自己的副本代表了省略号主语的一个例子。
代词:代词在英语中是非常常用的。忽略代词可能会导致它们作为节点出现在出处图中,而不是指代实体的位置。其他语言学结构。结构的复杂性和各种语言技术的使用,如拟态、名词化和列表(III-B),会使普通的NLP工具感到困惑。总的效果是,许多主语、动词和宾语被错误地分类,无法解决。
关系提取:克服前面的挑战可以帮助确定攻击描述中重要的正确实体。下一步是确定"谁对谁做了什么"、"何时"和"何地",或者换句话说,我们需要发现进程和系统对象之间的关系以及它们与审计事件的映射。目前与该任务相关的方法,如统计依赖分析器,在来自与自然英语文本不同的领域的句子上的性能下降是众所周知的。为了解决这个问题,我们需要一种更全面的方法,将句子的语义考虑在内,而不是仅仅依靠句子的句法结构(即纯粹使用依赖分析)。正如我们将在下一节中详细说明的那样,为了解决这一挑战,我们使用了语义角色标签(SRL),这是一种能够检测句子中实体之间语义关系的处理模型。
0x03.简要介绍一下本文中所使用的NLP技术POS:POS标签为句子中的每个词分配一个句法角色(如名词、动词等)。然而,在某些情况下,POS模型可能无法正确标记单词。在图2中,形容词following和downloaded被错误地标记为动词(VBG/VBN)。
依赖性分析(DP):DP为句子中的单词分配语法联系和依赖关系。DP标签的例子包括nsubj代表句子的主语,obj代表句子的宾语,等等。然而,如果句子的复杂性增加,DP可能无法准确地检测标签和单词之间的关系。此外,DP标签员可能无法分配正确的标签,特别是如果他们没有接受过包含技术语言的语境训练。常见的错误包括将过去分词形式标记为形容词,将动词标记为名词,等等。在我们目前的问题中,利用DP的另一个缺点是,它们产生的标签只指语法关系,如主语、宾语等。因此,它们不能帮助完成需要理解不同句子成分之间语义的任务。这些关系可能包括时间性(某事何时发生)、方式(某事如何发生)等。事实上,为了实现我们的目标,需要更深入的理解。
语义角色标签(SRL):SRL本质上是确定"谁对谁做了什么"、"何时"和"何地"[67]。SRL是一种较新的NLP技术,它可以为句子中的短语和单词分配语义标签,每个标签都规定了每个短语或单词在句子中与句子的谓语或动词相关联的语义角色。在SRL中,分配给句子成分的标签被称为论据(用ARG表示)。
0x04.工作机制EXTRACTOR的运作方式是对文本进行不同轮次的转换,使其从高度复杂和潜在模糊的形式变成较简单的形式。这种简化的文本被进一步处理,以获得一个可以成功用于威胁检测的出处图。图3显示了EXTRACTOR的概况。EXTRACTOR有四个主要部分。
1)归一化,2)解析,3)总结,和4)图形生成。
归一化负责最初一轮的句子简化和转换为规范形式。解决这些句子中的歧义(这两个部分有助于解决CTI文本复杂性的挑战)。归纳删除与攻击行为没有严格关系的那部分文本,这些文本在日志中无法观察到。最后,图谱生成负责解决文本中事件的时间和因果顺序,并建立最终的出处图(该组件解决关系提取的挑战)。这些组件中的一些可以由一组包含与CTI语言有关的术语的字典来协助(依靠特定领域的概念字典是许多基于知识的NLP系统中的常见方法)。特别是,EXTRACTOR使用两个字典。首先,我们的系统调用同义词字典,它包含代表系统调用的动词(例如,写,叉)和它们相应的同义词。这些同义词代表了可以在CTI报告中使用的可能动词,并且很可能指的是系统调用。第二,我们的CTI名词词典包含了CTI报告中常用的名词短语,以及同一概念的不同文本表述。前者包含87个代表系统调用的动词,而后者则包含CTI报告中超过1112个常见的名词短语。
A.归一化
为了解决CTI文本复杂性的挑战,并使EXTRACTOR使用的技术的准确性最大化,我们首先必须有一些规范的句子形式。我们通过规范化来实现这一点,规范化负责将长而复杂的句子分解为以规范形式出现的较短的句子,这更容易处理。直观地说,我们希望每个句子都能表达一个行动,这样行动的主语和宾语以及行动本身就更容易识别。规范化由标记化、同质化和转换组成。这些步骤分别进行句子边界的检测、词的同质化和被动到主动动词的转换。接下来我们将分别描述这些步骤。
符号化:正确地定义句子的边界是非常重要的,因为EXTRACTOR使用的几种技术都是在句子层面上操作的。然而,现有的句子标记器,在发现句子边界时,通常只考虑经典的标点符号(',!,?'),在CTI报告上表现不佳。事实上,在这个领域中,包含多个动作的长句子和非标准的句子分隔符的情况很普遍。例如,在微软的威胁报告中,平均句子长度几乎是普通英语句子的四倍。
为了解决这个问题,我们设计了一个专门用于CTI报告的强化标记器。特别是,除了传统的句子定界符外,我们的标记器还使用新的行、项目符号、列举的数字、以及标题和页眉,作为句子定界符,将长序列划分为较短的序列集。在将长句分割成较短的词语序列后,如果每个短序列满足以下情况之一,则被"提升"为一个句子;1)该序列以大写的主语开始,它包含构成一个完整句子所需的所有成分(主语、谓语、宾语),并且前面和后面的序列也构成完整的句子;2)该句子以系统调用字典中的动词开始,它包含构成一个完整句子所需的所有成分(除去主语),并且前面和后面的序列也构成完整句子。后一种情况代表了(CTI报告中)EllipsisSubject的常见现象(见第二节B)。如果上述两种情况都不满足,我们就认为该句子是一个无法突破的完整句子。
标记器的结果是一组较短的句子,更有可能描述一个单一的行动。
同质化:CTI报告经常包含一些结构和同义词,这些结构和同义词会带来歧义并影响最终结果的质量。例如,C2、CC和命令与控制是同一实体的不同表述,而像存储、保存这样的动词可能表示一个与写系统调用相对应的动作。同质化是指同一概念的多种文本表述被同一文本表述所取代的过程。
我们使用两个专门建立的字典对名词短语和动词进行同源化处理,将CTI报告中出现的不同行话和同义词映射到审计日志中可以观察到的实体和行动。例如,C2、CC、命令和控制中的每一个都被映射到IP:.*,这是一个代表IP地址的通配符。以同样的方式,我们将系统调用字典中与系统调用同义的动词翻译成该系统调用动词。
同质化大大降低了文本的异质性,并支持我们提供可操作情报的目标。我们决定,被选来代表一个同义词组的所有其他词的单个词,是一个极有可能作为一个系统实体,在日志或系统调用中可以观察到的。
转换:作为文本规范化的最后一步,EXTRACTOR将被动语态转换为主动语态。这种转换有助于发现系统主体(过程)和系统客体,并使因果关系的推断更加准确,这一点在III-D小节中讨论。
为了进行这种转换,我们首先使用POS和DP标签检测被动句子。这类句子主要由DP树中的特定和已知模式来代表。例如,考虑下载的文件被恶意软件删除这一句子。在DP树中,is被标记为辅助(和被动)动词,delete被标记为动词和DP树的头部,下载的文件是一个名词短语,是被动语态的主语(nsubjpass),bymalware是宾语(obj)。请注意,在某些情况下,代理人并没有出现在被动句中,而是被暗示。
这一步的最终结果是,长句被转化为主动形式的短句,可能每句表达一个动作。
B.决议在规范化之后,解析将指向同一实体的隐式引用调和为实际的引用。这些隐性引用必须被明确化,原因有二。首先,隐性引用降低了后续步骤的准确性,并使最终的出处图变得模糊和不精确。其次,审计日志只包含明确命名的实体,每一种威胁猎取方法都无法将系统进程与代词和其他隐性参考匹配。
为了解决这个问题,我们开发了一个EllipsisSubjectResolver(ESR)模块。该模块利用POS和DP解析以及系统调用的字典。解决这个问题的第一步是检测缺失主语的句子。这一步使用POS和DP以及系统调用字典,正如在讨论标记器时所描述的那样(第III-A小节)。一旦检测到这种句子,ESR就会在当前句子之前的句子中出现的实体中建立一个候选主体列表。接下来,该模块根据候选者与缺失主语的句子的距离(以句子数计算),从列表中挑选出最可能的候选者。特别是,距离越近的候选人被选中的概率就越高。例如,在图4中,第5-9行的句子中缺少主语。ESR模块检测了前面的句子中的主语和其他对象,它选择了冒号前出现的代词it作为主语。
代词解析(PR):代词解析是指代词被映射和替换到它们所指的前述实体的过程。在没有PR的情况下处理文档(构建出处图)会导致一个实体出现多个节点(即代词)。
为了解决代词问题,我们采用了一个流行的核心词解析模型--NeuralCoref。我们注意到,这个模型在解决CTI报告领域的代词方面效果最好,特别是在前面的ESR和Tokenization步骤之后。
实体解析(ER):实体解析是指在同一句子中提到另一个实体的名词或动词短语被该实体所取代或作为多余的内容被删除的过程。
拟声词:隐喻是指用一个词或代词来指代句子中以前使用过的另一个词或短语,以避免重复。
在解析步骤完成后,文本由具有明确主语、宾语和动词的句子组成。ER模块也在一定程度上减少了文本的数量。然而,主要的文本缩减步骤是在"解析"之后执行的,接下来将介绍。
C.文本归纳
为了减少言辞,获得可直接用于检测攻击的攻击行为的简明描述,必须删除大量的多余文字。理想情况下,只有那些描述可能在审计日志中观察到的行为的句子应该被保留下来。要做到这一点,EXTRACTOR必须了解哪些句子严格描述了攻击行为,哪些句子没有。以前的相关工作使用主题分类来识别域外语境(例如,广告文本与技术文本)中与主题相关的语境。虽然这些方法成功地将不相关的内容(如广告)与技术内容分开,但它们还不够强大,无法将后者分成描述可观察到的攻击行为的行为内容和其他"技术"内容,后者作为介绍或背景描述。我们把这个问题称为句子的冗长性。
另一个需要解决的问题是我们所称的词的冗长性。特别是,在每个句子里面,通常会出现一些词语结构,如副词和形容词短语,这些词语对行为描述没有帮助,可以安全地删除(例如,然而,可以,还有在图中)。
为了处理这些问题,我们设计了一个两步法。这个方法如图5所示,由一个处理句子粗制滥造的BERT分类器和一个处理单词粗制滥造的BiLSTM网络组成。
句子的动词性:为了区分描述实际威胁行为的句子和不代表威胁行为的句子,我们需要超越主题分类,对文本有更深入的理解。直观地说,与其他句子相比,有成效的句子在主语和宾语之间表达了更多的"直接"联系。因此,为了对这些联系进行分类,文本的语言学模型必须建立一个关于单词上下文的细粒度表示。
目前,建立这种细粒度表示法的最佳模型之一是BERT(BidirectionalEncoderRepresentationsfromTransformer)。与Word2Vec和GloVe的单词表征不同,BERT建立了单词的上下文表征,同时考虑到了单词之前的文本和单词之后的文本。换句话说,BERT考虑了每个单词的周围环境。此外,BERT还学习了子词的嵌入,即从词干中得出的一个词的子成分。这使得该模型能够更有效地处理词汇外的单词。一般来说,这种能力对技术性网络安全文件是有益的,因为这些文件可能包含在BERT的训练集中没有出现的复杂词汇。因此,BERT可以比其他方法更好地将句子分类为生产性和非生产性。
词的Verbosity。文本总结器的第二步是从它从BERT收到的生产性句子中删除不必要的词。它由两个阶段组成,一个是得出句子成分语义作用的BiLSTM网络,另一个是去词阶段。我们发现BiLSTM最适合这一目的,因为它可以处理技术文件中出现的长距离依赖关系。
在一个句子被BiLSTM网络处理后,其成分被标记为Agent、Patient和Action,以及其他类型的参数。在下一个阶段,不必要的句子成分被删除。从理论上讲,这只能通过保留句子中的Agent、Action和Patient成分来实现。然而,在某些情况下,这种方法会删除重要的信息。
文本归纳是EXTRACTOR的核心组成部分之一。它负责大大减少文本的复杂性和数量,同时保留最重要的描述可观察行为的句子。
D.图形提取
经过前面的步骤,得到的文本是这样一种形式:系统主体(如进程)、对象(如文件、套接字)和动作(如执行)是明确的、有序的,而且大部分多余的文本被消除了。在这最后一步,EXTRACTOR解决了关系提取的难题,从简化的文本中提取出一个出处图。
尽管这一步的文本非常简单,但将节点分配给主语和宾语、将边分配给动词的天真图式提取会产生含糊不清的大图。这是因为在同一个句子中可能表达了几个角色和主客体之间的关系。为了处理这个问题,我们使用语义角色标签(SRL)和一套规则来提取因果关系和信息流的方向。接下来将介绍这些。
1)语义角色标记(SRL):如第二节所述,SRL是一种发现句子中的语义角色的技术。为了对SRL的力量有一个直观的概述,请考虑图6中的两个例子,一个是主动形式的,一个是被动形式的。SRL能够从每个句子中提取两个角色(用RawSRL表示),并理解哪个名词是病人(也就是动作落在上面的人,用ARG1表示),哪个是代理人(携带动作的名词,用ARG0表示)。在我们的讨论中,一个SRL角色可以被认为是一个动作。因此,SRL能够正确地将句子中的每个成分与语义标签联系起来。
EXTRACTOR考虑所有与SRL检测到的动词相关的可能参数,作为潜在的攻击主体或对象,然后修剪掉那些不是系统实体的参数。在修剪过程中,我们使用SEE模块(见第III-D2节),它可以检测到可能的系统实体名称(例如,文件或进程名称、IP和注册表键)。
2)图形生成器(GB)。我们方法的最后一步是根据SRL的输出构建图。图形生成器分两步操作。首先,它将具有相同文本的SRL论据合并到同一个节点中,并使用SEE剔除不属于系统实体的词。接下来,GB使用以下方法构建图。1)节点-边缘-节点三联体。对于每个句子,如果它至少有三个角色,包括一个动词角色(作为连接器的系统调用表示)和两个节点,GB就会生成边和节点对。2)边缘方向。EXTRACTOR通过使用与系统调用字典相关的边缘方向的小地图来确定边缘的方向。这在本节后面的因果推理段落中有更详细的讨论。
系统实体提取器(SEE)。我们开发了SEE模块,以从SRL生成的角色中提取代表系统实体的简明节点,并修剪掉不能构成可能的系统实体的徒劳的演讲部分。SEE使用超过32种不同的正则表达式和一个应用程序名称或知名进程的数据库来检测可能的系统实体名称(例如,文件或进程名称、IP、注册表键)。特别是,SEE模块分析每个名词短语,并剔除整个短语或与正则表达式或应用程序名称不匹配的部分。
因果推断。这一步决定了图中边的正确方向,以代表节点之间的因果关系和信息流。为了推断这个方向,它使用系统调用与系统流动方向的映射。该映射包含与每个系统调用相关联的条目,即主体和客体之间的边的方向(例如,对于发送系统调用,流向是从主体到客体,而对于recv,流向是从客体到主体)。此外,这一步解决了可能出现在CTI报告中的否定动词。
最后一步的输出是一个出处图,它清楚地显示了参与攻击和受攻击影响的实体作为节点,以及连接它们的系统调用作为边。
0x05.结论由于处理自然语言复杂性的一般问题,在提取中损失一些精度是不可避免的。因此,这些不相干的节点和边(或缺失的节点和边)在EXTRACTOR生成的图中对于威胁猎取问题的"大局"有什么意义?为了回答这个问题,我们注意到我们选择了一种使用近似匹配的威胁猎取方法,这有利于我们成功识别威胁,尽管有不相干的信息。事实上,我们可以继续论证,这种近似技术是一般威胁猎取问题所需要的,因为在基于活动的出处图中,由于内在因素(如影响威胁二进制执行的随机性或时间等非确定性因素),威胁报告中描述的所有活动很可能不会在主机中表现出来。因此,如第五节所示,威胁猎取所固有的近似能够在NLP固有的小的精度损失下工作。
EXTRACTOR的性能在行动描述跨越几个句子或一个段落的情况下可能会减弱,在这种情况下,根据威胁报告的撰写方式,主语或宾语的解析可能会面临挑战。关于如果以备用报告的形式提供额外的信息来解决这些挑战,EXTRACTOR可以处理这个问题。另一种解决方式是在EXTRACTOR中促进机制,积极与人类操作者合作,解决这些实体。
EXTRACTOR的各种模块使用字典来提高整体性能。虽然我们在选择适当的词语时尽量做到完整,但可能会有一些报道,人们使用的词语不在词典中。因此,可能还有进一步改进词典的空间。使用命名实体识别(NER)系统也可以加强将名词短语翻译成统一的系统表示的方法。此外,未来的工作可以扩展EXTRACTOR,从非结构化的漏洞报告中推断出图形。这些图可以进一步用于检测应用程序中可能存在的漏洞。





