Git Product home page Git Product logo

megha-bose / webappmtd Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 149.35 MB

Contains Code for the Papers "Moving Target Defense under Uncertainty for Web Applications" and "Learning Effective Strategies for Moving Target Defense with Switching Costs" written by Vignesh Viswanathan, Megha Bose and Praveen Paruchuri.

Home Page: https://arxiv.org/pdf/2301.09892v1.pdf

Python 75.68% Shell 10.19% Jupyter Notebook 14.13%
cybersecurity moving-target-defense multi-armed-bandits

webappmtd's Introduction

Moving Target Defense under Uncertainty

The data and code are present in five main directories:

  1. Data: Contains the given and generated datasets. The files in the input subdirectory are sent as input to the algorithms in Expts directory and their output is sent to the output subdirectory.

    • This folder contains input datasets for both general sum and zero sum cases. Each dataset consists of vulnerability lists for each configuration, switching costs, reward values for both the attacker and defender and complete list of possible system vulnerabilities in the concerned system of the dataset. The input files go as [dataset number](attacks.txt, switching.txt, utilities.txt, vulnerabilities.txt).

    • In the output files, the [dataset number]output_[attacker strategy] file stores the utilities in each timestep while [dataset number]overall_out_[attacker strategy] stores the average switches, runtime and utilities per iteration.

    • General sum game datasets and zero sum game cases are separated in different directories.

  2. Data_Gen: Creates the text files. It contains the following files:

    • BSSG_input.txt: Data from Sengupta's github library for the small NVD dataset.

    • data_generator.py: Generates random datasets. To run, python3 data_generator.py n1 n2 generates input files in Data/input/ for datasets n1 to n2
      0 should be added as third argument if the command is run for zero sum game datasets

    • nvd_data_gen.py: Generates NVD-based datasets.

      Make a directory named nvd_data and add data of required years from NIST NVD data feed.

      To run, python3 nvd_data_gen.py n1 n2 y1 y2 generates input files in Data/input/ for datasets n1 to n2 using vulnerabilities from NVD database from year y1 to year y2

    • parser.py: Parses data from Sengupta's library and makes it dataset 0 inside Data/input/general_sum/ directory

  3. Expts: Contains the main code that uses different attacker strategies to generate output.

    • Run them like python3 attacker_[attacker_strategy].py n1 n2 to generate output files for datasets n1 to n2 using corresponding attacker strategy. 0 should be added as third argument if the command is run for zero sum game datasets.

    • Run compare_[attacker strategy].py n1 n2 to generate switches, runtime and utility graphs inside graphs directory in the corresponding output directory for datasets n1 to n2 for an attacker strategy. 0 should be added as third argument if the command is run for zero sum game datasets

  4. Analysis: Contains python notebooks to generate graphs for detection of critical vulnerabilities and graphs based on the output of the experiments.

  5. Graphs: Contains all the graphs generated.

webappmtd's People

Contributors

megha-bose avatar vignesh-viswanathan avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

webappmtd's Issues

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.