导语:这个项目是我和我的朋友drone(@dronesec)花了一段时间搞出来的,很高兴现在终于可以发布了。正如标题所说的,我们将着眼于利用Windows访问令牌来实现本地特权升级。对于那些熟悉我之前编写的关于“Rotten Potato”一些工作的人来说,这听
这个项目是我和我的朋友drone(@dronesec)花了一段时间搞出来的,很高兴现在终于可以发布了。正如标题所说的,我们将着眼于利用Windows访问令牌来实现本地特权升级。对于那些熟悉我之前编写的关于“Rotten Potato”一些工作的人来说,这听起来很熟悉,但是drone和我又向前迈了10步。
在这篇文章中,我只是提供一份我们所做的工作的一个总结。完整的文件和所有相关代码可以在以下网址找到:https://github.com/hatRiot/token-priv。
这篇文章将分为两部分,第一部分是为渗透测试人员和红军所写的,第二部分是为漏洞利用开发人员所写。
对于红军攻击
像“Rotten Potato”项目一样,该项目对于攻击者已经拿到非管理员权限的服务帐户,并希望将权限提升为“SYSTEM”权限的渗透测试场景非常有用。如果你从“Rotten Potato”项目中回想起了一些事情,那么你应该记得为了能使原始的攻击起作用,你的帐户需要具有“SeImpersonatePrivilege”或“SeAssignPrimaryPrivilege”权限。drone和我决定看看还有哪些其他的特权可以被滥用来获得系统级别的访问权限,并能够找到他们的整个集合。如果这是你的兴趣所在,请随意跳到上面链接中的白皮书的3.1和3.3小节,并查看已发布的代码。每个模块都与一个特定的权限相关联,并且可以让你获得系统级别的访问权限或几乎一样的权限。
以下是我们能够滥用的权限列表:
SeImpersonatePrivilege SeAssignPrimaryPrivilege SeTcbPrivilege SeBackupPrivilege SeRestorePrivilege SeCreateTokenPrivilege SeLoadDriverPrivilege SeTakeOwnershipPrivilege SeDebugPrivilege
从渗透测试的角度来看,只需在Windows命令提示符下键入“whoami /priv”即可。如果你有上述特权之一,那么你赢了。
寻找具有这些权限的特定服务帐户可能是有益的。例如,如果你可以访问备份服务帐户,那么几乎肯定会有SeBackupPrivilege和SeRestorePrivilege权限。可以通过以下方式实现对这些服务帐户的访问:
· 服务本身受到一些漏洞的威胁。典型的情况包括允许在运行了IIS的帐户的上下文中执行的Web应用程序漏洞,以及可以使用XP_CMDSHELL 在SQL服务帐户的上下文中运行代码的SQL注入漏洞。
· 服务帐户的凭据以某种方式泄漏。
· Kerberoast风格的攻击。从域控制器请求目标帐户的Kerberos票证。这张票的一部分使用目标帐户的密码哈希进行加密。这可以有效地利用离线破解来获得帐户密码。
· 强制NTLM协商 。例如,使用备份服务账户,你可以强制它备份由Responder.py提供的SMB共享。
和往常一样,你可能需要在这里有一丢丢的创意。
有关更多详细信息,请参阅GitHub存储库https://github.com/hatRiot/token-priv中的文档。
对于Exploit开发
这个项目最初是由drone开发的,这款工具大大简化了为开发人员开发漏洞利用程序部分写入漏洞的难度。部分写入漏洞是那些我们可以写的东西在内存中选定的位置,但是我们可能无法控制被写入的值。这里的想法是滥用部分写入来翻转用户令牌中的某些位,从而实现可利用的权限之一。从这一点来看,漏洞的“利用”涉及滥用一系列Windows API调用的意图(虽然是未记录的)行为。
滥用部分写入的这种策略的优点在于它避免了所有新的内核利用的缓解措施!drone在本文中展示了他如何能够大大简化最近的部分写入漏洞的漏洞利用开发。另一件好事就是利用代码完全可移植。一旦在令牌中翻转了正确的位,漏洞开发者只需要从我们的项目中运行其中一个模块就行了。
有关更多详细信息,请参阅GitHub存储库https://github.com/hatRiot/token-priv中的文档。