Giter Club home page Giter Club logo

attack-navigator's Introduction

ATT&CK® Navigator

The ATT&CK Navigator is designed to provide basic navigation and annotation of ATT&CK matrices, something that people are already doing today in tools like Excel. We've designed it to be simple and generic - you can use the Navigator to visualize your defensive coverage, your red/blue team planning, the frequency of detected techniques or anything else you want to do. The Navigator doesn't care - it just allows you to manipulate the cells in the matrix (color coding, adding a comment, assigning a numerical value, etc.). We thought having a simple tool that everyone could use to visualize the matrix would help make it easy to use ATT&CK.

The principal feature of the Navigator is the ability for users to define layers - custom views of the ATT&CK knowledge base - e.g. showing just those techniques for a particular platform or highlighting techniques a specific adversary has been known to use. Layers can be created interactively within the Navigator or generated programmatically and then visualized via the Navigator.

Usage

The ATT&CK Navigator is hosted live via GitHub Pages. You can find a live instance of the current version of the Navigator here. You can read more about how to use the application itself in the USAGE document (which is mirrored in the in-app help page).

Version 4.0+ of the ATT&CK Navigator supports all ATT&CK domains in a single instance of the application instead of requiring a different instance for each domain. Additionally, older versions of ATT&CK can be loaded in the application. The ATT&CK Navigator supports ATT&CK versions 4+. Older versions do not work in the application since their data model is too outdated.

Previous versions of the Navigator application are also hosted via GitHub Pages for users who want a more classic experience:

ATT&CK Version Navigator Version Domains
ATT&CK v7.2 Navigator v3.1 Enterprise Mobile
ATT&CK v6.3 Navigator v2.3.2 Enterprise Mobile

Please see Install and Run for information on how to get the ATT&CK Navigator set up locally.

Important Note: Layer files uploaded when visiting our Navigator instance hosted on GitHub Pages are NOT being stored on the server side, as the Navigator is a client-side only application. However, we still recommend installing and running your own instance of the ATT&CK Navigator if your layer files contain any sensitive content.

Use our GitHub Issue Tracker to let us know of any bugs or others issues that you encounter. We also encourage pull requests if you've extended the Navigator in a cool way and want to share back to the community!

See CONTRIBUTING.md for more information on making contributions to the ATT&CK Navigator.

Requirements

Supported Browsers

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

[1] There is a recorded issue with the SVG export feature on Internet Explorer. Because of a missing functionality on SVGElements in that browser, text will not be properly vertically centered in SVGs exported in that browser. We recommend switching to a more modern browser for optimal results.

[2] ATT&CK Navigator only supports Safari versions 14 and above because older versions of the browser can exhibit an unfixable freeze when selecting a layer tab. Users on unsupported versions of the browser will be warned of this possibility when opening the application.

Install and Run

First time

  1. Navigate to the nav-app directory
  2. Run npm install

Serve application on local machine

  1. Run ng serve within the nav-app directory
  2. Navigate to localhost:4200 in browser

Compile for use elsewhere

  1. Run ng build within the nav-app directory
  2. Copy files from nav-app/dist/ directory

Note: ng build --configuration production does not currently work for ATT&CK Navigator without additional flags. To build the production environment instead use ng build --configuration production --aot=false --build-optimizer=false.

Running the Navigator offline

  1. Install the Navigator as per instructions above.
  2. Follow instructions under loading content from local files to configure the Navigator to populate the matrix without an internet connection. The latest MITRE ATT&CK data files can be found here:

Documentation

When viewing the Navigator in a browser, click on the ? icon in the upper right corner to view the in-app documentation.

Layers Folder

The layers folder contains specifications for the layer format as well as example layers and a script demonstrating programatic layer generation. We will continue to add content to this repository as new scripts are implemented. Also, feel free to create pull requests if you want to add new capabilities here!

More information on how layers are used and developed can be found in the ATT&CK Navigator documentation that can be viewed by clicking ? when running the app in a browser, and in the README in the layers folder.

Adding Custom Context Menu Options

To create custom options to the ATT&CK® Navigator context menu using data in the Navigator, objects must be added to the array labeled custom_context_menu_options in nav-app/src/assets/config.json. Each object must have a property label, which is the text displayed in the context menu, and a property url, which is where the user is navigated.

To utilize data on right-clicked technique in the url, parameters surrounded by double curly brackets can be added to the string. For example: using http://www.someurl.com/{{technique_attackID}}} as the url in the custom option would lead to http://www.someurl.com/T1098, if the right-clicked technique's attackID was T1098.

The following data substitutions will be parsed:

  • {{technique_attackID}} will be substituted with the ATT&CK ID of the technique, e.g T1234
  • {{technique_stixID}} will be substituted with the STIX ID of the technique, e.g attack-pattern--12345678-1234-1234-1234-123456789123
  • {{technique_name}} will be substituted with the technique name in lower case and with spaces replaced with hyphens, e.g example-technique-name
  • {{tactic_attackID}} will be substituted with the ATT&CK ID of the tactic, e.g TA1234
  • {{tactic_stixID}} will be substituted with the STIX ID of the tactic, e.g x-mitre-tactic--12345678-1234-1234-1234-123456789123
  • {{tactic_name}} will be substituted with the tactic name in lower case and with spaces replaced with hyphens, e.g example-tactic. This is also equivalent to the x_mitre_shortname property of the tactic.

Optionally, a subtechnique_url field may be added to a custom option. This field will be parsed when the option is used on a sub-technique instead of the normal URL, which will be used for techniques. If subtechnique_url is not used, the technique_ substitutions defined above will refer to the sub-technique object itself.

The following substitutions will be parsed for sub-techniques:

  • {{parent_technique_attackID}} will be substituted with the ATT&CK ID of the sub-technique's parent, e.g T1234
  • {{parent_technique_stixID}} will be substituted with the STIX ID of the sub-technique's parent, e.g attack-pattern--12345678-1234-1234-1234-123456789123
  • {{parent_technique_name}} will be substituted with the name of the sub-technique's parent in lower case and with spaces replaced with hyphens, e.g example-technique-name
  • {{subtechnique_attackID}} will be substituted with the ATT&CK ID of the sub-technique, e.g T1234.001
  • {{subtechnique_attackID_suffix}} will be substituted with the portion of the ATT&CK ID of the sub-technique after the delimiting period, e.g 001
  • {{subtechnique_stixID}} will be substituted with the STIX ID of the sub-technique, e.g attack-pattern--98765432-9876-9876-9876-987654321987
  • {{subtechnique_name}} will be substituted with the sub-technique name in lower case and with spaces replaced with hyphens, e.g example-subtechnique-name
  • {{tactic_attackID}} will be substituted with the ATT&CK ID of the tactic, e.g TA1234
  • {{tactic_stixID}} will be substituted with the STIX ID of the tactic, e.g x-mitre-tactic--12345678-1234-1234-1234-123456789123
  • {{tactic_name}} will be substituted with the tactic name in lower case and with spaces replaced with hyphens, e.g example-tactic. This is also equivalent to the x_mitre_shortname property of the tactic.

Example custom context menu objects:

{
    "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}}"
}

Methods for loading content

Loading content from a Collection Index

By default, the Navigator loads content from the ATT&CK Collection Index hosted on the ATT&CK STIX Data repository. More information about Collection Indexes can be found here.

  1. Modify the config.json file located in the src/assets directory.
  2. Set the collection_index_url property to the URL of your Collection Index (for example, "collection_index_url": "https://raw.githubusercontent.com/mitre-attack/attack-stix-data/master/index.json")

Note: For the Navigator to load successfully, either the collection_index_url property, the versions property, or both must be defined. If both the collection_index_url and versions properties are defined, the Navigator will display the union of the versions under the "More Options" dropdown in the "Create New Layer" interface. If neither are defined, an alert will be triggered indicating that the Navigator failed to load.

Loading content from a TAXII server

Both TAXII 2.0 and TAXII 2.1 are currently supported. Support for TAXII 2.0 will be deprecated in December 2024. More information about the TAXII 2.1 Server can be found here.

  1. Modify the config.json file located in the src/assets directory.
  2. In the versions section, set the enabled property to true.
  3. Define the taxii_url property in the list of domains, in place of the domain data property, and set its value to the TAXII server URL.
  4. Define the taxii_collection property and set its value to the collection UUID as determined by the TAXII server.

Example loading content from a TAXII 2.0 server:

"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"
				}
			]
		}
	]
},

Example loading content from a TAXII 2.1 server:

"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"
				}
			]
		}
	]
},

Loading content from local files

Navigator can be populated using files that consist of bundles of STIX objects, similar to the format found in this example. Both STIX 2.0 and STIX 2.1 bundles are supported.

  1. Place the STIX bundle(s) in the src/assets directory. This allows the server hosting the Navigator to also host the data.
  2. Modify the config.json file located in the src/assets directory.
  3. In the versions section, set the enabled property to true.
  4. Update the URL specified in the data array to the path to the STIX bundle (for example, assets/enterprise-attack.json). Multiple paths may be added to the data array to display multiple STIX bundles in a single instance.

Example loading content from local files:

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

Running the Docker File

  1. Navigate to the directory where you checked out the git repository
  2. Run docker build -t yourcustomname .
  3. Run docker run -p 4200:4200 yourcustomname
  4. Navigate to localhost:4200 in browser

Loading Default Layers Upon Initialization

The Navigator can be configured so as to load a set of layers upon initialization. These layers can be from the web and/or from local files. Local files to load should be placed in the nav-app/src/assets/ directory.

  1. Set the enabled property in default_layers in src/assets/config.json to true

  2. Add the paths to your desired default layers to the urls array in default_layers. For example,

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

    would load example.json from the local assets directory, and Bear_APT.json from this repo's sample layer folder on Github.

  3. Load/reload the Navigator

Default layers from the web can also be set using a query string in the Navigator URL. Refer to the in-application help page section "Customizing the Navigator" for more details.

Users will not be prompted to upgrade default layers to the current version of ATT&CK if they are outdated.

Enabling Banner in Navigator

The banner setting in nav-app/src/assets/config.json by default is an empty string """ (and not visible), and can be set to whatever content you wish to display inside a banner at the top of the Navigator webpage. The banner supports HTML and hyperlinks in the content.

Disabling Navigator Features

The features array in nav-app/src/assets/config.json lists Navigator features you may want to disable. Setting the enabled field on a feature in the configuration file will hide all control elements related to that feature.

However, if a layer is uploaded with an annotation or configuration relating to that feature it will not be hidden. For example, if comments are disabled the ability to add a new comment annotation will be removed, however if a layer is uploaded with comments present they will still be displayed in tooltips and and marked with an underline.

Features can also be disabled using the create customized Navigator feature. Refer to the in-application help page section "Customizing the Navigator" for more details.

Embedding the Navigator in a Webpage

If you want to embed the Navigator in a webpage, use an iframe:

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

If you want to embed a version of the Navigator with specific features removed (e.g tabs, adding annotations), or with a default layer, we recommend using the create customized Navigator feature. We highly recommend disabling the "leave site dialog" via this means when embedding the Navigator since otherwise you will be warned whenever you try to leave the embedding page. Refer to the in-application help page section "Customizing the Navigator" for more details.

The following is an example iframe which embeds our *Bear APTs layer with tabs and the ability to add annotations removed:

<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>

Related MITRE Work

CTI

Cyber Threat Intelligence repository of the ATT&CK catalog expressed in STIX 2.0 JSON.

ATT&CK STIX Data

ATT&CK STIX Data repository of the ATT&CK catalog expressed in STIX 2.1 JSON.

ATT&CK

ATT&CK® is a curated knowledge base and model for cyber adversary behavior, reflecting the various phases of an adversary’s lifecycle and the platforms they are known to target. ATT&CK is useful for understanding security risk against known adversary behavior, for planning security improvements, and verifying defenses work as expected.

https://attack.mitre.org

STIX

Structured Threat Information Expression (STIX™) is a language and serialization format used to exchange cyber threat intelligence (CTI).

STIX enables organizations to share CTI with one another in a consistent and machine readable manner, allowing security communities to better understand what computer-based attacks they are most likely to see and to anticipate and/or respond to those attacks faster and more effectively.

STIX is designed to improve many different capabilities, such as collaborative threat analysis, automated threat exchange, automated detection and response, and more.

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

Notice

Copyright 2024 The MITRE Corporation

Approved for Public Release; Distribution Unlimited. Case Number 18-0128.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

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

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

This project makes use of ATT&CK®

ATT&CK® Terms of Use

attack-navigator's People

Contributors

2xyo avatar adampennin avatar adpare avatar cfingar avatar che4ter avatar clemiller avatar cvantine avatar dependabot[bot] avatar eljocko avatar erinehall avatar g-and-alf avatar gclen avatar iguannalin avatar isaisabel avatar jburns12 avatar jondricek avatar lilyjw avatar rlc4 avatar ryanpersaud avatar sarahyoder avatar seansica avatar sergiuser1 avatar wietze avatar zacheller avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

attack-navigator's Issues

Score expressions without layer variables in the "creating layers from other layers" interface

What doesn't work

Using a score expression without any layer variables does not assign any scores to the resulting layer.

According to the tip on the help page section for the feature, "if you wanted a new layer where all techniques are scored 50, you could simply type 50 into the score expression input." This does not work in practice: writing a score expression as a constant (e.g 50) or an expression using only constants (e.g 25 + 25) yields a layer with no assigned scores.

Steps to reproduce

  1. Open the "Creating layers from other layers" interface on a new tab.
  2. Write an expression using only constants for the score expression, e.g 50 or 25+25.
  3. The expected output should be that constant, or the result of the expression evaluated, for every technique.
  4. Instead no techniques have scores in the output layer.

How to fix

The code for this feature is located in the layerLayerOperation method of viewmodels.service.
Presumably score expressions without variables can be found using regex or some other sort of check, and this edge case handled accordingly. There is already code to catch this edge case however it is apparently no longer working.

Deprecated and revoked objects

We need to handle deprecated and revoked objects in the STIX content by not displaying them in the Navigator.

Deprecated objects contain the following attribute and value: "x_mitre_deprecated": true
Revoked objects contain the following attribute and value: "revoked": true

Consider supporting user-defined layer legend

Since the Navigator (rightly) doesn't define the semantics of what particular colors are intended to denote in a layer, consider adding the ability for the user to define an optional "legend" for a layer. This legend would allow the user to manually pick a color and associate descriptive text with that color. For example, a user might define a legend as follows:
(selecting red) "SEVERE Risk"
(selecting yellow) "MODERATE Risk"
(selecting green) "LOW Risk"

The Navigator could include the legend on print/export and provide an interface to add/edit the legend.

Adding a "super-compact" view option

This would allow users to select a "super-compact" view of the matrix that consists solely of small rectangular boxes (colored as appropriate) without any labels for either tactics or techniques.

Allow users to disable legends in the "create customized navigator" interface

Users should be able to disable the legends feature in the "create customized navigator" interface.

  • Add a new object named "legends" in the features array in assets/config.json. This will automatically populate the "create customized navigator" interface.
  • Add an *ngIf="configService.getFeature('legends') to the legends html container to facilitate removal when specified in the config.

Rearranging the order in which tactics are displayed

The Navigator could be configured to support a user manually reordering the tactic columns within a layer (e.g. moving "Persistence" so that it appears to the right of "Privilege Escalation").

It could also be configured to allow the user to manually toggle the visibility of individual tactic columns.

Update README with instructions on using local files to populate the Navigator

We need to update the README to explain how to use local STIX/json files to populate the Navigator.

  1. Put the files in “src/assets” in the navigator code. This will tell the server hosting the navigator to host the data as well.
  2. Change “enterprise_attack_url” (and mobile and pre-attack depending on what you're trying to do) in “src/assets/config.json” to the path to the file (probably something like “/assets/enterprise-attack.json”
  3. Also in that file, change “taxii_server -> enabled” to false

Associating user-defined metadata with techniques

Consider supporting the ability for users to associate arbitrary name-value pairs with a technique in a layer in addition to the existing metadata such as score, manually-assigned colors, comments, etc.

Create a tutorial for new users of the Navigator

Create a tutorial document for new users of the Navigator. Topics could include:

  • Basics: exploring tactics and techniques, view filtering, layer save & load

  • Multi-select of techniques: by group, software, etc.

  • Technique annotation: comments, coloring & scoring techniques

  • Using color gradients & scores

  • Merging layers with the Navigator: basic & advanced uses

node.js

I know this isn't likely something mitre should address but I have spent hours trying to install NODE.JS. There are permission issues with installing NODE.JS from the link provided from the install directions. I still can't get past this. Thanks.

New update looks to be broken

Hello,

I can no longer load the attack navigator that you are hosting. It looks like some dependencies related to taxii is failing to load.

Here is the console output from Chrome:
cti-taxii.mitre.org/stix/collections/062767bd-02d2-4b72-84ba-56caef0f8658/objects/? Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR vendor.3d20af49696ada3796ea.bundle.js:1 ERROR Error: fetch error: TypeError: Failed to fetch at fetchTimeout.then.catch.e (main.5f1dd1c9fee06079d0b5.bundle.js:1) at t.ZSR1.t.invoke (polyfills.eda932d1fd6342a9adeb.bundle.js:1) at Object.onInvoke (vendor.3d20af49696ada3796ea.bundle.js:1) at t.ZSR1.t.invoke (polyfills.eda932d1fd6342a9adeb.bundle.js:1) at n.ZSR1.n.run (polyfills.eda932d1fd6342a9adeb.bundle.js:1) at polyfills.eda932d1fd6342a9adeb.bundle.js:1 at t.ZSR1.t.invokeTask (polyfills.eda932d1fd6342a9adeb.bundle.js:1) at Object.onInvokeTask (vendor.3d20af49696ada3796ea.bundle.js:1) at t.ZSR1.t.invokeTask (polyfills.eda932d1fd6342a9adeb.bundle.js:1) at n.ZSR1.n.runTask (polyfills.eda932d1fd6342a9adeb.bundle.js:1) mt @ vendor.3d20af49696ada3796ea.bundle.js:1 cti-taxii.mitre.org/stix/collections/95ecc380-afe9-11e4-9b6c-751b66dd541e/objects/? Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR

Long comments

Putting a long comment on a technique at the bottom will cut off so you cannot see the rest of the comment. When you scroll it then flashes. This occurs in the latest Chrome.
untitled

Allow persistent layers to be stored / loaded

It would be helpful to allow storage / persistence of layers that are created. For example in my installation, I have saved off layers but every time I reload the site I have to re-upload the json file. Offering to save some server side, or have a default display would be helpful.

Release in Docker Container

Would it be possible to release this in a Docker container to make it easier for users to get started with the app.

Auto-save Feature

A user has mentioned that it would be nice if layer controls could have an option to enable "auto-save" so you don't lose your work.

Extending technique context menu

As an administrator of Navigator instances, I would like the ability to customize the context menu that is brought up when you right-click on a technique. Specifically I would like to be able to configure the Navigator to add menu items to the end of the menu and specify a URL to call out when selected. The Navigator would pass info such as the technique ID, tactic, etc. as part of the URL.

Support for dual-scored techniques

The idea of being able to associate two independent scores with a given technique was raised with an external ATT&CK user.

As an example, this would allow a user to assign both a defensive coverage score (some quantification of how confident they are in their ability to detect the technique) and an adversary-prevalence score (some quantification of how frequently a given adversary uses that technique).

Given these two scores, the technique might be color-coded with the top-left being derived from the defensive score and the bottom-right color derived from the adversary score.

Add Custom Multi-Select

Currently, all of the multi-selects are pre-defined in a drop down. It would be useful to be able to select multiple techniques at one time to toggle states, add background colors, etc.

Adding unit testing

This will allow the universal application functionality to be maintained with each change/addition.

Add ability to load a layer from the URL specified in a query string

If the URL of a layer hosted on the web is specified in the navigator URL's query string, the navigator should load that layer when it opens.

For example, if the user wanted to encode a URL so that the *Bear APTs layer is present when the navigator first opens, it might look like the following:

https://mitre.github.io/attack-navigator/enterprise/?layerURL=https%3A%2F%2Fraw.githubusercontent.com%2Fmitre%2Fattack-navigator%2Fmaster%2Flayers%2Fdata%2Fsamples%2FBear_APT.json

JavaScript error in Edge

I can't get the Navigator v2 to work in Microsoft Edge. It works like a charm in Chrome, but in Edge I'm getting the following error when trying to open https://mitre.github.io/attack-navigator/enterprise/:

SCRIPT1005: Expected '('
main.5f1dd1c9fee06079d0b5.bundle.js (1,173241)

image
I'm getting the same error when using my local version. The readme page says Edge is supported, is this a bug or did you drop support for Edge?

Ability to select and annotate a single instance of a technique spanning multiple tactics

As a user I would like the ability to select a technique that spans multiple tactic categories but only have the selection be for a specific tactic and then be able to annotate just that instance of the technique.

For example, I want to be able to select "Exploitation of Vulnerability" under "Persistence" but not the other three tactics it falls under and give that one score/color/comment and then select "Exploitation of Vulnerability" under "Credential Access" and give it a completely different set of annotations, with the other two instances of the technique unaffected.

This requires discussion with the ATT&CK team as it may imply a need to uniquely identify tactics by ID or techniques within a specific tactic by ID.

Uploading a layer with hideDisabled=True and missing tactic tags doesn't hide disabled techniques

What's wrong

If you upload a layer with "hideDisabled": true (hiding disabled techniques), but any number of techniques are missing the tactic field, the layer will upload such that any disabled techniques (which should be hidden) are still visible. The visibility is fixed on tab change.

How to reproduce

  1. Create a new layer file.
  2. Turn on hiding disabled techniques
  3. Disable any number of techniques (for ease of testing, disable all but 1)
  4. Download this layer to local json
  5. remove the tactic field of 1 technique.
  6. upload the layer

Example

Here (BruteForce.json.zip) is an example broken layer file. It should, on upload, show only the technique named "brute force." However, because of the bug it shows all of the techniques as disabled even though the hideDisabled button is correctly enabled.

The topmost technique, T1156, is missing its tactic field (usually "tactic": "persistence"). Re-adding this field makes the layer file display as expected, but without it all techniques are visible.

Add faceting of the techniques by the metadata

One example is would be to enable users to show techniques that you can detect if you have a certain data source. Another example would be to show techniques by required permissions, but in reality it might make sense to do it for many of the tagged value lists in ATT&CK.

Add a Shape Layer

Would it be possible to include a layer for shapes (e.g. circles/ovals) to highlight specified techniques in addition to colors. For example, you may color techniques based on your defensive coverage, and then add a set of colored circles on top of that to visualize the techniques used by a threat.

Allow configuration of click-behavior

For applications where the Navigator will be embedded in a webpage and the various filter and layer and technique controls disabled, it would be useful to allow the developer to control click behavior. Specifically, it would be useful to allow the developer to disable the "normal" left & right click behavior and substitute a mode where any click on a technique in the matrix calls out to a configurable URL and passes the tactic and technique as parameters. This is similar to the feature where additional context menu items can be added.

Add ability to disable navigator features

Use a query string in the navigator URL to specify a set of features to disable, such as tabs, annotations or specific layer controls. This feature would go hand in hand with #13, allowing the user to embed a feature-minimal navigator instance.

Generate and Publish Layers with ATT&CK Updates

We should build a list of the set of layers that we think should be generated and published with each ATT&CK update and then create a process to generate these layers.

An example of this is creating layers that cover process information or command-line arguments for techniques those particular data sources apply to. A similar layer generation process could also be used to create layers based on mitigations.

Adding 'Default Layer' option

This would allow a user to specify a default layer that will be shown every time the Navigator is opened, without having to manually upload it every time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.