forked from p15670423/monkey
Report version as part of state telem and log it in island.
This commit is contained in:
parent
cea33d4540
commit
a7aeb7d7ff
|
@ -30,6 +30,7 @@ from infection_monkey.network.tools import get_interface_to_target
|
||||||
from infection_monkey.exploit.tools.exceptions import ExploitingVulnerableMachineError, FailedExploitationError
|
from infection_monkey.exploit.tools.exceptions import ExploitingVulnerableMachineError, FailedExploitationError
|
||||||
from infection_monkey.telemetry.attack.t1106_telem import T1106Telem
|
from infection_monkey.telemetry.attack.t1106_telem import T1106Telem
|
||||||
from common.utils.attack_utils import ScanStatus, UsageEnum
|
from common.utils.attack_utils import ScanStatus, UsageEnum
|
||||||
|
from common.version import get_version
|
||||||
from infection_monkey.exploit.HostExploiter import HostExploiter
|
from infection_monkey.exploit.HostExploiter import HostExploiter
|
||||||
|
|
||||||
MAX_DEPTH_REACHED_MESSAGE = "Reached max depth, shutting down"
|
MAX_DEPTH_REACHED_MESSAGE = "Reached max depth, shutting down"
|
||||||
|
@ -121,7 +122,7 @@ class InfectionMonkey(object):
|
||||||
if monkey_tunnel:
|
if monkey_tunnel:
|
||||||
monkey_tunnel.start()
|
monkey_tunnel.start()
|
||||||
|
|
||||||
StateTelem(is_done=False).send()
|
StateTelem(is_done=False, version=get_version()).send()
|
||||||
TunnelTelem().send()
|
TunnelTelem().send()
|
||||||
|
|
||||||
LOG.debug("Starting the post-breach phase.")
|
LOG.debug("Starting the post-breach phase.")
|
||||||
|
@ -254,7 +255,7 @@ class InfectionMonkey(object):
|
||||||
InfectionMonkey.close_tunnel()
|
InfectionMonkey.close_tunnel()
|
||||||
firewall.close()
|
firewall.close()
|
||||||
else:
|
else:
|
||||||
StateTelem(is_done=True).send() # Signal the server (before closing the tunnel)
|
StateTelem(is_done=True, version=get_version()).send() # Signal the server (before closing the tunnel)
|
||||||
InfectionMonkey.close_tunnel()
|
InfectionMonkey.close_tunnel()
|
||||||
firewall.close()
|
firewall.close()
|
||||||
if WormConfiguration.send_log_to_server:
|
if WormConfiguration.send_log_to_server:
|
||||||
|
|
|
@ -5,15 +5,19 @@ __author__ = "itay.mizeretz"
|
||||||
|
|
||||||
class StateTelem(BaseTelem):
|
class StateTelem(BaseTelem):
|
||||||
|
|
||||||
def __init__(self, is_done):
|
def __init__(self, is_done, version="Unknown"):
|
||||||
"""
|
"""
|
||||||
Default state telemetry constructor
|
Default state telemetry constructor
|
||||||
:param is_done: Whether the state of monkey is done.
|
:param is_done: Whether the state of monkey is done.
|
||||||
"""
|
"""
|
||||||
super(StateTelem, self).__init__()
|
super(StateTelem, self).__init__()
|
||||||
self.is_done = is_done
|
self.is_done = is_done
|
||||||
|
self.version = version
|
||||||
|
|
||||||
telem_category = 'state'
|
telem_category = 'state'
|
||||||
|
|
||||||
def get_data(self):
|
def get_data(self):
|
||||||
return {'done': self.is_done}
|
return {
|
||||||
|
'done': self.is_done,
|
||||||
|
'version': self.version
|
||||||
|
}
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
|
import logging
|
||||||
|
|
||||||
from monkey_island.cc.models import Monkey
|
from monkey_island.cc.models import Monkey
|
||||||
from monkey_island.cc.services.node import NodeService
|
from monkey_island.cc.services.node import NodeService
|
||||||
from monkey_island.cc.services.telemetry.zero_trust_tests.segmentation import \
|
from monkey_island.cc.services.telemetry.zero_trust_tests.segmentation import \
|
||||||
test_passed_findings_for_unreached_segments
|
test_passed_findings_for_unreached_segments
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def process_state_telemetry(telemetry_json):
|
def process_state_telemetry(telemetry_json):
|
||||||
monkey = NodeService.get_monkey_by_guid(telemetry_json['monkey_guid'])
|
monkey = NodeService.get_monkey_by_guid(telemetry_json['monkey_guid'])
|
||||||
NodeService.add_communication_info(monkey, telemetry_json['command_control_channel'])
|
NodeService.add_communication_info(monkey, telemetry_json['command_control_channel'])
|
||||||
|
@ -15,3 +20,6 @@ def process_state_telemetry(telemetry_json):
|
||||||
if telemetry_json['data']['done']:
|
if telemetry_json['data']['done']:
|
||||||
current_monkey = Monkey.get_single_monkey_by_guid(telemetry_json['monkey_guid'])
|
current_monkey = Monkey.get_single_monkey_by_guid(telemetry_json['monkey_guid'])
|
||||||
test_passed_findings_for_unreached_segments(current_monkey)
|
test_passed_findings_for_unreached_segments(current_monkey)
|
||||||
|
|
||||||
|
if telemetry_json['data']['version']:
|
||||||
|
logger.info(f"monkey {telemetry_json['monkey_guid']} has version {telemetry_json['data']['version']}")
|
||||||
|
|
Loading…
Reference in New Issue