From 0268fa833f0fa2453a97381ee262e34adafe2f96 Mon Sep 17 00:00:00 2001 From: VakarisZ Date: Tue, 19 Mar 2019 18:41:14 +0200 Subject: [PATCH] New directory for monkey and it's files --- monkey/infection_monkey/config.py | 3 +++ monkey/infection_monkey/monkey.py | 4 ++++ monkey/infection_monkey/utils.py | 23 +++++++++++++++++++ .../cc/services/config_schema.py | 14 ++++++++++- 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/monkey/infection_monkey/config.py b/monkey/infection_monkey/config.py index ff66ff167..5d6fba356 100644 --- a/monkey/infection_monkey/config.py +++ b/monkey/infection_monkey/config.py @@ -107,6 +107,9 @@ class Configuration(object): dropper_target_path_win_32 = r"C:\Windows\monkey32.exe" dropper_target_path_win_64 = r"C:\Windows\monkey64.exe" dropper_target_path_linux = '/tmp/monkey' + # Monkey dir paths + monkey_dir_linux = '/tmp/monkey_dir' + monkey_dir_windows = r'C:\Windows\temp\monkey_dir' ########################### # Kill file diff --git a/monkey/infection_monkey/monkey.py b/monkey/infection_monkey/monkey.py index 92913749e..fe7558714 100644 --- a/monkey/infection_monkey/monkey.py +++ b/monkey/infection_monkey/monkey.py @@ -76,6 +76,9 @@ class InfectionMonkey(object): LOG.info("Monkey couldn't find server. Going down.") return + # Create a dir for monkey files if there isn't one + utils.create_monkey_dir() + if WindowsUpgrader.should_upgrade(): self._upgrading_to_64 = True self._singleton.unlock() @@ -216,6 +219,7 @@ class InfectionMonkey(object): self._singleton.unlock() InfectionMonkey.self_delete() + utils.remove_monkey_dir() LOG.info("Monkey is shutting down") @staticmethod diff --git a/monkey/infection_monkey/utils.py b/monkey/infection_monkey/utils.py index 635f2360d..ccb6010c7 100644 --- a/monkey/infection_monkey/utils.py +++ b/monkey/infection_monkey/utils.py @@ -1,5 +1,6 @@ import os import sys +import shutil import struct from infection_monkey.config import WormConfiguration @@ -35,3 +36,25 @@ def utf_to_ascii(string): # Converts utf string to ascii. Safe to use even if string is already ascii. udata = string.decode("utf-8") return udata.encode("ascii", "ignore") + + +def create_monkey_dir(): + """ + Creates directory for monkey and related files + """ + if is_windows_os(): + if not os.path.exists(WormConfiguration.monkey_dir_windows): + os.mkdir(WormConfiguration.monkey_dir_windows) + else: + if not os.path.exists(WormConfiguration.monkey_log_path_linux): + os.mkdir(WormConfiguration.monkey_dir_linux) + + +def remove_monkey_dir(): + """ + Removes monkey's root directory + """ + if is_windows_os(): + shutil.rmtree(WormConfiguration.monkey_dir_windows, ignore_errors=True) + else: + shutil.rmtree(WormConfiguration.monkey_dir_linux, ignore_errors=True) diff --git a/monkey/monkey_island/cc/services/config_schema.py b/monkey/monkey_island/cc/services/config_schema.py index 8d99540bf..cbcc6ba0a 100644 --- a/monkey/monkey_island/cc/services/config_schema.py +++ b/monkey/monkey_island/cc/services/config_schema.py @@ -423,7 +423,19 @@ SCHEMA = { "type": "integer", "default": 60, "description": "Time to keep tunnel open before going down after last exploit (in seconds)" - } + }, + "monkey_dir_windows": { + "title": "Monkey's windows directory", + "type": "string", + "default": r"C:\Windows\temp\monkey_dir", + "description": "Directory containing all monkey files on windows" + }, + "monkey_dir_linux": { + "title": "Monkey's linux directory", + "type": "string", + "default": "/tmp/monkey_dir", + "description": "Directory containing all monkey files on linux" + }, } }, "classes": {