URSID

URSID automates the specification, refinement, and deployment of attack scenarios in dedicated, reproducible environments.

URSID enables - Reproducible vulnerability testing environments, - CTF creation,
- Pentest training, - Security tool evaluation.

Origin: URSID originates from research carried out by the PIRAT team.

See: Besson, P.-V.; Viet Triem Tong, V.; Guette, G.; Piolle, G.; Abgrall, E. (2023). URSID: Automatically Refining a Single Attack Scenario into Multiple Cyber Range Architectures. FPS 2023. — BibTeX ref

Usage: URSID has been used to create several pentest exercices, including CasinoLimit and PirHack played at BreizhCTF (2024 & 2025) and RESSI (2025).

Source

URSID source code can be found on the repository.

Documentation

Documentation of the URSID library is here.

Documentation of the implemented techniques and software is here.

How to use

Usage: ursid [OPTIONS] COMMAND [ARGS]...

Options:
  -v, --verbose   Increase output verbosity
  -s, --no-input  Run the program without requiring user input
  --version       Show the version and exit.
  --help          Show this message and exit.

Commands:
  check      Validate URSID files.
  deploy     Deploy instances from scenario variants.
  destroy    Destroy instances of variants.
  init       Initialize a scenario from its configurations files.
  provision  Provision instance of variants.
  status     Status command.
  test       Test command.

Initialize a scenario

Usage: ursid init [OPTIONS] SCENARIO_PATH

  Initialize a scenario from its configurations files.

  SCENARIO_PATH is the path of the directory containing the scenario.

Options:
  -n, --number INTEGER        The number of variant of different procedural
                              scenarios that will be generated.
  -o, --output-dir DIRECTORY  The output directory (defaults to the current
                              working directory)
  --help                      Show this message and exit.

Deploy a variant

Usage: ursid deploy [OPTIONS]

  Deploy instances from scenario variants.

Options:
  -l, --list                      List available scenario variants
  -b, --backend [parallels|virtualbox|openstack|cyberrange|proxmox|libvirt]
                                  Deploy backend
  -i, --instance INTEGER          The number of the instance to create. By
                                  default, only one is created.
  -v, --variant TEXT              Deploy specific variant (see list with "-l")
  -f, --from_file FILE            Path to a file containing a list of instance
                                  names.
  -w, --workers INTEGER           The number of workers used to deploy
                                  instances in parallel.
  --help                          Show this message and exit.

Provision an instance

Usage: ursid provision [OPTIONS]

  Provision instance of variants.

Options:
  -l, --list             List available targets (scenario variants and
                         instances)
  -v, --variant TEXT     Provision all the existing instances of a variant
  -i, --instance TEXT    Provision a specific instance.
  --enable-parallelism   Allow provisionning multiple machines of the same
                         instance in parallel
  -w, --workers INTEGER  The number of workers used to provision multiple
                         instances in parallel.
  --snapshot             Provision from a snapshot of the deployed instance.
  --help                 Show this message and exit.

Destroy an instance

Usage: ursid destroy [OPTIONS]

  Destroy instances of variants.

Options:
  -l, --list             List available targets (scenario variants and
                         instances)
  -v, --variant TEXT     Destroy all instances of a variant
  -i, --instance TEXT    Destroy specific instance of a variant (see list with
                         "-l")
  -w, --workers INTEGER  The number of workers used to destroy instances in
                         parallel.
  --help                 Show this message and exit.

Check the status

Usage: ursid check [OPTIONS] COMMAND [ARGS]...

  Validate URSID files.

Options:
  --help  Show this message and exit.

Commands:
  scenario  Check the validity of URSID scenarios.
  software  Check the validity of URSID softwares.

Test

Usage: ursid test [OPTIONS]

  Test command.

Options:
  --help  Show this message and exit.