Token窃取那些事

Windows中的token可以用来做什么呢?

Token简介

Token 是描述进程或者线程上下文安全的一个对象。安全上下文包含了与该进程或线程的账户、组、特权有关的描述信息。Token还包含一些其他信息,如会话id、完整性级别以及UAC虚拟化状态。

不同的⽤户登录计算机后, 都会⽣成⼀个 Access Token ,这个 Token 在⽤户创建进程或者线程时会被使⽤,不断的拷贝,这也就解释了A⽤户创建⼀个进程而该进程没有B⽤户的权限。一般用户双击一个进程都会拷贝explorer.exe 的 Access Token

Windows有两种类型的Token:

  • Delegation token(授权令牌): 用于交互会话登录(例如本地用户直接登录、远程桌面登录)
  • Impersonation token(模拟令牌): 用于非交互登录(利用net use访问共享文件夹)

注:

两种token只在系统重启后清除;

具有Delegation token(授权令牌)的用户在注销后,该Token将变成Impersonation token(模拟令牌),依旧有效

Windows有两种类型的Token:

  • Delegation token(授权令牌):用于交互会话登录(例如本地用户直接登录、远程桌面登录)
  • Impersonation token(模拟令牌):用于非交互登录(利用net use访问共享文件夹)

注:

两种token只在系统重启后清除

具有Delegation token的用户在注销后,该Token将变成Impersonation token,依旧有效

可以这样理解:当前系统中的某个进程或者线程能访问什么样的系统资源,取决于当前令牌的权限

我们通过exp提权或者永恒之蓝等得到的权限即为System,假如我们利⽤mimikatz和hashdump不能获得 administrator⽤户的密码,那我们只能通过令牌窃取进⾏降权,获得administrator⽤户的shell, 从⽽以 administrator⽤户的身份启动某些服务 ( 某些服务只能通过administrator⽤户启动 )

0x01 Metaspolit在token 窃取中的应用

拿到了system权限

image-20210930085935251

使用incognito模块

image-20210930090023888

当前是system权限,可以查看到所有的用户token

list_tokens -u

image-20210930090155177

可以窃取域管的token

impersonate_token 'SUN\Administrator'

image-20210930090405386

这个时候权限就已经是域管的权限,与域控建立IPC连接不需要密码(前提是可以IPC连接),

image-20210930090835081

image-20210930090855787

之后可以通过wmi执行命令,或者计划任务执行马子

返回之前的用户,可以使用命令:

rev2self

0x02 Windows平台下incognito的应用

下载地址: https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip

参考手册: http://labs.mwrinfosecurity.com/assets/142/mwri_security-implications-of-windows-access-tokens_2008-04-14.pdf

常用命令:

列举token:incognito.exe list_tokens -u

image-20210930091829175

可以看到因为不是system权限,列举出的token很局限,切换到system权限看下

image-20210930092715995

窃取token: incognito.exe execute -c "SUN\administrator" cmd.exe

incognito.exe execute [options] <token> <command>

image-20210930093501547

0x03 CobaltStrike中的token窃取

可以注入到域管的进程中,前提是拿到一个system权限的becon

image-20210930093901267

同样是域管的权限

image-20210930094204771

为什么注入到域管的进程中就拥有了域管的权限呢?

这里又涉及到进程的完整性级别。

0x04 Invoke-TokenManipulation.ps1用法

下载地址:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-TokenManipulation.ps1

原理和功能同incognito类似,能够实际提权和降权

列举token:Invoke-TokenManipulation -Enumerate

提权至system:Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authority\system"

复制进程token:Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId 500

复制线程token:Invoke-TokenManipulation -CreateProcess "cmd.exe" -ThreadId 500

0x05 利用token拿下trust installer 权限

推荐文章:https://www.tiraniddo.dev/2017/08/the-art-of-becoming-trustedinstaller.html

暂时咕咕咕了

关于Windows的安全机制,可以参考《深入解析Windows操作系统》第七章

Peace