Agent: Extract method _get_victim_os

This commit is contained in:
Kekoa Kaaikala 2022-10-04 21:26:55 +00:00 committed by Ilija Lazoroski
parent dc8a0ac2ad
commit b31eb885f0
1 changed files with 24 additions and 20 deletions

View File

@ -210,25 +210,7 @@ class SSHExploiter(HostExploiter):
self._set_interrupted() self._set_interrupted()
return self.exploit_result return self.exploit_result
if not self.host.os.get("type"): if not self.host.os.get("type") and not self._get_victim_os(ssh):
try:
_, stdout, _ = ssh.exec_command("uname -o", timeout=SSH_EXEC_TIMEOUT)
uname_os = stdout.read().lower().strip().decode()
if "linux" in uname_os:
self.exploit_result.os = OperatingSystem.LINUX
self.host.os["type"] = OperatingSystem.LINUX
else:
self.exploit_result.error_message = f"SSH Skipping unknown os: {uname_os}"
if not uname_os:
logger.error(self.exploit_result.error_message)
return self.exploit_result
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)
return self.exploit_result return self.exploit_result
agent_binary_file_object = self.agent_binary_repository.get_agent_binary( agent_binary_file_object = self.agent_binary_repository.get_agent_binary(
@ -316,6 +298,28 @@ 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 _get_victim_os(self, ssh: paramiko.SSHClient) -> bool:
try:
_, stdout, _ = ssh.exec_command("uname -o", timeout=SSH_EXEC_TIMEOUT)
uname_os = stdout.read().lower().strip().decode()
if "linux" in uname_os:
self.exploit_result.os = OperatingSystem.LINUX
self.host.os["type"] = OperatingSystem.LINUX
else:
self.exploit_result.error_message = f"SSH Skipping unknown os: {uname_os}"
if not uname_os:
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)
return False
return True
def _upload_agent_binary( def _upload_agent_binary(
self, self,
ssh: paramiko.SSHClient, ssh: paramiko.SSHClient,