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.