T1548.003: Sudo 和 Sudo 缓存

权限提升

摘要

攻击者可能执行 sudo 缓存和/或使用 sudoers 文件来提升权限。攻击者可能这样做以作为其他用户执行命令或产生具有更高权限的进程。 在 Linux 和 MacOS 系统中,sudo(有时称为 "superuser do")允许用户从终端以提升的权限执行命令,并控制在系统上谁可以执行这些命令。<code>sudo</code> 命令“允许系统管理员委派权限,授予某些用户(或用户组)以 root 或其他用户身份运行部分(或全部)命令的能力,同时提供命令及其参数的审计跟踪”。(Citation: sudo man page 2018) 由于 sudo 是为系统管理员设计的,它具有一些有用的配置功能,例如 <code>timestamp_timeout</code>,即 <code>sudo</code> 在重新提示输入密码之前的分钟数间隔。这是因为 <code>sudo</code> 具有在一段时间内缓存凭据的能力。Sudo 在 <code>/var/db/sudo</code> 创建(或触碰)一个文件,其中带有上次运行 sudo 的时间戳,以确定此超时。此外,还有一个 <code>tty_tickets</code> 变量,它独立处理每个新的 tty(终端会话)。这意味着,例如,一个 tty 的 sudo 超时不会影响另一个 tty(您必须再次输入密码)。 sudoers 文件 <code>/etc/sudoers</code> 描述哪些用户可以从哪些终端运行哪些命令。它还描述用户可以作为其他用户或组运行哪些命令。这提供了最小权限原则,使得用户大部分时间以其尽可能低的权限运行,仅在需要时提升到其他用户或权限,通常通过提示输入密码。然而,sudoers 文件也可以用诸如 <code>user1 ALL=(ALL) NOPASSWD: ALL</code> 之类的行指定何时不提示用户输入密码。(Citation: OSX.Dok Malware) 不过,编辑此文件需要提升的权限。 攻击者还可能滥用这些机制的不良配置,在无需用户密码的情况下提升权限。例如,可以监控 <code>/var/db/sudo</code> 的时间戳,看它是否落在 <code>timestamp_timeout</code> 范围内。如果是,则恶意软件可以在无需提供用户密码的情况下执行 sudo 命令。此外,如果禁用了 <code>tty_tickets</code>,攻击者可以从该用户的任何 tty 执行此操作。 在野外,恶意软件已禁用 <code>tty_tickets</code>,通过发出 <code>echo \'Defaults !tty_tickets\' >> /etc/sudoers</code> 可能使脚本编写更容易。(Citation: cybereason osx proton) 为了使此更改生效,恶意软件还发出了 <code>killall Terminal</code>。自 macOS Sierra 起,sudoers 文件默认启用 <code>tty_tickets</code>。

来源归属

来源:MITRE ATT&CK · 置信度:high

平台

  • Linux
  • macOS

战术

权限提升

参考来源