Giter Club home page Giter Club logo

sage's Introduction

SAGE (IntruSion alert-driven Attack Graph Extractor)

Repository to accompany our publications

"SAGE: Intrusion Alert-driven Attack Graph Extractor" at VizSec'21, and

"Alert-driven Attack Graph Generation using S-PDFA" at TDSC'21.

Hassle-free way to run SAGE

Switch to the docker branch to download and run SAGE inside a docker container. No additional installations are required in that case.

Run SAGE yourself

Requires

Usage

python sage.py path_to_json_files experiment_name [-h] [-t T] [-w W] [--timerange STARTRANGE ENDRANGE] [--dataset {cptc,other}] [--keep-files]

Required positional arguments:

  • path_to_json_files: Directory containing intrusion alerts in json format. See alerts/ for examples of suricata alert datasets.

Ideal setting: One json file for each attacker/team. Filename considered as attacker/team label.

  • experiment_name: Custom name for all artefacts.

Figures, trace files, model files, attack graphs are saved with this prefix for easy identification.

Options:

  • -h, --help: Show the help message and exit.
  • -t: Time window in which duplicate alerts are discarded (default: 1.0 sec).
  • -w: Aggregate alerts occuring in this window as one episode (default: 150 sec).
  • --timerange: A floating-point tuple limiting the alerts that are parsed and involved in the final attack graphs (default: (0, 100)).

If not provided, the default values of (0,100) are used, meaning alerts from 0-th to 100-th hour (relative to the start of the alert capture) are parsed.

  • --dataset: The name of the dataset with the alerts (default: other, available options: cptc, other).

Since the IP addresses of the attackers are known for the CPTC dataset, irrelevant alerts are filtered out.

  • --keep-files: Do not delete the .dot files after the program ends.

By default, the generated dot files with the attack graphs are deleted. They might, however, be useful for analytics or testing.

Examples:

  • Run SAGE with the default parameters on the CPTC-2017 dataset: python sage.py alerts/cptc-2017/ exp-2017 --dataset cptc
  • Run SAGE with the time window of 2.0 seconds and the alert aggregation window of 200 seconds on the CPTC-2018 dataset: python sage.py alerts/cptc-2018/ exp-2018 -t 2.0 -w 200 --dataset cptc
  • Run SAGE on the CCDC dataset and do not delete the dot files (you can omit --dataset other): python sage.py alerts/ccdc/ exp-ccdc --dataset other --keep-files

Tip: in case you often use the same non-default values, you can create an alias (e.g alias sage="python sage.py -t 1.5 --dataset cptc --keep-files" and then run sage alerts/cptc-2017/ exp-2017)

First time use

  • Clone FlexFringe repository.

  • Move spdfa-config.ini file to FlexFringe/ini/ directory. Alternatively, you can set the path_to_ini variable in sage.py to "./spdfa-config.ini".

  • In case you move the FlexFringe/ directory to another location, update the function flexfringe in model_learning.py accordingly.

  • You can find the compressed alerts for the Collegiate Penetration Testing Competition (CPTC) and Collegiate Cyber Defense Competition (CCDC) datasets (taken from the linked sources) in the alerts/ directory. To uncompress the alerts, run:

    find alerts/ -type f -name '*.gz' | xargs gunzip

    from the root directory of the repository. You can add other datasets, however make sure that they follow the same format.

  • You can run SAGE with the default parameters using the following command:

    python sage.py alerts/ firstExp,

    where alerts/ contains the uncompressed alerts.

  • NB! If you use the CPTC dataset, don't forget to add --dataset cptc, e.g.:

    python sage.py alerts/ firstExp --dataset cptc

  • For other options, see Usage section above.

If you use SAGE in a scientific work, consider citing the following papers:

@inproceedings{nadeem2021sage,
  title={SAGE: Intrusion Alert-driven Attack Graph Extractor},
  author={Nadeem, Azqa and Verwer, Sicco and Yang, Shanchieh Jay},
  booktitle={Symposium on Visualization for Cyber Security (Vizec)},
  publisher={IEEE},
  year={2021}
}
@article{nadeem2021alert,
  title={Alert-driven Attack Graph Generation using S-PDFA},
  author={Nadeem, Azqa and Verwer, Sicco and Moskal, Stephen and Yang, Shanchieh Jay},
  journal={IEEE Transactions on Dependable and Secure Computing (TDSC)},
  year={2021},
  publisher={IEEE}
}
@inproceedings{nadeem2021enabling,
  title={Enabling visual analytics via alert-driven attack graphs},
  author={Nadeem, Azqa and Verwer, Sicco and Moskal, Stephen and Yang, Shanchieh Jay},
  booktitle={SIGSAC Conference on Computer and Communications Security (CCS)},
  year={2021},
  publisher={ACM}
}

Azqa Nadeem

TU Delft

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.