From 2764069aec871f5e587d094acc92566c8c4d9d68 Mon Sep 17 00:00:00 2001 From: Shreya Malviya Date: Thu, 21 Jul 2022 19:13:56 +0530 Subject: [PATCH] BB: Correctly pass and import test configuration and agent configuration --- .../blackbox/island_client/island_config_parser.py | 6 +++--- .../blackbox/island_client/monkey_island_client.py | 7 +++++-- envs/monkey_zoo/blackbox/test_blackbox.py | 12 ++++++------ envs/monkey_zoo/blackbox/tests/exploitation.py | 10 ++++------ 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/envs/monkey_zoo/blackbox/island_client/island_config_parser.py b/envs/monkey_zoo/blackbox/island_client/island_config_parser.py index 8688e253a..12f870a91 100644 --- a/envs/monkey_zoo/blackbox/island_client/island_config_parser.py +++ b/envs/monkey_zoo/blackbox/island_client/island_config_parser.py @@ -1,9 +1,9 @@ from typing import Iterable -from common.configuration.agent_configuration import AgentConfiguration +from envs.monkey_zoo.blackbox.test_configurations.test_configuration import TestConfiguration class IslandConfigParser: @staticmethod - def get_target_ips_from_configuration(agent_configuration: AgentConfiguration) -> Iterable[str]: - return agent_configuration.propagation.network_scan.targets.subnets + def get_target_ips(test_configuration: TestConfiguration) -> Iterable[str]: + return test_configuration.agent_configuration.propagation.network_scan.targets.subnets diff --git a/envs/monkey_zoo/blackbox/island_client/monkey_island_client.py b/envs/monkey_zoo/blackbox/island_client/monkey_island_client.py index f3ac3e8c2..8f2df7131 100644 --- a/envs/monkey_zoo/blackbox/island_client/monkey_island_client.py +++ b/envs/monkey_zoo/blackbox/island_client/monkey_island_client.py @@ -6,6 +6,7 @@ from typing import Union from bson import json_util from envs.monkey_zoo.blackbox.island_client.monkey_island_requests import MonkeyIslandRequests +from envs.monkey_zoo.blackbox.test_configurations.test_configuration import TestConfiguration SLEEP_BETWEEN_REQUESTS_SECONDS = 0.5 MONKEY_TEST_ENDPOINT = "api/test/monkey" @@ -30,8 +31,10 @@ class MonkeyIslandClient(object): return json.loads(self.requests.get("api/agent-configuration").content) @avoid_race_condition - def import_config(self, config_contents): - _ = self.requests.post("api/agent-configuration", data=config_contents) + def import_config(self, test_configuration: TestConfiguration): + _ = self.requests.post( + "api/agent-configuration", data=test_configuration.agent_configuration.to_json() + ) @avoid_race_condition def run_monkey_local(self): diff --git a/envs/monkey_zoo/blackbox/test_blackbox.py b/envs/monkey_zoo/blackbox/test_blackbox.py index 75fd8bf61..60b7862f5 100644 --- a/envs/monkey_zoo/blackbox/test_blackbox.py +++ b/envs/monkey_zoo/blackbox/test_blackbox.py @@ -4,7 +4,6 @@ from time import sleep import pytest -from common.configuration.agent_configuration import AgentConfiguration from envs.monkey_zoo.blackbox.analyzers.communication_analyzer import CommunicationAnalyzer from envs.monkey_zoo.blackbox.analyzers.zerologon_analyzer import ZerologonAnalyzer from envs.monkey_zoo.blackbox.gcp_test_machine_list import GCP_TEST_MACHINE_LIST @@ -20,6 +19,7 @@ from envs.monkey_zoo.blackbox.test_configurations import ( wmi_mimikatz_test_configuration, zerologon_test_configuration, ) +from envs.monkey_zoo.blackbox.test_configurations.test_configuration import TestConfiguration from envs.monkey_zoo.blackbox.tests.exploitation import ExploitationTest from envs.monkey_zoo.blackbox.utils.gcp_machine_handlers import ( initialize_gcp_client, @@ -85,13 +85,13 @@ class TestMonkeyBlackbox: @staticmethod def run_exploitation_test( island_client: MonkeyIslandClient, - agent_configuration: AgentConfiguration, + test_configuration: TestConfiguration, test_name: str, timeout_in_seconds=DEFAULT_TIMEOUT_SECONDS, ): analyzer = CommunicationAnalyzer( island_client, - IslandConfigParser.get_target_ips_from_configuration(agent_configuration), + IslandConfigParser.get_target_ips(test_configuration), ) log_handler = TestLogsHandler( test_name, island_client, TestMonkeyBlackbox.get_log_dir_path() @@ -99,7 +99,7 @@ class TestMonkeyBlackbox: ExploitationTest( name=test_name, island_client=island_client, - agent_configuration=agent_configuration, + test_configuration=test_configuration, analyzers=[analyzer], timeout=timeout_in_seconds, log_handler=log_handler, @@ -146,7 +146,7 @@ class TestMonkeyBlackbox: zero_logon_analyzer = ZerologonAnalyzer(island_client, expected_creds) communication_analyzer = CommunicationAnalyzer( island_client, - IslandConfigParser.get_target_ips_from_configuration(zerologon_test_configuration), + IslandConfigParser.get_target_ips(zerologon_test_configuration), ) log_handler = TestLogsHandler( test_name, island_client, TestMonkeyBlackbox.get_log_dir_path() @@ -154,7 +154,7 @@ class TestMonkeyBlackbox: ExploitationTest( name=test_name, island_client=island_client, - agent_configuration=zerologon_test_configuration, + test_configuration=zerologon_test_configuration, analyzers=[zero_logon_analyzer, communication_analyzer], timeout=DEFAULT_TIMEOUT_SECONDS + 30, log_handler=log_handler, diff --git a/envs/monkey_zoo/blackbox/tests/exploitation.py b/envs/monkey_zoo/blackbox/tests/exploitation.py index 0dd5c817d..1c2772bda 100644 --- a/envs/monkey_zoo/blackbox/tests/exploitation.py +++ b/envs/monkey_zoo/blackbox/tests/exploitation.py @@ -13,16 +13,16 @@ LOGGER = logging.getLogger(__name__) class ExploitationTest(BasicTest): - def __init__(self, name, island_client, agent_configuration, analyzers, timeout, log_handler): + def __init__(self, name, island_client, test_configuration, analyzers, timeout, log_handler): self.name = name self.island_client = island_client - self.agent_configuration = agent_configuration + self.test_configuration = test_configuration self.analyzers = analyzers self.timeout = timeout self.log_handler = log_handler def run(self): - self.island_client.import_config(self.serialized_config) + self.island_client.import_config(self.test_configuration) self.print_test_starting_info() try: self.island_client.run_monkey_local() @@ -36,9 +36,7 @@ class ExploitationTest(BasicTest): def print_test_starting_info(self): LOGGER.info("Started {} test".format(self.name)) - machine_list = ", ".join( - IslandConfigParser.get_target_ips_from_configuration(self.agent_configuration) - ) + machine_list = ", ".join(IslandConfigParser.get_target_ips(self.test_configuration)) LOGGER.info(f"Machines participating in test: {machine_list}") print("")