From aba886624ecd458b4f2c805e540163ef4e73ede6 Mon Sep 17 00:00:00 2001 From: Kekoa Kaaikala Date: Wed, 5 Oct 2022 18:02:27 +0000 Subject: [PATCH] Agent: Send propagation events sooner --- monkey/infection_monkey/exploit/sshexec.py | 28 +++++++++------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/monkey/infection_monkey/exploit/sshexec.py b/monkey/infection_monkey/exploit/sshexec.py index b0a7b7b2b..c0b934bcd 100644 --- a/monkey/infection_monkey/exploit/sshexec.py +++ b/monkey/infection_monkey/exploit/sshexec.py @@ -180,7 +180,9 @@ class SSHExploiter(HostExploiter): ssh = self._exploit(port) except FailedExploitationError as err: self.exploit_result.error_message = str(err) - logger.error(str(err)) + logger.error(self.exploit_result.error_message) + + return self.exploit_result if self._is_interrupted(): self._set_interrupted() @@ -188,14 +190,9 @@ class SSHExploiter(HostExploiter): try: self._propagate(ssh) - except FailedExploitationError as err: + except (FailedExploitationError, RuntimeError) as err: self.exploit_result.error_message = str(err) logger.error(self.exploit_result.error_message) - self._publish_propagation_event(False, error_message=self.exploit_result.error_message) - except RuntimeError as err: - error_message = str(err) - self.exploit_result.error_message = error_message - logger.error(error_message) finally: ssh.close() return self.exploit_result @@ -253,7 +250,9 @@ class SSHExploiter(HostExploiter): self.add_executed_cmd(cmdline) except Exception as exc: - raise FailedExploitationError(f"Error running monkey on victim {self.host}: ({exc})") + error_message = f"Error running monkey on victim {self.host}: ({exc})" + self._publish_exploitation_event(False, error_message=error_message) + raise FailedExploitationError(error_message) def _is_port_open(self, ip: IPv4Address, port: int) -> bool: is_open, _ = check_tcp_port(ip, port) @@ -288,11 +287,7 @@ class SSHExploiter(HostExploiter): logger.error(self.exploit_result.error_message) return False except Exception as exc: - self.exploit_result.error_message = ( - f"Error running uname os command on victim {self.host}: ({exc})" - ) - - logger.error(self.exploit_result.error_message) + logger.error(f"Error running uname os command on victim {self.host}: ({exc})") return False return True @@ -327,10 +322,9 @@ class SSHExploiter(HostExploiter): return ScanStatus.USED except Exception as exc: - self.exploit_result.error_message = ( - f"Error uploading file into victim {self.host}: ({exc})" - ) - logger.error(self.exploit_result.error_message) + error_message = f"Error uploading file into victim {self.host}: ({exc})" + self._publish_propagation_event(False, error_message=error_message) + self.exploit_result.error_message = error_message return ScanStatus.SCANNED def _set_executable_bit_on_agent_binary(