今天给大家介绍的是一款名叫Tokenvator的工具,该工具采用.NET开发,可用于在Windows系统中提权。
下载地址:https://github.com/0xbadjuju/Tokenvator
Tokenvator可以直接在交互式终端中运行,具体的执行命令能够以命令行参数的形式提供。在交互模式下,可以用tab键补全命令,或双击tab键获取帮助信息。
下面大部分截图显示的是在交互模式下的命令运行情况:
从最基本的功能来说,Tokenvator可以用来访问并修改Windows认证令牌,为了获取到特定进程的令牌,我们需要结合目标进程的PID来运行Steal_Token命令。
或者我们也可以添加额外的命令选项来使用新的访问令牌。
一般来说,我们经常需要窃取的就是NT AUTHORITY\SYSTEM账号,而GetSystem命令可以帮助我们自动搜索并访问SYSTEM令牌。它的使用语句跟Steal_Token的类似:
在某些情况下,如果没有提升到SYSTEM权限的话,我们可能无法直接访问到特定进程的令牌,比如说NT SERVICE账号(本地SQL服务进程)。
还有一种常见情况,就是SYSTEM32目录或部分注册表内容属于TRUSTEDINSTALLER组,为了修改这些位置的数据,我们要么拿到数据的拥有权,要么拿到TRUSTEDINSTALLER组成员的访问令牌。跟GetSystem类似,GetTrustedInstaller也是一个Steal_Token的封装其,它可以开启TrustedInstaller服务并获取到相应的令牌。
有的时候,我们的进程不一定拥有所要完成任务必备的权限。比如说,为了访问一个当前用户无法访问的进程,我们就需要SeDebugPrivilege 的帮助了。下面显示的是在一个高度完整的进程中对令牌的切分(UAC Elevated – TokenElevationTypeFull)。
接下来,我们尝试以管理员身份来运行notepad.exe,并查看其访问令牌:
测试完notepad.exe的令牌之后,我们可以尝试增加SeLoadDriverPrivilege来看看会发生什么。注意:权限名称是大小写敏感的。
很明显,notepad.exe可以加载一个驱动器了,而且能做的还有更多,我们之后还会增加权限移除的功能,敬请期待。
实现UAC绕过的方法有很多种,但最有趣的一种就是修改令牌了。FuzzySecurity在利用Windows令牌实现UAC绕过方面做过很多研究,感兴趣的同学可以查看其GitHub代码库【传送门】,Tokenvator也包含了FuzzySecurity所实现的技术。在下面的测试中,我们位提权的令牌可以用来访问当前用户拥有的特权进程,并生成特权Shell。
这种方法以后很可能也不会被修复,因为这更像是一种功能。
首先,我们需要查看系统注册的会话信息:
下面是List_Processes命令所实现的东西,即获取用户进程的概览:
List_Processes利用的是主机的原生API,在列举进程和用户方面速度非常快。由于在某些情况下如果没有实现提权的话,某些功能还是无法正常运行的,因此List_Processes_WMI便应运而生。很明显,它的功能是通过WMI实现的,所以它的速度肯定没有List_Processes快,但是它可以在非提权场景下正常运行。
我们还可以直接列举出特定用户场景下所有运行的进程信息:
跟List_Processes机制类似,它也能够在非特权场景下通过WMI完成相同的工作:
这款工具是我跟NetSPI团队共同开发的,希望能给大家提供帮助,如果大家在使用过程中发现了问题的话,可以在GitHub上留言。
* 参考来源:netspi,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM