欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

高级域渗透技术之传递哈希已死-LocalAccountTokenFilterPolicy万岁

来源:本站整理 作者:佚名 时间:2019-04-30 TAG: 我要投稿

大约三年前,我写了一篇名为"传递哈希已死: 长久的哈希传递方法介绍"的文章,详细阐述了微软 KB2871997补丁的一些操作含义。 在安全建议中有一句特别的话,"这个功能的改变包括: 防止网络登录和使用本地帐户远程交互登录到加入域的机器… …"使我相信(在过去3年中)补丁修改了 Windows 7和 Server 2008的行为,以防止通过非 rid 500的本地管理员帐户传递哈希的能力。 我的同事Lee Christensen最近指出,尽管微软的措辞如此,但这种说法实际上是不正确的,而且情况比我们最初认为的要微妙得多。 值得注意的是,pwnag3的开创性文章"微软刚刚发布的KB2871997和 KB2928120打破了什么?"也遭受了和我最初发表的文章一样的误解。
我们现在对这些话题有了更好的理解,并希望尽可能地澄清事实。 这是我对最终认识到 KB2871997在大多数情况下与阻止 Windows 企业使用 pass-the-hash"复杂化"毫无关系的道歉。 对于近3年来传播错误信息的道歉-我希望弥补我的过错:)一如既往,如果在这篇文章中有错误,请让我知道,我会更新!
澄清 KB2871997 补丁的误解
那么,如果这个补丁不能自动"防止网络登录和远程交互式登录到使用本地帐户加入域的机器",那它实际上做了什么呢? 正如 Aaron Margosis 所描述的,该补丁引入了两个新的安全标识符(sid) : S-1-5-113(NT AUTHORITY Local account)和 S-1-5-114(NT AUTHORITY Administrators 用户组的本地账户和成员)。 正如 微软官方的文章中详细介绍的那样,可以通过组策略使用这些 sid 来有效地阻止远程登录使用所有本地管理帐户。 请注意,虽然 KB2871997将这些 sid 反向移植到 Windows 7和 Server 2008 / 2012,但它们在 Windows 8.1和 Server 2012 R2 + 的操作系统中默认合并了。 这是Sean Metcalf 之前提到过的,Araon在微软文章的评论中特别阐明了这一点。
旁注: 幸运的是,这也意味着在域上经过身份验证的任何用户都可以枚举这些策略并查看哪些机器设置了这些限制。 我将在以后的文章中介绍如何执行这种类型的枚举和相关性。
我错误地认为,这个补丁修改了 Windows 7机器上的现有行为。 自从 Windows Vista 以来,攻击者一直无法将哈希传递给非内置的 RID 500 Administrator 的本地管理员帐户(在大多数情况下,请参阅下面给出的更多内容)。 在这里我们可以看到 KB2871997没有安装在基本的 Windows 7上:

然而,使用本地管理员成员的非 rid 500的admin帐户执行 哈希传递攻击会失败:

因此,这种行为甚至在 KB2871997发布之前就存在了。 造成这种混淆的部分原因是安全警告中使用的语言,但我对没有经过充分测试情况和转达正确的信息负有责任。 虽然我们强烈推荐 Aaron 的建议,即在这些新的 sid 中部署 gpo,以帮助缓解内网渗透,但我们仍然对保留了KB的原始标题的权利感到得意;)

远程访问和用户帐户控制
那么,如果补丁不影响这种行为,那又是什么阻止了我们使用本地管理员帐户传递哈希呢? 为什么 RID 500帐户可以作为特殊情况运作? 此外,为什么作为本地管理员用户组成员的域帐户也不受这种阻止行为的影响? 此外,在过去的几年中,我们还注意到在一些约定,传递-哈希攻击仍然可以在非 rid 500的本地管理员帐户上工作,尽管补丁正在应用。 这种行为一直困扰着我们,但我们认为我们最终可以解释所有这些矛盾。
所有这些问题的真正罪魁祸首是远程访问上下文中的用户帐户控制(UAC)令牌过滤。 我一般总是在本地主机操作的上下文中会考虑 UAC,但是这对于远程情况也有各种各样的含义。 微软官方的"Windows Vista 应用程序开发对用户帐户控制兼容性的要求"文档中的"用户帐户控制和远程场景"部分以及"Windows Vista 中用户帐户控制和远程限制的描述"部分都多次解释了这种行为,并为我个人澄清了几点。
对于任何非 rid 500的本地管理员帐户远程连接到 Windows Vista+ 的计算机,无论是通过 WMI、 PSEXEC 还是其他方法,返回的令牌都是"已过滤的"(即中等完整性) ,即使用户是本地管理员。 由于没有方法可以远程升级到高完整性的上下文,除非通过 RDP (除非启用"受限管理"模式,否则需要明文密码) ,令牌才会保持中等完整性。 因此,当用户试图远程访问一个特权资源(例如 admin$)时,他们会收到一条"Access is Denied"消息,尽管从技术上讲他们确实拥有管理访问权限。 不过,我马上就会得到 RID 500的例外案例;)
对于本地"管理员"组中的本地用户帐户,"Windows Vista 用户帐户控制兼容性应用程序开发要求"文档描述了以下行为:
在 Windows Vista 计算机的本地安全帐户管理器(SAM)数据库中拥有管理员帐户的用户远程连接到 Windows Vista 计算机时,该用户在远程计算机上没有特权提升的潜力,不能执行管理任务。
微软官方发布的"描述 Windows Vista 中的用户帐户控制和远程限制"的文章中用另一种方式描述了这一点:
当目标远程计算机上的本地管理员用户组的成员的用户建立远程管理连接时… … 他们将不会以完全的管理员身份连接。 用户在远程计算机上没有特权提升潜力,并且用户无法执行管理任务。 如果用户希望使用安全帐户管理器(SAM)帐户管理工作站,则用户必须交互式地登录到要使用远程协助或远程桌面管理的计算机。
对于本地"管理员"用户组中的域用户帐户,文档中有如下声明:

[1] [2]  下一页

【声明】:黑吧安全网(http://www.ylxj.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载