attack-navigator:ATT&CK矩阵导航与标注工具,支持自定义图层与多版本ATT&CK域

Web app that provides basic navigation and annotation of ATT&CK matrices

分支13Tags49
文件最后提交记录最后更新时间
7 个月前
8 个月前
2 个月前
2 年前
6 年前
4 年前
4 个月前
4 年前
8 个月前
8 个月前
1 年前
1 年前
8 个月前
2 年前

ATT&CK® Navigator

ATT&CK Navigator 旨在提供对 ATT&CK 矩阵的基本导航和注释功能,这正是人们目前已在 Excel 等工具中开展的工作。我们将其设计为简单且通用的工具——您可以使用 Navigator 来可视化防御覆盖范围、红队/蓝队计划、检测到的技术的频率或任何您想做的事情。Navigator 并不对此做限制,它仅允许您对矩阵中的单元格进行操作(例如颜色编码、添加注释、分配数值等)。我们认为,提供一个人人可用的简单工具来可视化矩阵,将有助于简化 ATT&CK 的使用。

Navigator 的主要功能是允许用户定义层(layers)——即 ATT&CK 知识库的自定义视图——例如,仅显示特定平台的技术,或突出显示特定对手已知使用的技术。层可以在 Navigator 内交互式创建,也可以通过编程方式生成,然后通过 Navigator 进行可视化。

使用方法

ATT&CK Navigator 通过 GitHub Pages 提供在线托管服务。您可以在此处找到当前版本 Navigator 的在线实例。您可以在 USAGE 文档(其内容与应用内帮助页面相同)中了解有关应用程序本身使用方法的更多信息。

ATT&CK Navigator 4.0 及更高版本在单个应用程序实例中支持所有 ATT&CK 领域,而无需为每个领域使用不同的实例。此外,应用程序中还可以加载较旧版本的 ATT&CK。ATT&CK Navigator 支持 ATT&CK 4.0 及更高版本。旧版本由于数据模型过于陈旧,无法在该应用程序中使用。

对于希望获得更经典体验的用户,Navigator 应用程序的早期版本也通过 GitHub Pages 托管:

ATT&CK 版本 Navigator 版本 领域
ATT&CK v7.2 Navigator v3.1 企业 移动
ATT&CK v6.3 Navigator v2.3.2 企业 移动

有关如何在本地设置 ATT&CK Navigator 的信息,请参见安装和运行

重要说明: 访问我们托管在 GitHub Pages 上的 Navigator 实例时上传的层文件不会存储在服务器端,因为 Navigator 是一个纯客户端应用程序。但是,如果您的层文件包含任何敏感内容,我们仍然建议您安装并运行自己的 ATT&CK Navigator 实例。

如果您遇到任何错误或其他问题,请使用我们的 GitHub Issue Tracker 告知我们。如果您对 Navigator 进行了很棒的扩展并希望回馈社区,我们也鼓励您提交拉取请求!

有关为 ATT&CK Navigator 做出贡献的更多信息,请参阅 CONTRIBUTING.md

需求

支持的浏览器

  • Chrome
  • Firefox
  • Internet Explorer 11[1]
  • Edge
  • Opera
  • Safari[2]

[1] Internet Explorer 上的 SVG 导出功能存在一个已知问题。由于该浏览器中 SVGElements 缺少某项功能,导出的 SVG 中的文本将无法正确垂直居中。我们建议切换到更现代的浏览器以获得最佳效果。

[2] ATT&CK Navigator 仅支持 Safari 14 及更高版本,因为旧版本浏览器在选择图层选项卡时可能会出现无法修复的冻结问题。使用不受支持的浏览器版本的用户在打开应用程序时会收到相关警告。

安装和运行

初始设置

  1. 导航至 nav-app 目录:
cd nav-app/
  1. 安装依赖项:
npm install

开发

本地

启动 Angular 开发服务器:

ng serve

在浏览器中打开 http://localhost:4200

使用 Docker

构建并运行开发 Docker 容器:

docker build -f Dockerfile.dev -t nav-app-dev .
docker run -p 4200:4200 nav-app-dev

在浏览器中打开 http://localhost:4200

部署

为部署构建

编译应用程序:

ng build --configuration production

输出文件将位于 nav-app/dist/browser/ 目录中。

使用 Docker 提供服务

构建并运行 Docker 容器:

docker build -t nav-app-prod .
docker run -p 8080:80 nav-app-prod

在浏览器中打开 http://localhost:8080

离线运行

使用上述任一选项安装或构建 Navigator。然后,将其配置为从本地文件加载内容(请参阅从本地文件加载内容)。最新的 MITRE ATT&CK 数据文件可在此处找到:

文档

在浏览器中查看 Navigator 时,点击右上角的 ? 图标以查看应用内文档。

图层文件夹

layers 文件夹包含图层格式的规范、示例图层以及一个演示程序化图层生成的脚本。随着新脚本的实现,我们将继续向此存储库添加内容。此外,如果您想在此处添加新功能,欢迎创建拉取请求!

有关图层如何使用和开发的更多信息,可以在运行应用程序时点击 ? 查看 ATT&CK Navigator 文档,也可以在 layers 文件夹中的 README 中找到。

添加自定义上下文菜单选项

要使用 Navigator 中的数据为 ATT&CK® Navigator 上下文菜单创建自定义选项,必须将对象添加到 nav-app/src/assets/config.json 中标记为 custom_context_menu_options 的数组。每个对象必须具有 label 属性(即上下文菜单中显示的文本)和 url 属性(即用户将被导航到的位置)。

要在 URL 中利用右键单击技术的数据,可以在字符串中添加用双花括号括起来的参数。例如:如果右键单击的技术的 attackID 为 T1098,则在自定义选项中使用 http://www.someurl.com/{{technique_attackID}}} 作为 URL 将导航到 http://www.someurl.com/T1098

将解析以下数据替换:

  • {{technique_attackID}} 将替换为技术的 ATT&CK ID,例如 T1234
  • {{technique_stixID}} 将替换为技术的 STIX ID,例如 attack-pattern--12345678-1234-1234-1234-123456789123
  • {{technique_name}} 将替换为小写的技术名称,并将空格替换为连字符,例如 example-technique-name
  • {{tactic_attackID}} 将替换为战术的 ATT&CK ID,例如 TA1234
  • {{tactic_stixID}} 将替换为战术的 STIX ID,例如 x-mitre-tactic--12345678-1234-1234-1234-123456789123
  • {{tactic_name}} 将替换为小写的战术名称,并将空格替换为连字符,例如 example-tactic。这也等同于战术的 x_mitre_shortname 属性。

可以选择为自定义选项添加 subtechnique_url 字段。当该选项用于子技术时,将解析此字段,而不是用于技术的常规 URL。如果未使用 subtechnique_url,则上述定义的 technique_ 替换将引用子技术对象本身。

将为子技术解析以下替换:

  • {{parent_technique_attackID}} 将替换为子技术父技术的 ATT&CK ID,例如 T1234
  • {{parent_technique_stixID}} 将替换为子技术父技术的 STIX ID,例如 attack-pattern--12345678-1234-1234-1234-123456789123
  • {{parent_technique_name}} 将替换为小写的子技术父技术名称,并将空格替换为连字符,例如 example-technique-name
  • {{subtechnique_attackID}} 将替换为子技术的 ATT&CK ID,例如 T1234.001
  • {{subtechnique_attackID_suffix}} 将替换为子技术 ATT&CK ID 中分隔点后的部分,例如 001
  • {{subtechnique_stixID}} 将替换为子技术的 STIX ID,例如 attack-pattern--98765432-9876-9876-9876-987654321987
  • {{subtechnique_name}} 将替换为小写的子技术名称,并将空格替换为连字符,例如 example-subtechnique-name
  • {{tactic_attackID}} 将替换为战术的 ATT&CK ID,例如 TA1234
  • {{tactic_stixID}} 将替换为战术的 STIX ID,例如 x-mitre-tactic--12345678-1234-1234-1234-123456789123
  • {{tactic_name}} 将替换为小写的战术名称,并将空格替换为连字符,例如 example-tactic。这也等同于战术的 x_mitre_shortname 属性。

自定义上下文菜单对象示例:

{
    "label": "view technique on ATT&CK website",
    "url": "https://attack.mitre.org/techniques/{{technique_attackID}}",
    "subtechnique_url": "https://attack.mitre.org/techniques/{{parent_technique_attackID}}/{{subtechnique_attackID_suffix}}"
}
{
    "label": "view tactic on ATT&CK website",
    "url": "https://attack.mitre.org/tactics/{{tactic_attackID}}"
}

内容加载方法

从集合索引加载内容

默认情况下,Navigator 会从 ATT&CK STIX 数据仓库 中托管的 ATT&CK 集合索引加载内容。有关集合索引的更多信息,请参见此处

  1. 修改位于 src/assets 目录下的 config.json 文件。
  2. collection_index_url 属性设置为您的集合索引的 URL(例如,"collection_index_url": "https://raw.githubusercontent.com/mitre-attack/attack-stix-data/master/index.json"

注意:为确保 Navigator 成功加载,必须定义 collection_index_url 属性、versions 属性,或同时定义两者。如果同时定义了 collection_index_urlversions 属性,Navigator 将在“创建新图层”界面的“更多选项”下拉菜单中显示这些版本的并集。如果两者都未定义,将触发警报,提示 Navigator 加载失败。

从 TAXII 服务器加载内容

目前支持 TAXII 2.0 和 TAXII 2.1。TAXII 2.0 支持将于 2024 年 12 月弃用。有关 TAXII 2.1 服务器的更多信息,请参见此处

  1. 修改位于 src/assets 目录下的 config.json 文件。
  2. versions 部分,将 enabled 属性设置为 true
  3. 在域列表中定义 taxii_url 属性,以替代域的 data 属性,并将其值设置为 TAXII 服务器 URL。
  4. 定义 taxii_collection 属性,并将其值设置为由 TAXII 服务器确定的集合 UUID。

从 TAXII 2.0 服务器加载内容的示例:

"versions": {
	"enabled": true,
	"entries": [
		{
			"name": "Enterprise TAXII 2.0 Data",
			"version": "14",
			"domains": [
				{
					"name": "Enterprise",
					"taxii_url": "https://cti-taxii.mitre.org/",
					"taxii_collection": "95ecc380-afe9-11e4-9b6c-751b66dd541e"
				}
			]
		}
	]
},

从 TAXII 2.1 服务器加载内容的示例:

"versions": {
	"enabled": true,
	"entries": [
		{
			"name": "Enterprise TAXII 2.1 Data",
			"version": "14",
			"domains": [
				{
					"name": "Enterprise",
					"taxii_url": "https://attack-taxii.mitre.org/",
					"taxii_collection": "x-mitre-collection--1f5f1533-f617-4ca8-9ab4-6a02367fa019"
				}
			]
		}
	]
},

从本地文件加载内容

Navigator 可以使用包含 STIX 对象包的文件进行数据填充,其格式类似于 此示例 中的格式。支持 STIX 2.0 和 STIX 2.1 包。

  1. 将 STIX 包放置在 src/assets 目录中。这样,托管 Navigator 的服务器也可以托管该数据。
  2. 修改位于 src/assets 目录中的 config.json 文件。
  3. versions 部分,将 enabled 属性设置为 true
  4. data 数组中指定的 URL 更新为 STIX 包的路径(例如,assets/enterprise-attack.json)。可以在 data 数组中添加多个路径,以便在单个实例中显示多个 STIX 包。

从本地文件加载内容的示例:

"versions": {
    "enabled": true,
    "entries": [
        {
            "name": "Local Enterprise STIX Data",
            "version": "14",
            "domains": [
                {
                    "name": "Enterprise",
                    "identifier": "enterprise-attack",
                    "data": ["assets/enterprise-attack.json"]
                }
            ]
        }
    ]
},

初始化时加载默认层

可将 Navigator 配置为在初始化时加载一组层。这些层可以来自网络和/或本地文件。

要加载的本地文件应放在 nav-app/src/assets/ 目录中。

  1. src/assets/config.json 中,将 default_layers 里的 enabled 属性设置为 true

  2. 将所需默认层的路径添加到 default_layers 中的 urls 数组。例如,

    "default_layers": {
         "enabled": true,
         "urls": [
             "assets/example.json", 
             "https://raw.githubusercontent.com/mitre-attack/attack-navigator/master/layers/samples/Bear_APT.json"
         ]
     }
    

    这会从本地 assets 目录加载 example.json,并从 Github 上此 repo 的示例层文件夹加载 Bear_APT.json

  3. 加载/重新加载 Navigator

也可以使用 Navigator URL 中的查询字符串来设置来自网络的默认层。有关更多详细信息,请参阅应用内帮助页面的“自定义 Navigator”部分。

如果默认层已过时,系统不会提示用户将其升级到当前版本的 ATT&CK。

在 Navigator 中启用横幅

nav-app/src/assets/config.json 中的 banner 设置默认是空字符串 ""(且不可见),您可以将其设置为任何您希望在 Navigator 网页顶部横幅中显示的内容。该横幅支持内容中的 HTML 和超链接。

禁用 Navigator 功能

nav-app/src/assets/config.json 中的 features 数组列出了您可能想要禁用的 Navigator 功能。在配置文件中为某个功能设置 enabled 字段为 false 将隐藏与该功能相关的所有控制元素。

但是,如果上传的层包含与该功能相关的注释或配置,则不会隐藏这些内容。例如,如果禁用了 comments,则添加新注释标注的功能将被移除,但如果上传的层中存在注释,它们仍会在工具提示中显示并带有下划线标记。

也可以使用“创建自定义 Navigator”功能来禁用功能。有关更多详细信息,请参阅应用内帮助页面的“自定义 Navigator”部分。

在网页中嵌入 Navigator

如果您想在网页中嵌入 Navigator,请使用 iframe:

<iframe src="https://mitre-attack.github.io/attack-navigator/enterprise/" width="1000" height="500"></iframe>

如果您希望嵌入一个移除了特定功能(例如标签页、添加注释功能)的 Navigator 版本,或者嵌入一个带有默认层的版本,我们建议使用“创建自定义 Navigator”功能。我们强烈建议通过此方式嵌入 Navigator 时禁用“离开网站对话框”,否则在尝试离开嵌入页面时会收到警告。有关更多详细信息,请参阅应用内帮助页面的“自定义 Navigator”部分。

以下是一个嵌入示例 iframe,其中嵌入了我们的 Bear APTs 层,并移除了标签页和添加注释的功能:

<iframe src="https://mitre-attack.github.io/attack-navigator/enterprise/#layerURL=https%3A%2F%2Fraw.githubusercontent.com%2Fmitre%2Fattack-navigator%2Fmaster%2Flayers%2Fdata%2Fsamples%2FBear_APT.json&tabs=false&selecting_techniques=false" width="1000" height="500"></iframe>

相关 MITRE 工作

CTI

网络威胁情报库,包含以 STIX 2.0 JSON 格式表示的 ATT&CK 目录。

ATT&CK STIX 数据

ATT&CK STIX 数据仓库,包含以 STIX 2.1 JSON 格式表示的 ATT&CK 目录。

ATT&CK

ATT&CK® 是一个精心策划的网络 adversary 行为知识库和模型,反映了 adversary 生命周期的各个阶段以及他们已知的攻击目标平台。ATT&CK 有助于根据已知的 adversary 行为理解安全风险、规划安全改进以及验证防御措施是否按预期工作。

https://attack.mitre.org

STIX

结构化威胁信息表达式(STIX™)是一种用于交换网络威胁情报(CTI)的语言和序列化格式。

STIX 使组织能够以一致且机器可读的方式相互共享 CTI,使安全社区能够更好地了解他们最可能遇到的基于计算机的攻击,并更快、更有效地预测和/或响应这些攻击。

STIX 旨在增强多种不同的能力,例如协作威胁分析、自动化威胁交换、自动化检测和响应等。

https://oasis-open.github.io/cti-documentation/

声明

版权所有 2024 The MITRE Corporation

批准公开发布;分发不受限制。案例编号 18-0128。

根据 Apache 许可证 2.0 版(“许可证”)授权; 除非遵守许可证,否则您不得使用此文件。 您可以在以下位置获取许可证的副本:

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”分发, 不提供任何明示或暗示的保证或条件。 请参阅许可证以了解有关权限和限制的具体规定。

本项目使用 ATT&CK®

ATT&CK® 使用条款

项目介绍

网络应用程序,提供对ATT&CK矩阵的基本导航和注释功能。【此简介由AI生成】

定制我的领域
982.46 K714访问 GitHub