TTPDrill: Automatic and Accurate Extraction of Threat Actions from Unstructured Text of CTI Sources 阅读笔记
Purpose
本文的目标是开发自动的、上下文感知的网络威胁情报分析,以准确地从常用的CTI资源中学习攻击模式(TTPs),以便及时实施网络防御行动。
作者提出了一种新的威胁行为本体,能够理解恶意行为的具体情况和上下文。开发了一种文本挖掘方法,该方法结合了NLP和IR(信息检索),基于语义关系抽取威胁行为。通过将每个威胁行为映射到适当的技术、策略、杀伤链阶段,并将其转换为威胁共享标准(如STIX2.1),作者的CTI分析可以构建一个完整的攻击模式。
Overview
图3展示了TTPDrill的主要组件。首先爬取CTI报告,清理文本内容,丢弃掉不相关的文章。接着利用词性标注,抽取候选威胁行为(主体,动词,客体)。使用BM25 TF-IDF方法对其加权和过滤,以在威胁本体中寻找最佳匹配。表1展示了候选威胁行为的抽取示例,表2展示了部分本体的示例,每行表示一个威胁行为。构建正则表达式捕获IoC,并替换为通用单词。
Threat Action Ontology
基于ATT&CK和CAPEC创建和维护本体,采用自顶向下的方法。图5显示了本体中的高级概念(KillChain Phase)和低级概念(Action),表4列出了本体中的类。
Threat Action Extraction and Analysis
Scraping and Preprocessing
从网站上爬取CTI报告,对文本进行预处理,删除HTML标记、图像、动画等元素。构造以下特征,训练SVM分类器。
(1)单词数量:包含TTPs的文章几乎总是很长,它们详细描述了关于威胁、行为、目标等的信息,而关于安全工具的广告或新闻等文章通常短的多。
(2)安全行为单词密度:使用Stanford Dependency Parser标注文本中的动词,计算动词总数与文章总单词数的比例,
(3)安全目标单词密度:包含TTPs的文章描述威胁,因此包含更多安全名词(注册表、漏洞等),抽取所有的安全相关的名词计算所占比例。
作者使用30篇相关文章和60篇广告训练分类模型。
使用正则表达式匹配常见对象,使用通用名称替换所匹配到的字符串。例如,“create fil 1.exe”这句话中的字符串“fil 1.exe”将被正则表达式捕获,并替换为“executable file”,因此整个句子将变成“create executable file”。
Threat Action Identification
一个威胁行为包括(主体S,动作V,客体O)即SVO结构,其中S是恶意软件名,V是行为,O是攻击目标。TTPDrill利用Stanford Dependency Parser识别并抽取这些结构,形成候选项。
图5展示了TTPDrill所使用的依存关系类型。
图6展示了一个实例。
Threat Action Mapping and Filtering
采用基于增强BM25加权函数的TF-IDF方法度量候选项与本体中已知威胁行为之间的相似性,并进行排序。该函数提供的分数称为IR-matching分数。在计算相似度得分时,每个本体条目通过连接所有类(动作、目标、意图等)表示为一个“词包”文档,计算该文档与候选项之间的相似度。
图7展示了一个将候选项映射到本体的实例。在第一张图中,本体条目被表示为一个文档;第二张图中,将候选项(也是词包)视为一个查询;第三张图中,计算候选项和条目的相似度,利用词典WordNet, Thesaurus, Watson Synonym 将同义词(如logs和records)考虑在内。
大多数候选项都映射到本体中已知的威胁行为,称这些行为primitive行为。但有时威胁行为涉及多个组件,每个组件对应一个候选项,将这些行为称为composite行为。对于每个候选动作,计算其与每个本体条目的相似度得分。然后将多个候选行为任意排列为组合行为,并计算其与每个本体条目的相似度,以评估相似度得分的增加情况。实验证明,组合的窗口大小m=3时较为有效。
表3展示了过滤文本,映射到本体后的结果,其中,前两个候选行为被融合进一个组合行为,映射到一个技术DLL Injection。
Constructing TTP Killchains
Generating TTP Constructs
利用STIX可以自动创建全面的结构化CTI。
攻击模式对象实例如下:
{
"type": "attack-pattern",
"id": "attack-pattern--0c7b5b88-8ff7-4a4d-aa9d-feb398cd0061",
"created": "2017-06-8T08:17:27.000Z",
"modified": "2017-06-8T08:17:27.000Z",
"name": "Input Capture",
"description": "Adversary logs keystrokes to obtain credentials",
"kill_chain_phases": "Maintain",
"external_references":
[{
"source_name": "ATT&CK",
"id": "T1056"
}]
}
恶意软件对象实例如下:
{
"type": "malware",
"id": "malware--0c7b5b88-8ff7-4a4d-aa9d-feb398cd0061",
"created": "2017-06-8T08:17:27.000Z",
"modified": "2017-06-8T08:17:27.000Z",
"name": "Dimnie",
"description": "Threat performs DLL injection, system information discovery,
screen capture, input capture, data exfiltration over…",
"labels": ["Trojan"]
"kill_chain_phases": ["Control","Execute","Maintain"]
}
Evaluation
Determining TTPDrill Similarity Score Thresholds
Cut Off Threshold
对任意候选行为 x x x和本体中的行为 t t t,计算 b m 25 ( x , t ) bm25(x,t) bm25(x,t),若 b m 25 ( x , t ) > S t h bm25(x,t) > S_{th} bm25(x,t)>Sth,则认为 t t t是 x x x的一个可能匹配。如图12所示,本实验中选取 S t h = 6 S_{th}=6 Sth=6作为阈值,获得最高的F1分数。
Composite Actions Thresold
C t h ∈ ( 0 , 1 ) C_{th} \in (0,1) Cth∈(0,1),对于一组候选项 c 1 , . . . , c n c1,...,cn c1,...,cn,若满足对每一个 c i c_i ci有
b m 25 ( { c 1 , . . . , c n } , t ) > ( 1 + C t h ) ∗ b m 25 ( c i , t ) bm25(\{c1,...,cn\},t)>(1+C_{th})*bm25(ci,t) bm25({c1,...,cn},t)>(1+Cth)∗bm25(ci,t)
则将其映射到 t t t。如图13所示, C t h = 0.8 C_{th}=0.8 Cth=0.8。
Conclusion
本文提出了一个TTPDrill工具,实现从非结构化的CTI报告中自动抽取威胁行为,构建STIX格式的TTP。将威胁行为映射到本体的攻击模式和技术。
未来工作中,作者将使用不同的NLP解析器,如Google NLP API等抽取威胁行为,比较不同解析器的表现。还将拓展CTI报告数据集,包含不同的威胁来源和不同的语言。最后,作者还想构建TTP图进一步分析并预测新的TTPs。