monkey/envs/monkey_zoo/blackbox
VakarisZ b43f669081 Bugfix: removed unneeded exploitation test run in ZeroLogon BB test 2021-03-08 12:35:31 +02:00
..
analyzers Added ZeroLogon test to the BlackBox infrastructure. 2021-03-08 11:07:24 +02:00
island_client Added an endpoint on the island for telemetry tests. This allows for tests like blackbox tests to send queries and check whether a certain telemetry is in the database or not 2021-03-08 11:13:31 +02:00
island_configs Fixed credentials in zerologon exploiter to match. 2021-03-08 12:05:00 +02:00
log_handlers Once again fixed isort bug in travis and fixed some imports 2020-10-07 10:32:33 +03:00
tests Refactored tests to use the new configuration parser 2021-03-02 15:23:27 +02:00
utils Fix minor linter issues 2020-05-24 13:55:11 +03:00
README.md BB quickfixes: fixed island client authentication bug ("JWT" -> "bearer" in auth header), improved readme a bit. 2020-07-30 12:41:25 +03:00
__init__.py Basic skeleton for blackbox script 2019-08-27 15:52:39 +03:00
conftest.py Fix minor linter issues 2020-05-24 13:55:11 +03:00
pytest.ini Added module + filename + line number to logs output in Blackbox 2019-10-07 13:49:13 +03:00
requirements.txt Removed unused package requirement 2019-10-03 15:43:18 +03:00
test_blackbox.py Bugfix: removed unneeded exploitation test run in ZeroLogon BB test 2021-03-08 12:35:31 +02:00

README.md

Automatic blackbox tests

Prerequisites

  1. Download google sdk: https://cloud.google.com/sdk/docs/
  2. Download service account key for MonkeyZoo project (if you deployed MonkeyZoo via terraform scripts then you already have it). GCP console -> IAM -> service accounts(you can use the same key used to authenticate terraform scripts). Place the key in envs/monkey_zoo/gcp_keys/gcp_key.json.
  3. Deploy the relevant branch + complied executables to the Island machine on GCP.

Running the tests

In order to execute the entire test suite, you must know the external IP of the Island machine on GCP. You can find this information in the GCP Console Compute Engine/VM Instances under External IP.

Running in command line

Blackbox tests have following parameters:

  • --island=IP Sets island's IP
  • --no-gcp (Optional) Use for no interaction with the cloud (local test).
  • --quick-performance-tests (Optional) If enabled performance tests won't reset island and won't send telemetries, instead will just test performance of endpoints in already present island state.

Example run command:

monkey\envs\monkey_zoo\blackbox>python -m pytest -s --island=35.207.152.72:5000 test_blackbox.py

Running in PyCharm

Configure a PyTest configuration with the additional arguments -s --island=35.207.152.72, and to run from directory monkey\envs\monkey_zoo\blackbox.

Running telemetry performance test

Before running performance test make sure browser is not sending requests to island!

To run telemetry performance test follow these steps: 0. Set server_config.json to "standard" (no password protection) setting.

  1. Gather monkey telemetries.
    1. Enable "Export monkey telemetries" in Configuration -> Internal -> Tests if you don't have exported telemetries already.
    2. Run monkey and wait until infection is done.
    3. All telemetries are gathered in monkey/telem_sample
  2. Run telemetry performance test.
    1. Move directory monkey/test_telems to envs/monkey_zoo/blackbox/tests/performance/test_telems
    2. (Optional) Use envs/monkey_zoo/blackbox/tests/performance/utils/telem_parser.py to multiply telemetries gathered.
      1. Run telem_parser.py script with working directory set to monkey\envs\monkey_zoo\blackbox
      2. Pass integer to indicate the multiplier. For example running telem_parser.py 4 will replicate telemetries 4 times.
      3. If you're using pycharm check "Emulate terminal in output console" on debug/run configuraion.
    3. Performance test will run as part of BlackBox tests or you can run it separately by adding -k 'test_telem_performance' option.