Agent: Implement a preliminary propagation thread in AutomatedMaster

This commit is contained in:
Mike Salvatore 2021-12-08 13:26:05 -05:00
parent 5724695181
commit 05adf6bae6
1 changed files with 24 additions and 1 deletions

View File

@ -1,6 +1,8 @@
import logging import logging
import threading import threading
import time import time
from queue import Queue
from threading import Thread
from typing import Any, Callable, Dict, List, Tuple from typing import Any, Callable, Dict, List, Tuple
from infection_monkey.i_control_channel import IControlChannel from infection_monkey.i_control_channel import IControlChannel
@ -149,6 +151,27 @@ class AutomatedMaster(IMaster):
return True return True
def _propagate(self, config: Dict): def _propagate(self, config: Dict):
logger.info("Attempting to propagate")
hosts_to_exploit = Queue()
scan_thread = _create_daemon_thread(target=self._scan_network)
exploit_thread = _create_daemon_thread(
target=self._exploit_targets, args=(hosts_to_exploit, scan_thread)
)
scan_thread.start()
exploit_thread.start()
scan_thread.join()
exploit_thread.join()
logger.info("Finished attempting to propagate")
def _scan_network(self):
pass
def _exploit_targets(self, hosts_to_exploit: Queue, scan_thread: Thread):
pass pass
def _run_payload(self, payload: Tuple[str, Dict]): def _run_payload(self, payload: Tuple[str, Dict]):
@ -175,4 +198,4 @@ class AutomatedMaster(IMaster):
def _create_daemon_thread(target: Callable[[Any], None], args: Tuple[Any] = ()): def _create_daemon_thread(target: Callable[[Any], None], args: Tuple[Any] = ()):
return threading.Thread(target=target, args=args, daemon=True) return Thread(target=target, args=args, daemon=True)