访问令牌在提权中的作用

7 人参与

在一次渗透演练中,攻击者通过一条看似普通的网络共享路径,意外获取了winlogon.exe的访问令牌,随后在本地打开了whoami,输出竟是NT AUTHORITYSYSTEM。这一次的“惊喜”,正是访问令牌在提权链条里最关键的环节。

访问令牌的核心属性

Windows 访问令牌是一套结构化的数据集合,包含用户的 SID、所属组、已授予的特权(如SeDebugPrivilegeSeTcbPrivilege)以及安全描述符。系统在每次进程创建时,将当前线程的令牌复制为子进程的令牌,决定了该进程能否访问受保护的对象。

提权路径:从普通用户到SYSTEM

实际攻击往往遵循三步走:定位高权限进程窃取或复制其令牌借助令牌启动新进程。其中最常见的手段是使用OpenProcessToken获取目标进程句柄,再调用DuplicateTokenEx生成可供CreateProcessAsUser使用的全新令牌。

  • 利用tasklist /vProcess Explorer锁定拥有SeDebugPrivilege的系统服务。
  • 通过OpenProcess获取该服务的句柄,随后调用OpenProcessToken读取其令牌。
  • 执行DuplicateTokenEx,将令牌提升为主令牌(Primary Token),并以CreateProcessAsUser启动cmd.exe

防御视角的误区

很多安全团队只在日志里关注SeDebugPrivilege的使用,却忽视了令牌复制本身的审计。事实上,DuplicateTokenEx在没有显式特权提升的情况下,同样会留下可追溯的事件ID 4672。若配合Process Creation的子事件(4688),即可在攻击者完成提权前捕获异常。

“提权的根本不是代码的复杂度,而是令牌的误用。”——《Windows 安全内部》

参与讨论

7 条评论
  • NightfallDreamer

    这个提权路径讲得挺清楚的

    回复
  • 柠檬晨曦

    之前测试时也碰到过类似情况,token复制确实容易被忽略

    回复
  • 樵夫柴歌

    为啥要特别关注DuplicateTokenEx这个函数?

    回复
  • 磨坊主何

    感觉防御部分写得有点简单

    回复
  • 荒野漫步者

    winlogon的token这么好拿吗?不太信🤔

    回复
  • BleakWhisper

    从普通用户到SYSTEM三步走总结得不错

    回复
  • 内向小怪杰

    4672事件ID具体在哪个日志里查?

    回复