diff --git a/monkey/monkey_island/cc/services/telemetry/processing/credentials/credentials_parser.py b/monkey/monkey_island/cc/services/telemetry/processing/credentials/credentials_parser.py index 2dfc08aa2..e237f0139 100644 --- a/monkey/monkey_island/cc/services/telemetry/processing/credentials/credentials_parser.py +++ b/monkey/monkey_island/cc/services/telemetry/processing/credentials/credentials_parser.py @@ -23,17 +23,21 @@ IDENTITY_PROCESSORS = { def parse_credentials(credentials: dict): - for credential in credentials["credentials"]: - if is_ssh_keypair(credentials): - IDENTITY_PROCESSORS[CredentialsType.SSH_KEYPAIR](credential, credentials["monkey_guid"]) + + for credential in credentials["data"]: + if is_ssh_keypair(credential): + SECRET_PROCESSORS[CredentialsType.SSH_KEYPAIR](credential, credentials["monkey_guid"]) else: for identity in credential["identities"]: - IDENTITY_PROCESSORS[identity["type"]](identity) + IDENTITY_PROCESSORS[identity["credential_type"]](identity) for secret in credential["secrets"]: - SECRET_PROCESSORS[secret["type"]](secret) + SECRET_PROCESSORS[secret["credential_type"]](secret) -def is_ssh_keypair(credentials: dict) -> bool: +def is_ssh_keypair(credential: dict) -> bool: return bool( - filter(credentials["secrets"], lambda secret: secret["type"] == CredentialsType.SSH_KEYPAIR) + filter( + lambda secret: secret["credential_type"] == CredentialsType.SSH_KEYPAIR, + credential["secrets"], + ) ) diff --git a/monkey/monkey_island/cc/services/telemetry/processing/credentials/secrets/ssh_key_processor.py b/monkey/monkey_island/cc/services/telemetry/processing/credentials/secrets/ssh_key_processor.py index df0557115..47ecc265a 100644 --- a/monkey/monkey_island/cc/services/telemetry/processing/credentials/secrets/ssh_key_processor.py +++ b/monkey/monkey_island/cc/services/telemetry/processing/credentials/secrets/ssh_key_processor.py @@ -17,7 +17,7 @@ def process_ssh_key(credentials: dict, monkey_guid: str): ) for ssh_key in credentials["secrets"]: - if not ssh_key["type"] == CredentialsType.SSH_KEYPAIR: + if not ssh_key["credential_type"] == CredentialsType.SSH_KEYPAIR.name: raise SSHKeyProcessingError("SSH credentials contain secrets that are not keypairs") if not ssh_key["public_key"] or not ssh_key["private_key"]: @@ -27,6 +27,8 @@ def process_ssh_key(credentials: dict, monkey_guid: str): ip = Monkey.get_single_monkey_by_guid(monkey_guid).ip_addresses[0] username = credentials["identities"][0]["username"] + encrypt_system_info_ssh_keys(ssh_key) + ConfigService.ssh_add_keys( user=username, public_key=ssh_key["public_key"],