云主机的提权思路-令牌伪造

云主机的渗透思路,为什么说云主机呢,因为云上的主机都是云服务器提供商给出的模板,一般补丁都打了,而且可以统一管理。因此不存在什么内核漏洞来提权。

写这篇文章主要是想探讨一下以下几点

  • 什么是windows令牌
  • windows令牌有几种类型
  • 如何利用windows令牌
  • 如何防御windows令牌窃取

什么是windows令牌

windows access token的定义:https://docs.microsoft.com/en-us/windows/win32/secauthz/access-tokens

令牌就像网络 cookie。它们是一个临时密钥,允许您在每次访问文件时无需提供凭据即可访问系统和网络。Incognito 与 cookie 窃取的工作方式相同,通过在被要求进行身份验证时重播该临时密钥来利用这一点。

windows令牌有几种类型

  • primary tokens 初始令牌
  • impersonation tokens 模拟令牌
    每个进程创建的时候,windows默认创建了primary tokens 初始令牌。

令牌的安全级别:

1
2
3
4
. Anonymous 匿名的,简称未认证令牌
· Identify 已认证的令牌,简称认证令牌
· Impersonate 代理令牌
· Delegate 委派令牌,简称虎符令牌

为了渗透的目的,我们要注意的是代理令牌和虎符令牌。

Delegate tokens 虎符令牌是为“交互式”登录创建的,例如登录机器或通过3389 rdp 远程登录。当administrator的一次rdp远程桌面登录成功后,该机器就会获得一个虎符令牌,代表着它有administrtor的权限。

Impersonate tokens 代理令牌用于“非交互式”会话,例如net use ,wmi,winrm

注: 上面的这两种令牌,都会在系统重启以后被清除, 否则将会一直驻留在内存中,而虎符令牌则会在用户注销以后自动被转为代理令牌,但仍然可利用,

如何利用windows令牌

域提权

虎符令牌中包含验证口令,所以通过虎符令牌就可以访问其他系统

本地提权

如果攻击者拿到了低权限的账号,那么通过虎符令牌就可以得到管理员权限

案例一:攻击者拿到Microsoft SQL Server 权限。如果dba账户有administrator权限,并且连接过SQL Server。那么攻击者就可以拿到administrator权限的虎符令牌。因为SQL server进程空间中存在着这个token。

案例二:攻击者拿到了系统账号网络服务“NETWORK SERVICE” ,虽然该账号没有system权限那么高,可以它访问“SYSTEM”代理令牌,所以存在提权到system的可能性。

使用CobaltStrike 来窃取伪造当前机器指定系统进程中的用户访问令牌

使用meterpreter incognito 模块来窃取伪造当前机器指定系统进程中的用户访问令牌

使用incognito.exe以任意用户身份的访问令牌去执行任意payload

利用Invoke-TokenManipulation.ps1 “无文件”窃取指定用户身份令牌执行任意payload

借助Invoke-TokenManipulation.ps1 窃取system 访问令牌以实现mssql 本地免密码登录

通过Tokenvator.exe 来窃取伪造模拟指定用户的访问令牌去执行任意payload

通过Mimikatz 来伪造指定用户的访问令牌

如何防御windows令牌窃取

防范本文中概述的技术并不是一项简单的任务。然而,可以采取的几种措施结合起来将大大降低风险。

windows令牌窃取,它不是漏洞,也没有补丁,它是Microsoft Windows 访问控制模型的正常行为。

对windows令牌窃取的防御措施主要是管理员如何使用他们的系统

限制高权限用户的使用

  • 【权限分离】确保所有具有高权限的用户(如系统管理员)拥有单独的
    管理帐户并使用标准用户帐户登录他们的桌面。
  • 【使用RunAs 】来运行需要更高权限的进程。RunAs 还可以防止在旧系统注销后暴露令牌
  • 确保域管理员帐户仅用于管理域控制器。 分离应创建域帐户并授予其委派管理权限特定的组织单位。
    · 分割不同组织单位之间的管理员。
  • 确保开发和测试系统的管理员帐户不同于关键的生产系统。

总而言之,就是权限分离、限制高权限用户的使用,使用最小必要权限,而不是到处以高权限用户去登录、开启进程。

参考资料