mitre / cascade-server

CASCADE Server
Apache License 2.0
264 stars 53 forks source link

CASCADE

CASCADE is a research project at MITRE which seeks to automate much of the investigative work a “blue-team” team would perform to determine the scope and maliciousness of suspicious behavior on a network using host data.

The prototype CASCADE server contained in this repository has the ability to handle user authentication, run analytics, and perform investigations. The server runs analytics against data stored in Splunk/ElasticSearch to generate alerts. Alerts trigger a recursive investigative process where several ensuing queries gather related events. Supported event relationships include parent and child processes (process trees), network connections, and file activity. The server automatically generates a graph of these events, showing relationships between them, and tags the graph with information from the Adversarial Tactics, Techniques & Common Knowledge (ATT&CK) project. The events in
generated graph can also be displayed as a timeline.

To reduce the false-positive rate, the CASCADE servers analytics can also be tuned analytics to the environment it is deployed in.

The server also offers the ability to express simple analytics in a platform agnostic query language. Native CASCADE queries are automatically translated by the server into Splunk and ElasticSearch queries depending on which platform the server is connected to. The server allows users to easily create new analytics, and comes bundled with analytics to detect several ATT&CK techniques.

For more information on how CASCADE performs these activities refer to the user guide. The functionality is exposed via a RESTful API and a web interface. CASCADE uses Python Flask and Gevent to create an asynchronous HTTP server.

Interactive Demo:

If you'd like to play around with Cascade and some sample data, check out the interactive demo in the brawl-demo directory.

Requirements

There are a number of requirements to run CASCADE:

Installation

Running the CASCADE server

python cascade.py --help

To start the web server:

python cascade.py

A second process is responsible for executing queries against Splunk or ElasticSearch and should be started as well (e.g. in a second console):

python cascade.py --jobs

Getting Started

Account Creation

View Example Session

@rossdwolf has created an example session out of data released by MITRE's BRAWL project. This data was generated by an automated adversary operating in a virtual environment. To read more about this effort see the repository for this BRAWL game. To explore the data:

Configure Connection to ElasticSearch/Splunk Data Source

NOTE: CASCADE expects data to be normalized according to its Data Model.

Configure an account to use a database

Create a Session and Run Analytics

NOTE: To use a data source, you must 1) have previously created a database connection and 2) added it to your CASCADE user's profile

Database Management

Exporting to a file

python cascade.py --export path/to/cascade_dump.bson 
    [--collection analytics]
    [--collection users]
    [--collection <collection name>]

Importing from a file

WARNING: Importing a CASCADE database from a file will overwrite any existing content.

python cascade.py --import path/to/cascade_dump.bson