forked from p15670423/monkey
Agent: Build an AutomatedMaster in monkey.py
This commit is contained in:
parent
da3c6a4245
commit
ddd8a0e53a
|
@ -4,16 +4,19 @@ import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
from typing import List
|
||||||
|
|
||||||
import infection_monkey.tunnel as tunnel
|
import infection_monkey.tunnel as tunnel
|
||||||
from common.utils.attack_utils import ScanStatus, UsageEnum
|
from common.utils.attack_utils import ScanStatus, UsageEnum
|
||||||
from common.version import get_version
|
from common.version import get_version
|
||||||
from infection_monkey.config import GUID, WormConfiguration
|
from infection_monkey.config import GUID, WormConfiguration
|
||||||
from infection_monkey.control import ControlClient
|
from infection_monkey.control import ControlClient
|
||||||
|
from infection_monkey.master import AutomatedMaster
|
||||||
from infection_monkey.master.control_channel import ControlChannel
|
from infection_monkey.master.control_channel import ControlChannel
|
||||||
from infection_monkey.master.mock_master import MockMaster
|
from infection_monkey.model import DELAY_DELETE_CMD, VictimHostFactory
|
||||||
from infection_monkey.model import DELAY_DELETE_CMD
|
from infection_monkey.network import NetworkInterface
|
||||||
from infection_monkey.network.firewall import app as firewall
|
from infection_monkey.network.firewall import app as firewall
|
||||||
|
from infection_monkey.network.info import get_local_network_interfaces
|
||||||
from infection_monkey.puppet.mock_puppet import MockPuppet
|
from infection_monkey.puppet.mock_puppet import MockPuppet
|
||||||
from infection_monkey.system_singleton import SystemSingleton
|
from infection_monkey.system_singleton import SystemSingleton
|
||||||
from infection_monkey.telemetry.attack.t1106_telem import T1106Telem
|
from infection_monkey.telemetry.attack.t1106_telem import T1106Telem
|
||||||
|
@ -35,7 +38,6 @@ logger = logging.getLogger(__name__)
|
||||||
class InfectionMonkey:
|
class InfectionMonkey:
|
||||||
def __init__(self, args):
|
def __init__(self, args):
|
||||||
logger.info("Monkey is initializing...")
|
logger.info("Monkey is initializing...")
|
||||||
self._master = MockMaster(MockPuppet(), LegacyTelemetryMessengerAdapter())
|
|
||||||
self._singleton = SystemSingleton()
|
self._singleton = SystemSingleton()
|
||||||
self._opts = self._get_arguments(args)
|
self._opts = self._get_arguments(args)
|
||||||
# TODO Used in propagation phase to set the default server for the victim
|
# TODO Used in propagation phase to set the default server for the victim
|
||||||
|
@ -151,8 +153,29 @@ class InfectionMonkey:
|
||||||
StateTelem(is_done=False, version=get_version()).send()
|
StateTelem(is_done=False, version=get_version()).send()
|
||||||
TunnelTelem().send()
|
TunnelTelem().send()
|
||||||
|
|
||||||
|
local_network_interfaces = InfectionMonkey._get_local_network_interfaces()
|
||||||
|
|
||||||
|
self._build_master(local_network_interfaces)
|
||||||
|
|
||||||
register_signal_handlers(self._master)
|
register_signal_handlers(self._master)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _get_local_network_interfaces():
|
||||||
|
local_network_interfaces = get_local_network_interfaces()
|
||||||
|
for i in local_network_interfaces:
|
||||||
|
logger.debug(f"Found local interface {i.address}{i.netmask}")
|
||||||
|
|
||||||
|
return local_network_interfaces
|
||||||
|
|
||||||
|
def _build_master(self, local_network_interfaces: List[NetworkInterface]):
|
||||||
|
self._master = AutomatedMaster(
|
||||||
|
MockPuppet(),
|
||||||
|
LegacyTelemetryMessengerAdapter(),
|
||||||
|
VictimHostFactory(),
|
||||||
|
ControlChannel(self._opts.server, GUID),
|
||||||
|
local_network_interfaces,
|
||||||
|
)
|
||||||
|
|
||||||
def _is_another_monkey_running(self):
|
def _is_another_monkey_running(self):
|
||||||
return not self._singleton.try_lock()
|
return not self._singleton.try_lock()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue