目录
Windows访问令牌(Access Token)
Windows Token其实叫Access Token(访问令牌),它是一个描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。
用户启用一个进程,用户的凭证就会传递给此进程,进程通过凭证来获得用户能够得到的信息。当机器开启了一些程序就会有对应的进程,进程对应启动程序的用户
tasklist /v
访问令牌分为:
- 授权令牌(Delegation token):交互式会话登陆(例:本地用户登陆、用户桌面等)
- 模拟令牌(Impersonation token):非交互式登陆(例:net use 访问共享文件)
两种 token 只有在系统重启后才会清除;授权令牌在⽤户注销后,该令牌会变为模拟令牌依旧有效。
![](/qrcode.jpg)
同样也可以这样理解,当前系统中的某个进程或线程能访问到什么样的系统资源,完全取决于你当前进程是拿着谁的令牌
我们通过exp提权或者永恒之蓝等得到的权限即为System,假如我们利⽤mimikatz和hashdump不能获得administrator⽤户的密码,那我们只能通过令牌窃取进⾏降权,获得administrator⽤户的shell, 从⽽以administrator⽤户的身份启动某些服务(因为某些服务只能通过administrator⽤户启动)。
令牌模拟
为什么要进行令牌模拟?Token是一个用户的身份标识,拿到某用户的Token即可伪装成某用户
默认情况下,我们列举令牌,只能列举出当前用户和比当前用户权限更低用户的令牌。令牌的数量取决于当前shell的访问级别,如果当前的shell是administrator或者是system,我们就可以看到系统中的所有的令牌
环境
- 域名:test.lab
- 域控: win2016 ip: 192.168.10.2
- 域成员机:win2012 ip: 192.168.10.4 域账号:yuwin2012(域管理员)
- 域成员机:win7 ip: 192.168.10.5,192.168.111.134 域账号:yuwin7 (普通域账号)
CobaltStrike 进行令牌窃取
1. 首先假设获取到了win7的普通域用户权限yuwin7
此时查看进程,我们只能查看到yuwin7用户和比当前用户权限更低用户的令牌
2. 假设此时在win7上以域管理yuwin2012权限运行了一个clac.exe
此时再查看进程,我们就能看到这个域管理员进程
此时,我们也可通过信息收集的方式发现yuwin2012就是域管理员
3. 作为普通域用户yuwin7直接查看域控的文件显然是不行的
4. 进程注入
找到这个域管理进程然后进行注入,点击注入,然后选择监听器
此时发现win7以域管理员yuwin2012的身份上线到cs
此时在查看域控的文件
或者可以使用命令注入该进程
inject pid号 x64 http
Metasploit进行令牌窃取
首先假设我们通过某种手段拿到了一个meterpreter,获取了administrator权限。然后提权为system权限。此工具需要提权为system权限才能查看所有的token
#使用模块
use incognito
#列出token
list_tokens -u
#窃取token
impersonate_token '..'
我们就可以窃取域管理员token
impersonate_token 'TEST\yuwin2012'
此时我们的身份就是一个域管理员 'TEST\yuwin2012'(但是我这里getuid失败了,不知道什么原因)
如果成功,这个时候因为我们是⼀个域管理员了,权限已经是最⼤的了,所以我们和域控建⽴ IPC 不需要输⼊密码,也就变相的拿到了域控制器的权限了。之后就可以通过 wmi 或者定时任务让域控制器上线到 Metasploit 或者 CobaltStrike 。
Windows下的incognito
Metasploit 中的 incognito,是从 windows 平台下的 incognito 移植过来的,下⾯介绍⼀下windows平台下的incognito。项目地址:https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip
将其中的incognito.exe单独拿出来用就行
常见用法
列举token:
incognito.exe list_tokens -u
切换到system身份
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
当前为管理员权限
1. 列举token
incognito.exe list_tokens -u
远程桌面登录会生成授权令牌,所以能列出来。但是只是进行ipc连接的话这里列举不出来。如下列举出的令牌,包括域账号yuwin2012的令牌
2. 模拟system令牌
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
总结
- 用户登录计算机后会生成随机的访问令牌(秘钥),这个令牌会在用户每次的进程操作中不断拷贝,所以能够识别某进程属于某用户。即令牌相当于用户的身份证
- 令牌在系统重启后清除
- 令牌窃取不是一种提取方法
- 程序/进程能够访问到什么系统资源,取决于进程拿着谁的令牌。所以可以通过伪造令牌的方式能伪造该令牌的所属用户