域渗透之令牌窃取

目录

Windows访问令牌(Access Token)

CobaltStrike 进行令牌窃取

Metasploit进行令牌窃取

Windows下的incognito

总结


Windows访问令牌(Access Token)

Windows Token其实叫Access Token(访问令牌),它是一个描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。

用户启用一个进程,用户的凭证就会传递给此进程,进程通过凭证来获得用户能够得到的信息。当机器开启了一些程序就会有对应的进程,进程对应启动程序的用户

tasklist /v

访问令牌分为:

  • 授权令牌(Delegation token):交互式会话登陆(例:本地用户登陆、用户桌面等)
  • 模拟令牌(Impersonation token):非交互式登陆(例:net use 访问共享文件)

两种 token 只有在系统重启后才会清除;授权令牌在⽤户注销后,该令牌会变为模拟令牌依旧有效。

同样也可以这样理解,当前系统中的某个进程或线程能访问到什么样的系统资源,完全取决于你当前进程是拿着谁的令牌

我们通过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

总结

  1. 用户登录计算机后会生成随机的访问令牌(秘钥),这个令牌会在用户每次的进程操作中不断拷贝,所以能够识别某进程属于某用户。即令牌相当于用户的身份证
  2. 令牌在系统重启后清除
  3. 令牌窃取不是一种提取方法
  4. 程序/进程能够访问到什么系统资源,取决于进程拿着谁的令牌。所以可以通过伪造令牌的方式能伪造该令牌的所属用户

猜你喜欢

转载自blog.csdn.net/qq_44159028/article/details/124985841