天道酬勤

权限提升篇-令牌窃取与烂土豆提权

误区

当前我获得了一个普通域用户权限的shell,利用令牌窃取进行提权,提权到管理员权限。哈哈,提权好简单。胡扯!
看了很多博客,其中几篇文章就这样带有误导性地写,这样不好吧。

访问令牌的定义

描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。一般用户双击运行一个进程都会拷贝explorer.exe的Access Token。访问令牌分为:

* 授权令牌(Delegation token):交互式会话登陆(例:本地用户登陆、用户桌面等)
* 模拟令牌(Impersonation token):非交互式登陆(例:net use 访问共享文件)
两种token只有在系统重启后才会清除;授权令牌在用户注销后,该令牌会变为模拟令牌依旧有效。

同样也可以这样理解,当前系统中的某个进程或线程能访问到什么样的系统资源,完全取决于你当前进程是拿着谁的令牌。

默认情况下,我们列举令牌,只能列举出当前用户和比当前用户权限更低用户的令牌。令牌的数量取决于当前shell的访问级别,如果当前的shell是administrator或者是system,我们就可以看到系统中的所有的令牌。

我们通过exp提权或者永恒之蓝等得到的权限即为System,假如我们利用mimikatz和hashdump不能获得administrator用户的密码,那我们只能通过令牌窃取进行降权,获得administrator用户的shell,从而以administrator用户的身份启动某些服务(因为某些服务只能通过administrator用户启动)。

可用于令牌窃取的工具有很多,例如cs、msf、empire等等,或者我们也可以直接使用现成的incognito.exe

当前shell用户只是一个普通的域用户,权限低,也就意味着shell的访问级别低,所以令牌只有当前用户本身。

接下来换一个System的shell,再次尝试:

这次就可以看到我们手中的令牌多了,但是还是没有出现域管的令牌,为什么呢?
因为在做本次实验之前,我将机器进行了重启,并且到现在并没有登录域管账号。那接下来,我们再登录一下域管账号,再次查看令牌个数:

可以看到在登录域管账号之后,我们才会有相应的令牌。

利用命令impersonate_token 'HACKERGU\Administrator',使用域管令牌,如下:

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

如果我们不需要该权限了,可使用命令rev2self,返回原本的权限。

烂土豆提权

首先要了解的是,烂土豆(Rotten Potato)提权是一个本地提权,是针对本地用户的,不能用于域用户。
漏洞了解_MS16-075:https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2016/ms16-075

当我们拿到一个服务用户的shell(重点标记,一定是服务用户才行,原因看文章最后)时,列举当前的令牌:

可以看到只有当前用户的令牌。

然后我们运行如下命令,执行烂土豆:

execute -cH -f potato.exe


由此,我们得到了SYSTEM权限的shell。

附上RottonPatato脚本:https://github.com/SecWiki/windows-kernel-exploits/blob/master/MS16-075/potato.exe
https://github.com/breenmachine/RottenPotatoNG/blob/master/RottenPotatoEXE/x64/Release/MSFRottenPotato.exe
https://github.com/foxglovesec/RottenPotato
有好几个版本,自己随意选择。

RottenPotato(烂土豆)提权的原理可以简述如下:

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

所以,一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。测试过程中,我发现使用已经建好的账户(就是上面说的用户级账户)去反弹meterpreter然后再去执行EXP的时候会失败,但使用菜刀(IIS服务器权限)反弹meterpreter就会成功。

一开始我一直始用系统创建的普通用户执行exp,所以利用失败,后来我在服务器上的web服务反弹了shell,才得以执行成功。所以,利用的关键是服务型账户权限

烂土豆比热土豆的优点是:

  1. 100%可靠
  2.  (当时)全版本通杀
  3. 立即生效,不用像hot potato那样有时候需要等Windows更新才能使用。

总之,我对这个的理解是通过中间人攻击,将COM(NT\\SYSTEM权限)在第二部挑战应答过程中认证的区块改成自己的区块获取SYSTEM令牌,然后利用msf的模仿令牌功能模仿SYSTEM令牌。

 

赞(3) 打赏
未经允许不得转载:HackerGu‘s Blog » 权限提升篇-令牌窃取与烂土豆提权
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专注黑客技术的研究

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏