来源:https://medium.com/mitre-attack/automating-mapping-to-attack-tram-1bb1b44bda76
https://www.youtube.com/watch?v=bGN3jak_6bE
https://www.first.org/resources/papers/cti-may2020/FIRST_CTI_2020_rcATT_Siemens.pdf
ATT&CK的项目:
https://zhuanlan.zhihu.com/p/477024793
TRAM是一个基于网络的工具,可以自动提取对手的行为,以便将其映射到ATT&CK。
作者:Sarah Yoder和Jackie Lasky
令人兴奋的是,越来越多的网络威胁情报报告公布了包括ATT&CK映射,我们希望让分析人员更容易、更快地创建这些映射。我们知道创建ATT&CK映射的过程是具有挑战性的,因为我们在ATT&CK中添加到Group或Software页面的每个新报告都要经过类似的过程。分析师需要时间来熟悉所有266种技术,并理解情报如何映射到这些技术上的微妙之处。对于我们自己的映射,每天都会有新的报告发布,这意味着我们有一堆没完没了的报告要添加。为了减轻我们团队中未来分析师的工作量,并帮助社区的其他人,我们决定开始开发一种方法来帮助自动化这个过程。
我们的最终工具,威胁报告ATT&CK映射器(TRAM)旨在提供分析报告和提取ATT&CK技术的精简方法。我们希望自动映射到ATT&CK可以减少分析疲劳,增加ATT&CK的覆盖范围,并提高威胁情报映射的一致性和准确性。我们很高兴现在与ATT&CK社区分享TRAM的公测版本。
一、我们是怎么走到这一步的?
当我们开始思考寻找报告技术的方法时,我们从最简单的方法开始:模糊字符串搜索 fuzzy string searches。我们创建了一个命令行工具,它通过技术名称查找技术。我们很快就了解到,这种方法要么非常有效,要么根本不起作用。例如,“Mshta”保真度很高,而“DLL搜索顺序劫持”DLL Search Order Hijacking保真度很低。在这一点上,我们知道我们需要一个更好的方法来寻找技术,所以我们决定对我们的问题应用一个更高级的自然语言处理(NLP)过程。
以下是我们的NLP流程:
首先,我们需要有数据来训练,本质上是我们想要模型的每个项目的正确答案的答案键。在我们的案例中,我们希望每种技术都有一个模型,因此我们对每种技术使用来自ATT&CK站点的Procedure Examples。
接下来,我们必须将数据转换为待处理的“干净”状态。这意味着将我们的文本转换为我们所能做到的最简单的版本,以便计算机更好地理解。例如,masquerade, masquerading, masqueraded,都有相同的词根含义,所以我们想基于这个词建立模型,而不是基于这个词使用的时态。同样,我们必须对文本进行标记化。这意味着将文本分割成更小的单位,通常是单词,称为标记。这些标记允许计算机理解数据中的模式,比如计算一个句子中的单词数量或两个单词相邻出现的频率,等等。
现在我们可以开始为每种技术构建特定的模型或模式。我们目前使用Python的Sci-kit库来完成这一任务。我们使用一种叫做逻辑回归的方法,这种方法可以很好地进行预测,并预测在给定的句子中可能用到的技术。此外,我们的方法被认为是监督学习,因为我们知道我们的输出应该是什么(即,一个特定的技术)。
在我们可以在新数据上使用模型之前,我们需要在我们知道正确答案的数据上测试它们。为了做到这一点,我们在已经映射到ATT&CK的报告上进行了测试,看看我们的模型是否表现得足够好,能够发挥作用。
一旦我们确认模型可以找到我们期望的数据,我们现在就可以在计算机从未见过的数据上使用我们的模型(例如,从网站上获得的最新报告)。
幸运的是,我们使用Python的pickle文件将这些模型保存为“缓存”格式。这意味着我们不必每次使用工具时都要经历整个过程!如果您想了解更多关于我们的NLP过程,请查看我们10月份在TRAM上的BSides DC演示。
二、如何使用有TRAM?
TRAM是一个本地运行的网络工具,允许用户提交网页URL(抱歉,还没有pdf文件)。如果TRAM能够检索和解析该页面,那么报告分析可能需要近一分钟的时间,因为在底层发生了很多事情。
注意:如果“Needs Review”卡立即弹出,这通常意味着网站不喜欢我们试图抓取它,或网站上的某些内容无法被解析。我们正在调查这个问题,希望很快有一个修复。
一旦您在“需求回顾”专栏中看到一张卡片,就该开始分析了!
当TRAM的逻辑回归模型预测它已经找到了一种技术时,它会突出显示相关的文本,并在右边的方框中显示预测的技术。由于我们当前的数据集非常有限,我们的模型不是100%准确的,因此该工具需要分析人员审查并“接受”或“拒绝”技术预测。在后台,当点击“Accept”按钮时,该句子和技术将转到数据库中的“True Positives”表;当单击“拒绝”时,句子会转到“假阳性”表。然后,我们可以使用这些表来重建模型。随着更多的数据被输入到工具中,分析人员审查,模型重建,我们希望这些预测变得更准确。
无论句子是否高亮显示,如果需要手动添加某项技术,用户都可以点击句子,然后在出现的框中点击灰色的“添加缺失的技术”按钮。开始输入您想要映射的ATT&CK技术,并在它出现时单击它。如果句子以前没有高亮显示,现在将会出现高亮显示。此外,就像接受和拒绝的技术一样,当添加一个缺失的技术时,它将被放入“True Negatives”表,这在重建模型时也会被考虑在内。
一旦分析师审阅了整个报告,TRAMS的结果现在可以通过点击页面顶部中心的“导出PDF”按钮导出为PDF。导出将创建一个PDF,其中包含报告的原始文本版本,以及一个使用ATT&CK技术的表及其相应的句子。部分表的示例如下所示。
三、TRAM的下一步计划是什么?
我们很高兴分享今天的工具,开始帮助那些映射到ATT&CK的人。然而,我们知道还有很多事情可以做。目前,TRAM是一个不断改进和发展的功能原型。我们有几个功能,我们想在未来几个月实现。随着这些特性的添加,我们将继续宣布任何新的更改,并保持我们的公共存储库是最新的。
我们接下来的一些步骤包括:
能够摄取额外的文件类型(例如,.doc, .pdf, .txt)。
额外的输出格式(例如,CSV, JSON, STIX)
能够同时支持多个用户
仪表板和分析(例如,从报告中看到的前10种技术,随着时间的推移技术频率等)
四、我如何使用tram?
可以在https://github.com/mitre-attack/tram上找到TRAM的完整源代码。README将帮助您了解如何运行该工具。
请随意下载并开始测试。因为这是一个测试版,我们知道它有bug和问题。请帮助我们使用GitHub问题跟踪器来跟踪这些问题。