ATT&CK-CN V1.0 Last Update: 2019-03 [返回索引页]

译者: 林妙倩(清华大学网络研究院网络空间安全实习生) 原创翻译作品,如果需要转载请取得翻译作者同意。

数据来源:ATT&CK Matrices

原文: https://attack.mitre.org/techniques/T1206

术语表: /attack/glossary

Sudo 缓存

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 指令记录所有输入和输出。