# URSID Homepage
Welcome to the URSID documentation!
## What is URSID
URSID is an **automatic vulnerable architecture generation** tool. By describing an attack scenario on a high-level
(using the [MITRE](https://attack.mitre.org/) technique nomenclature), URSID is able to refine it into several on a
procedural level.
All of the resulting architectures will be vulnerable to the same attack on a technical level, but procedures
(such as exploits available on machines) and secrets (such as passwords) will vary on a machine to machine basis.
Uses for URSID as a tool for researchers include:
- Customized honeypot generation, for instance in order to match a known attacker's prefered modus operandi.
- Cyber-range/CTF/red-team training applications, including AI attackers.
- Log and dataset generation corresponding to specific attacks.
## Requirements
- Python 3.10 or later.
If you wish to also deploy the generated architectures:
- Vagrant 2.2.19 or later.
- Ansible. 2.12 or later.
- VirtualBox v6.1.32 or later.
All tests of URSID were ran on Ubuntu 20.04.
## How URSID works
URSID is comprised of 2 parts:
- The Chouchen module, which refines scenarios from a technical level to a procedural level.
- The Apiculteur module, which converts scenario described on a procedural level them into Vagrantfile and Ansible
playbooks.
The following image summarizes the overall structure of URSID

## Available examples
This repository comes with a few example procedures, which may be added and deployed into scenarios at will.
You may find more information about those [here] (#provided_procedures).
This repository also provides an example attack scenario in the form of the [CERBERE](#cerbere_scenario) scenario.
This scenario is made of 3 machines including 2 simple vulnerable websites, logging tools, and comes with detailed
attack instructions.
## Try it yourself!
To just generate a single procedural scenario associated with the CERBERE scenario, run
```bash
python3 main.py ./example_scenario/cerbere_json.json --refinement_only
```
If you wish to generate more than one in order to showcase variation, run
```bash
python3 main.py ./example_scenario/cerbere_json.json -n YOURNUMBER --refinement_only
```
The generated scenarios will be available in the ./output directory. output_scenario.json files will contain
informations
about each machine of the scenario, and the generated_files directory will contain the files generated for each
machines.
Feel free to browse those and compare them between each generation in order to see the procedural refinement at work.
If you wish to also generate Ansible playbooks and Vagrantfiles (requires correct version of Virtualbox, Vagrant and
Ansible installed), run
```bash
python3 main.py ./example_scenario/cerbere_json.json -n YOURNUMBER
```
If you then wish to deploy one of the instances locally (for instance the first one generated), run
```bash
cd ./output/scenario_0/
vagrant up
```
Note that in the publicly available implementation, different scenarios instances will be able to see each other on the
network.
If you wish to add your own procedures, refer to [](#adding_procedures).
If you wish to create your own scenario (using prebuilt procedures or your own), refer
to [](#creating_your_own_scenario).
Once your scenario is in a .json, run
```bash
python3 main.py PATH_TO_YOUR_JSON -n NUMBER_OF_SCENARIOS_TO_REFINE
```
The project will warn you if the /output directory is not empty.
URSID also offers a proof-of-concept implementation of the refinement process inside a docker container.
In order to refine the CERBERE scenario 5 times and get the resulting files in the REP_PATH directory, run
```bash
sudo docker pull ursidfinal/ursid
sudo docker run -v REP_PATH:/ursid-final/output ursidfinal/ursid
```
## Contributors
- Main contributor and repository maintainer: Pierre-Victor BESSON, PhD student at CentraleSupelec/INRIA.
- Design contributions: Valérie VIET TRIEM TONG, Gilles GUETTE, Erwan ABGRALL and Guillaume PIOLLE, all PhD supervisors.
- Code contribution (Apiculteur): Gireg Maury and Alexandre Monroche, former CentraleSupelec students.
- Special thanks: Alexandre Sanchez.
Questions? Contact pierre-victor.besson@inria.fr
```{toctree}
:maxdepth: 2
:caption: "Contents:"
provided_procedures
adding_procedures
cerbere_scenario
creating_your_own_scenario
on_secret_generation
chouchen_api
apiculteur_api
```
Icon references: Mead icons created by Flat
Icons - Flaticon
Bee icons created by justicon - Flaticon