跳转至

Sudo 和 Sudo 缓存

对手可能会执行 sudo 缓存和/或使用 sudoers 文件来提升权限。对手可能这样做是为了以其他用户身份执行命令或生成具有更高权限的进程。 在 Linux 和 MacOS 系统中,sudo(有时称为“超级用户执行”)允许用户从终端以提升的权限执行命令,并控制谁可以在系统上执行这些命令。sudo 命令“允许系统管理员委派权限,授予某些用户(或用户组)以 root 或其他用户身份运行某些(或所有)命令的能力,同时提供命令及其参数的审计跟踪。”(引用: sudo man page 2018) 由于 sudo 是为系统管理员设计的,因此它具有一些有用的配置功能,例如 timestamp_timeout,这是 sudo 之间的时间间隔,以分钟为单位,然后它会重新提示输入密码。这是因为 sudo 具有缓存凭据的能力。Sudo 会在 /var/db/sudo 处创建(或触摸)一个文件,其中包含上次运行 sudo 的时间戳,以确定此超时。此外,还有一个 tty_tickets 变量,它将每个新的 tty(终端会话)视为隔离的。这意味着,例如,一个 tty 的 sudo 超时不会影响另一个 tty(您将不得不再次输入密码)。 sudoers 文件 /etc/sudoers 描述了哪些用户可以从哪些终端运行哪些命令。这还描述了用户可以以其他用户或组身份运行哪些命令。这提供了最低权限原则,使用户在大多数时间内以最低可能的权限运行,并且仅在需要时通过提示输入密码提升到其他用户或权限。然而,sudoers 文件还可以通过类似 user1 ALL=(ALL) NOPASSWD: ALL 的行指定何时不提示用户输入密码。(引用: OSX.Dok Malware) 但是,编辑此文件需要提升的权限。 对手还可以滥用这些机制的配置不当来提升权限而无需用户的密码。例如,可以监视 /var/db/sudo 的时间戳以查看它是否在 timestamp_timeout 范围内。如果是,则恶意软件可以执行 sudo 命令而无需提供用户的密码。此外,如果禁用 tty_tickets,对手可以从该用户的任何 tty 执行此操作。 在野外,恶意软件已禁用 tty_tickets 以潜在地使脚本编写更容易,通过发出 echo \'Defaults !tty_tickets\' >> /etc/sudoers。(引用: cybereason osx proton) 为了使此更改生效,恶意软件还发出了 killall Terminal。从 macOS Sierra 开始,sudoers 文件默认启用了 tty_tickets