From a67e5ec9619b39d56c5f35a56256c022ab27c3d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20R=C3=A1ja?= <raja@ics.muni.cz> Date: Mon, 27 Feb 2023 15:28:35 +0100 Subject: [PATCH] Added version 2021.2 --- docs/2020.4.1/example.md | 216 ---------------- docs/2020.4.1/execution.md | 11 - docs/2020.4.1/install-core.md | 202 --------------- docs/2020.4.1/install-modules.md | 15 -- docs/2020.4.1/install-worker.md | 134 ---------- docs/2020.4.1/installation.md | 28 -- docs/2020.4.1/interfaces.md | 33 --- docs/2020.4.1/lifecycle.md | 59 ----- docs/2020.4.1/logging.md | 59 ----- docs/2020.4.1/modules/mod_hydra.md | 64 ----- docs/2020.4.1/modules/mod_medusa.md | 72 ------ docs/2020.4.1/modules/mod_msf.md | 48 ---- docs/2020.4.1/modules/mod_nmap.md | 60 ----- docs/2020.4.1/modules/mod_test.md | 28 -- docs/2020.4.1/plan-execution.md | 12 - docs/2020.4.1/session-mngmt.md | 19 -- docs/2020.4.1/stage-execution.md | 10 - docs/2020.4.1/stage.md | 37 --- docs/2020.4.1/step-execution.md | 19 -- docs/2021.2.1/advanced-example.md | 240 ++++++++++++++++++ docs/{2020.4.1 => 2021.2.1}/architecture.md | 6 +- docs/{2020.4.1 => 2021.2.1}/attack-modules.md | 8 +- docs/2021.2.1/basic-example.md | 125 +++++++++ docs/{2020.4.1 => 2021.2.1}/cli.md | 32 ++- docs/2021.2.1/execution.md | 58 +++++ docs/2021.2.1/howto-create-attack-modules.md | 148 +++++++++++ .../images/architecture.png | Bin .../images/core-component.png | Bin .../images/flow-diagram.png | Bin .../images/lifecycle.png | Bin .../images/micro-cryton.png | Bin .../images/modules-component.png | Bin docs/2021.2.1/images/stage.png | Bin 0 -> 31201 bytes docs/2021.2.1/images/swagger.png | Bin 0 -> 111822 bytes docs/2021.2.1/images/template.png | Bin 0 -> 52638 bytes .../images/templates.png | Bin .../images/worker-component.png | Bin docs/{2020.4.1 => 2021.2.1}/install-cli.md | 7 +- docs/2021.2.1/install-core.md | 73 ++++++ docs/2021.2.1/install-worker.md | 127 +++++++++ docs/2021.2.1/instance.md | 29 +++ docs/2021.2.1/logging.md | 32 +++ .../{2020.4.1 => 2021.2.1}/modules/mod_cmd.md | 36 +-- docs/2021.2.1/modules/mod_medusa.md | 95 +++++++ docs/2021.2.1/modules/mod_msf.md | 70 +++++ docs/2021.2.1/modules/mod_nmap.md | 63 +++++ .../modules/mod_ssh_session.md | 0 docs/{2020.4.1 => 2021.2.1}/plan.md | 6 +- docs/2021.2.1/reporting.md | 127 +++++++++ docs/2021.2.1/requirements.md | 43 ++++ docs/{2020.4.1 => 2021.2.1}/rest.md | 9 +- .../run-configuration.md} | 6 +- docs/2021.2.1/run-control.md | 24 ++ docs/2021.2.1/run.md | 4 + docs/{2020.4.1 => 2021.2.1}/scenario.md | 0 docs/2021.2.1/session-mngmt.md | 68 +++++ docs/2021.2.1/stage.md | 97 +++++++ docs/{2020.4.1 => 2021.2.1}/step.md | 63 ++++- docs/2021.2.1/template.md | 20 ++ docs/contribution-guide.md | 4 + mkdocs.yml | 72 +++--- 61 files changed, 1599 insertions(+), 1219 deletions(-) delete mode 100644 docs/2020.4.1/example.md delete mode 100644 docs/2020.4.1/execution.md delete mode 100644 docs/2020.4.1/install-core.md delete mode 100644 docs/2020.4.1/install-modules.md delete mode 100644 docs/2020.4.1/install-worker.md delete mode 100644 docs/2020.4.1/installation.md delete mode 100644 docs/2020.4.1/interfaces.md delete mode 100644 docs/2020.4.1/lifecycle.md delete mode 100644 docs/2020.4.1/logging.md delete mode 100644 docs/2020.4.1/modules/mod_hydra.md delete mode 100644 docs/2020.4.1/modules/mod_medusa.md delete mode 100644 docs/2020.4.1/modules/mod_msf.md delete mode 100644 docs/2020.4.1/modules/mod_nmap.md delete mode 100644 docs/2020.4.1/modules/mod_test.md delete mode 100644 docs/2020.4.1/plan-execution.md delete mode 100644 docs/2020.4.1/session-mngmt.md delete mode 100644 docs/2020.4.1/stage-execution.md delete mode 100644 docs/2020.4.1/stage.md delete mode 100644 docs/2020.4.1/step-execution.md create mode 100644 docs/2021.2.1/advanced-example.md rename docs/{2020.4.1 => 2021.2.1}/architecture.md (73%) rename docs/{2020.4.1 => 2021.2.1}/attack-modules.md (69%) create mode 100644 docs/2021.2.1/basic-example.md rename docs/{2020.4.1 => 2021.2.1}/cli.md (93%) create mode 100644 docs/2021.2.1/execution.md create mode 100644 docs/2021.2.1/howto-create-attack-modules.md rename docs/{2020.4.1 => 2021.2.1}/images/architecture.png (100%) rename docs/{2020.4.1 => 2021.2.1}/images/core-component.png (100%) rename docs/{2020.4.1 => 2021.2.1}/images/flow-diagram.png (100%) rename docs/{2020.4.1 => 2021.2.1}/images/lifecycle.png (100%) rename docs/{2020.4.1 => 2021.2.1}/images/micro-cryton.png (100%) rename docs/{2020.4.1 => 2021.2.1}/images/modules-component.png (100%) create mode 100644 docs/2021.2.1/images/stage.png create mode 100644 docs/2021.2.1/images/swagger.png create mode 100644 docs/2021.2.1/images/template.png rename docs/{2020.4.1 => 2021.2.1}/images/templates.png (100%) rename docs/{2020.4.1 => 2021.2.1}/images/worker-component.png (100%) rename docs/{2020.4.1 => 2021.2.1}/install-cli.md (87%) create mode 100644 docs/2021.2.1/install-core.md create mode 100644 docs/2021.2.1/install-worker.md create mode 100644 docs/2021.2.1/instance.md create mode 100644 docs/2021.2.1/logging.md rename docs/{2020.4.1 => 2021.2.1}/modules/mod_cmd.md (63%) create mode 100644 docs/2021.2.1/modules/mod_medusa.md create mode 100644 docs/2021.2.1/modules/mod_msf.md create mode 100644 docs/2021.2.1/modules/mod_nmap.md rename docs/{2020.4.1 => 2021.2.1}/modules/mod_ssh_session.md (100%) rename docs/{2020.4.1 => 2021.2.1}/plan.md (96%) create mode 100644 docs/2021.2.1/reporting.md create mode 100644 docs/2021.2.1/requirements.md rename docs/{2020.4.1 => 2021.2.1}/rest.md (99%) rename docs/{2020.4.1/exec-vars.md => 2021.2.1/run-configuration.md} (82%) create mode 100644 docs/2021.2.1/run-control.md create mode 100644 docs/2021.2.1/run.md rename docs/{2020.4.1 => 2021.2.1}/scenario.md (100%) create mode 100644 docs/2021.2.1/session-mngmt.md create mode 100644 docs/2021.2.1/stage.md rename docs/{2020.4.1 => 2021.2.1}/step.md (66%) create mode 100644 docs/2021.2.1/template.md diff --git a/docs/2020.4.1/example.md b/docs/2020.4.1/example.md deleted file mode 100644 index 46a1405..0000000 --- a/docs/2020.4.1/example.md +++ /dev/null @@ -1,216 +0,0 @@ -# Example execution - -There are multiple steps to be completed before the whole loading and executing Run can be done. As was said earlier, there are more components in Cryton: - -1. **Cryton Core - REST API** -2. **Cryton Core - Scheduler** -3. **Cryton Core - Listener** -4. **Cryton Worker** -5. **Cryton CLI** - -## 1. Cryton Core -### Using Docker Compose -If you've installed Cryton Core using Docker Compose installation guide, then you are all set. However just to be sure: - - - -1. Go to Cryton Core directory `cd cryton-core`. -2. Check if **all** Cryton Core components are UP `docker-compose ps`. -3. If some are restarting use `docker-compose restart` or if they are down use `docker-compose start`. -4. If you can't access REST API restart it `docker-compose restart cryton_app`. - -### Manually -First go to Cryton Core directory `cd cryton-core` and enter the virtual environment `pipenv shell`. - -Now you have to start the Core itself, which provides **REST API**. This it the API the CLI uses. -*Note: This is a debug/testing way for running the REST API server. For production see [WSGI](installation.md#running-in-apache-wsgi).* - -``` -cryton-manage runserver -``` - -To override default address and port use: -``` -cryton-manage runserver address:port -``` - -Output should look like this: -``` -Watching for file changes with StatReloader -Performing system checks... - -Starting development server at http://127.0.0.1:8000/ -Quit the server with CONTROL-C. -``` - -Starting Scheduler is also really simple: -``` -cryton-manage startscheduler -``` - -Output should look like this: -``` -Scheduler started -Looking for jobs to run -Starting scheduler service. Listening on localhost:12345 -server started on [127.0.0.1]:12345 -Got [] -No jobs; waiting until a job is added -``` - -Lastly we have to start Listener to be able to communicate with Worker: -``` -cryton-manage startlistener -``` - -At the end you should see this line: -``` - [*] Waiting for messages. To exit press CTRL+C -``` - -## 2. Modules -To be able to execute attack modules we have to copy them into the same directory as Cryton Worker -has declared in settings (`CRYTON_WORKER_MODULES_DIR=/opt/cryton-worker/modules/`). - -If we use the default path for example: -~~~~ -cp path/to/module/dir /opt/cryton-worker/modules/ -~~~~ -**All the requirements are checked and installed on Worker's start up if `--install-requirements` flag is used.** - -**IMPORTANT: In *plan template* in *attack_module* parameter specify relative path to module directory only (for example: `infrastructure/scan/mod_scan`).** - -## 3. Cryton Worker -### Manually -First go to Cryton Worker directory `cd cryton-worker` and enter the virtual environment `pipenv shell`. - -Now you have to update Worker settings, especially RabbitMQ address and credentials using `export CRYTON_WORKER_CUSTOM_VAR=custom_value`. -To see all variables use `export`. - -Once you're done you can start Cryton Worker. -``` -cryton-worker start -``` - -If you see `Successfully created connection.` you're all set. - -## Cryton Cli -Now we can start using CLI to control Cryton. -To use CLI go to Cryton CLI directory `cd cryton-cli`, enter the virtual environment `pipenv shell` and type `cryton-cli`. - -Localhost and port 8000 are used as default REST API address/port. -To override it use *-H* and *-p* options. - -``` -cryton-cli -H 127.0.0.1 -p 8000 -``` - -Create a Plan template using a file containing the desired plan YAML. -```yaml ---- -plan: - name: Example scenario - owner: your name - stages: - - name: stage-one - trigger_type: delta - trigger_args: - seconds: 5 - steps: - - name: scan-target - is_init: true - attack_module: mod_nmap - attack_module_args: - target: "{{target}}" - ports: - - 22 - next: - - type: result - value: OK - step: ssh-bruteforce - - name: ssh-bruteforce - attack_module: mod_hydra - attack_module_args: - target: "{{target}}" - username: "{{username}}" - password: mypass -``` -``` -cryton-cli plan-templates create example-plan.yml -``` - -Output: -``` -Template successfully created! ({'url': '', 'id': 1, 'file': ''}). -``` - -Create a Plan instance using saved Template with ID 1. -``` -cryton-cli plans create 1 -``` - -To create a Plan instance using template and inventory file simply specify `-i` parameter (for example`-i hosts-file`). -For example with inventory file `inv.json` containing `{"username": "admin"}` you would use `cryton-cli plans create 1 -i inv.json` to fill the username variable. - -Output: -``` -Plan Instance successfully created! ({'plan_model_id': 1, 'link': ''}). -``` - -To be able to execute Plans (Runs) we have to define Worker (address, name and optionally prefix). -Prefix will be used in worker. Either the prefix is custom or is created by joining name and address. -In this case it would be: `name_address`. -``` -cryton-cli workers create address name -p customPrefix -``` - -Output: -``` -Worker successfully created! ({'worker_model_id': 1, 'link': ''}). -``` - -Create a Run by choosing Plan Instance and providing list of Workers for execution. - -``` -cryton-cli runs create 1 1 -``` - -Output: -``` -Run successfully created! ({'run_model_id': 1, 'link': ''}). -``` - -To provide additional inventory file (variables to fill missing target variable) to PlanExecution instance with ID *1* -create inventory file containing `{"target": "localhost"}` and use command: -``` -cryton-cli execution-variables create 1 inventory-file -``` -If you would want a second worker with different target variable, you just have to create second Worker -(it is impossible to append worker to created Run) and create execution variables for the second PlanExecution. - -Output: -``` -Execution variable(s) successfully created! ([1]). -``` - -Execute created Run to start the execution tree. - -``` -cryton-cli runs execute 1 -``` - -Output: -``` -Run successfully executed! (Run 1 was executed.). -``` - -Anytime during execution report can be generated, which also complies to YAML format, and it contains list of Stages/Steps, their success and output or, if available, error message. - -``` -cryton-cli runs report 1 -``` - -Output: -``` -Successfully created Run's report! (file saved at: /tmp/report_run_1_2020-06-08-10-15-00-257994_xdQeV) -``` \ No newline at end of file diff --git a/docs/2020.4.1/execution.md b/docs/2020.4.1/execution.md deleted file mode 100644 index 53669de..0000000 --- a/docs/2020.4.1/execution.md +++ /dev/null @@ -1,11 +0,0 @@ -## Execution - -There are special kinds of objects called *Executions* for every unit in Attack scenario: - -* **PlanExecution** -* **StageExecution** -* **StepExecution** - -These are not objects that need to be created by you - instead they are created when their respective unit is executed. This way a history and results of each and every execution can be stored. - -Every Execution object stores a start and finish time, so it is easy to count running times of each unit. With Steps the Execution is also a place where the output and results from attack modules is stored. \ No newline at end of file diff --git a/docs/2020.4.1/install-core.md b/docs/2020.4.1/install-core.md deleted file mode 100644 index 72b6b6b..0000000 --- a/docs/2020.4.1/install-core.md +++ /dev/null @@ -1,202 +0,0 @@ -## Core Installation - -Cryton Core uses environment variables for it's settings. - -~~~~ -CRYTON_RABBIT_USERNAME=admin -CRYTON_RABBIT_PASSWORD=mypass -CRYTON_RABBIT_SRV_ADDR=cryton_rabbit -CRYTON_RABBIT_SRV_PORT=5672 -CRYTON_DB_NAME=cryton -CRYTON_DB_USERNAME=cryton -CRYTON_DB_PASSWORD=cryton -CRYTON_DB_HOST=cryton_db -CRYTON_SCHEDULER_LHOSTNAME=cryton_scheduler -CRYTON_SCHEDULER_LPORT=12345 -Q_ATTACK_RESPONSE_NAME=cryton_core.attack.response -Q_CONTROL_RESPONSE_NAME=cryton_core.control.response -Q_EVENT_RESPONSE_NAME=cryton_core.event.response -CRYTON_DEBUG=False -~~~~ - -### Using docker-compose (recommended) - -Go into Cryton Core directory and run docker-compose, which will pull, build and start all necessary docker images. - -**If you've updated either docker-compose file or environment variables please check that they correspond.** - -For production environment, there are some other options needed (such as publishing ports to public IP addresses, persistent database data volume etc. For production deployment, use: - -~~~~ -user@localhost:~ /cryton-core $ docker-compose -f docker-compose.prod.yml up -d -~~~~ - -Otherwise use the default docker-compose file: - -~~~~ -user@localhost:~ /cryton-core $ docker-compose up -d -~~~~ - - -This process might take a while, especially if it is the first time you run it - image must be built. -After a while you should see something like this: - -~~~~ -Creating db ... done -Creating rabbit ... done -Creating scheduler ... done -Creating listener ... done -Creating app ... done -~~~~ - -After that, you should run database migrations: - -~~~~ -user@localhost:~ /cryton-core $ docker-compose exec cryton_app cryton-manage makemigrations cryton_rest_api -user@localhost:~ /cryton-core $ docker-compose exec cryton_app cryton-manage migrate -~~~~ - -Everything should be set. Check if the installation was successful by either installing Cryton CLI or testing REST API with curl: - -~~~~ -curl localhost:8000 -~~~~ - -and the response should be: - -~~~~ -{"runs":"http://localhost:8000/cryton/api/v1/runs/","plans":"http://localhost:8000/cryton/api/v1/plans/","plan_executions":"http://localhost:8000/cryton/api/v1/plan_executions/","stages":"http://localhost:8000/cryton/api/v1/stages/","stage_executions":"http://localhost:8000/cryton/api/v1/stage_executions/","steps":"http://localhost:8000/cryton/api/v1/steps/","step_executions":"http://localhost:8000/cryton/api/v1/step_executions/","workers":"http://localhost:8000/cryton/api/v1/workers/"} -~~~~ - -If the REST API won't respond try restarting it: - -~~~~ -user@localhost:~ /cryton-core $ docker-compose restart cryton_app -~~~~ - -### Manual installation - -Cryton Core uses PostgreSQL as it's internal database, so it must be installed and started on your system. - -**Installation is tested and presented under *sudo* user. Please make sure you have `sudo` privileges.** - -#### Requirements - -- postgresql -- rabbitmq-server -- libpq5 -- libpq-dev -- python3.7 (3.7 and 3.8 are tested versions) -- pipenv (optional) - -#### Installation - -First you need to create database and database tables Cryton internal storage. This database is also used for scheduler and tasks persistence: - -~~~~ -su postgres -psql -c "CREATE DATABASE cryton;" -psql -c "CREATE USER cryton WITH PASSWORD 'cryton';GRANT ALL PRIVILEGES ON DATABASE cryton TO cryton;ALTER DATABASE cryton OWNER TO cryton; ALTER USER cryton CREATEDB;"; -exit -~~~~ - -In order to start Core's listener you have to install `rabbitmq-server` and start it. - -~~~~ -apt install rabbitmq-server -service rabbitmq-server start -~~~~ - -Go into Cryton Core directory. You can use pipenv for creating virtual environment and enter it. - -``` -cd cryton-core -pipenv install # has to be virtual environment with python3.7 (or 3.8) -pipenv shell -``` - -Use setup.py to install the package. - -**You have to use python setup.py to install Core project, as it needs to copy some files into /etc -and /home/.cryton directories. If installed using pip, this does not happen and you would have to -copy this files by hand.** - -``` -python setup.py install -``` - -Use _develop_ if you wish to directly (locally) modify the code: - -``` -python setup.py develop -``` - -Now update Cryton's settings. - -~~~~ -export CRYTON_DB_HOST=localhost -export CRYTON_RABBIT_SRV_ADDR=localhost -export CRYTON_SCHEDULER_LHOSTNAME=localhost -export CRYTON_RABBIT_USERNAME=guest -export CRYTON_RABBIT_PASSWORD=guest -~~~~ - - -After successful installation the only thing needed is Django _migration_ for creating default tables in Cryton database: - -``` -cryton-manage makemigrations cryton_rest_api -cryton-manage migrate -``` - -To check if installation was successfull try to start the REST API: -*Note: This is a debug/testing way for running the REST API server. For production see [WSGI](#running-in-apache-wsgi).* - -``` -cryton-manage runserver -``` - -You should see: - -``` -Starting server at http://127.0.0.1:8000/ -Quit the server with CONTROL-C. -``` - -## Running in apache (WSGI) - -1. Create site in sites-available (eg. **001-cryton.conf**) - **(replace path to virtualenv with your current - you can get it by running `pipenv --venv`)** - -``` -<VirtualHost *:80> -WSGIDaemonProcess cryton python-home=/root/.local/share/virtualenvs/kypo2-cryton-_aTpEfuL python-path=/root/.local/share/virtualenvs/kypo2-cryton-_aTpEfuL/lib/python3.7/site-packages/cryton-1.0-py3.7.egg/cryton -WSGIProcessGroup cryton -WSGIScriptAlias /cryton /root/.local/share/virtualenvs/kypo2-cryton-_aTpEfuL/lib/python3.7/site-packages/cryton-1.0-py3.7.egg/cryton/wsgi.py - -# Alias for Django RESTframework static files -Alias /static /root/.local/share/virtualenvs/kypo2-cryton-_aTpEfuL/lib/python3.7/site-packages/djangorestframework-3.9.4-py3.7.egg/rest_framework/static -# Alias for Swagger static files -Alias /static /root/.local/share/virtualenvs/kypo2-cryton-_aTpEfuL/python3.7/site-packages/drf_yasg/static - - <Directory /root/.local/share/virtualenvs/kypo2-cryton-_aTpEfuL/lib/python3.7/site-packages/cryton-1.0-py3.7.egg/cryton/> - Require all granted - </Directory> - <Directory /root/.local/share/virtualenvs/kypo2-cryton-_aTpEfuL/lib/python3.7/site-packages/rest_framework> - Require all granted - </Directory> -</VirtualHost> -``` - -2. Enable site - -``` -root@kali:/etc/apache2# a2ensite 001-cryton.conf -``` - -3. Reload apache - -``` -root@kali:/etc/apache2# systemctl reload apache2 -``` - diff --git a/docs/2020.4.1/install-modules.md b/docs/2020.4.1/install-modules.md deleted file mode 100644 index efc0ca3..0000000 --- a/docs/2020.4.1/install-modules.md +++ /dev/null @@ -1,15 +0,0 @@ -## Modules installation - -Attack modules are executed by Cryton Worker, so they have to be accessible by it. -To be able to use them, change the directory in Worker's configuration (environment variable ```CRYTON_WORKER_MODULES_DIR``` ) to the path of your cryton-modules project (or any other directory where you keep the modules). - - -Example: - -~~~~ -user@localhost:/home/user $ git clone git@gitlab.ics.muni.cz:cryton/cryton-modules.git -user@localhost:/home/user $ export CRYTON_WORKER_MODULES_DIR=/home/user/cryton-modules/modules -~~~~ - -As mentioned above, Cryton Worker is used for validating and executing modules and in order for them to work you have to install their requirements. To do that you either install them manually inside Cryton Worker's environment or you use Cryton Worker's CLI: `cryton-worker start --install-requirements`. If this flag is specified each *requirements.txt* file inside the Worker's modules directory will be check and installed. - diff --git a/docs/2020.4.1/install-worker.md b/docs/2020.4.1/install-worker.md deleted file mode 100644 index ea2ac35..0000000 --- a/docs/2020.4.1/install-worker.md +++ /dev/null @@ -1,134 +0,0 @@ -## Worker Installation - -For this installation we are assuming installation on the same machine. Please update variables for your use case. - -Cryton Worker uses environment variables for it's settings. - -~~~~ -CRYTON_WORKER_MODULES_DIR=/opt/cryton-worker/modules/ -CRYTON_WORKER_DEBUG=False -CRYTON_WORKER_MSFRPCD_PASS=toor -CRYTON_WORKER_MSFRPCD_USERNAME=msf -CRYTON_WORKER_MSFRPCD_PORT=55553 -CRYTON_WORKER_MSFRPCD_SSL=False -CRYTON_WORKER_RABBIT_USERNAME=admin -CRYTON_WORKER_RABBIT_PASSWORD=mypass -CRYTON_WORKER_RABBIT_SRV_ADDR=CHANGE_ME -CRYTON_WORKER_RABBIT_SRV_PORT=5672 -CRYTON_WORKER_RABBIT_WORKER_PREFIX=CHANGE_ME -CRYTON_WORKER_CORE_COUNT=AUTO -~~~~ - -### Manual installation (recommended) - -**Installation is tested and presented under *sudo* user. Please make sure you have `sudo` privileges due to the need to enter /etc directory.** - -#### Requirements - -- python3.8 (tested version) -- pipenv (optional) - -#### Installation - -Go into Cryton Worker directory, create python environment and enter it. - -~~~~ -cd cryton-worker -pipenv install -pipenv shell -~~~~ - -Update Worker's settings: -`CRYTON_WORKER_RABBIT_SRV_ADDR` (with the actual address of RabbitMQ server), -`CRYTON_WORKER_RABBIT_WORKER_PREFIX` (with desired prefix that will be used to communicate with the Worker), -`CRYTON_WORKER_RABBIT_USERNAME` (RabbitMQ username) and `CRYTON_WORKER_RABBIT_PASSWORD` (RabbitMQ password). - -~~~~ -export CRYTON_WORKER_RABBIT_SRV_ADDR=localhost -export CRYTON_WORKER_RABBIT_WORKER_PREFIX=worker_prefix -export CRYTON_WORKER_RABBIT_USERNAME=guest -export CRYTON_WORKER_RABBIT_PASSWORD=guest -~~~~ - -And finally install Worker. - -**You have to use python setup.py to install Worker project, as it needs to copy some files into /etc -directory. If installed using pip, this does not happen and you would have to copy this files by hand.** - -~~~~ -python setup.py install -~~~~ - -Use _develop_ if you wish to directly (locally) modify the code: - -``` -python setup.py develop -``` - -Everything should be set. Check if the installation was successful start the Worker: - -~~~~ -cryton-worker -~~~~ - -To start Worker use `cryton-worker start` and you should see something like: -~~~~ -Worker is running, waiting for connections... -Successfully created connection. -~~~~ - -If you see an error. Please check if Rabbit variables are correct and start Worker again. - -### Using docker-compose - -#### Installation -**NOTICE: Following guide won't describe how to install or mount applications used by modules.** - - -Go into Cryton Worker directory and update .env file. -Especially `CRYTON_WORKER_RABBIT_SRV_ADDR` (with the actual address of RabbitMQ server), -`CRYTON_WORKER_RABBIT_WORKER_PREFIX` (with desired prefix that will be used to communicate with the Worker), -`CRYTON_WORKER_RABBIT_USERNAME` (RabbitMQ username) and `CRYTON_WORKER_RABBIT_PASSWORD` (RabbitMQ password). - -~~~~ -cd cryton-worker/ -vi .env -~~~~ - -Run docker-compose, which will pull, build and start all necessary docker images. - -**If you've updated either docker-compose file or environment variables please check that they correspond.** - -**For successful start RabbitMQ server must be running!** - -~~~~ -docker-compose up -d -~~~~ - -This process might take a while, especially if it is the first time you run it - image must be built. -After a while you should see something like this: - -~~~~ -Creating cryton_worker ... done -~~~~ - -Everything should be set. Check if the installation was successful: - -~~~~ -docker-compose ps -~~~~ - -You should see something like: - -~~~~ - Name Command State Ports ---------------------------------------------- -cryton_worker cryton-worker Up -~~~~ - -If is in state `Restarting`, something went wrong. Please check if Rabbit address is correct and restart Worker. - -~~~~ -docker-compose restart worker -~~~~ - diff --git a/docs/2020.4.1/installation.md b/docs/2020.4.1/installation.md deleted file mode 100644 index 5348f20..0000000 --- a/docs/2020.4.1/installation.md +++ /dev/null @@ -1,28 +0,0 @@ -# Requirements -For being able to execute the attack scenarios, you need to install the **Cryton core**, -**Cryton worker** package and copy the **modules** you wish to execute in the attack scenarios -into directory specified in *Cryton Worker*. - -So far the only supported OS is Kali Linux with version 2020.3 (and maybe newer). - -**Required packages** - -- docker.io -- docker-compose - -#### Installation - -First make sure you have Docker and Docker Compose installed: - -~~~~ -user@localhost:~ $ sudo apt install docker.io docker-compose -~~~~ - -Add yourself to the group docker so you can work with docker CLI without sudo: - -~~~~ -user@localhost:~ $ sudo groupadd docker -user@localhost:~ $ sudo usermod -aG docker $USER -user@localhost:~ $ newgrp docker -user@localhost:~ $ docker run hello-world -~~~~ diff --git a/docs/2020.4.1/interfaces.md b/docs/2020.4.1/interfaces.md deleted file mode 100644 index 8dc02af..0000000 --- a/docs/2020.4.1/interfaces.md +++ /dev/null @@ -1,33 +0,0 @@ -# Interfaces - -For controlling Cryton there is currently one **CLI** - Command line interface - which uses **REST API** residing in Cryton Core. Via this CLI it is possible to create, execute and control all parts of Attack scenario execution. - -As an output interface there is also **Logging** mechanism which logs the most important results and actions to *syslog*. - -## REST API - -Cryton REST API serves as an (optionally) authenticated endpoint which can be used by other applications. - -### Running manually - -``` -(cryton-core) root@kali:/opt/cryton# cryton-manage runserver -Watching for file changes with StatReloader -Performing system checks... - -System check identified no issues (0 silenced). -Django version 2.2.3, using settings 'cryton.settings' -Starting development server at http://127.0.0.1:8000/ -Quit the server with CONTROL-C. - -``` - -### Endpoints - -You can find swagger generated documentation of endpoints in [swagger](swagger) or the actual swagger documentation when running Cryton REST API. Just browse to ```/doc``` endpoint. - -Please note that all returned parameters containing **time** are **UTC** localized. - -## CLI - -There is also Command line interface available. \ No newline at end of file diff --git a/docs/2020.4.1/lifecycle.md b/docs/2020.4.1/lifecycle.md deleted file mode 100644 index 2735886..0000000 --- a/docs/2020.4.1/lifecycle.md +++ /dev/null @@ -1,59 +0,0 @@ -# Lifecycle - -The lifecycle of Attack scenario in Cryton context can be seen in following picture: - - - - - -There are multiple stages which need to be followed for creating and executing the scenario, namely: - -* Designing an attack **Template** -* Creating an **Instance** -* Scheduling (or directly Executing) a **Run** -* Generating a **Report** - -## Template -The most important part is creating a Template. This is basically a Plan object written in YAML format. You can find a detailed description of this format in section [Plan](#plan). - -Template itself is not a fully described Attack scenario. The structure of the Attack (the execution tree) is correct, but there are still unfilled places, eg. IP addresses of targets or some module arguments. This way an Attack Template can be designed before knowing these details and used in multiple different environments. - -The first step in designing of a Plan (attack scenario) is creating a Template. In this step the user is supposed to write the whole scenario in the form of Plan, Stages and Steps. An abstract Plan can look like this: - -``` -Plan - Stage 1 - Step 1 - Step 2 - Stage 2 - Step 3 -``` - -The format used is a combination of YAML and Jinja. The valid Plan file is written in YAML with variables in the Jinja format, which can be replaced during the instantiation process. - -You can use it as in following example: - -``` - # Stage two: target is web server - - name: {{names.stage1}} -``` - -You can use Jinja variables everywhere in the Plan template. - -## Instance -The second stage is creating a Instance. While Template contains unfilled variables (therefore the name "template"), Instance fills these things in by combining the Template with an **Inventory file**. This file contains all information that needs to be filled in the Template. After instantiation everything is ready to create a **Run**. - -**NOTE: After creating Plan instance only the Step arguments Jinja variables can be left unfilled.** - -### Inventory file -Inventory file is a way of providing variable values to be substituted in the Template file. An example of Inventory file: - -``` -[names] -stage1: 192.168.56.102 -``` - -## Run -When you finally have an Instance stored in database, you can create a new Run. For every Worker a new PlanExecution is created. -The reason behind this is storage of execution history, so it is possible to compare results in Run and usage of different variables for PlanExecutions. -As mentioned before, you can leave Step argument as an empty Jinja variable. Now, before execution, you can use different values for each PlanExecution. \ No newline at end of file diff --git a/docs/2020.4.1/logging.md b/docs/2020.4.1/logging.md deleted file mode 100644 index 8b2a463..0000000 --- a/docs/2020.4.1/logging.md +++ /dev/null @@ -1,59 +0,0 @@ -## Logging - -Cryton core allows logging into syslog. The logs adhere to following format: - -~~~~bash -Aug 19 04:01:51 kali {"state_from": "PENDING", "state_to": "RUNNING", "stage_id": 1, "stage_name": "ssh-server", "worker": "127.0.0.1:50666", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:01:51.139399Z"} -Aug 19 04:01:51 kali {"state_from": "PENDING", "state_to": "SCHEDULED", "plan_id": 1, "plan_name": "Example scenario", "worker": "127.0.0.1:50666", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:01:51.151661Z"} -Aug 19 04:01:51 kali {"state_from": "PENDING", "state_to": "RUNNING", "step_id": 1, "step_name": "scan-victim-ssh", "worker": "127.0.0.1:50666", "result": "NONE", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:01:51.166442Z"} -Aug 19 04:01:51 kali {"state_from": "RUNNING", "state_to": "FINISHED", "step_id": 1, "step_name": "scan-victim-ssh", "worker": "127.0.0.1:50666", "result": "EXCEPTION", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:01:51.209416Z"} -Aug 19 04:01:51 kali {"state_from": "PENDING", "state_to": "SKIPPED", "step_id": 2, "step_name": "access-to-ssh", "worker": "127.0.0.1:50666", "result": "NONE", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:01:51.226752Z"} -Aug 19 04:01:51 kali {"state_from": "PENDING", "state_to": "SKIPPED", "step_id": 3, "step_name": "access-to-ssh-alt", "worker": "127.0.0.1:50666", "result": "NONE", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:01:51.237738Z"} -Aug 19 04:01:51 kali {"state_from": "PENDING", "state_to": "SKIPPED", "step_id": 4, "step_name": "get-etc-passwd", "worker": "127.0.0.1:50666", "result": "NONE", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:01:51.246326Z"} -Aug 19 04:01:51 kali {"state_from": "RUNNING", "state_to": "FINISHED", "stage_id": 1, "stage_name": "ssh-server", "worker": "127.0.0.1:50666", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:01:51.259280Z"} -Aug 19 04:02:51 kali {"state_from": "SCHEDULED", "state_to": "RUNNING", "plan_id": 1, "plan_name": "Example scenario", "worker": "127.0.0.1:50666", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:02:51.015108Z"} -Aug 19 04:02:51 kali {"state_from": "PENDING", "state_to": "RUNNING", "stage_id": 2, "stage_name": "web-server", "worker": "127.0.0.1:50666", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:02:51.024862Z"} -Aug 19 04:02:51 kali {"state_from": "PENDING", "state_to": "RUNNING", "step_id": 5, "step_name": "scan-victim-webs", "worker": "127.0.0.1:50666", "result": "NONE", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:02:51.054902Z"} -Aug 19 04:03:05 kali {"state_from": "RUNNING", "state_to": "FINISHED", "step_id": 5, "step_name": "scan-victim-webs", "worker": "127.0.0.1:50666", "result": "EXCEPTION", "logger": "Cryton", "level": "info", "timestamp": "2019-08-19T08:03:05.946011Z"} -~~~~ - -Every Plan/Stage/Step change of state is logged for later analysis. For every Step the result is also stored, although std_out and std_err are (currently) not. They can be found in the database. - -The logging configuration can be found in /etc/cryton/logging_config.yaml: - -~~~~YAML ---- -version: 1 -disable_existing_loggers: False -formatters: - simple: - format: "%(message)s" - -handlers: - console: - class: logging.StreamHandler - level: DEBUG - formatter: simple - stream: ext://sys.stdout - - sys-logger: - class: logging.handlers.SysLogHandler - level: DEBUG - address: '/dev/log' - formatter: simple - -loggers: - Cryton: - level: INFO - handlers: [sys-logger] - propagate: yes - - Cryton-debug: - level: DEBUG - handlers: [console, sys-logger] - propagate: yes -... -~~~~ - - -# \ No newline at end of file diff --git a/docs/2020.4.1/modules/mod_hydra.md b/docs/2020.4.1/modules/mod_hydra.md deleted file mode 100644 index 00bf8ed..0000000 --- a/docs/2020.4.1/modules/mod_hydra.md +++ /dev/null @@ -1,64 +0,0 @@ -# mod_hydra - -This module implemets attacking capabilities of THC hydra bruteforce tool. - -## System requirements - -System requirements (those not listed in requirements.txt for python). - -For this module to function properly, [THC hydra](https://github.com/vanhauser-thc/thc-hydra) needs to be installed. - -## Input parameters - -Description of input parameters for module. - -| Parameter name | Parameter description | -| --------------- | ------------------------------------------------------------ | -| `target` | Bruteforce target (must be set when not using command) | -| `service` | Specified service you want to use to attack (default ssh) | -| `report_path` | Absolute path where you want to save login pairs - default is Cryton evidence folder | -| `username` | Username to use for bruteforce | -| `password` | Password to use for bruteforce | -| `username_list` | Absolute path to file with usernames | -| `password_list` | Absolute path to file with passwords | -| `tasks` | Total number of login pairs to be tested concurrently, default is 16 | -| `command` | Hydra arguments with syntax as in command line. Do not write 'hydra' into the command. If you specify '-o' parameter with 'cryton_default' it will save file with passwrods to Cryton's default directory and if you specify target parameter ([service://target](service://target)) with 'cryton_default' Cryton's stage target will be used (optional). **Cannot be combined with other input parameters!** | - -#### Default command - -```bash --l admin -P /usr/share/wordlists/rockyou.txt -o [cryton_evidence_directory] -t 64 ssh://192.168.1.123 -``` - -What does it do? It tries to login with credentials [admin - passwords from file] onto ssh on 192.168.1.123 with 64 parallel connections and saves found login pairs into cryton evidence directory (which is automatically generated). - -The default command works only on Kali (because of the password list). So if you want to use different password list, or only one password, you can use parameter: 'password' / 'password_list'. It works the same way for any other default parameter. - -#### Example yaml(s) - -```yaml -attack_module_args: - target: 1.2.3.4 - username: admin - password: pass -``` - -## Output - -Description of output. - -| Parameter name | Parameter description | -| -------------- | ------------------------------------------------------------ | -| `username` | Username found during bruteforce | -| `password` | Password found during bruteforce | -| `credentials` | If there are more than one login credentials found, they are returned in form of user:password pairs | - -#### Example - -```json -{"mod_out": {"credentials": {"admin": "admin", "root": "toor"}}} -``` - -```json -{"mod_out": {"username": "admin", "password": "admin"}} -``` \ No newline at end of file diff --git a/docs/2020.4.1/modules/mod_medusa.md b/docs/2020.4.1/modules/mod_medusa.md deleted file mode 100644 index 523bf2d..0000000 --- a/docs/2020.4.1/modules/mod_medusa.md +++ /dev/null @@ -1,72 +0,0 @@ -# mod_medusa - -This module implemets attacking capabilities of Medusa bruteforce tool. - -## Requirements - -System requirements (those not listed in requirements.txt for python). - -For this module to function properly, [Medusa](https://github.com/jmk-foofus/medusa) need to be installed. - -## Input parameters - -Description of input parameters for module. - -| Parameter name | Parameter description | -| --------------- | ------------------------------------------------------------ | -| `target` | Bruteforce target (must be set when not using command) | -| `open_ports` | Parameter for output of module mod_nmap (see [plan example](https://cryton.gitlab-pages.ics.muni.cz/cryton-project/1.0/plan/)) | -| `mod` | Specified mod(service) you want to use to attack (default ssh) | -| `report_path` | Absolute path where you want to save login pairs - default is Cryton evidence folder | -| `username` | Username to use for bruteforce | -| `password` | Password to use for bruteforce | -| `username_list` | Absolute path to file with usernames | -| `password_list` | Absolute path to file with passwords | -| `combo_list` | Absolute path to file with login pairs - user:password (official format can be found in http://foofus.net/goons/jmk/medusa/medusa.html) | -| `tasks` | Total number of login pairs to be tested concurrently, default is 16 | -| `command` | Medusa arguments with syntax as in command line. Do not write 'medusa' into the command. If you specify '-O' parameter with 'cryton_default' it will save file with passwrods to Cryton's default directory **(if you choose other location, do not specify file name)** and if you specify target parameter (-h) with 'cryton_default' Cryton's stage target will be used (optional). **Cannot be combined with other input parameters!** | - -#### Default command - -```bash --u admin -P /usr/share/wordlists/rockyou.txt -O [cryton_evidence_directory] -t 16 -h target -M ssh -``` - -What does it do? It tries to login with credentials [admin - passwords from file] onto ssh on target with 16 login pair tries concurrently and saves found login pairs into cryton evidence directory (which is automatically generated). - -The default command works only on Kali (because of the password list). So if you want to use different password list, or only one password, you can use parameter: 'password' / 'password_list'. It works the same way for any other default parameter. - -#### Example yaml(s) - -```yaml -attack_module_args: - target: 1.2.3.4 - username: admin - password: pass - tasks: 64 -``` - -```yaml -attack_module_args: - command: -t 16 -u vagrant -p vagrant -O cryton_default -h 127.0.0.1 -M ssh -``` - -## Output - -Description of output. - -| Parameter name | Parameter description | -| -------------- | ------------------------------------------------------------ | -| `username` | Username found during bruteforce | -| `password` | Password found during bruteforce | -| `credentials` | If there are more than one login credentials found, they are returned in form of user:password pairs | - -#### Example - -```json -{"mod_out": {"credentials": {"admin": "admin", "root": "toor"}}} -``` - -```json -{"mod_out": {"username": "admin", "password": "admin"}} -``` \ No newline at end of file diff --git a/docs/2020.4.1/modules/mod_msf.md b/docs/2020.4.1/modules/mod_msf.md deleted file mode 100644 index 7732e8f..0000000 --- a/docs/2020.4.1/modules/mod_msf.md +++ /dev/null @@ -1,48 +0,0 @@ -# mod_msf - -Module for orchestrating Metasploit Framework. - -## Requirements - -System requirements (those not listed in requirements.txt for python). - -For this module to function properly, [Metasploit-framework](https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers) needs to be installed. - -After a successful installation of Metasploit-framework, you need to load msgrpc plugin. Easiest way to do this to open your terminal and run `msfrpcd` with `-P toor` to use password and `-S` to turn off SSL (depending on configuration in Worker config file). - -**Optional:** - -Another option is to run Metasploit using `msfconsole` and load msgrpc plugin using this command: - -````bash -load msgrpc ServerHost=127.0.0.1 ServerPort=55553 User=msf Pass='toor' SSL=true -```` - -This is just default, feel free to change the parameters to suit your needs, but keep in mind that they must match your worker config file. - -After successfully loading the msgrpc plugin, you are all set and ready to use this module. - -## Input parameters - -Description of input parameters for module. - -| Parameter name | Parameter description | -| ------------------- | ------------------------------------------------------------ | -| `exploit` | Exploit present in Metasploit library to be used | -| `exploit_arguments` | Custom list of Metasploit specific arguments (eg. RHOSTS, RPORT) | - -As a default value for RHOSTS, Stage "target" is used. - -This module can create sessions using our [Cryton session management](https://cryton.gitlab-pages.ics.muni.cz/cryton-project/1.0/scenario/#session-management) feature. - -#### Example yaml(s) - -```yaml -attack_module_args: - exploit: auxiliary/scanner/ssh/ssh_login - exploit_arguments: - RHOSTS: 127.0.0.1 - USERPASS_FILE: /usr/share/metasploit-framework/data/wordlists/root_userpass.txt -``` - -## Output \ No newline at end of file diff --git a/docs/2020.4.1/modules/mod_nmap.md b/docs/2020.4.1/modules/mod_nmap.md deleted file mode 100644 index afb5faf..0000000 --- a/docs/2020.4.1/modules/mod_nmap.md +++ /dev/null @@ -1,60 +0,0 @@ -# mod_nmap - -This module implemets scanning capabilities of Nmap. - -It is scanning target's ports. By default it scans the most common ports, returns OK and a list with all ports and their parameters. - -With set 'ports' the module is scanning target's ports from the 'ports' list. If those ports match their parameters in port_parameters (default parameter is "state": "open") the module returns OK and a list with all ports and their parameters. - -## Requirements - -List of system requirements (those not listed in requirements.txt for python). - -For this module to function properly, [Nmap](https://github.com/nmap/nmap) need to be installed. - -## Input parameters - -Description of input parameters for module. - -| Parameter name | Parameter description | -| ---------------------------- | ------------------------------------------------------------ | -| `target` | Scan target | -| `ports` | List of ports to be scanned (default scans most common ports) | -| `port_parameters` (optional) | Check if found ports match your desired parameters. The desired port must be added into 'ports'). Options with examples: {```"host": "1.1.1.1", "hostname": "host", "hostname_type": "", "protocol": "tcp", "port": 22, "name": "ssh", "state": "open", "product": "OpenSSH", "extrainfo": "Ubuntu Linux; protocol 2.0", "reason": "syn-ack", "version": "5.9p1 Debian 5ubuntu1.10", "conf": "10", "cpe": "cpe:/o:linux:linux_kernel"```}. | -| `command` | Input your own command like in Nmap cli. Do not add 'nmap' into the command. Also do not specify target, Cryton's stage target will be used by default. | - -#### Example yaml(s) - -```yaml -attack_module_args: - target: 127.0.0.1 - ports: - - 22 -``` - -```yaml -attack_module_args: - target: 127.0.0.1 - ports: - - 22 - port_parameters: [{"port": 22, "name": "ssh", "product": "OpenSSH"}] -``` - -```yaml -attack_module_args: - command: -p 22 -sV -T4 -``` - -## Output - -Description of output. - -| Parameter name | Parameter description | -| ---------------- | ------------------------------------------------ | -| ```open_ports``` | Key:value pairs of open services and their ports | - -#### Example - -```json -{"mod_out": {"open_ports": {"ssh": "22", "ftp": "21"}}} -``` \ No newline at end of file diff --git a/docs/2020.4.1/modules/mod_test.md b/docs/2020.4.1/modules/mod_test.md deleted file mode 100644 index 045c8b7..0000000 --- a/docs/2020.4.1/modules/mod_test.md +++ /dev/null @@ -1,28 +0,0 @@ -# mod_test - -Description - template for writing attack modules documentation - -## Requirements -list of system requirements (those not listed in requirements.txt for python) - -```apt install vim nc``` - -## Input parameters - -Description of input parameters for module. - -| Parameter name | Parameter description | -| -------------- | --------------------- | -| ```username``` | Username to use | -| ```password``` | Password to use | - -## Output - -Description of output - -| Parameter name | Parameter description | -| ---------------- | --------------------- | -| ```session_id``` | Metasploit session id | - -#### Example -```{'session_id': 42}``` \ No newline at end of file diff --git a/docs/2020.4.1/plan-execution.md b/docs/2020.4.1/plan-execution.md deleted file mode 100644 index 69eb111..0000000 --- a/docs/2020.4.1/plan-execution.md +++ /dev/null @@ -1,12 +0,0 @@ -# Plan execution - -For every execution of Plan (on a given Worker) a new PlanExecution is created. This execution contains: - -* Start time of execution -* Finish time of execution -* last Pause time of execution (if available) -* State of execution -* Worker on which it is running -* Run of which it is a part of - -Importance of this object is in keeping the history of executions of a given run. This object also connects all other sub-executions (for Stage and Step) in a one logical unit - Run. \ No newline at end of file diff --git a/docs/2020.4.1/session-mngmt.md b/docs/2020.4.1/session-mngmt.md deleted file mode 100644 index 10f2dcc..0000000 --- a/docs/2020.4.1/session-mngmt.md +++ /dev/null @@ -1,19 +0,0 @@ -### Session management - -One of the unique features of Cryton is ability to create and use *sessions* - connections to the target systems. -When you successfully exploit a running network service on your target machine (victim), you open a connection to it. -In Cryton, this connection can be given name and then used during the Plan execution in any Step (which is executed on the same Worker node). -Metasploit Framework session management is used for storing and interacting with sessions, and therefore must be available and running on the Worker node. - -```yaml -- name: step1 - attack_module: ... - create_named_session: session_to_target_1 -- name: step2 - attack_module: ... - use_named_session: session_to_target_1 -``` - -In the example above, step1 creates a named session *session_to_target_1* (in case it succeeds). -It's Metasploit ID gets stored in database and can be used anywhere in the Plan, not only in following Step (as seen in example). -When the Plan creates multiple sessions to the same target, and the attacker does not care which he is using, *use_any_session_to_target* parameter can be used. \ No newline at end of file diff --git a/docs/2020.4.1/stage-execution.md b/docs/2020.4.1/stage-execution.md deleted file mode 100644 index e4a40e6..0000000 --- a/docs/2020.4.1/stage-execution.md +++ /dev/null @@ -1,10 +0,0 @@ -# Stage execution - -For every execution of Stage a new StageExecution is created. This execution contains: - -* Start time of execution -* Finish time of execution -* last Pause time of execution (if available) -* State of execution -* PlanExecution of which it is a part of - diff --git a/docs/2020.4.1/stage.md b/docs/2020.4.1/stage.md deleted file mode 100644 index 657313c..0000000 --- a/docs/2020.4.1/stage.md +++ /dev/null @@ -1,37 +0,0 @@ - -Stage is a unit defined by a target and a time of start. It contains a list of attack Steps. - -### Triggering - -#### trigger_type - -A type of trigger to be used. Available triggers are: - -| Type | Meaning | -| -------------- | ------------------------------------------------------------ | -| `delta` | Schedule execution for specific time after plan start, eg. `minutes: 30` | -| `HTTPListener` | (Currently in development) Stage will be executed on specific data received on the listener | - -#### trigger_args - -Trigger arguments, that are specific for every type of trigger. - -### Example - -```yaml -- name: stage-one - trigger_type: delta - trigger_args: - minutes: 5 - steps: - - name: scan-localhost - is_init: true - attack_module: infrastructure/scan/mod_nmap - attack_module_args: - ports: - - 22 - next: - - type: result - value: OK - step: ssh-bruteforce -``` diff --git a/docs/2020.4.1/step-execution.md b/docs/2020.4.1/step-execution.md deleted file mode 100644 index b9e391b..0000000 --- a/docs/2020.4.1/step-execution.md +++ /dev/null @@ -1,19 +0,0 @@ -# Step execution - -For every execution of Step a new StepExecution is created. This execution contains: - -* Start time of execution -* Finish time of execution -* last Pause time of execution (if available) -* State of execution -* StageExecution of which it is a part of - -In addition, results of Attack module execution are stored in this object: - -* mod_out -* mod_err -* std_out -* std_err -* result -* evidence_file - diff --git a/docs/2021.2.1/advanced-example.md b/docs/2021.2.1/advanced-example.md new file mode 100644 index 0000000..d2655d7 --- /dev/null +++ b/docs/2021.2.1/advanced-example.md @@ -0,0 +1,240 @@ +## Set up Workers + +With workers installed via this [tutorial](install-worker.md), you can set them up in [cryton-cli](cli.md). In this tutorial, it's assumed that cryton-core and cryton-cli is installed on the same machine. If not use `cryton-cli -H 127.0.0.1 -p 8000 --secure ...` to connect cryton-cli to cryton-core. + +```shell +cryton-cli workers create worker_ip_address name -p customPrefix +``` + +**example**: + +```shell +cryton-cli workers create localhost worker1 -p test1 +Worker successfully created! ({'worker_model_id': 1, 'link': 'http://127.0.0.1:8000/cryton/api/v1/workers/1/'}) +``` + +```shell +cryton-cli workers create localhost worker2 -p test2 +Worker successfully created! ({'worker_model_id': 2, 'link': 'http://127.0.0.1:8000/cryton/api/v1/workers/2/'}). +``` + +**Note:** If using multiple workers, they should not be on the same machine for the [example plan](#Plan-template-example) below to work because of the [HTTPListener](stage.md##Triggering) listening on a specific port. + +## Create a Template + +Create [plan template](template.md) using a file containing the desired plan YAML: + +```shell +cryton-cli plan-templates create path/to/example +``` + +**example**: + +```shell +cryton-cli plan-templates create cryton-core/examples/plans/advanced-example.yaml +Template successfully created! ({'url': 'http://127.0.0.1:8000/cryton/api/v1/templates/1/', 'id': 1, 'file': 'http://127.0.0.1:8000/uploads/execution-variables-example_YmlZuKl.yaml'}). +``` + +### Plan template example + +To trigger `stage-two`, GET request with parameters and defined in HTTPListener under `routes` needs to be send to host:port defined under `trigger_args`. So in this example, GET request from terminal should look like `curl http://localhost:8082/index?a=1`. + +```yaml +--- +plan: + name: Advanced example + owner: test name + stages: + - name: stage-one + trigger_type: delta + trigger_args: + seconds: 5 + steps: + - name: scan-localhost + is_init: true + attack_module: mod_nmap + attack_module_args: + target: "{{ target }}" # execution variable + ports: + - 22 + next: + - type: result + value: OK + step: bruteforce + - name: bruteforce + attack_module: mod_medusa + attack_module_args: + target: "{{ target }}" # execution variable + credentials: + username: "{{ username }}" # execution variable + # default password_list will be used for bruteforce + - name: stage-two + depends_on: + - stage-one + trigger_type: HTTPListener + trigger_args: + host: localhost + port: 8082 + routes: + - path: /index + method: GET + parameters: + - name: a + value: "1" + steps: + - name: ssh-session + is_init: true + attack_module: mod_msf + attack_module_args: + create_named_session: session_to_target_1 + exploit: auxiliary/scanner/ssh/ssh_login + exploit_arguments: + RHOSTS: "{{ target }}" # execution variable + USERNAME: $bruteforce.username + PASSWORD: $bruteforce.password + next: + - type: result + value: OK + step: session-cmd + - name: session-cmd + attack_module: mod_cmd + attack_module_args: + use_named_session: session_to_target_1 + cmd: {{ commands.passwd }} # inventory file variable +``` + +#### Featured functionalities + +This example plan features cryton functionalities such as [triggers](stage.md#Triggering), [execution variables](step.md#Execution-variables), [inventory files](instance.md#Inventory-files), [output sharing](step.md#Output-sharing), [session management](session-mngmt.md). + +#### Used modules + +Modules used in this example are [mod_nmap](modules/mod_nmap.md), [mod_medusa](modules/mod_medusa.md), [mod_msf](modules/mod_msf.md), [mod_cmd](modules/mod_cmd.md). + +## Create an Instance + +Create [Instance](instance.md) from created [plan template](template.md) and [inventory file](instance.md#Inventory-files). + +```shell +cryton-cli plans create 1 -i inventory_file1 +Plan Instance successfully created! ({'plan_model_id': 1, 'link': 'http://127.0.0.1:8000/cryton/api/v1/plans/1/'}). +``` + +### Inventory file example + +```ini +[commands] +passwd: cat /etc/passwd +``` + +**Note:** Inventory files are not required, this is just functionality demonstration. + +## Create a Run + +Create [run](run.md) from previously created [instance](instance.md) and workers. First is plan_id and then id of workers. + +```shell +cryton-cli runs create 1 1 2 +Run successfully created! ({'run_model_id': 1, 'link': 'http://127.0.0.1:8000/cryton/api/v1/runs/1/'}). +``` + +### Add Execution variables + +Now there should be created 2 [plan-executions](execution.md#Plan-execution), one for each worker. You can view them with: + +```shell +cryton-cli plan-executions list +id: 1, schedule_time: None, start_time: None, pause_time: None, finish_time: None, state: PENDING, evidence_dir: None, worker: http://127.0.0.1:8000/cryton/api/v1/workers/1/ + + +id: 2, schedule_time: None, start_time: None, pause_time: None, finish_time: None, state: PENDING, evidence_dir: None, worker: http://127.0.0.1:8000/cryton/api/v1/workers/2/ +``` + +[Inventory file](instance.md) needs to be created for each [instance](instance.md). For plan example above, inventory files could look like this. + +**Execution variables file for Plan-execution 1:** + +```ini +target: 127.0.0.1 +username: vagrant +``` + +**Execution variables file for Plan-execution 2:** + +```ini +target: 127.0.0.1 +username: admin +``` + +Add created [execution variables](step.md#Execution-variables) to the [plan-executions](execution.md#Plan-execution) that you want to execute them with. + +```shell +cryton-cli execution-variables create 1 exec_variables1.txt +Execution variable(s) successfully created! ([1, 2, 3]). +``` + +```shell +cryton-cli execution-variables create 2 exec_variables2.txt +Execution variable(s) successfully created! ([4, 5, 6]). +``` + +**Note:** Execution variables are not required, this is just functionality demonstration. + +## Schedule or Execute + +#### Schedule run + +Run executions can be scheduled to a specific date/time using local timezone. + +```shell +cryton-cli runs schedule 1 2020-06-08 10:00:00 +Run successfully scheduled! (Run 1 is scheduled for 2020-06-08 10:00:00.). +``` + +#### Execute run + +```shell +cryton-cli runs execute 1 +Run successfully executed! (Run 1 was executed.). +``` + +### Pause/Unpause + +Runs in progress can be paused with run_id: + +```shell +cryton-cli runs pause 1 +``` + +And then resumed using: + +```shell +cryton-cli runs resume 1 +``` + +## Report results + +#### List runs + +To see if executed runs are finished, you can list runs and look at its **state**: + +```shell +cryton-cli runs list +id: 1, schedule_time: None, start_time: 2021-05-24T00:08:45.200025, pause_time: None, finish_time: 2021-05-24T00:09:18.397199, state: FINISHED, plan_model: http://127.0.0.1:8000/cryton/api/v1/plans/1/ +``` + +#### View report + +Reports can be viewed directly in cryton-cli: + +`cryton-cli runs report 1 --less` + +#### Generate report + +or they can be saved to a /tmp/ directory: + +```shell +cryton-cli runs report 1 +Successfully created Run's report! (file saved at: /tmp/report_run_1_2020-06-08-10-15-00-257994_xdQeV) +``` + diff --git a/docs/2020.4.1/architecture.md b/docs/2021.2.1/architecture.md similarity index 73% rename from docs/2020.4.1/architecture.md rename to docs/2021.2.1/architecture.md index c246947..ab7022b 100644 --- a/docs/2020.4.1/architecture.md +++ b/docs/2021.2.1/architecture.md @@ -4,7 +4,7 @@ ## Core -As the name suggests, this is the **Core** component of Cryton toolset. It provides all the functionality for parsing the Attack Plans, creation of Executions and scheduling of Runs. Scheduling itself is done via **Scheduler** component, which shares **Database** with Core. +As the name suggests, this is the **Core** component of Cryton toolset. It provides all the functionality for parsing the Attack Plans, creation of Executions and scheduling of Runs. For issuing commands to Core, **REST API** is provided. This is utilized by **CLI** for normal user interactions. @@ -15,7 +15,3 @@ Cryton worker is a component for executing Cryton attack modules remotely. Cryto ## Modules Cryton modules component contains attack modules used by Cryton Worker. It's usage is described further in the documentation. - -## Scheduler - -APScheduler implementation which executes scheduled Runs on specified time. Connection between Core and Scheduler component is via RPYC. \ No newline at end of file diff --git a/docs/2020.4.1/attack-modules.md b/docs/2021.2.1/attack-modules.md similarity index 69% rename from docs/2020.4.1/attack-modules.md rename to docs/2021.2.1/attack-modules.md index 117ffc2..43a2192 100644 --- a/docs/2020.4.1/attack-modules.md +++ b/docs/2021.2.1/attack-modules.md @@ -15,12 +15,12 @@ Every attack module returns a dictionary with following keys: | Parameter name | Parameter meaning | | -------------- | ------------------------------------------------------------ | -| `return_code` | Numeric representation of result <br />0 means OK<br />-1 means FAIL<br />-2 means EXCEPTION | -| `mod_out` | Parsed output of module. Eg. for bruteforcing module, this might be a list of found usernames and passwords. Every mod_out is described in respective module documentation. | -| `mod_err` | Error message with description of the problem, if identified. If not identified, error message is stored in ```mod_err```. | +| `return_code` | Numeric representation of result (0, -1, -2) <br />0 (OK) means the module finished successfully<br />-1 (FAIL) means the module finished unsuccessfully<br />-2 (EXCEPTION) means the module finished with an error | +| `mod_out` | Parsed output of module. Eg. for bruteforce module, this might be a list of found usernames and passwords. | +| `mod_err` | Error message with description of the problem. | | `std_out` | Standard output (```std_out```) of any executed command (but mostly None) | | `std_err` | Standard error (```std_err```) of any executed command (but mostly None) | -| `file` | A module can also return a file. It is a python dictionary with keys `file_name` and `file_contents`. This file will be stored on Core machine. The local path will be added to return dictionary of Step under the key `evidence_file`. | +| `file` | A module can also return a file. It has to be a Python dictionary with keys `file_name` and `file_content` (optionally `file_encoding`, which can contain only `"base64"` or `None`). The file will be stored on the machine running Cryton Core. | diff --git a/docs/2021.2.1/basic-example.md b/docs/2021.2.1/basic-example.md new file mode 100644 index 0000000..8252448 --- /dev/null +++ b/docs/2021.2.1/basic-example.md @@ -0,0 +1,125 @@ +## Set up Worker + +With worker installed via this [tutorial](install-worker.md), you can set them up in [cryton-cli](cli.md). In this tutorial, it's assumed that cryton-core and cryton-cli is installed on the same machine. If not use `cryton-cli -H 127.0.0.1 -p 8000 --secure ...` to connect cryton-cli to cryton-core. + +```shell +cryton-cli workers create worker_ip_address name -p custom_refix +``` + +**example**: + +```shell +cryton-cli workers create localhost worker1 -p test1 +Worker successfully created! ({'worker_model_id': 1, 'link': 'http://127.0.0.1:8000/cryton/api/v1/workers/1/'}). +``` + +## Create a Template + +Create [plan-template](template.md) using a file containing the desired plan YAML: + +```shell +cryton-cli plan-templates create path/to/example +``` + +**example**: + +```shell +cryton-cli plan-templates create ../cryton-core/examples/plans/basic-example.yaml + +Template successfully created! ({'url': 'http://127.0.0.1:8000/cryton/api/v1/templates/1/', 'id': 1, 'file': 'http://127.0.0.1:8000/uploads/execution-variables-example_YmlZuKl.yaml'}). +``` + +### Plan template example + +```yaml +--- +plan: + name: Simulation example + owner: test name + stages: + - name: stage-one + trigger_type: delta + trigger_args: + seconds: 5 + steps: + - name: scan-localhost + is_init: true + attack_module: mod_nmap + attack_module_args: + target: 127.0.0.1 + ports: + - 22 + next: + - type: result + value: OK + step: bruteforce + - name: bruteforce + attack_module: mod_medusa + attack_module_args: + target: 127.0.0.1 + credentials: + username: vagrant + # default password_list will be used for bruteforce +``` + +## Create an Instance + +Create [Instance](instance.md) from created [plan template](template.md). + +```shell +cryton-cli plans create 1 +Plan Instance successfully created! ({'plan_model_id': 1, 'link': 'http://127.0.0.1:8000/cryton/api/v1/plans/1/'}). +``` + +## Create a Run + +Create [run](run.md) from previously created [instance](instance.md) and worker. First is plan_id and then id of worker. + +```shell +cryton-cli runs create 1 1 +Run successfully created! ({'run_model_id': 1, 'link': 'http://127.0.0.1:8000/cryton/api/v1/runs/1/'}). +``` + +## Schedule or Execute + +#### Schedule run + +Run executions can be scheduled to a specific date/time using local timezone. + +```shell +cryton-cli runs schedule 1 2020-06-08 10:00:00 +Run successfully scheduled! (Run 1 is scheduled for 2020-06-08 10:00:00.). +``` + +#### Execute run + +```shell +cryton-cli runs execute 1 +Run successfully executed! (Run 1 was executed.). +``` + +## Report results + +#### List runs + +To see if executed runs are finished, you can list runs and look at its **state**: + +```shell +cryton-cli runs list +id: 1, schedule_time: None, start_time: 2021-05-24T00:08:45.200025, pause_time: None, finish_time: 2021-05-24T00:09:18.397199, state: FINISHED, plan_model: http://127.0.0.1:8000/cryton/api/v1/plans/1/ +``` + +#### View report + +Reports can be viewed directly in cryton-cli: + +`cryton-cli runs report 1 --less` + +#### Generate report + +or they can be saved to a /tmp/ directory: + +```shell +cryton-cli runs report 1 +Successfully created Run's report! (file saved at: /tmp/report_run_1_2020-06-08-10-15-00-257994_xdQeV) +``` diff --git a/docs/2020.4.1/cli.md b/docs/2021.2.1/cli.md similarity index 93% rename from docs/2020.4.1/cli.md rename to docs/2021.2.1/cli.md index 7cecf9e..157a9a6 100644 --- a/docs/2020.4.1/cli.md +++ b/docs/2021.2.1/cli.md @@ -1,8 +1,8 @@ -## CLI + CLI implements capabilities of Cryton's REST API and can be automated by using custom scripts. -To start the CLI just type in `cryton-cli`: +To start the CLI just type `cryton-cli` and the following should show: ``` Usage: cryton-cli [OPTIONS] COMMAND [ARGS]... @@ -41,7 +41,7 @@ The default Cryton's REST API address and port are **localhost** and **8000**. T Optionally use `--secure` flag to use *HTTPS* protocol or `--debug` flag for non formatted output. ``` -(cryton-cli) root@localhost:~/cryton-cli$ cryton-cli -H 127.0.0.1 -p 8000 --secure ... +cryton-cli -H 127.0.0.1 -p 8000 --secure ... ``` To show help at any point use `--help` option. For example: `cryton-cli plans list --help`. @@ -53,7 +53,7 @@ Manage Execution variables from here. `create` Create new execution variable(s) for PlAN_EXECUTION_ID from FILE. Example: `cryton-cli execution-variables create 1 /path/to/file` -- argument `PlAN_EXECUTION_ID` - ID of the desired PlanExecution. +- argument `PLAN_EXECUTION_ID` - ID of the desired PlanExecution. - argument `FILE` - Path to file containing execution variables. `delete` Delete Execution variable with EXECUTION_VARIABLE_ID saved in Cryton. @@ -193,6 +193,10 @@ Example: `cryton-cli runs unschedule 1` - argument `RUN_ID` - ID of the Run you want to unschedule. +`kill` Kill Run saved in Cryton with RUN_ID. +Example: `cryton-cli runs kill 1` + +- argument `RUN_ID` - ID of the Run you want to kill. ### plan-executions @@ -205,6 +209,7 @@ Example: `cryton-cli plan-executions list` - option `--offset` - The initial index from which to return the results. - option `--limit` - Number of results to return per page. - option `--localize` - Convert UTC datetime to local timezone. +- option `--parent` - Filter Plan-executions using Run ID. `report` Create report for Plan's execution with EXECUTION_ID saved in Cryton. Example: `cryton-cli plan-executions report 1 -f /path/to/directory` @@ -235,6 +240,11 @@ Example: `cryton-cli plan-executions validate-modules 1` - argument `EXECUTION_ID` - ID of the Plan's execution you want to validate modules for. +`kill` Kill Plan's execution with EXECUTION_ID saved in Cryton. +Example: `cryton-cli plan-executions kill 1` + +- argument `EXECUTION_ID` - ID of the Plan's execution you want to kill. + ### plans Manage Plans from here. @@ -289,6 +299,7 @@ Example: `cryton-cli stage-executions list` - option `--offset` - The initial index from which to return the results. - option `--limit` - Number of results to return per page. - option `--localize` - Convert UTC datetime to local timezone. +- option `--parent` - Filter Stage-executions using Plan-execution ID. `report` Create report for Stage's execution with EXECUTION_ID saved in Cryton. Example: `cryton-cli stage-executions report 1 -f /path/to/directory` @@ -304,6 +315,11 @@ Example: `cryton-cli stage-executions show 1` - option `--less` - Show less like output. - option `--localize` - Convert UTC datetime to local timezone. +`kill` Kill Stage's execution with EXECUTION_ID saved in Cryton. +Example: `cryton-cli stage-executions kill 1` + +- argument `EXECUTION_ID` - ID of the Stage's execution you want to kill. + ### stages Manage Stages from here. @@ -333,6 +349,7 @@ Example: `cryton-cli stages list` - option `--offset` - The initial index from which to return the results. - option `--limit` - Number of results to return per page. - option `--localize` - Convert UTC datetime to local timezone. +- option `--parent` - Filter Stages using Plan ID. `show` Show Stage with STAGE_ID saved in Cryton. Example: `cryton-cli stages show 1` @@ -358,6 +375,7 @@ Example: `cryton-cli step-executions list` - option `--offset` - The initial index from which to return the results. - option `--limit` - Number of results to return per page. - option `--localize` - Convert UTC datetime to local timezone. +- option `--parent` - Filter Step-executions using Stage-execution ID. `report` Create report for Step's execution with EXECUTION_ID saved in Cryton. Example: `cryton-cli step-executions report 1 -f /path/to/directory` @@ -373,6 +391,11 @@ Example: `cryton-cli step-executions show 1` - option `--less` - Show less like output. - option `--localize` - Convert UTC datetime to local timezone. +`kill` Kill Step's execution with EXECUTION_ID saved in Cryton. +Example: `cryton-cli step-executions kill 1` + +- argument `EXECUTION_ID` - ID of the Step's execution you want to kill. + ### steps Manage Steps from here. @@ -402,6 +425,7 @@ Example: `cryton-cli steps list` - option `--offset` - The initial index from which to return the results. - option `--limit` - Number of results to return per page. - option `--localize` - Convert UTC datetime to local timezone. +- option `--parent` - Filter Steps using Stage ID. `show` Show Step with STEP_ID saved in Cryton. Example: `cryton-cli steps show 1` diff --git a/docs/2021.2.1/execution.md b/docs/2021.2.1/execution.md new file mode 100644 index 0000000..ec21383 --- /dev/null +++ b/docs/2021.2.1/execution.md @@ -0,0 +1,58 @@ +# Execution + +There are special kinds of objects called *Executions* for every unit in Attack scenario: + +* **PlanExecution** +* **StageExecution** +* **StepExecution** + +These are not objects that need to be created by you - instead they are created when their respective unit is executed. This way a history and results of each and every execution can be stored. + +Every Execution object stores a start and finish time, so it is easy to count running times of each unit. With Steps the Execution is also a place where the output and results from attack modules is stored. + + +## Plan execution + +For every execution of Plan (on a given Worker) a new PlanExecution is created. This execution contains: + +* Start time of execution +* Finish time of execution +* last Pause time of execution (if available) +* State of execution +* Worker on which it is running +* Run of which it is a part of + +Importance of this object is in keeping the history of executions of a given run. This object also connects all other sub-executions (for Stage and Step) in a one logical unit - Run. + +## Stage execution + +For every execution of Stage a new StageExecution is created. This execution contains: + +* Start time of execution +* Finish time of execution +* last Pause time of execution (if available) +* State of execution +* PlanExecution of which it is a part of + +## Step execution + +For every execution of Step a new StepExecution is created. This execution contains: + +* Start time of execution +* Finish time of execution +* last Pause time of execution (if available) +* State of execution +* StageExecution of which it is a part of + +In addition, results of Attack module execution are stored in this object: + +* mod_out +* mod_err +* std_out +* std_err +* result +* evidence_file + + + + diff --git a/docs/2021.2.1/howto-create-attack-modules.md b/docs/2021.2.1/howto-create-attack-modules.md new file mode 100644 index 0000000..085cd31 --- /dev/null +++ b/docs/2021.2.1/howto-create-attack-modules.md @@ -0,0 +1,148 @@ +Each module has its own folder, which will be used in plan templates. The following structure is used when creating modules: +``` +mod_custom +├── example.py +├── mod.py +├── README.md +├── requirements.txt +└── test_mod.py +``` +**IMPORTANT: Don't use custom file names.** + +### mod.py +_Attack module_ is a module implementing two functions: execute(args) returning a specific return structure (in the form of dict) and validate(args) function returning True or False (depending on valid arguments provided). + +```python +def execute(args): + ret_vals = dict() + my_argument = args.get('my_argument') + + return ret_vals + +def validate(args): + if args.get('nonoptional_argument') is not None: + return 0 + else: + raise Exception + +``` + +If you want to store an evidence file from a module in the Cryton master's default evidence directory, add the following code into your execute function: + +```python +with open(file_path, 'rb') as bin_file: + file_content = bin_file.read() + +ret_vals.update({'file': {'file_name': desired_file_name, 'file_content': file_content}}) +``` + +#### Output (dictionary) parameters + +| Parameter name | Parameter meaning | +| -------------- | ------------------------------------------------------------ | +| `return_code` | Numeric representation of result (0, -1, -2) <br />0 (OK) means the module finished successfully<br />-1 (FAIL) means the module finished unsuccessfully<br />-2 (EXCEPTION) means the module finished with an error | +| `mod_out` | Parsed output of module. Eg. for bruteforce module, this might be a list of found usernames and passwords. | +| `mod_err` | Error message with description of the problem. | +| `std_out` | Standard output (```std_out```) of any executed command (but mostly None) | +| `std_err` | Standard error (```std_err```) of any executed command (but mostly None) | +| `file` | A module can also return a file. It has to be a Python dictionary with keys `file_name` and `file_content` (optionally `file_encoding`, which can contain only `"base64"` or `None`). The file will be stored on the machine running Cryton Core. | + +### test_mod.py +Unit tests for you module. +```python +import unittest +import mod + + +class CustomTest(unittest.TestCase): + def test_my_custom_mod(self): + ret = mod.execute(self.args) + self.assertEqual(ret.get('return_code'), 0) +``` + +### example.py +Example execution for quick start or testing. +```python +from mod import execute, validate + +args = { + "arg1": "127.0.0.1", + "arg2": "username", + "arg3": "password" +} + +try: + val_output = validate(args) + print("validate output: "+str(val_output)) +except Exception as ex: + print(ex) + +try: + ex_output = execute(args) + print("execute output: "+str(ex_output)) +except Exception as ex: + print(ex) +``` + +### README.md +~~~ +# mod_custom +General information about module. + +## Requirements +System requirements (those not listed in requirements.txt for python). + +## Input parameters +Description of input parameters for module. + +| Parameter name | Parameter description | +| ----------------- | ---------------------- | +| `arg1` (required) | Parameter 1 | +| `arg2` (optional) | Parameter 2 | + +## Example yaml(s) + +``` yaml +attack_module_args: + arg1: content + arg2: content +``` +~~~ + + +### Output + +Description of output. + +| Parameter name | Parameter description | +| --------------- | ------------------------------------------------------- | +| `file_content` | File that contains output of command in `cmd` parameter | + +#### Example + +**With `output_file` parameter:** + +```json +{"mod_out": {"file_content": "path/to/file"}} +``` + +**Without `output_file` parameter:** + +```json +{"mod_out": {"cmd_out": "command output"}} +``` + + +### requirements.txt + +File containing module's Python requirements. +``` +python_lib==1.2.3 +``` + +### Worker prebuilt functionality +Worker provides prebuilt functionality (limited for now) to make building modules easier. Import it using: +```python +from cryton_worker.lib.util import module_util +``` +For more information check out [Worker](https://gitlab.ics.muni.cz/cryton/cryton-worker) README.md. \ No newline at end of file diff --git a/docs/2020.4.1/images/architecture.png b/docs/2021.2.1/images/architecture.png similarity index 100% rename from docs/2020.4.1/images/architecture.png rename to docs/2021.2.1/images/architecture.png diff --git a/docs/2020.4.1/images/core-component.png b/docs/2021.2.1/images/core-component.png similarity index 100% rename from docs/2020.4.1/images/core-component.png rename to docs/2021.2.1/images/core-component.png diff --git a/docs/2020.4.1/images/flow-diagram.png b/docs/2021.2.1/images/flow-diagram.png similarity index 100% rename from docs/2020.4.1/images/flow-diagram.png rename to docs/2021.2.1/images/flow-diagram.png diff --git a/docs/2020.4.1/images/lifecycle.png b/docs/2021.2.1/images/lifecycle.png similarity index 100% rename from docs/2020.4.1/images/lifecycle.png rename to docs/2021.2.1/images/lifecycle.png diff --git a/docs/2020.4.1/images/micro-cryton.png b/docs/2021.2.1/images/micro-cryton.png similarity index 100% rename from docs/2020.4.1/images/micro-cryton.png rename to docs/2021.2.1/images/micro-cryton.png diff --git a/docs/2020.4.1/images/modules-component.png b/docs/2021.2.1/images/modules-component.png similarity index 100% rename from docs/2020.4.1/images/modules-component.png rename to docs/2021.2.1/images/modules-component.png diff --git a/docs/2021.2.1/images/stage.png b/docs/2021.2.1/images/stage.png new file mode 100644 index 0000000000000000000000000000000000000000..3858a843705abe392ff5a4949a87eae91a8f7fd8 GIT binary patch literal 31201 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 literal 0 HcmV?d00001 diff --git a/docs/2021.2.1/images/swagger.png b/docs/2021.2.1/images/swagger.png new file mode 100644 index 0000000000000000000000000000000000000000..fb257d51caa91bd0c77fa66e37a1761cb45637d6 GIT binary patch literal 111822 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	B$GY1X9*$P%c^RnFQazkn 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 literal 0 HcmV?d00001 diff --git a/docs/2021.2.1/images/template.png b/docs/2021.2.1/images/template.png new file mode 100644 index 0000000000000000000000000000000000000000..7883c1df4939c1025f43309bdfa934e0e263fe66 GIT binary patch literal 52638 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 literal 0 HcmV?d00001 diff --git a/docs/2020.4.1/images/templates.png b/docs/2021.2.1/images/templates.png similarity index 100% rename from docs/2020.4.1/images/templates.png rename to docs/2021.2.1/images/templates.png diff --git a/docs/2020.4.1/images/worker-component.png b/docs/2021.2.1/images/worker-component.png similarity index 100% rename from docs/2020.4.1/images/worker-component.png rename to docs/2021.2.1/images/worker-component.png diff --git a/docs/2020.4.1/install-cli.md b/docs/2021.2.1/install-cli.md similarity index 87% rename from docs/2020.4.1/install-cli.md rename to docs/2021.2.1/install-cli.md index 5e78699..0b93f68 100644 --- a/docs/2020.4.1/install-cli.md +++ b/docs/2021.2.1/install-cli.md @@ -2,12 +2,10 @@ For this installation we are assuming installation on the same machine. Please update variables for your use case. -Cryton CLI uses environment variables for it's settings. +Cryton CLI uses environment variables for its settings. ~~~~ CRYTON_CLI_TIME_ZONE=AUTO -CRYTON_CLI_CLI_VERSION=2.0 -CRYTON_CLI_CRYTON_VERSION=2.0 CRYTON_CLI_API_RHOST=127.0.0.1 CRYTON_CLI_API_RPORT=8000 CRYTON_CLI_API_SSL=False @@ -16,7 +14,7 @@ CRYTON_CLI_API_ROOT_URL=cryton/api/v1/ #### Requirements -- python3.8 (tested version) +- python3.8 (tested) - pipenv (optional) #### Installation @@ -24,7 +22,6 @@ CRYTON_CLI_API_ROOT_URL=cryton/api/v1/ Go into Cryton CLI directory, create python environment, enter it and install CLI. ~~~~ -cd cryton-cli pipenv install pipenv shell python setup.py install diff --git a/docs/2021.2.1/install-core.md b/docs/2021.2.1/install-core.md new file mode 100644 index 0000000..2f7921c --- /dev/null +++ b/docs/2021.2.1/install-core.md @@ -0,0 +1,73 @@ +## Core Installation + +Cryton Core uses environment variables for its settings. + +~~~~ +CRYTON_RABBIT_USERNAME=admin +CRYTON_RABBIT_PASSWORD=mypass +CRYTON_RABBIT_SRV_ADDR=cryton_rabbit +CRYTON_RABBIT_SRV_PORT=5672 +CRYTON_DB_NAME=cryton +CRYTON_DB_USERNAME=cryton +CRYTON_DB_PASSWORD=cryton +CRYTON_DB_HOST=cryton_pgbouncer +Q_ATTACK_RESPONSE_NAME=cryton_core.attack.response +Q_CONTROL_RESPONSE_NAME=cryton_core.control.response +Q_EVENT_RESPONSE_NAME=cryton_core.event.response +Q_CONTROL_REQUEST_NAME=cryton_core.control.request +CRYTON_DEBUG=False +CRYTON_PUBLIC_PORT=8000 +CRYTON_TZ=UTC +CRYTON_RPC_TIMEOUT=1200 +~~~~ + +### Using docker-compose + +Go into Cryton Core directory and run docker-compose, which will pull, build and start all necessary docker images. + +**If you've updated either docker-compose file or environment variables please check that they correspond.** + +For production environment, there are some other options needed (publishing ports to public IP addresses, persistent database data volume etc.). +For production deployment, go to *Cryton Core* directory and use: + +~~~~ +docker-compose up -d +~~~~ + +Otherwise, use the default docker-compose file: + +~~~~ +docker-compose -f docker-compose.dev.yml up -d +~~~~ + + +This process might take a while, especially if it is the first time you run it - image must be built. +After a while you should see something like this: + +~~~~ +Creating network "cryton-core_default" with the default driver +Creating cryton_rabbit ... done +Creating cryton_db ... done +Creating cryton_apache ... done +Creating cryton_app ... done +Creating cryton_pgbouncer ... done +Creating cryton_listener ... don +~~~~ + +Everything should be set. Check if the installation was successful by either installing Cryton CLI or testing REST API with curl: + +~~~~ +curl localhost:8000 +~~~~ + +The response should be: + +~~~~ +{"runs":"http://localhost:8000/cryton/api/v1/runs/","plans":"http://localhost:8000/cryton/api/v1/plans/","plan_executions":"http://localhost:8000/cryton/api/v1/plan_executions/","stages":"http://localhost:8000/cryton/api/v1/stages/","stage_executions":"http://localhost:8000/cryton/api/v1/stage_executions/","steps":"http://localhost:8000/cryton/api/v1/steps/","step_executions":"http://localhost:8000/cryton/api/v1/step_executions/","workers":"http://localhost:8000/cryton/api/v1/workers/","templates":"http://localhost:8000/cryton/api/v1/templates/","execution_variables":"http://localhost:8000/cryton/api/v1/execution_variables/"} +~~~~ + +You can also try to run tests inside the container: + +``` +docker exec --env CRYTON_DB_HOST='cryton_db' -it cryton_app pytest +``` diff --git a/docs/2021.2.1/install-worker.md b/docs/2021.2.1/install-worker.md new file mode 100644 index 0000000..762a55a --- /dev/null +++ b/docs/2021.2.1/install-worker.md @@ -0,0 +1,127 @@ +## Worker Installation + +For this installation we are assuming installation on the same machine. Please update variables for your use case. + +Cryton Worker uses environment variables for it's settings. + +~~~~ +CRYTON_WORKER_MODULES_DIR=CHANGE_ME +CRYTON_WORKER_DEBUG=False +CRYTON_WORKER_LOG_CONFIG=CHANGE_ME_OPTIONALLY +CRYTON_WORKER_MSFRPCD_PASS=toor +CRYTON_WORKER_MSFRPCD_USERNAME=msf +CRYTON_WORKER_MSFRPCD_PORT=55553 +CRYTON_WORKER_MSFRPCD_SSL=False +CRYTON_WORKER_RABBIT_USERNAME=admin +CRYTON_WORKER_RABBIT_PASSWORD=mypass +CRYTON_WORKER_RABBIT_SRV_ADDR=CHANGE_ME +CRYTON_WORKER_RABBIT_SRV_PORT=5672 +CRYTON_WORKER_RABBIT_WORKER_PREFIX=CHANGE_ME +CRYTON_WORKER_CONSUMER_COUNT=3 +CRYTON_WORKER_PROCESSOR_COUNT=3 +CRYTON_WORKER_MAX_RETRIES=3 +CRYTON_WORKER_INSTALL_REQUIREMENTS=False +~~~~ + +These have to be updated in *.env* file before an installation and start up. +`CRYTON_WORKER_MODULES_DIR` with the directory containing attack modules, +`CRYTON_WORKER_RABBIT_SRV_ADDR` with the actual address of RabbitMQ server, +`CRYTON_WORKER_RABBIT_WORKER_PREFIX` with desired prefix that will be used to communicate with the Worker, +`CRYTON_WORKER_RABBIT_USERNAME` with RabbitMQ username and `CRYTON_WORKER_RABBIT_PASSWORD` with RabbitMQ password. + +## Manual (recommended) + +### Requirements + +- python3.8 (tested) +- pipenv (optional) + +For manual installation all you need to do is go to *Cryton Worker*'s directory and **run the setup script**. + +~~~~ +python3.8 setup.py install +~~~~ + +Event better you can use virtual environment for installation, for example using pipenv: +~~~~ +pipenv shell +python setup.py install +~~~~ + +Use _develop_ if you wish to directly (locally) modify the code: + +``` +python setup.py develop +``` + +Everything should be set. Check if the installation was successful using: + +~~~~ +cryton-worker +~~~~ + +## Docker + +**NOTICE: This guide won't describe how to install or mount modules and applications used by them. +Also, Triggers won't work, since the opened ports on Docker container can't be updated during uptime, +you have to set them up before running the container.** + +Go to *Cryton Worker*'s directory and run docker-compose, which will pull, build and start all necessary docker images: +~~~~ +cd cryton-worker/ +docker-compose up -d +~~~~ + +This process might take a while, especially if it is the first time you run it - Cryton-Worker image must be built. +After a while you should see something like this: +~~~~ +Creating cryton_worker ... done +~~~~ + +Everything should be set. Check if the installation was successful: + +~~~~ +user@localhost:~ /cryton-core $ docker-compose ps + Name Command State Ports +--------------------------------------------- +cryton_worker cryton-worker Up +~~~~ + +If is in state `Restarting`, something went wrong. Please check if values in `.env` file are correct. + +## Modules installation +To be able to **execute** (validate) **attack modules** you must download and save them into the same directory. Then update +`CRYTON_WORKER_MODULES_DIR` environment variable to point to the correct location. Modules are loaded on Cryton Worker's start up. + +Modules directory example: +``` +tree CRYTON_WORKER_MODULES_DIR +CRYTON_WORKER_MODULES_DIR/ +├── mod_hydra +│ └── mod.py +└── mod_cmd + └── mod.py +``` + +As mentioned, Cryton Worker is used for validating and executing modules and in order for them to work you have to install their requirements. +To do that you either install them manually inside Cryton Worker's environment, or you use Cryton Worker's CLI: +``` +cryton-worker start --install-requirements +``` +If this flag is specified each *requirements.txt* file inside the Worker's modules directory will be checked and installed. + +## Running Worker +To start Worker use +``` +cryton-worker start +``` +and you should see something like: +~~~~ +Starting.. +To exit press CTRL+C +Connection does not exist. Retrying.. +Connection to RabbitMQ server established. +[*] Waiting for messages. +~~~~ + +If you see an error. Please check if variables are correct and try to start Worker again. diff --git a/docs/2021.2.1/instance.md b/docs/2021.2.1/instance.md new file mode 100644 index 0000000..110688b --- /dev/null +++ b/docs/2021.2.1/instance.md @@ -0,0 +1,29 @@ +## Instance +The second stage is creating an Instance. While Template contains unfilled variables (therefore the name "template"), Instance fills these things in by combining the Template with an **Inventory file**. This file contains all information that needs to be filled in the Template. After instantiation everything is ready to create a **Run**. + +**NOTE: After creating Plan instance only the Step arguments Jinja variables can be left unfilled and must be explicitly defined as string.** + +### Inventory files + +When you create a template, you don't always have all the information you need for directly executing it. Or you simply want to make it reusable for other people in their own environment. For the purpose of providing variability in templates we support **inventory files**. These inventory files can be used to provide variable values to Templates using **Jinja** language. + +The valid Plan file is written in INI format with variables in the Jinja format, which can be replaced during the instantiation process. + +Example of inventory file: + +```ini +[names] +stage1_target: 192.168.56.102 +``` + + + +You can use it as in following example: + +```yaml + # Stage two: target is web server + - target: {{names.stage1_target}} +``` + +You can use Jinja variables everywhere in the Plan template. + diff --git a/docs/2021.2.1/logging.md b/docs/2021.2.1/logging.md new file mode 100644 index 0000000..80c731d --- /dev/null +++ b/docs/2021.2.1/logging.md @@ -0,0 +1,32 @@ +## Logging + +Cryton core allows logging into syslog. The logs adhere to following format: + +~~~~bash +2021-05-18 11:19:20,012.012 INFO [139703594285896] {listener} [start] {"queue": "cryton_core.control.request", "event": "Queue declared and consuming", "logger": "cryton-debug", "level": "info", "timestamp": "2021-05-18T11:19:20.012152Z"}, +2021-05-18 11:19:20,014.014 INFO [139703594285896] {listener} [start] {"plan_name": "Example scenario", "plan_id": 129, "status": "success", "event": "plan created", "logger": "cryton", "level": "info", "timestamp": "2021-05-18T06:17:39.753017Z"}, +... +~~~~ + +Every Plan/Stage/Step change of state is logged for later analysis. For every Step the result is also stored, although std_out and std_err are (currently) not. They can be found in the database. + +You can choose from two loggers - **debug** or **prod**, which you can set by environment variable *CRYTON_LOGGER*. + +#### Logger handlers + +for **debug**: + +* RotatingFileHandler /var/log/cryton-debug.log +* Console (std_out) + +for **prod**: + +* RotatingFileHandler /var/log/cryton.log +* Console (std_out) + +When running in Docker, you can always check the logs by: + +``` +docker logs CONTAINER_NAME +``` + diff --git a/docs/2020.4.1/modules/mod_cmd.md b/docs/2021.2.1/modules/mod_cmd.md similarity index 63% rename from docs/2020.4.1/modules/mod_cmd.md rename to docs/2021.2.1/modules/mod_cmd.md index ea59116..944831d 100644 --- a/docs/2020.4.1/modules/mod_cmd.md +++ b/docs/2021.2.1/modules/mod_cmd.md @@ -31,7 +31,9 @@ Description of input parameters for module. | Parameter name | Parameter description | | ---------------- | ---------------------- | | `cmd` (required) | Command to be executed | -| `output_file` (optional) | Where should be output file of module be stored, if not defined, output will be in the report file | +| `session_id` (optional) | Msf session in which command should be executed | +| `output_file`(optional) | Flag whether you want to save the output to a file in Cryton evidence directory (eg. true, false(default)) | +| `std_out` (optional) | Flag whether you want to return `std_out`(raw output of command) (eg. true, false(default)) | This module can use existing sessions with our [Cryton session management](https://cryton.gitlab-pages.ics.muni.cz/cryton-project/1.0/scenario/#session-management) feature. @@ -40,27 +42,27 @@ This module can use existing sessions with our [Cryton session management](https ``` yaml attack_module_args: cmd: cat /etc/passwd - output_file: /tmp/ + session_id: 1 ``` ## Output -Description of output. +Description of module output. -| Parameter name | Parameter description | -| --------------- | ------------------------------------------------------- | -| `file_contents` | File that contains output of command in `cmd` parameter | +| Parameter name | Parameter description | +| -------------- | ------------------------------------------------------------ | +| `return_code` | 0 - success<br />-1 - fail | +| `std_out` | Raw result of command | +| `mod_err` | Error while running module | +| `mod_out` | Module output that can be used as input for some modules | -#### Example +### Example -**With `output_file` parameter:** - -```json -{"mod_out": {"file_contents": "path/to/file"}} -``` - -**Without `output_file` parameter:** - -```json -{"mod_out": {"cmd_out": "command output"}} ``` +{ + 'return_code': 0, + 'std_out': 'contents of passwd file on target' + 'mod_err': '', + 'mod_out': same as std_out +} +``` \ No newline at end of file diff --git a/docs/2021.2.1/modules/mod_medusa.md b/docs/2021.2.1/modules/mod_medusa.md new file mode 100644 index 0000000..8bdc452 --- /dev/null +++ b/docs/2021.2.1/modules/mod_medusa.md @@ -0,0 +1,95 @@ +# mod_medusa + +This module implements attacking capabilities of Medusa bruteforce tool. + +## Requirements + +System requirements (those not listed in requirements.txt for python). + +For this module to function properly, [Medusa](https://github.com/jmk-foofus/medusa) need to be installed. + +## Input parameters + +Description of input parameters for module. + +| Parameter name | Parameter description | +| ------------------------ | ------------------------------------------------------------ | +| `target` | Bruteforce target (must be set when not using command) | +| `mod` (optional) | Specified mod(service) you want to use to attack (default ssh) | +| `output_file` (optional) | Flag whether you want to save the output to a file in Cryton evidence directory (eg. true, false(default)) | +| `std_out` (optional) | Flag whether you want to return `std_out`(raw medusa output) (eg. true, false(default)) | +| `credentials` (optional) | Parameters that can be used under this key are in table below (default are wordlists in module folder) | +| `tasks` (optional) | Total number of login pairs to be tested concurrently (default is 4) | + +Parameters that can be used under `credentials`. + +| Parameter name | Parameter description | +| --------------- | ------------------------------------------------------------ | +| `username` | Username to use for bruteforce | +| `password` | Password to use for bruteforce | +| `username_list` | Absolute path to file with usernames (default is username wordlist in mod folder) | +| `password_list` | Absolute path to file with passwords (default is password wordlist in mod folder) | +| `combo_list` | Absolute path to file with login pairs - user:password (official format can be found in http://foofus.net/goons/jmk/medusa/medusa.html). **Cannot be combined with other input parameters under `credentials`!** | + +Parameters for custom command usage + +| Parameter name | Parameter description | +| ------------------------ | ------------------------------------------------------------ | +| `command` | Medusa command with syntax as in command line. If you specify '-o' parameter `output_file` will be True. **Cannot be combined with other input parameters!** | +| `output_file` (optional) | Flag whether you want to save the output to a file in Cryton evidence directory (eg. true, false(default)) | + +#### Example yaml(s) + +```yaml +attack_module_args: + target: 127.0.0.1 + credentials: + username: admin + password: pass + tasks: 4 +``` + +```yaml +attack_module_args: + target: 127.0.0.1 + credentials: + combo_list: absolute/path/to/file + tasks: 4 +``` + +```yaml +attack_module_args: + command: medusa -t 4 -u vagrant -p vagrant -O cryton_default -h 127.0.0.1 -M ssh +``` + +## Output + +Description of module output. + +| Parameter name | Parameter description | +| -------------- | ------------------------------------------------------------ | +| `return_code` | 0 - success<br />-1 - fail | +| `std_out` | Raw output of hydra bruteforce | +| `mod_err` | Error while running hydra bruteforce | +| `mod_out` | Parsed module output with useful data that can be used as input for some modules | + +### Mod_out + +Description of `mod_out` output parameter + +| Parameter name | Parameter description | +| -------------- | ------------------------------------------------------------ | +| `username` | Username found during bruteforce | +| `password` | Password found during bruteforce | +| `credentials` | If there are more than one login credentials found, they are returned in form of user:password pairs | + +### Example + +``` +{ + 'return_code': 0, + 'std_out': 'Medusa v2.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>\n\nACCOUNT CHECK: [ssh] Host: 127.0.0.1 (1 of 1, 0 complete) User: admin (1 of 1, 0 complete) Password: pass (1 of 1 complete)\nACCOUNT FOUND: [ssh] Host: 127.0.0.1 User: vagrant Password: vagrant [SUCCESS]\n', + 'mod_err': '', + 'mod_out': {'username': 'admin', 'password': 'pass'} +} +``` \ No newline at end of file diff --git a/docs/2021.2.1/modules/mod_msf.md b/docs/2021.2.1/modules/mod_msf.md new file mode 100644 index 0000000..376b336 --- /dev/null +++ b/docs/2021.2.1/modules/mod_msf.md @@ -0,0 +1,70 @@ +# mod_msf + +Module for orchestrating Metasploit Framework. + +## Requirements + +System requirements (those not listed in requirements.txt for python). + +For this module to function properly, [Metasploit-framework](https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers) needs to be installed. + +After a successful installation of Metasploit-framework, you need to load msgrpc plugin. Easiest way to do this to open your terminal and run `msfrpcd` with `-P toor` to use password and `-S` to turn off SSL (depending on configuration in Worker config file). + +**Optional:** + +Another option is to run Metasploit using `msfconsole` and load msgrpc plugin using this command: + +````bash +load msgrpc ServerHost=127.0.0.1 ServerPort=55553 User=msf Pass='toor' SSL=true +```` + +This is just default, feel free to change the parameters to suit your needs, but keep in mind that they must match your worker config file. + +After successfully loading the msgrpc plugin, you are all set and ready to use this module. + +## Input parameters + +Description of input parameters for module. + +| Parameter name | Parameter description | +| ------------------- | ------------------------------------------------------------ | +| `exploit` | Exploit present in Metasploit library to be used | +| `std_out` (optional) | Flag whether you want to return `std_out`(raw metasploit output) (eg. true, false(default)) | +| `exploit_arguments` | Custom list of Metasploit specific arguments (eg. RHOSTS, RPORT) | + +As a default value for RHOSTS, Stage "target" is used. + +This module can create sessions using our [Cryton session management](https://cryton.gitlab-pages.ics.muni.cz/cryton-project/1.0/scenario/#session-management) feature. + +### Example yaml(s) + +```yaml +attack_module_args: + exploit: auxiliary/scanner/ssh/ssh_login + exploit_arguments: + RHOSTS: 127.0.0.1 + USERPASS_FILE: /usr/share/metasploit-framework/data/wordlists/root_userpass.txt +``` + +## Output + +Description of module output. + +| Parameter name | Parameter description | +| -------------- | ------------------------------------------------------------ | +| `return_code` | 0 - success<br />-1 - fail | +| `std_out` | Raw output of msf exploit | +| `mod_err` | Error while running msf exploit | +| `mod_out` | Same as std_out | + +### Example + +``` +{ + 'return_code': 0, + 'std_out': "RHOSTS => 127.0.0.1\nUSERNAME => vagrant\nPASSWORD => vagrant\n[*] Auxiliary module running as background job 4.\n[*] 127.0.0.1:22 - Starting bruteforce\n[+] 127.0.0.1:22 - Success: 'vagrant:vagrant' 'uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev),119(bluetooth),122(kali-trusted),133(scanner),142(kaboxer),143(docker) Linux kali 5.10.0-kali7-amd64 #1 SMP Debian 5.10.28-1kali1 (2021-04-12) x86_64 GNU/Linux '\n[*] Command shell session 2 opened (127.0.0.1:35199 -> 127.0.0.1:22) at 2021-05-22 22:57:36 +0200\n[*] Scanned 1 of 1 hosts (100% complete)\n", + 'mod_err': None, + 'mod_out': "RHOSTS => 127.0.0.1\nUSERNAME => vagrant\nPASSWORD => vagrant\n[*] Auxiliary module running as background job 4.\n[*] 127.0.0.1:22 - Starting bruteforce\n[+] 127.0.0.1:22 - Success: 'vagrant:vagrant' 'uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev),119(bluetooth),122(kali-trusted),133(scanner),142(kaboxer),143(docker) Linux kali 5.10.0-kali7-amd64 #1 SMP Debian 5.10.28-1kali1 (2021-04-12) x86_64 GNU/Linux '\n[*] Command shell session 2 opened (127.0.0.1:35199 -> 127.0.0.1:22) at 2021-05-22 22:57:36 +0200\n[*] Scanned 1 of 1 hosts (100% complete)\n" +} + +``` \ No newline at end of file diff --git a/docs/2021.2.1/modules/mod_nmap.md b/docs/2021.2.1/modules/mod_nmap.md new file mode 100644 index 0000000..8dd8139 --- /dev/null +++ b/docs/2021.2.1/modules/mod_nmap.md @@ -0,0 +1,63 @@ +# mod_nmap + +This module implemets scanning capabilities of Nmap. + +It is scanning target's ports. By default it scans the most common ports and returns a list with all ports and their parameters. + +## Requirements + +List of system requirements (those not listed in requirements.txt for python). + +For this module to function properly, [Nmap](https://github.com/nmap/nmap) need to be installed. + +## Input parameters + +Description of input parameters for module. + +| Parameter name | Parameter description | +| ---------------------------- | ------------------------------------------------------------ | +| `target` | Scan target (eg. 127.0.0.1) | +| `ports` (optional) | List of ports to be scanned (default scans most common ports) (eg. [80, 443]) | +| `port_parameters` (optional) | Check if found ports match your desired parameters. The desired port must be added into 'ports'). Options with examples: {`"portid": 22, "host": "127.0.0.1", "protocol": "tcp", "state": "open", "reason":"syn-ack", "service": {"name": "ssh", "product": "OpenSSH", "version": "8.4p1 Debian 3", "extrainfo": "protocol 2.0", "ostype": "Linux", "method": "probed", "conf": "10"}, "cpe": "cpe:/o:linux:linux_kernel"`}. | +| `options` (optional) | Additional Nmap parameters (parameter -sV already included) (eg. -T4) | +| `output_file` (optional) | Flag whether you want to save the output to a file in Cryton evidence directory (eg. true, false(default)) | +| `std_out` (optional) | Flag whether you want to return `std_out`(raw nmap output) (eg. true, false(default)) | + +### Example yaml(s) + +```yaml +attack_module_args: + target: 127.0.0.1 + ports: + - 22 + - 21 + port_parameters: + - portid: 22 + state: open + service: + product: OpenSSH + ostype: Linux + options: -T4 +``` + +## Output + +Description of module output. + +| Parameter name | Parameter description | +| -------------- | ------------------------------------------------------------ | +| `return_code` | 0 - success<br />-1 - fail | +| `std_out` | Raw output of Nmap scan | +| `mod_err` | Error while running Nmap scan | +| `mod_out` | Parsed module output with useful data that can be used as input for some modules, for example filtered ports with `port_parameters` input parameter | + +### Example + +``` +{ + 'return_code': 0, + 'std_out': {'127.0.0.1': {'osmatch': {}, 'ports': [{'protocol': 'tcp', 'portid': '22', 'state': 'open', 'reason': 'syn-ack', 'reason_ttl': '0', 'service': {'name': 'ssh', 'product': 'OpenSSH', 'version': '8.1p1 Debian 1', 'extrainfo': 'protocol 2.0', 'ostype': 'Linux', 'method': 'probed', 'conf': '10'}, 'cpe': [{'cpe': 'cpe:/o:linux:linux_kernel'}], 'scripts': []}, {'protocol': 'tcp', 'portid': '80', 'state': 'closed', 'reason': 'conn-refused', 'reason_ttl': '0', 'service': {'name': 'http', 'method': 'table', 'conf': '3'}, 'scripts': []}], 'hostname': [{'name': 'localhost', 'type': 'PTR'}], 'macaddress': None, 'state': {'state': 'up', 'reason': 'conn-refused', 'reason_ttl': '0'}}, 'stats': {'scanner': 'nmap', 'args': '/usr/bin/nmap -oX - -sV -T4 -p22,80 127.0.0.1', 'start': '1614274118', 'startstr': 'Thu Feb 25 18:28:38 2021', 'version': '7.80', 'xmloutputversion': '1.04'}, 'runtime': {'time': '1614274119', 'timestr': 'Thu Feb 25 18:28:39 2021', 'elapsed': '0.26', 'summary': 'Nmap done at Thu Feb 25 18:28:39 2021; 1 IP address (1 host up) scanned in 0.26 seconds', 'exit': 'success'}}, + 'mod_err': None, + 'mod_out': {'127.0.0.1': {'osmatch': {}, 'ports': [{'protocol': 'tcp', 'portid': '22', 'state': 'open', 'reason': 'syn-ack', 'reason_ttl': '0', 'service': {'name': 'ssh', 'product': 'OpenSSH', 'version': '8.4p1 Debian 3', 'extrainfo': 'protocol 2.0', 'ostype': 'Linux', 'method': 'probed', 'conf': '10'}, 'cpe': [{'cpe': 'cpe:/o:linux:linux_kernel'}], 'scripts': []}], 'hostname': [{'name': 'localhost', 'type': 'PTR'}], 'macaddress': None, 'state': {'state': 'up', 'reason': 'conn-refused', 'reason_ttl': '0'}}} +} +``` \ No newline at end of file diff --git a/docs/2020.4.1/modules/mod_ssh_session.md b/docs/2021.2.1/modules/mod_ssh_session.md similarity index 100% rename from docs/2020.4.1/modules/mod_ssh_session.md rename to docs/2021.2.1/modules/mod_ssh_session.md diff --git a/docs/2020.4.1/plan.md b/docs/2021.2.1/plan.md similarity index 96% rename from docs/2020.4.1/plan.md rename to docs/2021.2.1/plan.md index e7b1e23..b4c2ee0 100644 --- a/docs/2020.4.1/plan.md +++ b/docs/2021.2.1/plan.md @@ -1,6 +1,7 @@ - Plan is the basic unit of attack scenario. It contains name and owner of the Plan and a list of Stages. + + ### Example ```yaml @@ -29,7 +30,6 @@ plan: attack_module: mod_medusa attack_module_args: target: 127.0.0.1 - open_ports: $parent.open_ports username: vagrant password: vagrant next: @@ -54,4 +54,4 @@ plan: use_named_session: session_to_target_1 attack_module_args: cmd: cat /etc/passwd -``` +``` \ No newline at end of file diff --git a/docs/2021.2.1/reporting.md b/docs/2021.2.1/reporting.md new file mode 100644 index 0000000..83a514f --- /dev/null +++ b/docs/2021.2.1/reporting.md @@ -0,0 +1,127 @@ +After the Run has successfully ended (or not) you can **generate a report** with every Steps output and result. When you have multiple plan executions in a single run (when utilizing multiple Workers), you can compare each execution and use this insight to eg. score each team in a *cyber security exercise.* + +You can see an example report here: + +```yaml +plan_name: Example scenario +state: FINISHED +start_time: '2020-11-01T22:20:10.208170' +finish_time: null +pause_time: null +plan_executions: +- id: 1 + stage_name: Example scenario + state: FINISHED + start_time: '2020-11-01T22:20:09.964302' + finish_time: null + pause_time: null + worker_id: 1 + worker_name: test + evidence_dir: /root/.cryton/evidence/plan_001-Example_scenario/run_1/worker_test + stage_executions: + - id: 1 + stage_name: stage-one + state: FINISHED + start_time: '2020-11-01T22:20:14.964302' + finish_time: null + pause_time: null + step_executions: + - id: 1 + step_name: scan-localhost + state: FINISHED + start_time: '2020-11-01T22:20:15.083197' + finish_time: '2020-11-01T22:21:10.279528' + result: OK + mod_out: + open_ports: + ssh: '22' + mod_err: No error + std_out: '[{"host": "127.0.0.1", "hostname": "localhost", "hostname_type": "PTR", + "protocol": "tcp", "port": "22", "name": "ssh", "state": "open", "product": + "OpenSSH", "extrainfo": "protocol 2.0", "reason": "syn-ack", "version": "8.1p1 + Debian 1", "conf": "10", "cpe": "cpe:/o:linux:linux_kernel"}]' + std_err: null + evidence_file: No evidence + valid: false + - id: 2 + step_name: bruteforce + state: FINISHED + start_time: '2020-11-01T22:21:10.410417' + finish_time: '2020-11-01T22:21:13.496688' + result: OK + mod_out: + password: vagrant + username: vagrant + mod_err: No error + std_out: '{''username'': ''vagrant'', ''password'': ''vagrant''}' + std_err: null + evidence_file: /tmp/1604269273 + valid: false + - id: 3 + step_name: ssh-session + state: FINISHED + start_time: '2020-11-01T22:21:13.642667' + finish_time: '2020-11-01T22:21:24.913794' + result: OK + mod_out: null + mod_err: null + std_out: 'RHOSTS => 127.0.0.1 + + PASSWORD => vagrant + + USERNAME => vagrant + + [*] Auxiliary module running as background job 45. + + [+] 127.0.0.1:22 - Success: ''vagrant:vagrant'' '''' + + [*] Command shell session 46 opened (127.0.0.1:46721 -> 127.0.0.1:22) at 2020-11-01 + 23:21:23 +0100 + + [*] Scanned 1 of 1 hosts (100% complete) + + ' + std_err: null + evidence_file: No evidence + valid: false + - id: 4 + step_name: session-cmd + state: FINISHED + start_time: '2020-11-01T22:21:25.028513' + finish_time: '2020-11-01T22:21:29.186426' + result: UNKNOWN + mod_out: + cmd_out: 'Linux kali 5.3.0-kali2-amd64 #1 SMP Debian 5.3.9-3kali1 (2019-11-20) + x86_64 + + The programs included with the Kali GNU/Linux system are free software; + the exact distribution terms for each program are described in the + individual files in /usr/share/doc/*/copyright. + + Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent + permitted by applicable law. + root:x:0:0:root:/root:/bin/bash + daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin + ... + ' + mod_err: No error + std_out: 'Linux kali 5.3.0-kali2-amd64 #1 SMP Debian 5.3.9-3kali1 (2019-11-20) + x86_64 + + + The programs included with the Kali GNU/Linux system are free software; + the exact distribution terms for each program are described in the + individual files in /usr/share/doc/*/copyright. + + Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent + permitted by applicable law. + root:x:0:0:root:/root:/bin/bash + daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin + ... + ' + std_err: null + evidence_file: No evidence + valid: false + +``` + diff --git a/docs/2021.2.1/requirements.md b/docs/2021.2.1/requirements.md new file mode 100644 index 0000000..954afe6 --- /dev/null +++ b/docs/2021.2.1/requirements.md @@ -0,0 +1,43 @@ +# Requirements +For being able to execute the attack scenarios, you need to install the **Cryton core**, +**Cryton worker** package and copy the **modules** you wish to execute in the attack scenarios +into directory specified in *Cryton Worker*. Also, for easier control over Cryton's execution +you should install **Cryton CLI** package. + +So far the only supported and tested OS is Kali Linux with version 2021.1, however other distributions +shouldn't matter too much, since the *Cryton Core* component runs in Docker and *Cryton Worker* is written +in pure Python3. Same applies for *Cryton CLI* and *Cryton Modules*. + +## Docker and Docker compose setup + +**Required packages** + +- docker.io +- docker-compose + +Make sure you have *Docker* and *Docker compose* installed: + +~~~~ +sudo apt install docker.io docker-compose +~~~~ + +Add yourself to the group docker, so you can work with docker CLI without sudo: + +~~~~ +sudo groupadd docker +sudo usermod -aG docker $USER +newgrp docker +docker run hello-world +~~~~ + +## Manual setup + +**Required packages** + +- pipenv + +Make sure you have *Pipenv* installed: + +```` +sudo apt install pipenv +```` \ No newline at end of file diff --git a/docs/2020.4.1/rest.md b/docs/2021.2.1/rest.md similarity index 99% rename from docs/2020.4.1/rest.md rename to docs/2021.2.1/rest.md index 6bc322d..163a36e 100644 --- a/docs/2020.4.1/rest.md +++ b/docs/2021.2.1/rest.md @@ -3,12 +3,9 @@ This document provides documentation of Cryton REST API endpoints. It was automa If you are interested in Swagger interactive documentation, browse to `/doc` endpoint on Cryton REST API. -## Version: v1 - -**Contact information:** -nutar@ics.muni.cz - + +## Version: v1 ### /plan_executions/ @@ -1061,4 +1058,4 @@ Delete Step specified by ID | create_named_session | string | | No | | use_named_session | string | | No | | use_any_session_to_target | string | | No | -| stage_model | string (uri) | | Yes | +| stage_model | string (uri) | | Yes | \ No newline at end of file diff --git a/docs/2020.4.1/exec-vars.md b/docs/2021.2.1/run-configuration.md similarity index 82% rename from docs/2020.4.1/exec-vars.md rename to docs/2021.2.1/run-configuration.md index dece477..571a2d8 100644 --- a/docs/2020.4.1/exec-vars.md +++ b/docs/2021.2.1/run-configuration.md @@ -1,4 +1,4 @@ -### Execution variables +## Execution variables If you want to assign different values for each PlanExecution in Run, you can use execution variables. Basically when you're creating Plan template instead of filling all arguments, you can instead insert Jinja variable. For example: @@ -10,11 +10,9 @@ target: "{{ my_var }}" **IMPORTANT: Those variables must be defined as string using single or double quotes.** -And before you execute Run (and its PlanExecution(s)), you can upload your variable(s). (see [CLI](interfaces.md#execution-variables)) File example: +And before you execute Run (and its PlanExecution(s)), you can upload your variable(s). (see [CLI](cli.md#execution-variables)) File example: ``` {"my_var":"localhost"} ``` If a variable cannot be filled it's left untouched. - -### \ No newline at end of file diff --git a/docs/2021.2.1/run-control.md b/docs/2021.2.1/run-control.md new file mode 100644 index 0000000..5a9eb3a --- /dev/null +++ b/docs/2021.2.1/run-control.md @@ -0,0 +1,24 @@ +Following are the actions you can do on created Run. + +### Execute + +Basic action you can do is **Execute** the Run. This will start it instantly. What does that mean? + +* Delta triggered Stages are scheduled +* HTTP triggers are started on Workers +* Run state is set to RUNNING + +### Schedule, Reschedule, Unschedule + +Schedule action does just that - it **schedules** an *Execute* action at a given time. If you want to change the time of your execution, you can still **reschedule** it or simply **unschedule** it and leave it in prepared state. + +### Pause, Unpause + +Anytime during Run execution you can **pause** it. To continue the Run, simply issue **unpause** command. + +### + + + + + diff --git a/docs/2021.2.1/run.md b/docs/2021.2.1/run.md new file mode 100644 index 0000000..f7cd15a --- /dev/null +++ b/docs/2021.2.1/run.md @@ -0,0 +1,4 @@ +## Run +When you finally have an Instance stored in database, you can create a new Run. For every Worker a new PlanExecution is created. +The reason behind this is storage of execution history, so it is possible to compare results in Run and usage of different variables for PlanExecutions. +As mentioned before, you can leave Step argument as an empty Jinja variable. Now, before execution, you can use different values for each PlanExecution. \ No newline at end of file diff --git a/docs/2020.4.1/scenario.md b/docs/2021.2.1/scenario.md similarity index 100% rename from docs/2020.4.1/scenario.md rename to docs/2021.2.1/scenario.md diff --git a/docs/2021.2.1/session-mngmt.md b/docs/2021.2.1/session-mngmt.md new file mode 100644 index 0000000..e020cb6 --- /dev/null +++ b/docs/2021.2.1/session-mngmt.md @@ -0,0 +1,68 @@ +## Session management + +One of the unique features of Cryton is ability to create and use *sessions* - connections to the target systems. +When you successfully exploit a running network service on your target machine (victim), you open a connection to it. +In Cryton, this connection can be given name and then used during the Plan execution in any Step (which is executed on the same Worker node and supports this functionality). +Metasploit Framework session management is used for storing and interacting with sessions, and therefore must be available and running on the Worker node. + +```yaml +- name: step1 + attack_module: ... + attack_module_arguments: + create_named_session: session_to_target_1 + ... +- name: step2 + attack_module: ... + attack_module_arguments: + use_named_session: session_to_target_1 + ... +``` + +In the example above, step1 creates a named session *session_to_target_1* (in case it succeeds). +It's Metasploit ID gets stored in database and can be used anywhere in the Plan, not only in following Step (as seen in example). +When the Plan creates multiple sessions to the same target, and the attacker does not care which he is using, *use_any_session_to_target* parameter can be used. + +```yaml +- name: step1 + attack_module: ... + attack_module_arguments: + use_any_session_to_target: 192.168.56.22 + ... +``` + + + +## Plan example + +```yaml +--- +plan: + name: Session example + owner: testname + stages: + - name: stage-one + trigger_type: delta + trigger_args: + seconds: 5 + steps: + - name: ssh-session + is_init: true + attack_module: mod_msf + attack_module_args: + create_named_session: session_to_target_1 + exploit: auxiliary/scanner/ssh/ssh_login + exploit_arguments: + RHOSTS: 127.0.0.1 + USERNAME: vagrant + PASSWORD: vagrant + next: + - type: result + value: OK + step: session-cmd + - name: session-cmd + attack_module: mod_cmd + attack_module_args: + use_named_session: session_to_target_1 + cmd: cat /etc/passwd +``` + diff --git a/docs/2021.2.1/stage.md b/docs/2021.2.1/stage.md new file mode 100644 index 0000000..3c796ce --- /dev/null +++ b/docs/2021.2.1/stage.md @@ -0,0 +1,97 @@ +Stage is a unit defined by a target and a time of start. It contains a list of attack Steps. + + + +## Triggering + +### trigger_type + +A type of trigger to be used. Available triggers are: + +| Type | Meaning | +| -------------- | ------------------------------------------------------------ | +| `delta` | Schedule execution for specific time after plan start, eg. `minutes: 30` | +| `HTTPListener` | Stage will be executed on specific data received in HTTP request (GET/POST) on the listener | + +### trigger_args + +Trigger arguments, that are specific for every type of trigger. + +**Delta** + +```yaml +trigger_args: + hours: 0 # Wait for x hours. + minutes: 0 # Wait for x minutes. + seconds: 0 # Wait for x seconds. +``` + +**HTTPListener** + +```yaml +trigger_args: + host: localhost # Address of the listener from Worker's perspective. + port: 8082 # Port of the listener from Worker's perspective. + routes: # List of routes listener will check for requests. + - path: /index # Request's path. + method: GET # Request's allowed method. + parameters: # Request's required parameters. + - name: parameter # Parameter's name. + value: value # Parameter's value. +``` + +## Dependencies + +To ensure your Stage will be executed at the correct time, you can choose to check if some other Stage has already +finished, before its execution. All you have to do is define `depends_on` argument. + +```yaml +- name: stage-name + depends_on: + - other-stage +``` + +## Example + +```yaml +- name: stage-one + trigger_type: delta + trigger_args: + minutes: 5 + steps: + - name: scan-localhost + is_init: true + attack_module: infrastructure/scan/mod_nmap + attack_module_args: + ports: + - 22 + next: + - type: result + value: OK + step: ssh-bruteforce +``` + +```yaml +- name: stage-one + trigger_type: delta + trigger_args: + minutes: 5 + steps: + ... + +- name: stage-two + depends_on: + - stage-one + trigger_type: HTTPListener + trigger_args: + host: localhost + port: 8082 + routes: + - path: /index + method: GET + parameters: + - name: parameter + value: value + steps: + ... +``` \ No newline at end of file diff --git a/docs/2020.4.1/step.md b/docs/2021.2.1/step.md similarity index 66% rename from docs/2020.4.1/step.md rename to docs/2021.2.1/step.md index fc5abe0..ed4adab 100644 --- a/docs/2020.4.1/step.md +++ b/docs/2021.2.1/step.md @@ -1,13 +1,13 @@ Let's start with Step. Step is an execution of attack module. Every step can have a successor of which execution will follow according to provided conditions. -### Conditional execution +## Conditional execution To be able to actually execute Attack scenario according to some execution tree, Steps provide a way to be executed according to specified conditions. There are many types of conditions that can be used. To use them in designint a Template, a list of dictionaries **containing** params **type**, **value**, **step** must be provided. Following are types of conditions together with descriptions of possible values. -##### type +### type Which value you want to compare, according to output of the parent Step. @@ -21,7 +21,7 @@ Following are types of conditions together with descriptions of possible values. | `mod_err` | Module error output. | | `any` | Any step's result will be taken as valid. | -##### value +### value The desired value of the selected type. Can be defined as string (one value) or list of strings (multiple values). @@ -37,7 +37,7 @@ Following are types of conditions together with descriptions of possible values. -##### step +### step Name of the Step's successor(s). Can be string (one successor) or list of strings (multiple successors). @@ -50,14 +50,28 @@ next: step: step-to-execute ``` -### Output sharing +## Output sharing + +Output sharing is used for sharing gained data (*mod_out*) between multiple steps. To go through the data we use modified version of dot notation. + +For example imagine following dictionary (Python data structure) +```python +{"credentials": [{"username": "admin", "password": "securePassword"}]} +``` +If we wanted to access it and get **password** for *admin* user using our version of dot notation, we would use `credentials[0].password` which would return *securePassword* string. + +This brings in some limitations: + +- keys are separated using `.` +- key can't be in format `[integer]` (regex representation: `^\[[0-9]+]$`) as it represents list (array) index +- list (array) index can be defined multiple times in the same key for example `myKey[1][1]`, however must be defined at its end (regex representation: `((\[[0-9]+])+$)`) There are two techniques for sharing outputs of modules between steps: * **output_prefix** * **output_mapping** -#### Output prefix +### Output prefix By default, the prefix string is set to name of the step. Using its name, any other step can query its output (mod_out of its attack module execution) and use it in its arguments. @@ -82,7 +96,8 @@ For example: password: $custom_prefix.password ``` -Your prefix can be any string you want, but it **cannot contain $ and . signs**. Also, there is a special prefix named **parent**, which simply takes output from parent step execution (which executed current step). +Your prefix can be any string you want, but it **cannot contain $ and . signs**. Also, there is a special prefix named **parent**, which +simply takes output from parent step execution (which executed current step). ```yaml - name: stepA @@ -97,8 +112,10 @@ Your prefix can be any string you want, but it **cannot contain $ and . signs**. username: $parent.var ``` -#### Output mapping -Sometimes you do not care from which module you receive information. Step A and Step B can both return a stolen authentication token. For this reason you can use ```output_prefix```. But there is an obvious problem! What if both steps return this value under different name, eg. ```token``` and ```auth_token```? Prefix would not help you much in this situation. For this reason there is a ```output_mapping``` mechanism. +### Output mapping +Sometimes you do not care from which module you receive information. Step A and Step B can both return a stolen authentication token. For this reason you can use ```output_prefix```. +But there is an obvious problem! What if both steps return this value under different name, eg. ```token``` and ```auth_token```? Prefix would not help you much in this situation. +For this reason there is a ```output_mapping``` mechanism. ```yaml - name: step_a # Returns 'token' @@ -119,7 +136,7 @@ Sometimes you do not care from which module you receive information. Step A and attack_module_args: token: $steal.stolen_token ``` -### Example +## Example ```yaml - name: scan-localhost @@ -132,6 +149,11 @@ Sometimes you do not care from which module you receive information. Step A and - type: result value: OK step: ssh-bruteforce +- name: ssh-bruteforce + attack_module: bruteforce/mod_hydra + attack_module_args: + username: root + password: toor ``` ```yaml @@ -140,5 +162,24 @@ Sometimes you do not care from which module you receive information. Step A and attack_module: misc/mod_cmd attack_module_args: cmd: cat /etc/passwd - use_any_session_to_target: 192.168.56.103 + use_any_session_to_target: 192.168.56.103 +``` + +## Execution variables + +If you want to assign different values for each PlanExecution in Run, you can use execution variables. +Basically when you're creating Plan template instead of filling all arguments, you can instead insert Jinja variable. For example: + +``` +attack_module_args: +target: "{{ my_var }}" +``` + +**IMPORTANT: Those variables must be defined as string using single or double quotes.** + +And before you execute Run (and its PlanExecution(s)), you can upload your variable(s). (see [CLI](cli.md#execution-variables)) File example: + +``` +{"my_var":"localhost"} ``` +If a variable cannot be filled it's left untouched. diff --git a/docs/2021.2.1/template.md b/docs/2021.2.1/template.md new file mode 100644 index 0000000..839ce43 --- /dev/null +++ b/docs/2021.2.1/template.md @@ -0,0 +1,20 @@ +The most important part is creating a Template. This is basically a Plan object written in YAML format. You can find a detailed description of this format in section [Plan](#plan). + +Template itself is not a fully described Attack scenario. The structure of the Attack (the execution tree) is correct, but there are still unfilled places, eg. IP addresses of targets or some module arguments. This way an Attack Template can be designed before knowing these details and used in multiple different environments.Template + + + + + + + +The first step in designing of a Plan (attack scenario) is creating a Template. In this step the user is supposed to write the whole scenario in the form of Plan, Stages and Steps. An abstract Plan can look like this: + +``` +Plan + Stage 1 + Step 1 + Step 2 + Stage 2 + Step 3 +``` diff --git a/docs/contribution-guide.md b/docs/contribution-guide.md index 5389d9d..5324ef4 100644 --- a/docs/contribution-guide.md +++ b/docs/contribution-guide.md @@ -1,3 +1,7 @@ ## Fixing and reporting bugs Any identified bugs should be posted as an issue in the respective [gitlab repository](https://gitlab.ics.muni.cz/cryton). Please, include as much detail as possible for the developers, to be able to reproduce the erroneous behavior. + +## Writing Attack modules +To make attack scenario automation easier we need to create and maintain attack modules. To support project development +checkout section [How to create Attack module](2021.2.1/howto-create-attack-modules.md). diff --git a/mkdocs.yml b/mkdocs.yml index 9608510..02cc1a0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -14,41 +14,45 @@ extra: nav: - Home: index.md - - Architecture: 2020.4.1/architecture.md - - Installation: - - Requirements: 2020.4.1/installation.md - - Core: 2020.4.1/install-core.md - - Worker: 2020.4.1/install-worker.md - - Modules: 2020.4.1/install-modules.md - - CLI: 2020.4.1/install-cli.md - - Attack scenario: - - About: 2020.4.1/scenario.md - - Plan: 2020.4.1/plan.md - - Stage: 2020.4.1/stage.md - - Step: 2020.4.1/step.md - - Execution variables: 2020.4.1/exec-vars.md - - Session management: 2020.4.1/session-mngmt.md - - Executions: - - Execution: 2020.4.1/execution.md - - PlanExecution: 2020.4.1/plan-execution.md - - StageExecution: 2020.4.1/stage-execution.md - - StepExecution: 2020.4.1/step-execution.md - - Lifecycle: 2020.4.1/lifecycle.md - - Attack modules: - - About: 2020.4.1/attack-modules.md - - mod_test: 2020.4.1/modules/mod_test.md - - mod_cmd: 2020.4.1/modules/mod_cmd.md - - mod_hydra: 2020.4.1/modules/mod_hydra.md - - mod_medusa: 2020.4.1/modules/mod_medusa.md - - mod_msf: 2020.4.1/modules/mod_msf.md - - mod_nmap: 2020.4.1/modules/mod_nmap.md - - mod_ssh_session: 2020.4.1/modules/mod_ssh_session.md - - Example: 2020.4.1/example.md + - Installation guide: + - Requirements: 2021.2.1/requirements.md + - Core: 2021.2.1/install-core.md + - Worker (modules): 2021.2.1/install-worker.md + - CLI: 2021.2.1/install-cli.md + - Getting started: + - Tutorial 1 - Basic example: 2021.2.1/basic-example.md + - Tutorial 2 -Advanced example: 2021.2.1/advanced-example.md + - Designing phase: + - What is an Attack scenario: 2021.2.1/scenario.md + - Template: + - What is a Template: 2021.2.1/template.md + - Plan: 2021.2.1/plan.md + - Stage: 2021.2.1/stage.md + - Step: 2021.2.1/step.md + - Instance: 2021.2.1/instance.md + - Session management: 2021.2.1/session-mngmt.md + - Execution: + - Run: + - What is a Run: 2021.2.1/run.md + - Configuration: 2021.2.1/run-configuration.md + - Control: 2021.2.1/run-control.md + - Reporting: 2021.2.1/reporting.md + - Execution statistics: 2021.2.1/execution.md - Interfaces: - - Interfaces: 2020.4.1/interfaces.md - - REST API: 2020.4.1/rest.md - - CLI: 2020.4.1/cli.md - - Logging: 2020.4.1/logging.md + - CLI: 2021.2.1/cli.md + - REST API: 2021.2.1/rest.md + - Architecture: + - Components: 2021.2.1/architecture.md + - Attack modules: + - What is an Attack module: 2021.2.1/attack-modules.md + - Modules: + - mod_cmd: 2021.2.1/modules/mod_cmd.md + - mod_medusa: 2021.2.1/modules/mod_medusa.md + - mod_msf: 2021.2.1/modules/mod_msf.md + - mod_nmap: 2021.2.1/modules/mod_nmap.md + - mod_ssh_session: 2021.2.1/modules/mod_ssh_session.md + - How to create Attack module: 2021.2.1/howto-create-attack-modules.md + - Logging: 2021.2.1/logging.md - How to contribute: contribution-guide.md - Acknowledgements: acknowledgements.md - License: license.md -- GitLab