Agent: Construct concrete puppet in monkey.py

This commit is contained in:
Mike Salvatore 2021-12-17 11:11:21 -05:00
parent e392915b26
commit a48c1afefd
1 changed files with 22 additions and 12 deletions

View File

@ -12,13 +12,15 @@ from common.utils.attack_utils import ScanStatus, UsageEnum
from common.version import get_version
from infection_monkey.config import GUID, WormConfiguration
from infection_monkey.control import ControlClient
from infection_monkey.i_puppet import IPuppet, PluginType
from infection_monkey.master import AutomatedMaster
from infection_monkey.master.control_channel import ControlChannel
from infection_monkey.model import DELAY_DELETE_CMD, VictimHostFactory
from infection_monkey.network import NetworkInterface
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.payload.ransomware.ransomware_payload import RansomwarePayload
from infection_monkey.puppet.puppet import Puppet
from infection_monkey.system_singleton import SystemSingleton
from infection_monkey.telemetry.attack.t1106_telem import T1106Telem
from infection_monkey.telemetry.attack.t1107_telem import T1107Telem
@ -156,6 +158,20 @@ class InfectionMonkey:
register_signal_handlers(self._master)
def _build_master(self):
local_network_interfaces = InfectionMonkey._get_local_network_interfaces()
puppet = InfectionMonkey._build_puppet()
victim_host_factory = self._build_victim_host_factory(local_network_interfaces)
self._master = AutomatedMaster(
puppet,
LegacyTelemetryMessengerAdapter(),
victim_host_factory,
ControlChannel(self._default_server, GUID),
local_network_interfaces,
)
@staticmethod
def _get_local_network_interfaces():
local_network_interfaces = get_local_network_interfaces()
@ -164,18 +180,12 @@ class InfectionMonkey:
return local_network_interfaces
def _build_master(self):
local_network_interfaces = InfectionMonkey._get_local_network_interfaces()
@staticmethod
def _build_puppet() -> IPuppet:
puppet = Puppet()
puppet.load_plugin("ransomware", RansomwarePayload(), PluginType.PAYLOAD)
victim_host_factory = self._build_victim_host_factory(local_network_interfaces)
self._master = AutomatedMaster(
MockPuppet(),
LegacyTelemetryMessengerAdapter(),
victim_host_factory,
ControlChannel(self._default_server, GUID),
local_network_interfaces,
)
return puppet
def _build_victim_host_factory(
self, local_network_interfaces: List[NetworkInterface]