forked from p15670423/monkey
Island: Register deployment convention
This commit is contained in:
parent
d1efa1a790
commit
133bf75774
|
@ -1,3 +1,4 @@
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
@ -33,6 +34,7 @@ from monkey_island.cc.repository import (
|
||||||
from monkey_island.cc.server_utils.consts import MONKEY_ISLAND_ABS_PATH
|
from monkey_island.cc.server_utils.consts import MONKEY_ISLAND_ABS_PATH
|
||||||
from monkey_island.cc.server_utils.encryption import ILockableEncryptor, RepositoryEncryptor
|
from monkey_island.cc.server_utils.encryption import ILockableEncryptor, RepositoryEncryptor
|
||||||
from monkey_island.cc.server_utils.island_logger import get_log_file_path
|
from monkey_island.cc.server_utils.island_logger import get_log_file_path
|
||||||
|
from monkey_island.cc.deployment import Deployment
|
||||||
from monkey_island.cc.services import AWSService, IslandModeService, RepositoryService
|
from monkey_island.cc.services import AWSService, IslandModeService, RepositoryService
|
||||||
from monkey_island.cc.services.attack.technique_reports.T1003 import T1003, T1003GetReportData
|
from monkey_island.cc.services.attack.technique_reports.T1003 import T1003, T1003GetReportData
|
||||||
from monkey_island.cc.services.run_local_monkey import LocalMonkeyRunService
|
from monkey_island.cc.services.run_local_monkey import LocalMonkeyRunService
|
||||||
|
@ -50,6 +52,7 @@ from .reporting.report import ReportService
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
AGENT_BINARIES_PATH = Path(MONKEY_ISLAND_ABS_PATH) / "cc" / "binaries"
|
AGENT_BINARIES_PATH = Path(MONKEY_ISLAND_ABS_PATH) / "cc" / "binaries"
|
||||||
|
DEPLOYMENT_FILE_PATH = Path(MONKEY_ISLAND_ABS_PATH) / "cc" / "deployment.json"
|
||||||
REPOSITORY_KEY_FILE_NAME = "repository_key.bin"
|
REPOSITORY_KEY_FILE_NAME = "repository_key.bin"
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,6 +92,7 @@ def _register_conventions(container: DIContainer, data_dir: Path):
|
||||||
DEFAULT_RANSOMWARE_AGENT_CONFIGURATION,
|
DEFAULT_RANSOMWARE_AGENT_CONFIGURATION,
|
||||||
)
|
)
|
||||||
container.register_convention(Path, "island_log_file_path", get_log_file_path(data_dir))
|
container.register_convention(Path, "island_log_file_path", get_log_file_path(data_dir))
|
||||||
|
container.register_convention(Deployment, "deployment", _get_depyloyment_from_file(DEPLOYMENT_FILE_PATH))
|
||||||
|
|
||||||
|
|
||||||
def _register_repositories(container: DIContainer, data_dir: Path):
|
def _register_repositories(container: DIContainer, data_dir: Path):
|
||||||
|
@ -145,6 +149,20 @@ def _log_agent_binary_hashes(agent_binary_repository: IAgentBinaryRepository):
|
||||||
for os, binary_sha256_hash in agent_hashes.items():
|
for os, binary_sha256_hash in agent_hashes.items():
|
||||||
logger.info(f"{os} agent: SHA-256 hash: {binary_sha256_hash}")
|
logger.info(f"{os} agent: SHA-256 hash: {binary_sha256_hash}")
|
||||||
|
|
||||||
|
def _get_depyloyment_from_file(file_path: Path) -> Deployment:
|
||||||
|
try:
|
||||||
|
with open(file_path, "r") as deployment_info_file:
|
||||||
|
deployment_info = json.load(deployment_info_file)
|
||||||
|
return Deployment[deployment_info["deployment"].upper()]
|
||||||
|
except FileNotFoundError as ex:
|
||||||
|
logger.debug(f"Deployment file {file_path} is not found. Exception: {ex}")
|
||||||
|
except KeyError as ex:
|
||||||
|
logger.debug(f"Invalid key in the deployment file. Exception: {ex}")
|
||||||
|
except json.JSONDecodeError as ex:
|
||||||
|
logger.debug(f"Invalid deployment info file. Exception: {ex}")
|
||||||
|
except Exception as ex:
|
||||||
|
logger.debug(f"Couldn't get deployment info from {file_path}. Exception: {ex}.")
|
||||||
|
|
||||||
|
|
||||||
def _register_services(container: DIContainer):
|
def _register_services(container: DIContainer):
|
||||||
container.register_instance(AWSService, container.resolve(AWSService))
|
container.register_instance(AWSService, container.resolve(AWSService))
|
||||||
|
|
Loading…
Reference in New Issue