Giter VIP home page Giter VIP logo

center-for-threat-informed-defense / attack-workbench-frontend Goto Github PK

View Code? Open in Web Editor NEW
294.0 69.0 60.0 8.45 MB

An application allowing users to explore, create, annotate, and share extensions of the MITRE ATT&CK® knowledge base. This repository contains an Angular-based web application providing the user interface for the ATT&CK Workbench application.

Home Page: https://ctid.mitre-engenuity.org/

License: Apache License 2.0

JavaScript 0.14% TypeScript 69.15% HTML 23.10% SCSS 7.46% Dockerfile 0.14% CSS 0.02%

attack-workbench-frontend's Introduction

ATT&CK Workbench Frontend

The ATT&CK Workbench is an application allowing users to explore, create, annotate, and share extensions of the MITRE ATT&CK® knowledge base.

Organizations or individuals within the ATT&CK community can initialize an instance of the application to serve as the centerpiece to their own customized instance of the ATT&CK knowledge base, attaching other tools and interfaces as desired. Through the Workbench this local knowledge base can be extended with new or updated techniques, tactics, mitigations groups, and software. Finally, the ATT&CK Workbench provides means to share these extensions with the greater ATT&CK community if so desired, facilitating a greater level of collaboration within the community than is possible with current tools.

We developed the Workbench with the ATT&CK user community in mind. If MITRE ATT&CK is at the core our organization’s security operations, you actively track threats against ATT&CK, align your defenses to ATT&CK, or plan your security investments based on ATT&CK, the Workbench is for you. The ATT&CK Workbench enables a number of important use cases within the ATT&CK community:

  • Cyber Threat Intelligence: Take notes on techniques, groups, and other objects to collaborate within a threat intelligence team. Update your knowledge base with new mappings as soon as new threat reports are released.
  • Defensive Planning: Stay up to date with the evolving threat landscape by downloading new releases of ATT&CK automatically. Fill in gaps in open-source reporting by creating new groups and software and seamlessly integrate them into the existing ATT&CK knowledge base.
  • Red Teaming: Track and manage coverage of Red Team engagements the same way you track your ATT&CK coverage.
  • Collaboration with ATT&CK and the community: Share your custom datasets with the ATT&CK community and download datasets created by others.

This repository contains an Angular-based web application providing the user interface for the ATT&CK Workbench application, as well as the main documentation regarding its use. The ATT&CK Workbench application requires additional components for full operation. See the install and run instructions for more details about setting up the entire project.

Frontend Documentation

For more information about the ATT&CK Workbench, please see the docs folder. The contents of the docs folder is also available in the in-app help page.

  • usage: documentation about how to use the ATT&CK Workbench application and its full capabilities.
  • changelog: records of updates to this application.
  • collections: documentation about the collection and collection index data type.
  • integrations: instructions for integrating other tools with the ATT&CK Workbench.
  • contributing: information about how to contribute to this project.

Collections and Collection Indexes

Importing and exporting data from the ATT&CK Workbench is facilitated through the Collections and Collection Indexes. These data formats also enable record keeping of ATT&CK versions and extensions.

  • Collections

    Collections are sets of related ATT&CK objects, and may be used to represent specific releases of a dataset such as “Enterprise ATT&CK v9.0” or any other set of objects one may want to share with someone else. Collections are represented in STIX 2.1.

    Collections for all current and prior ATT&CK releases can be found on our attack-stix-data GitHub repository.

  • Collection Indexes

    Collection indexes are organized lists of collections intended to ease their distribution to data consumers. Collection indexes track individual releases of given collections (e.g Enterprise v7, Enterprise v8, Enterprise v9) and allow applications such as the Workbench to check if new releases have been published. Collection Indexes are represented as JSON objects.

    The ATT&CK collection index can be found on our attack-stix-data GitHub repository. The ATT&CK Workbench is pre-configured to recommend this index in the "add a collection index" interface.

More information about collections and collection indexes can be found in the collections document.

Install and run

The ATT&CK Workbench application is made up of several repositories. For the full application to operate each needs to be running at the same time. The docker install instructions will install all components and is recommended for most deployments.

  • ATT&CK Workbench Frontend (this repository)

    The front-end user interface for the ATT&CK Workbench tool, and the primary interface through which the knowledge base is accessed.

  • ATT&CK Workbench REST API

    REST API service for storing, querying and editing ATT&CK objects, as well as for managing collections, collection indexes, and collection subscriptions.

The manual install instructions in each repository describe how each component to be deployed to a separate machine or with customized settings.

Installing using Docker

Please refer to our Docker install instructions for information on installing and deploying the the full application using Docker. The docker setup is the easiest way to deploy the application.

Manual Installation

Requirements

Installing dependencies

This step is necessary for cases where the app is deployed locally through ng serve or ng build. It can be skipped for installs using docker (above).

  1. Navigate to app
  2. Run npm install to install required packages

Serve on local machine

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

Compile for use elsewhere

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

If you're building the app for production, use ng build --prod which will use the production environment instead of the development environment. See modifying the environment for more information.

Modifying the environment

The ATT&CK Workbench Frontend is configured to connect to the REST API running under its default configuration. If the applications is configured to run on a different port, or if the application is to be hosted for access on multiple machines, the environment must be edited to reflect the URLs and port.

These environment properties can be edited under src/environments:

  • src/environments/environment.ts is the development environment with configurations for when it is hosted on a local machine or is being actively developed. This is the default environment file used when building the application.
  • src/environments/environment.prod.ts is the production environment for deployment inside of an organization or in cases where the user is not developing the application. When the application is built for production deployments (ng build --prod) this environment file is used.

Setting the Default Landing Page

To allow for additional customization, the ATT&CK Workbench enables users to set a default landing page for their instance of Workbench. To set the default landing page:

  • Open up the config file, found at src/assets/config.ts.
  • Set the defaultLandingPage variable to the url path you want to set as the default landing page
    • You can set the default to a more general page, such as the tactic list view "defaultLandingPage": "tactic", or to a specific page, such as a certain matrix "defaultLandingPage": "matrix/x-mitre-matrix--eafc1b4c-5e56-4965-bd4e-66a6a89c88cc"

PKI Certificates

For additional troubleshooting and installation of security certificates for use by ATT&CK Workbench, pleaser refer to PKI Certificates instructions.

Related Work

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/

MITRE ATT&CK

MITRE 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

ATT&CK Navigator

The ATT&CK Navigator is a web-based tool for annotating and exploring ATT&CK matrices. It can be used to visualize defensive coverage, red/blue team planning, the frequency of detected techniques, and more.

https://github.com/mitre-attack/attack-navigator/

Notice

Copyright 2020-2023 MITRE Engenuity. Approved for public release. Document number CT0020 and public release case number 22-3206.

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-workbench-frontend's People

Contributors

alexishp80 avatar allisonrobbins avatar clemiller avatar dependabot[bot] avatar elegantmoose avatar eljocko avatar iandavila avatar iguannalin avatar isaisabel avatar jonathanbaker avatar jondricek avatar mticmtic avatar nickamon avatar seansica avatar vince-a-m 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

attack-workbench-frontend's Issues

Basic matrix view page

As a user of the application, I want to be able to view the info for objects similarly to how I would on the ATT&CK Website.

Basic support for matrix view would include the matrix data but not necessarily a rendered image of the full matrix

Create citation icon

As a user, I want the application iconography to represent the actions being performed.

The citation manager needs a fitting icon. Probably something like [1] in the theme of material icons to replace the superscript icon being used currently.

Collection view page

As a user of the ATT&CK Website, I want to be able to view the contents of a subscribed collection along with collection information such as name, description, and version.

I want to be able to move to pages for the specific version of the given object that was included in the collection, even if that version is up-to-date.

Design domain SDO

Determine how to represent the x-mitre-domain SDO.

  • Should have name, description
  • Should define allowed values for domain-specific properties (which are not themselves SDOs) such as platforms
  • Should be able to specify additional properties for specific SDOs, such as the "tactic types" property of techniques within the Mobile domain.

Relationship view modal

As a user, I want to be able to view a relationship between two objects.

  • Relationships should be "named" according to the schema ”[source name] [verb] [target name]” e.g ”APT19 uses PowerShell”
  • Relationships are typically shown in a stix-list on the pages the relationships are attached to. However, the full relationship information (including external references, which is not visible in the table) should also be viewable in a modal openable from that table.

Add ATT&CK Website integration

As a user of the application, I want to be able to specify in a config file the URL of an attached ATT&CK Website instance. Clicking on the "view on website" button for a given page should open the most relevant page on the ATT&CK website. Said button should be hidden when there is no relevant page.

Add description prompt to deprecated objects

As a user of the Federated Editor, I want the UI to prompt me to write well documented data which integrates well with other portions of the infrastructure.

On the ATT&CK Website, the first paragraph of the description field on deprecated objects is used for the deprecation justification. When an object is marked as deprecated, a hint should be added to add this justification paragraph.

Tactic view page

As a user of the application, I want to be able to view the info for objects similarly to how I would on the ATT&CK Website.

View tag properties

Implement a generic display for tag properties

Tag properties are properties of a STIX object which have one or more string values. For example, platform, domain, aliases, tactics (for techniques) are all tag properties.

Tag properties should be displayed as a chip list:
image

Scrolling doesn't work in safari

As a user, I want to be able to use the application in any of my favorite browsers (Chrome, Firefox, Safari).

Scrollbars don't appear in safari, and scrolling cannot occur. Quite possibly a display: flex related compatibility issue.

Edit list properties

As a user, I want to be able to edit a list property of a STIX object. See #29 for more info on list properties.

  • If the user can enter any value in the tag property, display as a normal chip list.
  • If the user is restricted in what values they can enter:
    - If the options are based on STIX objects (E.g when specifying tactics), editing should open a modal with a STIX-list for selecting additional values.
    - Otherwise, use a select with the chip-list to limit choices to valid values.

Add software edit page

As a user of the application, I want to be able to create a new version of an object, or a new object entirely.

Add group edit page

As a user of the application, I want to be able to create a new version of an object, or a new object entirely.

ATT&CK ID component

As a user, I want to be able to see the ATT&CK ID of a STIX object consistently.

See also #52.

Add configuration file

  • As a developer of the Federated ATT&CK Editor, I want to be able to specify configuration in a single file. I want to be able to include comments and other structural/documentation helpers in the config file.
  • As a user of the Federated ATT&CK Editor, I want the config file to be easy to find and straightforward to use.

Add a config.ts file to the src folder. This file should include (initially):

  • Configurations for the host and port for the collection manager and rest API.

Full matrix view

As a user of the application, I want to be able to view the info for objects similarly to how I would on the ATT&CK Website. See also center-for-threat-informed-defense/federated-attack-editor#7.

As a user of the application, I want to be able to see the full matrix on the matrix view page with techniques, tactics, and so forth.

Add history view

As a user of the application, I want to be able to see the history of a given object and view the object at different places in its history.

This view should be accessible on the view page of each object. There should be the ability to view objects themselves, or the diffs between two adjacent versions.

There should also be a master history view showing changes for all objects.

Add tactic edit page

As a user of the application, I want to be able to create a new version of an object, or a new object entirely.

Import a collection / preview contents

As a user, I want to be able to import a collection from a file upload, remote URL (specified by the user of from a collection index).

This interface should provide an import "preview" that displays the contents of the collection. The user should be able to remove items from the import that they don't want to import.

See also #74.

Edit descriptive properties

As a user, I want to be able to edit a descriptive property of a STIX object. See #30 for more on descriptive properties.

When editing a descriptive property, display as a textarea in raw notation format (e.g show LinkByIDs, raw citations, raw markdown). The descriptive-property-edit component should allow hint text to be specified (to support #27).

Add technique edit page

As a user of the application, I want to be able to create a new version of an object, or a new object entirely.

Hamburger menu

As a user of the application, I want the app menu bar to collapse into a hamburger menu when not all elements can fit in the view. Currently, elements overflow when the page is narrow, making some inaccessible.

Group view page

As a user of the application, I want to be able to view the info for objects similarly to how I would on the ATT&CK Website.

Create a new collection

As a user of the application, I want to be able to use a wizard interface to create a new collection. I want to be able to do the following:

  1. Select what objects are in the collection
  2. Describe the collection with name, version and description
  3. See where the outputted collection can be retrieved for uploading or sharing.

Relationships between objects should not be automatically added, but rather they should be shown as "not added" (disabled) but should be shown (recommended) explicitly. The user should have to opt-in to every object added to the collection, including relationships.

Add mitigation edit page

As a user of the application, I want to be able to create a new version of an object, or a new object entirely.

Add usage guidance to help page

As a user of the application, I want to know how to use the application.

Add sectioned, searchable documentation in the help page.

  • The help page should pop-over the current page content instead of navigating away, so that users can access this page when editing an object without having to navigate away.
  • The help page content should parse from markdown so that we can make said documentation available in the repo without the user needing to stand-up a live instance of the app.

Add matrix edit page

As a user of the application, I want to be able to create a new version of an object, or a new object entirely.

This should also include the ability to reorder tactics in a matrix.

Project documentation

As a visitor to the repositories, I want to know the purpose and structure of the project.

Add search drawer

As a user of the application, I want to be able to easily search for objects by name and ID. I want the results of my searches to be useful.

Add a search tab to the resources drawer. The search tab should allow the user to search for objects by name or ID. Each result should include the following controls:

  1. View on ATT&CK Website (see center-for-threat-informed-defense/federated-attack-editor#11)
  2. link to View/Edit page
  3. copy LinkByID
  4. Bookmark (see center-for-threat-informed-defense/federated-attack-editor#12)

Relationship edit modal

As a user, I want to be able to edit or create a relationship.

An extension of #43, extend the relationship view modal with edit capabilities.

  • When creating a relationship, the object you're on (before the modal was opened) provides 1/2 of the relationship refs. The other half should be inputted by the user using a stix-list.
  • For existing relationships, the source and target objects can be edited. Possibly a stix-list can be used to select the objects on either end, though the layout may need to be determined since the edit UI is already in a modal.

Clicking off the relationship modal when in edit mode should warn the user so that they don't lose changes.

Domain view page

As a user, I want to be able to view properties of a domain (e.g what domain specific fields are added to objects).

Edit ATT&CK IDs

As a user, I want to be able to edit ATT&CK IDs. I want the edit UI to detect if the ID I want is in use, or to generate a new ID for me that doesn't conflict with any known ATT&CK IDs. I want the edit UI to validate the formatting to ensure that the ID is not malformed.

See also #54.

Software view page

As a user of the application, I want to be able to view the info for objects similarly to how I would on the ATT&CK Website.

View STIX List

Implement a generic list of STIX objects

  • Support searching, filtering, and sorting

  • Use angular material table with expandable rows for basic style:
    out

  • Also used for relationships, e.g "procedure examples". Relationships should be labelled as "[source object name] [relationship verb] [target object name]" e.g "APT3 uses Account Manipulation". The relationship verb may be emphasized to convey that adjacent information is part of the relationship and not the source/target object, e.g:

    image

API

  • [relatedTo]="stix.id" to show relationships with just that object.
  • [type]="'group'" to show only groups, for instance. If used in conjunction with relatedTo, only shows relationships with groups.
  • [query]="query" to use the query for more complicated list setups (e.g show objects in a collection).

Mitigation view page

As a user of the application, I want to be able to view the info for objects similarly to how I would on the ATT&CK Website.

Select STIX list

As a user, I want to be able to select items within a STIX list in order to facilitate behavior in other interfaces.

  • When [selectable]="'one'", allow for selection of a single item within the list.
  • When [selectable]="'many'", allow for selection of multiple items within the list.

Whenever a selection occurs, emit a selectionEvent. The selectionEvent should include the selected objects' STIX IDs so that listeners can update their state with the new selection.

Technique view page

As a user of the application, I want to be able to view the info for objects similarly to how I would on the ATT&CK Website.

Citations finder

As a user, I want to save citations for later use in objects, and find citations that I have previously saved to add to objects I'm editing or creating.

  • Citations finder should be in sidebar
  • Citations can be added in modal opened from trigger in sidebar
  • Citations should also have their own page for listing and adding

Workflow states

As a user of the application, I want to be able to track the workflow state of the object. Workflow states are as follows:

  • WIP: work in progress. Mutually exclusive with awaiting review and reviewed. Editing an object will always mark it as WIP.
  • Awaiting Review: a user wants an admin/reviewer to review their work. Editing an awaiting review object will mark it as WIP.
  • Reviewed. A reviewer/admin has reviewed this object. Editing a reviewed object will mark it as WIP.

Domain edit page

As a user, I want to be able to edit existing domains or create new domains.

  • I want to be able to specify domain-specific properties such as platforms.
  • I want to be able to specify whether STIX objects should be extended with additional properties, such as the "tactic types" property of techniques within the Mobile domain.

View descriptive properties

Implement a generic view for descriptive STIX properties. Descriptive properties are long form text with formatting (e.g markdown, citations, etc). When viewing, use formatting transformations to display as if shown on the attack-website.

Document collection SDO/usage

Document the x-mitre-collection SDO, its properties and its use.

  • Has name, description, x-mitre-version properties
  • Objects are marked with collections using an optional x-mitre-collections, which contains a list of STIX IDs for collections containing that object.
  • New versions of a collection cannot have the same STIX ID, since otherwise objects' collection tags wouldn't point to a unique collection. New versions of a collection are new collections.

Add bookmarks

As a user of the application, I want to be able to bookmark pages in the application. These bookmarks should show up in the "saved" tab of the resources drawer in a searchable list.

Items in this list should have the following features:

  • link to go to the view/edit pages
  • link to view on the ATT&CK Website (see center-for-threat-informed-defense/federated-attack-editor#11)
  • Quick LinkByID access

Draft a new release of an existing collection

As a user, I want to be able to draft a new release of an existing collection.

When drafting a new release, the exact versions of objects from the previous release should be added to the interface for exporting. If a new version of an object exists, it should be indicated and the user should be able to click a button to use the most recent version.

Add TRAM integration

As a user of the application, I want to be able to specify an attached TRAM instance in the config file. I want to be able to search for and view threat reports in a tab of the resources drawer.

External references component

As a user, I want to be able to view the external references of an object in a consistent way.

Built out a component which visualizes the external references of an object. See also #52.

View formatted timestamps

As a user, I want to be able to view timestamps such as created and modified dates in a human-readable way.

Create a timestamp component for displaying timestamps. Timestamps should be conveyed as %d %B %Y (according to Python datetime formatting), e.g 14 October 2020. Hovering over the date should provide the full date and time in a tooltip.

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.