浅析Windows Access Token以及利用方法

本文详细介绍了Windows Access Token的前置概念,包括两种类型的Token及其产生和组成。讲解了进程的身份标识Luid与SID,并通过实例展示了如何降权杀软进程以及如何通过Token窃取获得TrustedInstaller权限。最后探讨了进行Token操作所需的安全权限和相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 前置概念

关于Windows Access Token

Windows Access
Token(访问令牌),它是一个描述进程或者线程安全上下文的一个对象。每个用户登录计算机都会产生一个AcessToken以用于创建进程和线程,用户注销以后会将主令牌切换成模拟令牌,也就是授权令牌和模拟令牌,不会清除令牌,只有重启才会。

两种类型的Token

  • Delegation token(授权令牌):用于交互会话登录(例如本地直接登录、rdp login 、psexec )

  • Impersonation token(模拟令牌):用于非交互登录(利用net use访问共享文件夹,或者wmi、winrm等等)

注:
都是在登录时产生创建的

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

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

TOKEN的产生

每个进程创建时都会根据登录会话权限由LSA(Local Security
Authority)分配一个Token(如果CreaetProcess时自己指定了Token, LSA会用该Token,否则就继承父进程Token进行运行)

TOKEN组成

当前用户的安全ID(SID)
当前用户所属组的安全ID(SID)
当前会话安全ID
用户所有的特权列表(包括用户本身,和其所属组)
令牌拥有者安全ID
用户所属主组群安全ID
默认的自由访问控制列表
源访问令牌
表明此令牌是源令牌还是模拟令牌
可选的链表,表明此令牌限制哪些SID
当前模拟令牌的级别
其他数据资料

2 进程的身份标识:Luid与SID

Luid

每个特权常量字符串(Privileges)都对应一个LUID(本地标识符),使用LookupPrivilegeName函数将LUID转换为其对应的字符串常量,总计是36个特权,所以LUID有36个(0x24),所有特权如下:

1661319688_6305ba0856e75ccad2e8c.png!small

  • MSDN对特权常量的描述:https://docs.microsoft.com/en-us/windows/win32/secauthz/privilege-constants

SID

安全标识符(SID)是用户、组的唯一标识符,SID的构成如下:

S-版本号-(颁发机构:Identity-Authority)-(子机构:SubAuthority)-RID

MSDN上的一个例子

1661319715_6305ba230fa64978f17f1.png!small

由4个部分组成,其中的子机构值是可以由多位组成,“whoami /all” 可以查看本机中的用户的sid以及用户组的sid

1661319745_6305ba41b1b14ed125bbc.png!small

这里讲一个后续会用到的sid:S-1-16-0,微软的解释是一个权限最低的完整性级别的SID。

1661319759_6305ba4f03abae9015769.png!small

标识符机构值为16(0x10)表示强制完整级别的SID,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值