Skip to content

Commit 26a6c24

Browse files
committed
merging in ATT&CK v10.0 release
2 parents 7f0276c + a32ad86 commit 26a6c24

File tree

17,956 files changed

+203651
-54269
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

17,956 files changed

+203651
-54269
lines changed

CHANGELOG.md

+40-8
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,44 @@
1-
### Changes to STIX for April 2021 ATT&CK Content Release (ATT&CK-v9.0)
1+
2+
# Changes to ATT&CK in STIX 2.0
3+
## 21 October 2021 - ATT&CK Spec v2.1.0
4+
Changes to ATT&CK in STIX for October 2021 ATT&CK Content Release (ATT&CK-v10.0)
5+
6+
| Feature | [Available in STIX 2.0](https://github.com/mitre/cti) | [Available in STIX 2.1](https://github.com/mitre-attack/attack-stix-data) |
7+
|:--------|:-----------------------------------------------------:|:-------------------------------------------------------------------------:|
8+
| Added full objects for data sources and data components. See [the data sources section of the USAGE document](https://github.com/mitre-attack/attack-stix-data/blob/master/USAGE.md#data-sources-and-data-components) for more information about data sources, data components, and their relationships with techniques. | :white_check_mark: | :white_check_mark: |
9+
| Added `x_mitre_attack_spec_version` field to all object types. This field tracks the version of the ATT&CK Spec used by the object. Consuming software can use this field to determine if the data format is supported; if the field is absent the object will be assumed to use ATT&CK Spec version `2.0.0`. | :x: | :white_check_mark: |
10+
11+
## 21 June 2021 - ATT&CK Spec v2.0.0
12+
Release of ATT&CK in STIX 2.1.
13+
14+
The contents of this repository is not affected, but you can find ATT&CK in STIX 2.1 (ATT&CK spec v2.0.0+) on our new [attack-stix-data](https://github.com/mitre-attack/attack-stix-data) GitHub repository. Both MITRE/CTI (this repository) and attack-stix-data will be maintained and updated with new ATT&CK releases for the foreseeable future, but the data model of attack-stix-data includes quality-of-life improvements not found on MITRE/CTI.
15+
16+
| Feature | [Available in STIX 2.0](https://github.com/mitre/cti) | [Available in STIX 2.1](https://github.com/mitre-attack/attack-stix-data) |
17+
|:--------|:-----------------------------------------------------:|:-------------------------------------------------------------------------:|
18+
| Added `x_mitre_modified_by_ref` field to all object types. This field tracks the identity of the individual or organization which created the current _version_ of the object. | :x: | :white_check_mark: |
19+
| Added `x_mitre_domains` field to all non-relationship objects. This field tracks the domains the object is found in. | :x: | :white_check_mark: |
20+
| Added [collection](https://github.com/center-for-threat-informed-defense/attack-workbench-frontend/blob/master/docs/collections.md) objects to track information about specific releases of the dataset and to allow the dataset to be imported into [ATT&CK Workbench](https://github.com/center-for-threat-informed-defense/attack-workbench-frontend/). | :x: | :white_check_mark: |
21+
| Added a [collection index](https://github.com/center-for-threat-informed-defense/attack-workbench-frontend/blob/master/docs/collections.md) to list the contents of this repository and to allow the data to be imported into [ATT&CK Workbench](https://github.com/center-for-threat-informed-defense/attack-workbench-frontend/). | :x: | :white_check_mark: |
22+
23+
## 29 April 2021
24+
Changes to ATT&CK in STIX for April 2021 ATT&CK Content Release (ATT&CK-v9.0)
25+
226
1. Replaced `GCP`, `AWS` and `Azure` platforms under the enterprise domain with `IaaS` (Infrastructure as a Service).
327
2. Added `Containers` and `Google Workspace` to the platforms of the enterprise domain.
428
3. Revised the data sources of the enterprise domain. Data sources are still represented as a string array, but the elements within that array are now formatted `"data source: data component"` to reflect the new data source representation. More information on the new data sources can be found on our [attack-datasources](https://github.com/mitre-attack/attack-datasources) GitHub repository. Note that the data sources in the ICS domain was not affected by this change.
529

630
With the release of ATT&CK version 9 we are also hosting an excel representation of the knowledge base on our website. You can find that representation and more about ATT&CK tools on the updated [Working with ATT&CK](https://attack.mitre.org/resources/working-with-attack/) page.
731

8-
### Changes to STIX for October 2020 ATT&CK Content Release (ATT&CK-v8.0)
32+
## 27 October 2020
33+
Changes to ATT&CK in STIX for October 2020 ATT&CK Content Release (ATT&CK-v8.0)
34+
935
1. Added new platforms under the enterprise domain: `Network` and `PRE`.
1036
2. Deprecated the pre-ATT&CK domain. Pre-ATT&CK has been migrated to two new tactics in the Enterprise domain tagged with the `PRE` platform. Please see the new [PRE matrix](https://attack.mitre.org/matrices/enterprise/PRE/) for the replacing Enterprise tactics and techniques. All objects within the pre-ATT&CK domain have been marked as deprecated, along with a new description pointing to their new home in Enterprise.
1137
3. Added the [ATT&CK for ICS domain](ics-attack).
1238

13-
### Changes to STIX for July 2020 ATT&CK Content Release (ATT&CK-v7.0)
39+
## 8 July 2020 - ATT&CK Spec v1.3.0
40+
Changes to ATT&CK in STIX for July 2020 ATT&CK Content Release (ATT&CK-v7.0)
41+
1442
1. Added sub-techniques:
1543
- A sub-technique is an attack-pattern where `x_mitre_is_subtechnique` is `true`.
1644
- Relationships of type `subtechnique-of` between sub-techniques and techniques convey their hierarchy.
@@ -20,17 +48,21 @@ With the release of ATT&CK version 9 we are also hosting an excel representation
2048

2149
We've also rewritten the [USAGE](USAGE.md) document with additional information about the ATT&CK data model and more examples of how to access and use ATT&CK in Python.
2250

23-
### Changes to STIX for October 2019 ATT&CK Content Release (ATT&CK-v6.0)
51+
## 24 October 2019
52+
Changes to ATT&CK in STIX for October 2019 ATT&CK Content Release (ATT&CK-v6.0)
2453
1. Added cloud platforms under the enterprise domain: `AWS`, `GCP`, `Azure`, `Office 365`, `Azure AD`, and `SaaS`.
2554

26-
### Changes to STIX for July 2019 ATT&CK Content Release (ATT&CK-v5.0)
55+
## 31 July 2019
56+
Changes to ATT&CK in STIX for July 2019 ATT&CK Content Release (ATT&CK-v5.0)
2757
1. Descriptions added to relationships of type `mitigates` under the enterprise domain
2858

29-
### Changes to STIX for April 2019 ATT&CK Content Release (ATT&CK-v4.0)
59+
## 30 April 2019 - ATT&CK Spec v1.2.0
60+
Changes to ATT&CK in STIX for April 2019 ATT&CK Content Release (ATT&CK-v4.0)
3061
1. `x_mitre_impact_type` added for enterprise techniques within the `Impact` tactic
3162
2. Descriptions added to relationships between software/groups
3263

33-
### Changes to STIX for October 2018 ATT&CK Content Release (ATT&CK-v3.0)
64+
## 23 October 2018 - ATT&CK Spec v1.1.0
65+
Changes to ATT&CK in STIX for October 2018 ATT&CK Content Release (ATT&CK-v3.0)
3466

3567
1. `x_mitre_platforms` added for enterprise malware/tools
3668
2. `x_mitre_detection` added to attack-patterns
@@ -44,4 +76,4 @@ We've also rewritten the [USAGE](USAGE.md) document with additional information
4476
10. Changed ===Windows=== subheadings to ### Windows subheadings (Windows is just one example)
4577
11. Added space between asterisks (ex. *Content to * Content) to populate markdown correctly
4678
12. Changed "true" to True in `x_mitre_deprecated`
47-
13. Added old ATT&CK IDs to Mobile/PRE-ATT&CK objects whose IDs have changed as `x-mitre-old-attack-id`
79+
13. Added old ATT&CK IDs to Mobile/PRE-ATT&CK objects whose IDs have changed as `x-mitre-old-attack-id`

USAGE.md

+70-4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ If you are looking for ATT&CK data represented in STIX 2.1, please see our [atta
3131
- [Collisions with technique ATT&CK IDs](#collisions-with-technique-attck-ids)
3232
+ [Groups](#groups)
3333
+ [Software](#software)
34+
+ [Data Sources and Data Components](#data-sources-and-data-components)
3435
+ [Relationships](#relationships)
3536
- [Accessing ATT&CK data in python](#accessing-attck-data-in-python)
3637
* [Requirements and imports](#requirements-and-imports)
@@ -82,6 +83,7 @@ ATT&CK uses a mix of predefined and custom STIX objects to implement ATT&CK conc
8283
| [Mitigation](#mitigations) | [course-of-action](https://docs.oasis-open.org/cti/stix/v2.0/csprd01/part2-stix-objects/stix-v2.0-csprd01-part2-stix-objects.html#_Toc476230929) | no |
8384
| [Group](#groups) | [intrusion-set](https://docs.oasis-open.org/cti/stix/v2.0/csprd01/part2-stix-objects/stix-v2.0-csprd01-part2-stix-objects.html#_Toc476230941) | no |
8485
| [Software](#software) | [malware](http://docs.oasis-open.org/cti/stix/v2.0/csprd01/part2-stix-objects/stix-v2.0-csprd01-part2-stix-objects.html#_Toc476230945) or [tool](http://docs.oasis-open.org/cti/stix/v2.0/csprd01/part2-stix-objects/stix-v2.0-csprd01-part2-stix-objects.html#_Toc476230961) | no |
86+
| [Data Source](#data-source) | `x-mitre-data-source` | yes |
8587

8688
Two additional object types are found in the ATT&CK catalog:
8789

@@ -125,6 +127,7 @@ The most commonly used ID format is what is referred to as the ATT&CK ID or simp
125127
| [Mitigation](#mitigations) | `Mxxxx` |
126128
| [Group](#groups) | `Gxxxx` |
127129
| [Software](#software) | `Sxxxx` |
130+
| [Data Source](#data-source) | `DSxxxx` |
128131

129132
ATT&CK IDs are typically, but not always, unique. See [Collisions with Technique ATT&CK IDs](#collisions-with-technique-attck-ids) for an edge case involving ID collisions between mitigations and techniques.
130133

@@ -178,7 +181,7 @@ Techniques depart from the attack-pattern format with the following fields. Doma
178181
|:------|:-----|:--------|:------------|
179182
| `x_mitre_detection` | string | All techniques | Strategies for identifying if a technique has been used by an adversary. |
180183
| `x_mitre_platforms` | string[] | All techniques | List of platforms that apply to the technique. |
181-
| `x_mitre_data_sources` | string[] | Enterprise and ICS domains | Sources of information that may be used to identify the action or result of the action being performed. |
184+
| `x_mitre_data_sources` | string[] | Enterprise* & ICS domains | Sources of information that may be used to identify the action or result of the action being performed. |
182185
| `x_mitre_is_subtechnique` | boolean | Enterprise domain | If true, this `attack-pattern` is a sub-technique. See [sub-techniques](#sub-techniques). |
183186
| `x_mitre_system_requirements` | string[] | Enterprise domain | Additional information on requirements the adversary needs to meet or about the state of the system (software, patch level, etc.) that may be required for the technique to work. |
184187
| `x_mitre_tactic_type` | string[] | Mobile domain | "Post-Adversary Device Access", "Pre-Adversary Device Access", or "Without Adversary Device Access". |
@@ -189,6 +192,8 @@ Techniques depart from the attack-pattern format with the following fields. Doma
189192
| `x_mitre_impact_type` | string[] | Enterprise domain in the _Impact_ tactic | Denotes if the technique can be used for integrity or availability attacks. |
190193

191194

195+
\* In the Enterprise domain data sources are represented via [x-mitre-data-source](#data-sources) and [x-mitre-data-component](#data-components) objects, and their relationship with techniques through relationships of type `detects`. The `x_mitre_data_sources` field will still be maintained on enterprise techniques for backwards-compatibility purposes but we advise against its use as it does not include the full context of the data model.
196+
192197
See [mapping matrices, tactics and techniques](#mapping-matrices-tactics-and-techniques) for more information about how techniques map into tactics and matrices.
193198

194199
#### Sub-Techniques
@@ -227,8 +232,59 @@ Both `malware` and `tool` type software depart from the STIX format with the fol
227232
| Field | Type | Description |
228233
|:------|:-----|-------------|
229234
| `x_mitre_platforms` | string[] | List of platforms that apply to the software. |
230-
| `x_mitre_aliases` | string[] | List of aliases for the given software |
235+
| `x_mitre_aliases` | string[] | List of aliases for the given software. |
236+
237+
238+
### Data Sources and Data Components
239+
240+
Data Sources and Data Components represent data which can be used to detect techniques. Data components are nested within a data source but have their own STIX object.
241+
242+
- A Data Component can only have one parent Data Source.
243+
- A Data Source can have any number of Data Components.
244+
- Data Components can map to any number of techniques.
245+
246+
The general structure of data sources and data components is as follows:
247+
248+
<!-- diagram generated with https://asciiflow.com/ -->
249+
```
250+
"detects" x_mitre_data_source_ref
251+
relationship embedded relationship
252+
│ │
253+
┌───────────┐ ▼ ┌────────────────┐ │ ┌───────────┐
254+
│Technique 1│◄────┤ │ │ │ │
255+
└───────────┘ │ │ ▼ │ │
256+
│Data Component 1├────►│ │
257+
┌───────────┐ │ │ │ │
258+
│Technique 2│◄────┤ │ │Data Source│
259+
└───────────┘ └────────────────┘ │ │
260+
│ │
261+
┌───────────┐ ┌────────────────┐ │ │
262+
│Technique 3│◄────┤Data Component 2├────►│ │
263+
└───────────┘ └────────────────┘ └───────────┘
264+
```
265+
266+
Prior to ATT&CK v10 data sources were stored in a `x_mitre_data_sources` field on techniques. This representation is still available for backwards-compatibility purposes, and does properly reflect the current set of data sources. However, because information is lost in that representation we advise against using it except in legacy applications. The ATT&CK for ICS domain still uses only the `x_mitre_data_sources` field.
267+
268+
#### Data Sources
269+
270+
A Data Source in ATT&CK is defined by an `x-mitre-data-source` object. As a custom STIX type they follow only the generic [STIX Domain Object pattern](https://docs.oasis-open.org/cti/stix/v2.0/csprd01/part2-stix-objects/stix-v2.0-csprd01-part2-stix-objects.html#_Toc476230920).
231271

272+
Data Sources extend the generic SDO format with the following fields:
273+
274+
| Field | Type | Description |
275+
|:------|:-----|-------------|
276+
| `x_mitre_platforms` | string[] | List of platforms that apply to the data source. |
277+
| `x_mitre_collection_layers` | string[] | List of places the data can be collected from. |
278+
279+
#### Data Components
280+
281+
A Data Component in ATT&CK is represented as an `x-mitre-data-component` object. As a custom STIX type they follow only the generic [STIX Domain Object pattern](https://docs.oasis-open.org/cti/stix/v2.0/csprd01/part2-stix-objects/stix-v2.0-csprd01-part2-stix-objects.html#_Toc476230920).
282+
283+
Data Components extend the generic SDO format with the following field:
284+
285+
| Field | Type | Description |
286+
|:------|:-----|-------------|
287+
| `x_mitre_data_source_ref` | embedded relationship (string) | STIX ID of the data source this component is a part of. |
232288

233289
### Relationships
234290

@@ -245,8 +301,9 @@ Relationships oftentimes have descriptions which contextualize the relationship
245301
| `intrusion-set` | `uses` | `malware` or `tool` | No | Group using a software. |
246302
| `intrusion-set` | `uses` | `attack-pattern` | No | Group using a technique, which is also considered a procedure example. |
247303
| `malware` or `tool` | `uses` | `attack-pattern` | No | Software using a technique, which is also considered a procedure example. |
248-
| `course-of-action` | `mitigates` | `attack-pattern` | No | Mitigation mitigating technique. |
304+
| `course-of-action` | `mitigates` | `attack-pattern` | No | Mitigation mitigating a technique. |
249305
| `attack-pattern` | `subtechnique-of` | `attack-pattern` | Yes | Sub-technique of a technique, where the `source_ref` is the sub-technique and the `target_ref` is the parent technique. |
306+
| `x-mitre-data-component` | `detects` | `attack-pattern` | Yes | Data component detecting a technique. |
250307
| any type | `revoked-by` | any type | Yes | The target object is a replacement for the source object. Only occurs where the objects are of the same type, and the source object will have the property `revoked = true`. See [Working with deprecated and revoked objects](#Working-with-deprecated-and-revoked-objects) for more information on revoked objects. |
251308

252309
Note that because groups use software and software uses techniques, groups can be considered indirect users of techniques used by their software. See [Getting techniques used by a group's software](#Getting-techniques-used-by-a-groups-software).
@@ -815,14 +872,23 @@ def technique_mitigated_by_mitigations(thesrc):
815872
"""return technique_id => {mitigation, relationship} for each mitigation of the technique."""
816873
return get_related(thesrc, "course-of-action", "mitigates", "attack-pattern", reverse=True)
817874

818-
# technique:subtechnique
875+
# technique:sub-technique
819876
def subtechniques_of(thesrc):
820877
"""return technique_id => {subtechnique, relationship} for each subtechnique of the technique."""
821878
return get_related(thesrc, "attack-pattern", "subtechnique-of", "attack-pattern", reverse=True)
822879

823880
def parent_technique_of(thesrc):
824881
"""return subtechnique_id => {technique, relationship} describing the parent technique of the subtechnique"""
825882
return get_related(thesrc, "attack-pattern", "subtechnique-of", "attack-pattern")[0]
883+
884+
# technique:data-component
885+
def datacomponent_detects_techniques(thesrc):
886+
"""return datacomponent_id => {technique, relationship} describing the detections of each data component"""
887+
return get_related(thesrc, "x-mitre-data-component", "detects", "attack-pattern")
888+
889+
def technique_detected_by_datacomponents(thesrc):
890+
"""return technique_id => {datacomponent, relationship} describing the data components that can detect the technique"""
891+
return get_related(thesrc, "x-mitre-data-component", "detects", "attack-pattern", reverse=True)
826892
```
827893

828894
Example usage:

enterprise-attack/attack-pattern/attack-pattern--0042a9f5-f053-4769-b3ef-9ad018dfa298.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"type": "bundle",
3-
"id": "bundle--2c20675c-0c44-43ec-a61a-3321d8ff23a0",
3+
"id": "bundle--0e9e6e4b-a446-46db-ae72-8caecc3b1af7",
44
"spec_version": "2.0",
55
"objects": [
66
{

enterprise-attack/attack-pattern/attack-pattern--005a06c6-14bf-4118-afa0-ebcd8aebb0c9.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"type": "bundle",
3-
"id": "bundle--4a43e057-f553-406a-b518-ea56ca37fcff",
3+
"id": "bundle--1f92ee4e-b3ca-4a15-b0bb-85e9a4c53c92",
44
"spec_version": "2.0",
55
"objects": [
66
{

enterprise-attack/attack-pattern/attack-pattern--00d0b012-8a03-410e-95de-5826bf542de6.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"type": "bundle",
3-
"id": "bundle--bd843ccd-82d0-4daf-afaa-fb28f02c7d16",
3+
"id": "bundle--8b12b94e-dd57-4a2d-bd0a-b2df92b3c3bc",
44
"spec_version": "2.0",
55
"objects": [
66
{

enterprise-attack/attack-pattern/attack-pattern--00f90846-cbd1-4fc5-9233-df5c2bf2a662.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"type": "bundle",
3-
"id": "bundle--953493eb-be43-4c58-a00c-76d2e82bffc0",
3+
"id": "bundle--4e218ffe-7b7d-49f1-8f21-88bfbb2f4b77",
44
"spec_version": "2.0",
55
"objects": [
66
{

0 commit comments

Comments
 (0)