Windows提权 —— 令牌窃取提权

令牌窃取提权

一、令牌及伪造令牌介绍

令牌(Token)是指系统中的临时密钥,相当于账户和密码,用于决定是否允许当前请求及判断当前请求是属于哪个用户的。获得了令牌,就可以在不提供密码或其他凭证的情况下访问网络和系统资源。这些令牌将持续存在于系统中(除非系统重新启动)。

令牌的最大特点是随机性和不可预测性。一般的攻击者或软件都无法将令牌猜测出来。

  • 访问令牌(Access Token )代表访问控制操作主休的系统对象。
  • 密保令牌(Security Token )也叫作认证令牌或者硬件令牌,是一种用于实现计算机身份校验的物理设备,例如U盾。
  • 会话令牌(SessionToken)是交互会话中唯一的身份标识符。

伪造令牌攻击的核心是 Kerberos 协议。 Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。Kerberos协议的工作机制如下:
clip.png

客户端请求证书的过程如下:

  1. 客户端向认证服务器发送请求,要求得到证书。
  2. 认证服务器收到请求后,将包含客户端密钥的加密证书发送给客户端。该证书包含服务器Ticket(包含由服务器密钥加密的客户机身份和一份会话密钥)和一个临时加密密钥(又称为会话密钥,Session Key)。当然,认证服务器也会向服务器发送一份该证书,使服务器能够验证登录的客户端的身份。
  3. 客户端将Ticket传送给服务器。如果服务器确认该客户端的身份,就允许它登录服务器。

客户端登录服务器后,攻击者就能通过入侵服务器来窃取客户端的令牌。

其中注意:令牌窃取并非提权!

二、MSF 假冒令牌

两种类型的令牌:

  • Delegation Tokens,也就是授权令牌,它支持交互式登录(例如,可以通过远程桌面登录及访问);
  • Impersonation Tokens,也就是模拟令牌,它支持非交互式的会话。

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

  1. 假设已经获取到了目标机器的meterpreter Shell ,列出可用的令牌;
load incognito 
list_tokens -u

注:列举令牌只能列出当前用户和比当前用户权限更低用户的令牌,例如当前权限是system或者是administrator,那么我们就可以看到系统中所有的令牌。

  1. 切换令牌。
impersonate_token 机器名\\用户名

注:使用令牌时,最好使用引号将其括起,因为某些令牌的名字中间含有空格,可能会报错。另外在输入主机名\用户名时,需要输入两个反斜杠(\)。

  1. 不需要此权限,那么可以使用命令rev2self返回原先的权限shell。

三、MSF Rotten Potato 提权

烂土豆(Rotten Potato)提权是一个本地提权,是针对本地用户的,不能用于域用户。

提权利用

当拿到一个服务用户的shell(一定是服务用户)时:

  1. 列举当前的令牌;
  2. 上传并执行烂土豆;
upload /root/RottenPotato/rottenpotato.exe
execute -cH -f rottenpotato.exe
  1. 列出令牌发现得到了SYSTEM权限的shell。

提权的原理

  1. 欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到控制的TCP终端。
  2. 对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
  3. 模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
posted @ 2022-08-03 11:35  MGh0st  阅读(633)  评论(0编辑  收藏  举报