跳转至

SSH 授权密钥

对手可能会修改 SSH authorized_keys 文件以在受害者主机上保持持久性。Linux 发行版和 macOS 通常使用基于密钥的身份验证来保护 SSH 会话的身份验证过程以进行远程管理。SSH 中的 authorized_keys 文件指定可用于登录配置该文件的用户帐户的 SSH 密钥。此文件通常位于用户主目录下的 <user-home>/.ssh/authorized_keys。(引用: SSH Authorized Keys) 用户可以编辑系统的 SSH 配置文件,将指令 PubkeyAuthentication 和 RSAAuthentication 修改为值“yes”以确保启用公钥和 RSA 身份验证。SSH 配置文件通常位于 /etc/ssh/sshd_config 下。 对手可能会直接使用脚本或 shell 命令修改 SSH authorized_keys 文件以添加他们自己提供的公钥。在云环境中,对手可能能够通过命令行界面或 REST API 修改特定虚拟机的 SSH authorized_keys 文件。例如,通过使用 Google Cloud CLI 的“add-metadata”命令,对手可以向用户帐户添加 SSH 密钥。(引用: Google Cloud Add Metadata)(引用: Google Cloud Privilege Escalation) 类似地,在 Azure 中,对手可以通过向 API 发送 PATCH 请求来更新虚拟机的 authorized_keys 文件。(引用: Azure Update Virtual Machines) 这确保了拥有相应私钥的对手可以通过 SSH 以现有用户身份登录。(引用: Venafi SSH Key Abuse)(引用: Cybereason Linux Exim Worm) 这也可能导致权限提升,其中虚拟机或实例具有与请求用户不同的权限。 如果通过云 API 或命令行界面修改 authorized_keys 文件,对手可能会在目标虚拟机上实现权限提升,如果他们向更高权限的用户添加密钥。 SSH 密钥也可以添加到网络设备上的帐户,例如使用 ip ssh pubkey-chain 网络设备 CLI 命令。(引用: cisco_ip_ssh_pubkey_ch_cmd)