Project configuration
Projects (aka builders) 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.
Royal.yaml
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.
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 Royal Linter.
Command schema
Each item in the command schema section of your configuration has the following structure.
Build arguments
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
.
Dockerfile
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.
Last updated