Project configuration
Last updated
Last updated
Projects (aka ) are folders containing source code and other information needed to compile agents. Agents can be written in whatever language you prefer, but each project MUST follow a certain schema.
Only the required files / folders are shown in the project root tree above.
All included items are name and case sensitive, except service.py
, which needs to be implemented in some python file regardless.
The royal.yaml configuration file is arguably the most important file in your project. It contains all extra build options for your agent, as well as commands and their details, such as the number of parameters required.
Here is an example royal.yaml.
Each item in the command schema section of your configuration has the following structure.
Each item in the build arguments section of your configuration has the following structure.
Possible variable types are as follows:
bool
int
string
float
It is strongly recommended to use the linter to validate your royal.yaml
.
docker/builder/Dockerfile
is a Dockerfile used to create the image for the implant builder, which is tagged and started as a container by Monarch.
Here is a valid example of a builder Dockerfile.
CMD
requires 2 arguments.
The path to your royal.yaml
The path to your Python builder service
(optional) The path to your requirements.txt
for your builder service
If provided, Monarch's builder application will install your requirements.txt
. Then, it will start your builder service in the background and load your Royal to provide the C2 with build options and agent commands on request.
Most of the content of Royal is entirely up to you. It's important that the provided configurations are valid. To check its validity, you can use the .