From 05395fee6d57dfea839c608ef9dc047a9868f79e Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Fri, 14 Aug 2020 15:43:06 +0300 Subject: [PATCH 1/5] Created code that generates default server_config.json, so we don't need to track this file on git and remember not to commit credentials. --- .gitignore | 2 +- .travis.yml | 2 +- .../cc/environment/environment_config.py | 9 ++++++++- .../cc/environment/server_config_generator.py | 7 +++++++ .../cc/{ => environment}/set_server_config.py | 12 +++--------- ...server_config.json => server_config.json.default} | 0 6 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 monkey/monkey_island/cc/environment/server_config_generator.py rename monkey/monkey_island/cc/{ => environment}/set_server_config.py (74%) rename monkey/monkey_island/cc/{server_config.json => server_config.json.default} (100%) diff --git a/.gitignore b/.gitignore index 2f48a6781..76e08185b 100644 --- a/.gitignore +++ b/.gitignore @@ -91,7 +91,7 @@ profiler_logs/ # vim swap files *.swp -# Server config might contain credentials. Don't commit by default. +# Server config might contain credentials /monkey/monkey_island/cc/server_config.json # Virtualenv diff --git a/.travis.yml b/.travis.yml index d1178458b..0200ca8e3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -50,7 +50,7 @@ install: before_script: # Set the server config to `testing`. This is required for for the UTs to pass. -- python monkey/monkey_island/cc/set_server_config.py testing +- python monkey/monkey_island/cc/environment/set_server_config.py testing script: # Check Python code diff --git a/monkey/monkey_island/cc/environment/environment_config.py b/monkey/monkey_island/cc/environment/environment_config.py index 0c66b2fc4..cf54d049e 100644 --- a/monkey/monkey_island/cc/environment/environment_config.py +++ b/monkey/monkey_island/cc/environment/environment_config.py @@ -2,12 +2,17 @@ from __future__ import annotations import json import os +from pathlib import Path from typing import Dict, List from monkey_island.cc.consts import MONKEY_ISLAND_ABS_PATH from monkey_island.cc.environment.user_creds import UserCreds from monkey_island.cc.resources.auth.auth_user import User from monkey_island.cc.resources.auth.user_store import UserStore +import monkey_island.cc.environment.server_config_generator as server_config_generator + + +SERVER_CONFIG_FILENAME = "server_config.json" class EnvironmentConfig: @@ -43,13 +48,15 @@ class EnvironmentConfig: @staticmethod def get_from_file() -> EnvironmentConfig: file_path = EnvironmentConfig.get_config_file_path() + if not Path(file_path).is_file(): + server_config_generator.create_default_config_file(file_path) with open(file_path, 'r') as f: config_content = f.read() return EnvironmentConfig.get_from_json(config_content) @staticmethod def get_config_file_path() -> str: - return os.path.join(MONKEY_ISLAND_ABS_PATH, 'cc', 'server_config.json') + return os.path.join(MONKEY_ISLAND_ABS_PATH, 'cc', SERVER_CONFIG_FILENAME) def to_dict(self) -> Dict: config_dict = {'server_config': self.server_config, diff --git a/monkey/monkey_island/cc/environment/server_config_generator.py b/monkey/monkey_island/cc/environment/server_config_generator.py new file mode 100644 index 000000000..d5c645564 --- /dev/null +++ b/monkey/monkey_island/cc/environment/server_config_generator.py @@ -0,0 +1,7 @@ +from pathlib import Path + + +def create_default_config_file(path): + default_config_path = f"{path}.default" + default_config = Path(default_config_path).read_text() + Path(path).write_text(default_config) diff --git a/monkey/monkey_island/cc/set_server_config.py b/monkey/monkey_island/cc/environment/set_server_config.py similarity index 74% rename from monkey/monkey_island/cc/set_server_config.py rename to monkey/monkey_island/cc/environment/set_server_config.py index fc20747c9..359110ebc 100644 --- a/monkey/monkey_island/cc/set_server_config.py +++ b/monkey/monkey_island/cc/environment/set_server_config.py @@ -1,7 +1,8 @@ import argparse import json import logging -from pathlib import Path + +from monkey_island.cc.environment.environment_config import EnvironmentConfig SERVER_CONFIG = "server_config" @@ -12,7 +13,7 @@ logger.setLevel(logging.DEBUG) def main(): args = parse_args() - file_path = get_config_file_path(args) + file_path = EnvironmentConfig.get_config_file_path() # Read config with open(file_path) as config_file: @@ -28,16 +29,9 @@ def main(): config_file.write("\n") # Have to add newline at end of file, since json.dump does not. -def get_config_file_path(args): - file_path = Path(__file__).parent.joinpath(args.file_name) - logger.info("Config file path: {}".format(file_path)) - return file_path - - def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("server_config", choices=["standard", "testing", "password"]) - parser.add_argument("-f", "--file_name", required=False, default="server_config.json") args = parser.parse_args() return args diff --git a/monkey/monkey_island/cc/server_config.json b/monkey/monkey_island/cc/server_config.json.default similarity index 100% rename from monkey/monkey_island/cc/server_config.json rename to monkey/monkey_island/cc/server_config.json.default From 2e95d367b87e935aad94bcd3a2343e7e1abe1637 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 17 Aug 2020 09:28:31 +0300 Subject: [PATCH 2/5] Fixed local directory in set_server_config.py to point to project root, so it would be able to access project packages. --- monkey/infection_monkey/exploit/vsftpd.py | 4 ++-- .../cc/environment/environment_config.py | 3 +-- .../cc/environment/set_server_config.py | 14 +++++++++++++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/monkey/infection_monkey/exploit/vsftpd.py b/monkey/infection_monkey/exploit/vsftpd.py index 8ecac35f1..ec263411f 100644 --- a/monkey/infection_monkey/exploit/vsftpd.py +++ b/monkey/infection_monkey/exploit/vsftpd.py @@ -14,8 +14,8 @@ from infection_monkey.exploit.tools.helpers import (build_monkey_commandline, get_monkey_depth, get_target_monkey) from infection_monkey.exploit.tools.http_tools import HTTPTools -from infection_monkey.model import (CHMOD_MONKEY, DOWNLOAD_TIMEOUT, MONKEY_ARG, - RUN_MONKEY, WGET_HTTP_UPLOAD) +from infection_monkey.model import ( + CHMOD_MONKEY, DOWNLOAD_TIMEOUT, MONKEY_ARG, RUN_MONKEY, WGET_HTTP_UPLOAD) from infection_monkey.telemetry.attack.t1222_telem import T1222Telem LOG = getLogger(__name__) diff --git a/monkey/monkey_island/cc/environment/environment_config.py b/monkey/monkey_island/cc/environment/environment_config.py index cf54d049e..79182d56b 100644 --- a/monkey/monkey_island/cc/environment/environment_config.py +++ b/monkey/monkey_island/cc/environment/environment_config.py @@ -5,12 +5,11 @@ import os from pathlib import Path from typing import Dict, List +import monkey_island.cc.environment.server_config_generator as server_config_generator from monkey_island.cc.consts import MONKEY_ISLAND_ABS_PATH from monkey_island.cc.environment.user_creds import UserCreds from monkey_island.cc.resources.auth.auth_user import User from monkey_island.cc.resources.auth.user_store import UserStore -import monkey_island.cc.environment.server_config_generator as server_config_generator - SERVER_CONFIG_FILENAME = "server_config.json" diff --git a/monkey/monkey_island/cc/environment/set_server_config.py b/monkey/monkey_island/cc/environment/set_server_config.py index 359110ebc..68ac1b619 100644 --- a/monkey/monkey_island/cc/environment/set_server_config.py +++ b/monkey/monkey_island/cc/environment/set_server_config.py @@ -1,8 +1,20 @@ import argparse import json import logging +import os +import sys +from pathlib import Path -from monkey_island.cc.environment.environment_config import EnvironmentConfig + +def add_monkey_dir_to_sys_path(): + monkey_path = Path(sys.path[0]) + monkey_path = monkey_path.parents[2] + sys.path.insert(0, monkey_path.__str__()) + + +add_monkey_dir_to_sys_path() + +from monkey_island.cc.environment.environment_config import EnvironmentConfig #isort:skip SERVER_CONFIG = "server_config" From 9803bc6a464f98718ed5637a6c9256b4d36fec3d Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 17 Aug 2020 09:43:13 +0300 Subject: [PATCH 3/5] Added server_config.json initialization to travis script. --- .travis.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0200ca8e3..b49fbcefe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,11 @@ python: os: linux +before_install: +# Init server_config.json to default +- cp monkey/monkey_island/cc/server_config.json.default monkey/monkey_island/cc/server_config.json +- ls monkey/monkey_island/cc/ + install: # Python - pip freeze @@ -50,7 +55,12 @@ install: before_script: # Set the server config to `testing`. This is required for for the UTs to pass. -- python monkey/monkey_island/cc/environment/set_server_config.py testing +- ls /home/travis/build/guardicore/monkey/ +- ls /home/travis/build/guardicore/ +- pushd /home/travis/build/guardicore/monkey/monkey +- ls ./ +- python monkey_island/cc/environment/set_server_config.py testing +- popd script: # Check Python code From bd05cca087ddaecf3f9afe7343ad359bc012db34 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Mon, 17 Aug 2020 12:03:39 +0300 Subject: [PATCH 4/5] Fixed python linting warnings --- monkey/infection_monkey/exploit/vsftpd.py | 4 ++-- monkey/monkey_island/cc/environment/set_server_config.py | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/monkey/infection_monkey/exploit/vsftpd.py b/monkey/infection_monkey/exploit/vsftpd.py index ec263411f..8ecac35f1 100644 --- a/monkey/infection_monkey/exploit/vsftpd.py +++ b/monkey/infection_monkey/exploit/vsftpd.py @@ -14,8 +14,8 @@ from infection_monkey.exploit.tools.helpers import (build_monkey_commandline, get_monkey_depth, get_target_monkey) from infection_monkey.exploit.tools.http_tools import HTTPTools -from infection_monkey.model import ( - CHMOD_MONKEY, DOWNLOAD_TIMEOUT, MONKEY_ARG, RUN_MONKEY, WGET_HTTP_UPLOAD) +from infection_monkey.model import (CHMOD_MONKEY, DOWNLOAD_TIMEOUT, MONKEY_ARG, + RUN_MONKEY, WGET_HTTP_UPLOAD) from infection_monkey.telemetry.attack.t1222_telem import T1222Telem LOG = getLogger(__name__) diff --git a/monkey/monkey_island/cc/environment/set_server_config.py b/monkey/monkey_island/cc/environment/set_server_config.py index 68ac1b619..d31dd6916 100644 --- a/monkey/monkey_island/cc/environment/set_server_config.py +++ b/monkey/monkey_island/cc/environment/set_server_config.py @@ -1,7 +1,6 @@ import argparse import json import logging -import os import sys from pathlib import Path @@ -14,7 +13,7 @@ def add_monkey_dir_to_sys_path(): add_monkey_dir_to_sys_path() -from monkey_island.cc.environment.environment_config import EnvironmentConfig #isort:skip +from monkey_island.cc.environment.environment_config import EnvironmentConfig # noqa: E402 isort:skip SERVER_CONFIG = "server_config" From f825c8551c1c05ecd95c5588040b2a4b3eb37cea Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Thu, 27 Aug 2020 15:09:25 +0300 Subject: [PATCH 5/5] Removed debugging ls statements on travis.yml --- .travis.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index b49fbcefe..59a97f60c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,6 @@ os: linux before_install: # Init server_config.json to default - cp monkey/monkey_island/cc/server_config.json.default monkey/monkey_island/cc/server_config.json -- ls monkey/monkey_island/cc/ install: # Python @@ -55,10 +54,7 @@ install: before_script: # Set the server config to `testing`. This is required for for the UTs to pass. -- ls /home/travis/build/guardicore/monkey/ -- ls /home/travis/build/guardicore/ - pushd /home/travis/build/guardicore/monkey/monkey -- ls ./ - python monkey_island/cc/environment/set_server_config.py testing - popd