访问令牌操纵
访问控制模型由访问令牌和安全描述符组成,通过比较二者的内容,windows可以对访问者是否有访问权进行判断。
访问令牌
当用户登录时,系统会对用户进行身份验证,如果验证通过,会给用户创建一个访问令牌。之后,用户执行的每个进程都会有这个访问令牌的副本。
通过操纵访问令牌,使正在运行的进程看起来是其他进程的子进程或其他用户所启动的进程,这常常使用内置的Windows API从指定进程中复制访问令牌,用于现有进程或生成新进程,以达到权限提升并绕过访问控制的目的,这个过程称为令牌窃取。
常规令牌窃取操作
一般用来从Administrator权限提升至SYSTEM、TrusetdInstaller更高的系统权限。也可以用来降权或切换用户等操作。
1、利用incognito.exe窃取令牌
下载地址:
https://github.com/milkdevil/incognito2/blob/master/incognito.exe
将incognito.exe上传到目标主机,并执行以下命令,列举出当前主机上所有的访问令牌。
incognito.exe list_tokens -u
如上图,Delegation Tokens Available条目列举出了NT AUTHORITYSYSTEM账户的令牌。
执行以下命令,窃取NT AUTHORITYSYSTEM账户的令牌并创建进程。
incognito.exe execute -c "NT AUTHORITYSYSTEM" whoami
# -c,参数后为要窃取的令牌;whoami,窃取令牌后要执行的命令
2、利用MetaSploit窃取令牌
MetaSploit渗透框架内置了一个incognito模块,可以在现有的Metepreter中进行窃取令牌,方法如下。
load incognito # 加载incognito模块
list_tokens -u # 列出主机上所有的访问令牌
impersonate_token "NT AUTHORITYSYSTEM" # 窃取SYSTEM账户的令牌
steal_token <PID> # 从指定进程中窃取令牌
3、通过令牌获取TrustedInstaller权限
SYSTEM权限为windows系统中的最高权限,即便获取了SYSTEM权限也无法修改系统文件,例如C:Windows/servicing目录,即使拥有SYSTEM权限也无法向该目录写入文件。
使用icacls命令查看该目录权限,发现NT SeriviceTrustedInstaller账户对C:Windowsservicing
这个目录有完全控制权。
TrustedInstaller本身也是一个服务,启动服务时,会运行TrustedInstaller.exe程序,可以通过窃取TrustedInstaller进程的令牌,从而提升至TrustedInstaller权限。
首先,执行以下命令,在目标机上启动TurstedInstaller服务。
sc start TrustedInstaller
然后,记录TrustedInstaller.exe进程的PID并执行以下命令,从TrustedInstaller.exe进程中窃取令牌。
steal_token <PID>
getuid不会显示自己是TrustedInstaller用户,但是可以在servicing目录下写入文件了。
# 总结
愿大家健康开心。
原文始发于微信公众号(AlertSec):访问令牌操纵
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论