译者: 林妙倩、戴亦仑 原创翻译作品,如果需要转载请取得翻译作者同意。
数据来源:ATT&CK Matrices
原文: https://attack.mitre.org/techniques/T1206
术语表: /attack/glossary
sudo
命令“使得系统管理员可以授权特定用户或用户组作为 root 或他用户执行某些(或所有)命令,同时还能够对命令及其参数进行审核跟踪”。
sudo 是为系统管理员创建的,因此具有一些有用的配置特性,比如 timestamp_timeout,是 sudo
记录密码的时间(以分钟为单位),超过后重新提示输入密码。
这是因为 sudo 能够缓存一段时间的凭据。
Sudo 在/var/db/sudo
上创建一个文件,该文件带有 Sudo 上次运行的时间戳,以确定是否超时。
此外,还有一个 tty_tickets 变量,独立处理每个新的 tty(终端会话)。
这意味着,例如,一个 tty 的 sudo 超时不会影响另一个 tty(您必须再次输入密码)。
攻击者可以滥用此不良配置来提升特权,而无需用户的密码。
可以监视/var/db/sudo
的时间戳,查看它是否在 timestamp_timeout
范围内。
如果是,恶意软件就可以执行 sudo 命令,而无需提供用户密码。
当 tty_tickets 被禁用时,攻击者可以从该用户的任意 tty 执行此操作。
通过执行 echo“default !tty_tickets”>> /etc/sudoers,OSX Proton
恶意软件禁用 tty_tickets
来简化脚本。
为了这种变化生效,Proton 恶意软件还必须执行 killall Terminal
。
在 macOS Sierra 中,sudoers 文件默认启用 tty_tickets。
设置 timestamp_timeout
为 0 将要求用户每次执行 sudo 时都输入密码。
类似地,确保启用 tty_tickets 设置,防止跨 tty 会话的这种泄漏。
这种技术滥用 macOS 和 Linux 系统中的正常功能,但是 sudo 能够基于/etc/sudoers
文件中的 LOG_INPUT 和 LOG_OUTPUT 指令记录所有输入和输出。