Advanced system pre-requisites

This page details the system pre-requisites for the server. In most installations, reading the basic pre-requisites should be sufficient.

Storage

The table below shows how Reven organizes its data.

PathComment
VMThe VM repository containing the QEMU images, should be fast for snapshot save/load operations.
Reven scenariosScenario-specific files such as their binaries, the recordings, the replay files, which may be quite large (hundreds of GB).
Storage requires a high I/O throughput, to get the best performance out of Reven (e.g. SSD).
IMPORTANT: Since this directory will contain SQlite databases, be careful not to have it being in an NFS mount, or you may experience some difficulties and bugs.
PDBsCan be shared between users and/or machines.
ArchivesThe scenarios exports. Can be used for backups.
Storage can be slow, should be safe (RAID, ZFS, ...).
Temporary directoryA work directory for Reven. The faster the better.
Putting that directory in a RAMFS mount point will even help reduce latency during scenario recording.

During the installation process, you will have to provide a base data folder. The table below shows the default path configuration accordingly defined in the esReven docker-compose file. ${DATA} represents the base data folder.

NOTE: you can alter these mappings individually after following the installation process.

PathDefault docker-compose.yml volume mapping
VM${DATA}/reven/VMs:/VMs
Reven scenarios${DATA}/reven/Reven2:/Reven2
PDBs${DATA}/reven/symbols:/home/reven/.local/share/reven/symbols
ArchivesNone by default, but should look like this: /path/to/Archives:/Reven2/Archives
Temporary directoryNone by default, but should look like this: /path/to/very/fast/disk:/Reven2/tmp

Networking

The list below shows networking requirements and options between the Reven server and other machines. Make sure any filtering device is configured to allow these connections.

Incoming connections:

  • Main Project Manager interface: QUASAR_UWSGI_PORT By default, the Project Manager listens on port 8880.

  • VMs and Axion Web usage: QUASAR_USE_VNC=True By default, VMs and Axion displays are served through port 6080.

  • Reven server ports for Axion, Python API, WinDbg bridge: Reven server listens on any port of the defined port range (REVEN_BACKEND_PORT_RANGE in .env), which defaults to [14000, 14099]. You may want to access these ports when using Axion, the Reven Python API or the WinDbg bridge from a remote client. In this case a VPN may prove useful.

  • Debugger-Assisted Recording ports for WinDbg bridge: The debugger-assisted recording server listens on any port of the defined port range (REVEN_VMI_PORT_RANGE in .env), which defaults to [14100, 14199]. You may want to access these ports when using WinDbg bridge from a remote client. In this case a VPN may prove useful.

Out-going connections:

  • Connections to the symbol servers: QUASAR_SYMBOL_SERVERS Any symbol server listed in the symbol server list must be accessible to the Project Manager and the Reven server.

  • Connection to ret-sync (IDA/Ghidra): IDA/Ghidra synchronization with a Reven trace requires Axion to connect to the machine running IDA/Ghidra (port 9100 by default). Here again, a VPN may prove useful.

NOTE: When the installation is on a machine using a proxy to access the network you should set QUASAR_HTTP_PROXY and QUASAR_HTTPS_PROXY so that the symbol servers are accessible. Please refer to the settings file for more information and examples about how to fill out these variables.