Coder Social home page Coder Social logo

cmu-sei / cdas Goto Github PK

View Code? Open in Web Editor NEW
24.0 7.0 6.0 56 MB

This program generates cyber attack scenarios for use in cyber training exercises, red team planning, blue team planning, automated attack execution, and cybersecurity policy analysis.

License: Other

Python 86.32% HTML 12.55% CSS 1.14%
simulation cyber-training-exercises cybersecurity threat-actors policy-analysis scenarios

cdas's Introduction

Cyber Decision Analysis Simulator - CDAS

CDAS Logo

Overview

This program generates cyber attack scenarios for use in cyber training exercises, red team planning, blue team planning, automated attack execution, and cybersecurity policy analysis. CDAS generates documentation for these scenarios in the form of cyber incident reports and supporting contextual information (information on countries and threat actors). Scenarios can be based on real countries and geopolitical context, or have this context generated psuedo-randomly. Scenarios can use real APTs or have them generated pseudo-randomly to match the geopolitical context. Simulated cyber events are then generated based on APT motivation and organization vulnerability.

Features

  • Country and geopolitical context generation
  • APT generation
  • Cyber event generation (incidents, attacks, intelligence)
  • Output formats: PDF, JSON, MISP and/or HTML

ToDo

  • Country relationship details
  • Detailed representation of defender networks (asset improvement)
  • Visualization of relationships between data points
  • Improved world map generation
  • "web feeds" of intelligence/events (ex. news reports, dark web posts, etc.)

Components

  • Agents: Threat actors, defenders (companies)
    • Friendly, enemy, and neutral players in the simulation
  • Assets: Cyber infrastructure
    • Networks, software, hardware, configurations, and vulnerabilities
  • Context: Geopolitical context
    • Countries, country attributes, and relationships with other countries which drive agent decision making
  • Simulation
    • Decision parameters, simulation parameters, and output/formatting controls

Getting Started

These instructions will get you a copy of the project up and running on your local machine. For detailed instructions on how to configure and use CDAS, see the User Guide.

Prerequisites

CDAS installs the following packages and their dependencies upon setup:

numpy
reportlab
drawSVG
cyberdem

Installing

  1. Download CDAS and unzip the download folder
  2. From within the top-level cdas folder (where setup.py is located) run
$ pip3 install .
  1. To test that CDAS is installed properly run
$ python3 -m cdas -c sample_configs/randomize_all_small_pdf.json -v
Setting up directories...
Creating fake countries...
Creating fake threat actors...
Running simulation...
        Round 1
        Round 2
        Round 3
        Round 4
        Round 5
Saving output...
        pdf
Done

CDAS should finish with no errors and the results will be in a folder called cdas-output. Results will include

  • SVG map of countries
  • A "pdf" folder containing
    • 'actors' folder containing PDF files with threat actor descriptions
    • 'countries' folder containing PDF files with country attributes
    • 'reports' folder containing PDF files with event reports
    • 'defenders' folder containing PDF files with organization descriptions

Configuration

CDAS is configured via a required json file. You will find several sample configuration files in the sample_configs folder. Users can change variables related to geopolitical context generation, asset generation, agent generation, whether to randomize or use real world data, and more. See the User Guide for further instructions.

Additionally, there are three available command line flags: the required config-file, and the optional input and output directories. See the help menu for information on available flags.

$ python3 -m cdas -h
usage: __main__.py [-h] -c CONFIG_FILE [-i INPUT_DIRECTORY] [-o OUTPUT_DIRECTORY] [--verbose]

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG_FILE, --config-file CONFIG_FILE
                        configuration file (json)
  -i INPUT_DIRECTORY, --input-directory INPUT_DIRECTORY
                        directory for specifying custom data
  -o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY
                        directory for storing results
  --verbose, -v         v for basic status, vv for detailed status

Simulation Details

Model

  • type - the player's prioritization of the security triad (Confidentiality, Integrity, Availability). For example, a defender listed as type, "CIA", prioritizes confidentiality the most and availability the least. An attacker listed as, "CIA", prioritizes espionage the highest (breaking confidentiality) and disrpution/denial (breaking availability) the least.

License

Copyright 2020 Carnegie Mellon University. See the LICENSE.md file for details.

Acknowledgements

cdas's People

Contributors

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cdas's Issues

Errors

Im coming across a number of issues with this;

File "C:\Python37\lib\runpy.py", line 193, in run_module_as_main
"main", mod_spec)
File "C:\Python37\lib\runpy.py", line 85, in run_code
exec(code, run_globals)
File "C:\Users\uname\Desktop\CDAS\cdas_main
.py", line 589, in
main()
File "C:\Users\uname\Desktop\CDAS\cdas_main
.py", line 483, in main
widgets.generate_network(10, 10, fs)
File "C:\Python37\lib\site-packages\cyberdem\widgets_init_.py", line 147, in generate_network
device_types=[d])
File "C:\Python37\lib\site-packages\cyberdem\base_init_.py", line 574, in init
self.device_types = device_types
File "C:\Python37\lib\site-packages\cyberdem\base_init_.py", line 590, in device_types
DeviceType().check_prop(value)
File "C:\Python37\lib\site-packages\cyberdem\enumerations_init
.py", line 164, in _check_prop
raise ValueError(f'"{t}" is not a valid value for DeviceType')
ValueError: "StorageDevice" is not a valid value for DeviceType

Consult: Mitre ATT&CK Adversary Datasets

Hi

Does your project work with the Mitre ATT&CK Adversaries?

Like if I wanted to have an emulation/simulation model from CDAS on apt-c-36, how would I use your project?

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.