Broke monkey_utils to utils/ and moved sambacry_runner to exploit. This commit is 100% refactoring without any new code, just deleted unused utils.
This commit is contained in:
parent
4b44fad1cd
commit
edc2d49307
|
@ -22,7 +22,7 @@ $SAMBA_64_BINARY_NAME = "sc_monkey_runner64.so"
|
||||||
# Other directories and paths ( most likely you dont need to configure)
|
# Other directories and paths ( most likely you dont need to configure)
|
||||||
$MONKEY_ISLAND_DIR = "\monkey\monkey_island"
|
$MONKEY_ISLAND_DIR = "\monkey\monkey_island"
|
||||||
$MONKEY_DIR = "\monkey\infection_monkey"
|
$MONKEY_DIR = "\monkey\infection_monkey"
|
||||||
$SAMBA_BINARIES_DIR = Join-Path -Path $MONKEY_DIR -ChildPath "\monkey_utils\sambacry_monkey_runner"
|
$SAMBA_BINARIES_DIR = Join-Path -Path $MONKEY_DIR -ChildPath "\exploit\sambacry_monkey_runner"
|
||||||
$PYTHON_DLL = "C:\Windows\System32\python27.dll"
|
$PYTHON_DLL = "C:\Windows\System32\python27.dll"
|
||||||
$MK32_DLL = "mk32.dll"
|
$MK32_DLL = "mk32.dll"
|
||||||
$MK64_DLL = "mk64.dll"
|
$MK64_DLL = "mk64.dll"
|
||||||
|
|
|
@ -129,7 +129,7 @@ python -m pip install --user -r requirements_linux.txt || handle_error
|
||||||
# Build samba
|
# Build samba
|
||||||
log_message "Building samba binaries"
|
log_message "Building samba binaries"
|
||||||
sudo apt-get install gcc-multilib
|
sudo apt-get install gcc-multilib
|
||||||
cd ${monkey_home}/monkey/infection_monkey/monkey_utils/sambacry_monkey_runner
|
cd ${monkey_home}/monkey/infection_monkey/exploit/sambacry_monkey_runner
|
||||||
sudo chmod +x ./build.sh || handle_error
|
sudo chmod +x ./build.sh || handle_error
|
||||||
./build.sh
|
./build.sh
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ from infection_monkey.exploit.tools.http_tools import HTTPTools
|
||||||
from infection_monkey.exploit.tools.helpers import get_monkey_dest_path, get_target_monkey, \
|
from infection_monkey.exploit.tools.helpers import get_monkey_dest_path, get_target_monkey, \
|
||||||
build_monkey_commandline, get_monkey_depth
|
build_monkey_commandline, get_monkey_depth
|
||||||
from infection_monkey.model import DROPPER_ARG
|
from infection_monkey.model import DROPPER_ARG
|
||||||
from infection_monkey.utils import get_monkey_dir_path
|
from infection_monkey.utils.monkey_dir import get_monkey_dir_path
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import os
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
import infection_monkey.utils as utils
|
from infection_monkey.utils.monkey_log_path import get_dropper_log_path, get_monkey_log_path
|
||||||
from infection_monkey.config import WormConfiguration, EXTERNAL_CONFIG_FILE
|
from infection_monkey.config import WormConfiguration, EXTERNAL_CONFIG_FILE
|
||||||
from infection_monkey.dropper import MonkeyDrops
|
from infection_monkey.dropper import MonkeyDrops
|
||||||
from infection_monkey.model import MONKEY_ARG, DROPPER_ARG
|
from infection_monkey.model import MONKEY_ARG, DROPPER_ARG
|
||||||
|
@ -79,10 +79,10 @@ def main():
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if MONKEY_ARG == monkey_mode:
|
if MONKEY_ARG == monkey_mode:
|
||||||
log_path = utils.get_monkey_log_path()
|
log_path = get_monkey_log_path()
|
||||||
monkey_cls = InfectionMonkey
|
monkey_cls = InfectionMonkey
|
||||||
elif DROPPER_ARG == monkey_mode:
|
elif DROPPER_ARG == monkey_mode:
|
||||||
log_path = utils.get_dropper_log_path()
|
log_path = get_dropper_log_path()
|
||||||
monkey_cls = MonkeyDrops
|
monkey_cls = MonkeyDrops
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -7,7 +7,8 @@ import time
|
||||||
from six.moves import xrange
|
from six.moves import xrange
|
||||||
|
|
||||||
import infection_monkey.tunnel as tunnel
|
import infection_monkey.tunnel as tunnel
|
||||||
import infection_monkey.utils as utils
|
from infection_monkey.utils.monkey_dir import create_monkey_dir, get_monkey_dir_path, remove_monkey_dir
|
||||||
|
from infection_monkey.utils.monkey_log_path import get_monkey_log_path
|
||||||
from infection_monkey.config import WormConfiguration
|
from infection_monkey.config import WormConfiguration
|
||||||
from infection_monkey.control import ControlClient
|
from infection_monkey.control import ControlClient
|
||||||
from infection_monkey.model import DELAY_DELETE_CMD
|
from infection_monkey.model import DELAY_DELETE_CMD
|
||||||
|
@ -90,7 +91,7 @@ class InfectionMonkey(object):
|
||||||
self.set_default_port()
|
self.set_default_port()
|
||||||
|
|
||||||
# Create a dir for monkey files if there isn't one
|
# Create a dir for monkey files if there isn't one
|
||||||
utils.create_monkey_dir()
|
create_monkey_dir()
|
||||||
|
|
||||||
if WindowsUpgrader.should_upgrade():
|
if WindowsUpgrader.should_upgrade():
|
||||||
self._upgrading_to_64 = True
|
self._upgrading_to_64 = True
|
||||||
|
@ -244,8 +245,8 @@ class InfectionMonkey(object):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def self_delete():
|
def self_delete():
|
||||||
status = ScanStatus.USED if utils.remove_monkey_dir() else ScanStatus.SCANNED
|
status = ScanStatus.USED if remove_monkey_dir() else ScanStatus.SCANNED
|
||||||
T1107Telem(status, utils.get_monkey_dir_path()).send()
|
T1107Telem(status, get_monkey_dir_path()).send()
|
||||||
|
|
||||||
if WormConfiguration.self_delete_in_cleanup \
|
if WormConfiguration.self_delete_in_cleanup \
|
||||||
and -1 == sys.executable.find('python'):
|
and -1 == sys.executable.find('python'):
|
||||||
|
@ -269,7 +270,7 @@ class InfectionMonkey(object):
|
||||||
T1107Telem(status, sys.executable).send()
|
T1107Telem(status, sys.executable).send()
|
||||||
|
|
||||||
def send_log(self):
|
def send_log(self):
|
||||||
monkey_log_path = utils.get_monkey_log_path()
|
monkey_log_path = get_monkey_log_path()
|
||||||
if os.path.exists(monkey_log_path):
|
if os.path.exists(monkey_log_path):
|
||||||
with open(monkey_log_path, 'r') as f:
|
with open(monkey_log_path, 'r') as f:
|
||||||
log = f.read()
|
log = f.read()
|
||||||
|
|
|
@ -10,7 +10,7 @@ import re
|
||||||
from six.moves import range
|
from six.moves import range
|
||||||
|
|
||||||
from infection_monkey.pyinstaller_utils import get_binary_file_path
|
from infection_monkey.pyinstaller_utils import get_binary_file_path
|
||||||
from infection_monkey.utils import is_64bit_python
|
from infection_monkey.utils.environment import is_64bit_python
|
||||||
|
|
||||||
DEFAULT_TIMEOUT = 10
|
DEFAULT_TIMEOUT = 10
|
||||||
BANNER_READ = 1024
|
BANNER_READ = 1024
|
||||||
|
|
|
@ -6,11 +6,11 @@ import subprocess
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from common.data.post_breach_consts import POST_BREACH_COMMUNICATE_AS_NEW_USER
|
from common.data.post_breach_consts import POST_BREACH_COMMUNICATE_AS_NEW_USER
|
||||||
from infection_monkey.monkey_utils.windows.new_user import NewUser, NewUserError
|
from infection_monkey.utils.windows.new_user import NewUser, NewUserError
|
||||||
from infection_monkey.post_breach.actions.add_user import BackdoorUser
|
from infection_monkey.post_breach.actions.add_user import BackdoorUser
|
||||||
from infection_monkey.post_breach.pba import PBA
|
from infection_monkey.post_breach.pba import PBA
|
||||||
from infection_monkey.telemetry.post_breach_telem import PostBreachTelem
|
from infection_monkey.telemetry.post_breach_telem import PostBreachTelem
|
||||||
from infection_monkey.utils import is_windows_os
|
from infection_monkey.utils.environment import is_windows_os
|
||||||
|
|
||||||
PING_TEST_DOMAIN = "google.com"
|
PING_TEST_DOMAIN = "google.com"
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,11 @@ import os
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from common.data.post_breach_consts import POST_BREACH_FILE_EXECUTION
|
from common.data.post_breach_consts import POST_BREACH_FILE_EXECUTION
|
||||||
from infection_monkey.utils import is_windows_os
|
from infection_monkey.utils.environment import is_windows_os
|
||||||
from infection_monkey.post_breach.pba import PBA
|
from infection_monkey.post_breach.pba import PBA
|
||||||
from infection_monkey.control import ControlClient
|
from infection_monkey.control import ControlClient
|
||||||
from infection_monkey.config import WormConfiguration
|
from infection_monkey.config import WormConfiguration
|
||||||
from infection_monkey.utils import get_monkey_dir_path
|
from infection_monkey.utils.monkey_dir import get_monkey_dir_path
|
||||||
from infection_monkey.telemetry.attack.t1105_telem import T1105Telem
|
from infection_monkey.telemetry.attack.t1105_telem import T1105Telem
|
||||||
from common.utils.attack_utils import ScanStatus
|
from common.utils.attack_utils import ScanStatus
|
||||||
from infection_monkey.exploit.tools.helpers import get_interface_to_target
|
from infection_monkey.exploit.tools.helpers import get_interface_to_target
|
||||||
|
|
|
@ -3,7 +3,7 @@ import subprocess
|
||||||
|
|
||||||
from common.utils.attack_utils import ScanStatus
|
from common.utils.attack_utils import ScanStatus
|
||||||
from infection_monkey.telemetry.post_breach_telem import PostBreachTelem
|
from infection_monkey.telemetry.post_breach_telem import PostBreachTelem
|
||||||
from infection_monkey.utils import is_windows_os
|
from infection_monkey.utils.environment import is_windows_os
|
||||||
from infection_monkey.config import WormConfiguration
|
from infection_monkey.config import WormConfiguration
|
||||||
from infection_monkey.telemetry.attack.t1064_telem import T1064Telem
|
from infection_monkey.telemetry.attack.t1064_telem import T1064Telem
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import inspect
|
||||||
import importlib
|
import importlib
|
||||||
from infection_monkey.post_breach.pba import PBA
|
from infection_monkey.post_breach.pba import PBA
|
||||||
from infection_monkey.post_breach.actions import get_pba_files
|
from infection_monkey.post_breach.actions import get_pba_files
|
||||||
from infection_monkey.utils import is_windows_os
|
from infection_monkey.utils.environment import is_windows_os
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ a. Build sambacry binaries yourself
|
||||||
a.1. Install gcc-multilib if it's not installed
|
a.1. Install gcc-multilib if it's not installed
|
||||||
sudo apt-get install gcc-multilib
|
sudo apt-get install gcc-multilib
|
||||||
a.2. Build the binaries
|
a.2. Build the binaries
|
||||||
cd [code location]/infection_monkey/monkey_utils/sambacry_monkey_runner
|
cd [code location]/infection_monkey/exploit/sambacry_monkey_runner
|
||||||
./build.sh
|
./build.sh
|
||||||
|
|
||||||
b. Download our pre-built sambacry binaries
|
b. Download our pre-built sambacry binaries
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
import struct
|
|
||||||
import sys
|
|
||||||
import tempfile
|
|
||||||
|
|
||||||
from infection_monkey.config import WormConfiguration
|
|
||||||
|
|
||||||
|
|
||||||
def get_monkey_log_path():
|
|
||||||
return os.path.expandvars(WormConfiguration.monkey_log_path_windows) if sys.platform == "win32" \
|
|
||||||
else WormConfiguration.monkey_log_path_linux
|
|
||||||
|
|
||||||
|
|
||||||
def get_dropper_log_path():
|
|
||||||
return os.path.expandvars(WormConfiguration.dropper_log_path_windows) if sys.platform == "win32" \
|
|
||||||
else WormConfiguration.dropper_log_path_linux
|
|
||||||
|
|
||||||
|
|
||||||
def is_64bit_windows_os():
|
|
||||||
"""
|
|
||||||
Checks for 64 bit Windows OS using environment variables.
|
|
||||||
"""
|
|
||||||
return 'PROGRAMFILES(X86)' in os.environ
|
|
||||||
|
|
||||||
|
|
||||||
def is_64bit_python():
|
|
||||||
return struct.calcsize("P") == 8
|
|
||||||
|
|
||||||
|
|
||||||
def is_windows_os():
|
|
||||||
return sys.platform.startswith("win")
|
|
||||||
|
|
||||||
|
|
||||||
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 not os.path.exists(get_monkey_dir_path()):
|
|
||||||
os.mkdir(get_monkey_dir_path())
|
|
||||||
|
|
||||||
|
|
||||||
def remove_monkey_dir():
|
|
||||||
"""
|
|
||||||
Removes monkey's root directory
|
|
||||||
:return True if removed without errors and False otherwise
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
shutil.rmtree(get_monkey_dir_path())
|
|
||||||
return True
|
|
||||||
except Exception:
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def get_monkey_dir_path():
|
|
||||||
return os.path.join(tempfile.gettempdir(), WormConfiguration.monkey_dir_name)
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
import os
|
||||||
|
import struct
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def is_64bit_windows_os():
|
||||||
|
"""
|
||||||
|
Checks for 64 bit Windows OS using environment variables.
|
||||||
|
"""
|
||||||
|
return 'PROGRAMFILES(X86)' in os.environ
|
||||||
|
|
||||||
|
|
||||||
|
def is_64bit_python():
|
||||||
|
return struct.calcsize("P") == 8
|
||||||
|
|
||||||
|
|
||||||
|
def is_windows_os():
|
||||||
|
return sys.platform.startswith("win")
|
|
@ -0,0 +1,29 @@
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
from infection_monkey.config import WormConfiguration
|
||||||
|
|
||||||
|
|
||||||
|
def create_monkey_dir():
|
||||||
|
"""
|
||||||
|
Creates directory for monkey and related files
|
||||||
|
"""
|
||||||
|
if not os.path.exists(get_monkey_dir_path()):
|
||||||
|
os.mkdir(get_monkey_dir_path())
|
||||||
|
|
||||||
|
|
||||||
|
def remove_monkey_dir():
|
||||||
|
"""
|
||||||
|
Removes monkey's root directory
|
||||||
|
:return True if removed without errors and False otherwise
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
shutil.rmtree(get_monkey_dir_path())
|
||||||
|
return True
|
||||||
|
except Exception:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def get_monkey_dir_path():
|
||||||
|
return os.path.join(tempfile.gettempdir(), WormConfiguration.monkey_dir_name)
|
|
@ -0,0 +1,14 @@
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from infection_monkey.config import WormConfiguration
|
||||||
|
|
||||||
|
|
||||||
|
def get_monkey_log_path():
|
||||||
|
return os.path.expandvars(WormConfiguration.monkey_log_path_windows) if sys.platform == "win32" \
|
||||||
|
else WormConfiguration.monkey_log_path_linux
|
||||||
|
|
||||||
|
|
||||||
|
def get_dropper_log_path():
|
||||||
|
return os.path.expandvars(WormConfiguration.dropper_log_path_windows) if sys.platform == "win32" \
|
||||||
|
else WormConfiguration.dropper_log_path_linux
|
|
@ -10,7 +10,7 @@ from infection_monkey.config import WormConfiguration
|
||||||
from infection_monkey.control import ControlClient
|
from infection_monkey.control import ControlClient
|
||||||
from infection_monkey.exploit.tools.helpers import build_monkey_commandline_explicitly
|
from infection_monkey.exploit.tools.helpers import build_monkey_commandline_explicitly
|
||||||
from infection_monkey.model import MONKEY_CMDLINE_WINDOWS
|
from infection_monkey.model import MONKEY_CMDLINE_WINDOWS
|
||||||
from infection_monkey.utils import is_windows_os, is_64bit_windows_os, is_64bit_python
|
from infection_monkey.utils.environment import is_windows_os, is_64bit_windows_os, is_64bit_python
|
||||||
|
|
||||||
__author__ = 'itay.mizeretz'
|
__author__ = 'itay.mizeretz'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue