Giter VIP home page Giter VIP logo

decider-2.0.1's Introduction

Decider

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

This project makes use of MITRE ATT&CKยฎ - ATT&CK Terms of Use.

โ— Updates

Aug 4, 2023 - Enterprise v13 Content Added

v13 was back-burnered a bit due to other developments underway. However, we intend to align with the every-6-month cadence of ATT&CK releases.

Update instructions are included in Appendix A - please reach out if you have any difficulties with them. Regardless of environment, the goal is to copy/pull in the new co-occurrence/tree/attack jsons and then run the app.utils.db.actions.add_version module script.

๐Ÿค” What is it?

โฉ In-Short

A web application that assists network defenders, analysts, and researchers in the process of mapping adversary behaviors to the MITRE ATT&CKยฎ Framework.

๐Ÿ“• In-Depth

Decider is a tool to help analysts map adversary behavior to the MITRE ATT&CK Framework. Decider makes creating ATT&CK mappings easier to get right by walking users through the mapping process. It does so by asking a series of guided questions about adversary activity to help them arrive at the correct tactic, technique, or subtechnique. Decider has a powerful search and filter functionality that enables users to focus on the parts of ATT&CK that are relevant to their analysis. Decider also has a cart functionality that lets users export results to commonly used formats, such as tables and ATT&CK Navigator heatmaps.

๐Ÿ“– User Guide

Over Here

๐Ÿ“ Intended Purpose

Decider ultimately tries to make mapping to ATT&CK easier.

It offers:

  • A question tree with pagination of results (structures your progress)
  • Technique search + filtering options
  • Suggestions of other techniques that may have occurred

Decider does not intend to replace the ATT&CK site - but rather, it acts as a complementary tool that leads you there in the end. Only information assisting mapping is included.

๐Ÿ’ป In-App Screenshots

๐ŸŒณ Question Tree

(you are here)[Matrix > Tactic] > Technique > SubTechnique Decider's Question Tree Page

๐Ÿ” Full Technique Search

Boolean expressions, prefix-matching, and stemming included. Decider's Full Technique Search Page

Installation

๐Ÿณ Docker

Best option for 99% of people

git clone https://github.com/cisagov/decider.git
cd decider
cp .env.docker .env

# if you want HTTPS instead of HTTP
# - edit .env
#   + WEB_HTTPS_ON='yes'
# - populate cert / key files
#   + /app/utils/certs/decider.key
#   + /app/utils/certs/decider.crt

sudo docker compose up
# sudo for Linux only

It is ready when Starting uWSGI appears Decider on Docker Boot Terminal Output

Default Endpoint: http://localhost:8001/

Default Login:

Endpoint Determination (.env vars):

  • WEB_HTTPS_ON='' -> http://WEB_IP:WEB_PORT/
  • WEB_HTTPS_ON='anything' -> https://WEB_IP:WEB_PORT/

HTTPS Cert Location:

  • Write these 2 files before docker compose up to set your SSL cert up
    • /app/utils/certs/decider.key
    • /app/utils/certs/decider.crt
  • If either file is missing, a self-signed cert is generated and used instead

DB Persistence Note: Postgres stores its data in a Docker volume to persist the database.

๐Ÿง‘โ€๐Ÿ’ป Manual Install

Ubuntu 22.04

Ubuntu Install Guide

CentOS 7

CentOS Install Guide

Pip Requirements Note

For Everyone
pip install -r requirements-pre.txt
pip install -r requirements.txt
For Developers
pip install -r requirements-dev.txt
pre-commit install

Other OSes

Read the Ubuntu & CentOS guides and recreate actions according to your platform.

Windows

open() in Python uses the system's default text encoding

  • This is utf-8 on macOS and Linux
  • This is windows-1252 on Windows
    • This causes issues in reading the jsons for the database build process
    • Adding encoding='utf-8' as an arg in each open() may allow Windows deployment
macOS

(M1 users at least) Make sure to (1) install Postgres before (2, 3) installing the pip requirements

  1. brew install postgresql
  2. pip install -r requirements-pre.txt
  3. pip install -r requirements.txt

โš™๏ธ Requirements

as of April 24th, 2023

Software

Docker

Exact required version(s) unspecified.

  • An up-to-date version of Docker and Docker Compose should be used.
  • docker compose should work, whereas docker-compose is outdated.

Manual

  • Operating System
    • CentOS 7+
    • Ubuntu 22.04.2+
    • Fedora 37+ works fine (earlier versions should work too)
  • Python 3.8.16
  • PostgreSQL 12+

Hardware

Suggested Specs

Decider has not yet been tested against many concurrent users. This is a rough suggestion.

  • 2-4 Cores
  • 4-8 GB Memory
  • 20 GB Disk Space

Requirements for a single user are quite minimal. Scale according to need. Adjust up or down as desired.

Docker

Resource Usage
Disk Space

Determined using sudo docker system df -v

Note: This does not account for space used in installing Docker itself

Service Image Space Container Space Volume Space
decider-web 1.17 GB 167 kB x
decider-db 241.7 MB 63 B 109.4 MB (db_data)

Build Cache Space: 77.62 MB

Memory

Determined using sudo docker stats

Note:

  • uWSGI is only running 1 process in Docker by default
  • Memory usage increases with connected users and uWSGI processes
Service Freshly Launched After Some Browsing
decider-web 51.8 MiB 97.12 MiB
decider-db 17.09 MiB 40.92 MiB

Manual

Resource Usage
Disk Space

Note:

  • This does not account for space used in installing Postgres itself
  • This does not include the space used in installing / building Python

Fresh repo clone: 92 MB

  • du -h .

Postgres Database Usage: 30 MB

  • SELECT pg_size_pretty( pg_database_size('decider') );

Python Virtual Environment + Packages: 132 MB

  • du -h ./venv/
Memory

Note:

  • uWSGI is running 5 processes in manual deployment by default
  • Memory usage increases with connected users and uWSGI processes

๐Ÿง‘โ€โš–๏ธ ATT&CKยฎ Data Disclaimer

JSONs under app/utils/jsons/source/enterprise-attack are pulled from https://github.com/mitre-attack/attack-stix-data/tree/master/enterprise-attack

Appendix A: Updating ATT&CK Content

๐Ÿณ Docker Update Instructions

# (in repo root)

# pull v13 content
git pull

# remove containers (DB data is safe)
sudo docker compose down

# rebuild images (v13 files copy-over)
sudo docker compose up --build

# add version
sudo docker exec decider-web python -m app.utils.db.actions.add_version --config DefaultConfig --version v13.0

๐Ÿง‘โ€๐Ÿ’ป Manual Update Instructions

# (install root, same as repo root, contains app/ folder)
cd /opt/decider/1.0.0

# use decider app-user, with app venv, for add_version script
sudo -u decider -g decider /opt/decider/python3.8.10/bin/python3.8 -m app.utils.db.actions.add_version --config DefaultConfig --version v13.0

decider-2.0.1's People

Contributors

mygithub23 avatar snyk-bot avatar

Watchers

 avatar

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.