Coder Social home page Coder Social logo

cstedz / cdas Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cmu-sei/cdas

0.0 0.0 0.0 54.51 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 85.90% HTML 12.93% CSS 1.17%

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

License

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

Acknowledgements

cdas's People

Contributors

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