权限提升(Privilege escalation)是当今几乎每一种网络攻击中都存在的一种常见策略。恶意内部人员、勒索软件团伙以及其他威胁行为者,往往会将其与横向移动(lateral movement)结合使用,以遍历受害者的网络,从而获得对敏感 IT 资源的未授权访问。提升后的访问权限对于恶意活动至关重要,包括窃取敏感数据、破坏业务运营以及为攻击的后续阶段创建后门。由于 Active Directory 的广泛使用,Windows 权限提升攻击比 Linux 的权限渗透攻击更常见,但两者都在真实环境中被发现。
下载免费指南:
为何攻击者重视提升的权限
提升的权限是威胁行为者能够修改系统配置、数据权限和安全控制所必需的“通行证”。攻击者通常会使用被攻陷的普通用户账户来进入网络。权限提升通常通过窃取系统管理员或高权限服务账户的凭据来实现;这使他们能够访问关键服务器、网络设备、数据仓库以及备份系统。
不幸的是,即使是缺乏高深能力的黑客,提升权限的能力往往也很容易,因为许多组织缺乏足够的安全措施。事实上,访问控制在很多情况下是为了便利而进行配置,而不是为了贯彻 最小特权原则。
横向与纵向的权限提升
网络攻击通常涉及利用某种漏洞,例如未修补的系统、不当的配置或编程错误。 一旦系统被攻陷,攻击者就会进行侦察,以识别需要被攻陷的高权限用户,以及如何提高他们已经控制的账户的访问权限。
威胁行为者使用的权限提升(privilege escalation)有两种类型:
- 横向权限提升(Horizontal privilege escalation) — 攻击者攻破某个账户,然后获得与另一台不同系统上的其他用户或应用相同级别的权限或许可。例如,在攻破某一位网上银行用户的账户之后,攻击者可能通过获取其 ID 和密码,从而访问另一位用户的账户。
- 纵向权限提升(Vertical privilege escalation,亦称 elevation of privilege 或 EoP) — 恶意用户获取到较低权限的账户访问权限,然后利用系统中的漏洞来获得对某个资源或系统的管理员权限或 root 级别访问权限。与横向权限提升相比,纵向权限提升需要更复杂的攻击技术,例如用于帮助攻击者获得对系统和数据的更高权限的黑客工具。
权限提升是如何发生的?
试图执行未授权操作的攻击者通常会使用权限提升(privilege escalation)漏洞利用(exploits)。这些漏洞利用涉及已知或已发现的弱点,可能与操作系统、软件组件或安全配置错误有关。攻击通常包含以下五个步骤:
- 查找漏洞。
- 创建相应的权限提升利用程序(exploit)。
- 在系统上使用该利用程序(exploit)。
- 检查是否成功利用该系统。
- 如有必要,获取更多权限。
最常见的权限提升(privilege escalation)技术有哪些?
攻击者会使用多种权限提升(privilege escalation)技术。其中最常见的三种是:
- 操纵访问令牌(access tokens)
- 绕过用户帐户控制(User Account Control)
- 使用有效账号
技术 1:访问令牌操纵
访问令牌操纵利用了 Windows 管理管理员权限的方式。访问令牌会在用户登录时由 Windows 系统创建。通过修改访问令牌,攻击者可以欺骗系统,使其允许攻击者执行系统任务,或访问需要更高权限的正在运行的进程或服务。
攻击者可以使用以下三种方法之一来利用访问令牌:
- 冒充或窃取令牌 — 攻击者可以使用 DuplicateToken(Ex) 函数创建一个新的访问令牌,用于复制(重复)现有令牌。随后,该令牌可以与 ImpersonateLoggedOnUserfunction 配合使用,使调用线程能够冒充已登录用户的安全上下文;或者与 SetThreadToken 函数配合使用,将冒充后的令牌分配给线程。
- 使用令牌创建进程 — 当攻击者使用 DuplicateToken(Ex) 函数创建一个新的访问令牌,并将其与 CreateProcessWithTokenW 函数一起使用时,就会发生这种情况。这样会创建一个新的进程,使其在被冒充用户的安全上下文下运行。此方法可能有助于在不同用户的安全上下文下创建新进程。
- 令牌冒充(impersonation) — 此处,攻击者拥有用户名和密码,但该用户并未登录到系统。攻击者可以借助 LogonUser 为该用户创建登录会话。该函数将返回新会话的访问令牌副本,然后攻击者可以使用 SetThreadToken 将该令牌分配给线程。
如何缓解这一威胁
访问令牌是 Windows 安全系统不可或缺的一部分,无法关闭。不过,攻击者必须已经具备管理员级别的访问权限,才能充分利用这一技术。因此,您需要根据最小特权原则分配访问权限,并确保所有访问权限都得到定期复查。您还需要对特权账户进行持续、细致的监控,并对这些账户实施的可疑活动迹象做出及时响应。理想情况下,您可以将几乎所有常驻(standing)的管理员账户替换为 just-in-time access。
技术 2:绕过用户帐户控制(User Account Control)
Windows 用户帐户控制(UAC)功能充当普通用户与具有管理员权限的帐户之间的网关。它会在管理员授权提升权限之前,将应用程序软件限制为仅使用标准用户权限。系统会要求管理员在提示窗口中输入凭据以继续。通过这种方式,只有用户信任的应用程序才能获得管理员权限,从而防止恶意软件破坏操作系统。
不过,这种机制并不完美。如果将计算机的 UAC(用户帐户控制)保护级别设置为除最高级别以外的任何值,则会允许某些 Windows 程序在不先提示用户的情况下提升权限,或执行以提升后的权限运行的组件对象模型(Component Object Model,COM)对象。
如何缓解此威胁
需要定期检查 IT 环境中常见的 UAC 绕过弱点,并根据情况适当处理风险。另一个良好做法是,定期审查所有 Windows 系统中的本地管理员组中包含哪些账户,并将普通用户从这些组中移除。你可以使用 Group Policy 或 Intune 来完成这项工作。
技术 3:使用有效账户
对手可以使用凭据访问技术,例如凭据填充(credential stuffing)、账户操纵或社会工程来窃取或破坏合法用户的凭据。他们甚至可能通过 VPN 或远程桌面连接来访问远程系统和服务。这里的主要担忧之一是网络中凭据与权限之间存在重叠关系,因为对手可能能够在不同账户和系统之间切换,从而获得更高级别的访问权限,例如 Domain Admin 或 Enterprise Admin。
如何缓解此威胁
缓解此威胁最有效的方法之一,是为所有账户强制实施强有力的password policy,其中应包含密码长度和复杂性要求。此外,应定期更改所有管理账户的密码,并为每台系统上的本地管理员账户使用唯一密码,以防攻击者通过攻陷单个本地管理员账户,在网络中随意横向移动。
同样重要的是,监控您的 IT 环境中是否出现可疑的用户行为,以判断是否存在正在进行的威胁。必须进行早期检测。
如何防范权限提升
尽管无法彻底保护您的环境,免受意图提升权限的黑客和恶意内部人员的攻击,但您可以通过强化端点操作系统和软件的攻击面,并强制执行principle of least privilege来降低权限提升的风险,覆盖所有资源。您还应根据尝试的活动所关联的风险,在需要时要求多因素认证,以提供更好的安全性。定期进行风险评估,以识别并评估对敏感文件的风险,并采取措施根据数据的价值来保护数据。
许多企业都会使用某种 privileged access management (PAM) solution。 Netwrix Privileged Access Management Solution 可让您洞察所有系统和应用程序中的特权。它会在创建或修改新的特权账户时提醒您,并发现您可能甚至并不知晓的特权账户。简而言之,它让您能够掌控整个 IT 环境中的特权。
将 PAM 解决方案与遵循安全最佳实践相结合,有助于阻止特权提升和横向移动,从而避免数据丢失、业务中断以及合规处罚。
分享到
了解更多
关于作者
Dirk Schrader
安全研究高级副总裁(VP)
Dirk Schrader 是 Netwrix 的常驻 CISO(EMEA)以及安全研究高级副总裁(VP)。他拥有 CISSP(ISC²)和 CISM(ISACA)等资质,是一位在 IT 安全领域拥有 25 年经验的老兵。Dirk 致力于以现代化的方式应对网络威胁,从而推动网络韧性的发展。Dirk 曾参与全球范围内的网络安全项目:职业初期从技术与支持岗位做起,随后在大型跨国公司和小型初创企业中分别担任销售、市场与产品管理等职务。他已发表大量文章,强调为实现网络韧性,需要重视变更管理与漏洞管理。