Kerberos 委派进击道理之 S4U2 应用详解 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

Kerberos 委派进击道理之 S4U2 应用详解

申博_新闻事件 申博 68次浏览 已收录 0个评论

Kerberos 委派进击道理之 S4U2 应用详解

为了更好地防备束缚委派的滥用,请检察 Kekeo Rubeus文章中的“s4u”部份。

几周前,我和同事 · 克里斯滕森(在他的协助下我完成了这篇文章和相干材料)花了一些时刻深切研究了运动目次的 S4U2Self S4U2Proxy 协定扩大。 就在近来,本杰明 · 德尔皮 Ben Campbell在推特上就统一话题举行了一次风趣的公然对话 对话的结果是本杰明宣布了一个修悛改的 Kekeo,使得滥用 S4U 毛病设置更加随意马虎。 在我写这篇文章的时刻,Ben 还宣布了一篇关于这个话题的优异文章,每一个人在继承浏览本文之前都应当读一读他的文章。 说真的,读者们真的应当先去看看 Ben 的文章。

 Kerberos 委派进击道理之 S4U2 应用详解

李和我想写出我们对这项手艺的理解,以及在征战中如何滥用任何毛病设置。 个中一部份内容将与 Ben 的文章堆叠,然则我们已兼并了一些差别的方面,我们以为最少可以增添一些代价。 Ben 还引见了 Linux 方面的破绽应用,我们在本文中不会涉及到这一点。

这个题目的中心是特权委派——许可一个用户在运动目次中冒充成另一个用户。 这类委派(当前)有两种情势: 无束缚和有束缚的委派。 假如你不关心手艺细节,请直接跳到滥用 S4U 部份。

无束缚委派

假定你有一个效劳器(或效劳帐户) ,因为某种缘由须要冒充为另一个用户。 一个罕见的场景是,当用户运用 Kerberos 或其他协定向 Web 效劳器举行身份验证时,效劳器愿望与 SQL 后端举行优越的集成。 运动目次供应了两种完成此目的的通用要领: 束缚委派和无束缚委派。

Windows 2000中,无束缚委派曾经是唯一可用的选项,而且厥后保留了这个功用(多是出于向后兼容的缘由) 我们只简朴引见一下这类委派范例,因为 Sean Metcalf 有一篇很棒的文章深切引见了这类委派范例 在那篇文章中 Sean ,” Kerberos 无束缚委派在效劳器上启用,效劳器托管了在 TGS-REQ (步骤3)中援用的效劳主体称号中指定的效劳时,DC 域控制器将用户 TGT 的一个副本放到效劳票证中。 当向效劳器供应用户的效劳票证(TGS)以举行效劳接见时,效劳器翻开 TGS 并将用户的 TGT 放入 LSASS 中供后续运用。 此时,应用程序效劳器就可以无限定地冒充该用户!” .

下面是来自微软官方关于该协定的图形概述:

 Kerberos 委派进击道理之 S4U2 应用详解

https://msdn.microsoft.com/en-us/library/cc246080.aspx

Tl;dr: TGT 将被塞入内存,进击者可以在以下状况下提取和重用 TGT :

  1. 你可以进击具有无束缚委派设置的效劳器。

  2. 你可以诳骗未启用帐户是敏感的,不能委派设置的域用户(见下面的保护措施章节) ,以连接到盘算机上的任何效劳。 包括单击 \\SERVER\Share

这许可进击者冒充该用户到域上的任何效劳或盘算机! 很明显这类状况比较蹩脚 相比之下,假如不启用无束缚委派,则只会提交一个没有添补 TGT 的一般效劳票证,如许进击者就不会取得分外的横向扩大的上风。

如何推断哪些机械具有无束缚委派设置? 这实际上异常简朴: 搜刮任何具有 userAccountControl 属性的机械,该属性包括  ADS_UF_TRUSTED_FOR_DELEGATION 你可以运用 LDAP 过滤器‘(userAccountControl:1.2.840.113556.1.4.803:=524288)’,这是 PowerView Get-DomainComputer 函数在通报Unconstrained 标志时所做的:

 Kerberos 委派进击道理之 S4U2 应用详解

束缚委派

明显,无束缚委派在大意的管理员手中是相称风险的。 微软很早就认识到了这一点,并在 Windows 2003上宣布了束缚委派。 个中包括一组 Kerberos 协定扩大,称为 S4U2Self S4U2Proxy 这些扩大还支撑所谓的协定转换,我们会在稍后细致引见。

从本质上讲,束缚委派是一种可以在冒充其他用户时准确地限定特定机械或帐户可以接见到某些效劳的要领。 以下是设置了束缚委派的效劳帐户在运动目次 GUI 中的模样:

 Kerberos 委派进击道理之 S4U2 应用详解

指定的效劳是许可帐户在冒充其他用户时接见的效劳主体称号。 在上面的例子中是 HOST/PRIMARY.testlab.local 在我们细致议论它是如何事情的之前,下面是目的对象在 PowerView 中的模样:

 Kerberos 委派进击道理之 S4U2 应用详解

我们感兴趣的字段是 msds-allowedtodelegateto,然则也对帐户的 userAccountControl 属性举行了修正。 实际上,假如盘算机或用户对象的 userAccountControl 值包括  TRUSTED_TO_AUTH_FOR_DELEGATION ,那末任何拿到该帐户权限的用户都可以模仿 msds-allowedtodelegateto中设置的 SPN Ben 提到要修正这些参数 SeEnableDelegationPrivilege 是必须的,后续我将更深切地议论这个题目。

然则起首,我们来相识一下运动目次是如何完成全部历程的。 假如你不感兴趣,可以直接跳到本文的滥用 S4U 部份。

S4U2SelfS4U2Proxy 和协定转换

假定你具有一个 web 效劳帐户,该帐户须要将用户冒充为一个特定的后端效劳账户,然则你不想开启无束缚委派。 微软的解决计划是经由过程 Kerberos 扩大设置的用户效劳(S4U)完成。这里有关于这个主题已有大批的文档; 李和我偏幸微软的Kerberos 协定扩大: 面向用户和束缚委派协定的效劳“([ MS-SFU ]) 以下是我们如今的明白。 假如我们有什么错误,请让我们晓得!

完成束缚委派的第一个扩大是 S4U2self 扩大,它许可效劳代表特定用户向本身请求一个特别的可转发效劳票证。 这是为了在用户以不运用 Kerberos 的体式格局对效劳举行身份验证的状况下运用,例如在我们之前提到的 web 效劳案例。 KRB_TGS_REQ 第一次发送到 KDC 的历程当中,它设置了可转发的标志,该标志请求 TGS 返回的标记为可转发的,从而可以与 S4U2proxy 扩大一同运用。 在无束缚委派中,运用 TGT 标识用户,但在这类状况下,S4U 扩大运用 PA-FOR-USER 构造作为“padata”预身份验证数据字段中的新范例。

注重,S4U2self 历程可以被任何用户实行,而且不须要目的用户的暗码。 别的,只要请求用户在其 userAccountControl 中设置了 TRUSTED_TO_AUTH_FOR_DELEGATION 字段时,才许可 S4U2self 历程。

如今,李和我起首想到的是,这多是一种对任何我们想要的用户实行 Kerberoast  进击的体式格局,但不幸的是,关于我们进击者来讲,状况并非如此。 PAC 是为源用户(而不是目的用户)署名的,在这类状况下是请求效劳帐户,因而通用的 Kerberoast 进击要领不在斟酌局限以内。 然则我们如今有一个特别的效劳票证,在这类状况下可以转发到设置为束缚委派的目的效劳上。

第二个扩大是 S4U2proxy,它许可调用者(在我们的例子中是效劳帐户)运用这个转发票证向 msds-allowedtodelegateto 中指定的任何 SPN 请求效劳票证,冒充 S4U2self 步骤中指定的用户。 KDC 搜检请求的效劳是不是在被请求效劳的 msds-allowedtodelegateto 字段中,并在该搜检经由过程时发出票证。 经由过程这类体式格局,委派束缚到特定的目的效劳。

下面是微软官方关于 S4U2self S4U2proxy 事情历程的示意图:

 Kerberos 委派进击道理之 S4U2 应用详解

https://msdn.microsoft.com/en-us/library/cc246080.aspx

这个扩大设置就是微软所谓的协定转换,即从 S4u2Self 组件时期的第一个 Kerberos 交流最先。 这意味着效劳可以经由过程非 Kerberos 协定对用户举行身份验证,并将身份验证转换 Kerberos,从而可以轻松地与现有环境举行互操纵。

滥用 S4U

使用三星手机的童鞋们注意了!仿冒的三星固件升级APP已欺骗了一千多万安卓用户

超过1000万三星手机用户已经被骗安装了一款名为 “Updates for Samsung” 的仿冒的三星固件升级APP,在下载说明中,该应用会承诺用户,只要用户下载了它就会帮助他们更新手机固件。但实际上,诱骗用户下载后,它会将用户重定向到一个充满广告的网站,并对要升级的固件下载进行收费。 CSIS安全集团的恶意软件分析师Aleksejs Kuprins今天在接受ZDNet采访时表示: 我已经联系了谷歌Play商店,并要求他们考虑删除这个应用程序。 该应用程序的幕后开发者很聪明,由于三星手机固件和操作系统的更新非常不便利,他们利用了用户贪图方便的心理,诱导用户下载,这也是为什么这个应用会在短时间内有如此多

重新读到此处,假如你问本身那又如何,或许跳过前面的内容直接来到本章节,那末我们可以想出一些要领,让 S4U 扩大在渗入测试中发挥作用。

第一种要领是运用非空的 msds-allowedtodelegateto字段设置罗列一切盘算机和用户。 运用 PowerView Get-DomainUser/Get-DomainComputer函数并带有 -TrustedToAuth 标志可以很随意马虎地完成这一点:

 Kerberos 委派进击道理之 S4U2 应用详解

如今,请记着,将 SPN 设置为 msds-allowedtodelegateto 的机械或用户帐户可以冒充成任何他们愿望成为的目的效劳 SPN 因而,假如你可以拿到个中一个帐户的权限,就可以诳骗对目的 SPN 的特权接见。 关于 HOST SPN,则可以完成完整的长途接收。 关于 MSSQLSvc SPN,则可以拿到 DBA 权限。 关于 CIFS SPN 则可以完成完整的长途文件接见。关于 HTTP SPN 则能够完成接收长途收集效劳,而关于 LDAP 则可以实行 DCSync;) ,关于 HTTP SQL 效劳帐户,纵然它们没有提拔目的效劳器上的管理员权限,也能够运用 Rotten Potato  进一步滥用,提权至 SYSTEM 的权限(只管我还没有亲身测试过)

荣幸的是,本杰明近来宣布了一个修悛改的 Kekeo ,支撑在我们晓得特定账户的明文暗码的前提下,随意马虎的实行这类横向流传进击。 李和我想象了四种差别的状况,包括你能够想要滥用的 S4U 我们已在实验室中可靠地测试了个中的两个场景,然则没能胜利测试别的两个场景(解释以下)@gentilkiwi 联络并通知李和我 asktgt.exe 接收一个 /key: NTLM 参数和一个暗码。 这使得我们可以运用帐户哈希而不是纯文本暗码来实行下面的场景34

场景1: 用户帐户的设置为束缚委派而且已知明文暗码

这是本杰明在他的推特中展现的场景假如你可以破解启用了束缚委派的用户帐户的明文暗码,那末你可以运用 Kekeo 请求 TGT,实行 S4U TGS 请求,然后就可以接见目的效劳。

 Kerberos 委派进击道理之 S4U2 应用详解

msds-allowedtodelegateto 罗列用户

 Kerberos 委派进击道理之 S4U2 应用详解

为启用了束缚委派的用户帐户请求一个 TGT

 Kerberos 委派进击道理之 S4U2 应用详解

运用 s4u.exe 实行 S4U2Proxy

 Kerberos 委派进击道理之 S4U2 应用详解

注入 S4U 票证取得接见权限

一样,假如你愿望从 Linux 体系实行这类进击,请浏览 Ben 的这篇文章

场景2: 盘算机上的代办设置为束缚委派

假如你可以拿到一个设置为束缚委派(而不是用户帐户)的盘算机帐户的权限,那末进击要领就有点差别了。 因为任何作为 SYSTEM 运转的历程都具有当地盘算机帐户所具有的权限,因而我们可以跳过 Kekeo asktgt.exe 步骤。 你可以运用另一种要领来实行 S4U2Proxy 历程,这是微软供应的协助 李和我将这个历程从 C# 翻译成了 PowerShell 代码,以下:

# translated from the C# example at 
https://msdn.microsoft.com/en-us/library/ff649317.aspx
# load the necessary assembly
$Null = [Reflection.Assembly]::LoadWithPartialName('System.IdentityModel')
# execute S4U2Self w/ WindowsIdentity to request a forwardable TGS for the specified user
$Ident = New-Object System.Security.Principal.WindowsIdentity @('[email protected]')
# actually impersonate the next context
$Context = $Ident.Impersonate()
# implicitly invoke S4U2Proxy with the specified action
ls \\PRIMARY.TESTLAB.LOCAL\C$
# undo the impersonation context
$Context.Undo()

正如微软官方所细致申明的,在运用 WindowsIdentity 时,在大多数状况中,默许状况下返回的是标识级的标记。 这许可你检察哪些组与用户标记是相干联的,但不许可重用接见。 为了冒充上下文以接见其他收集资源,须要一个模仿级别的令牌,只要在请求帐户具有“Act as part of the operating system”用户权限(SeTcbPrivilege)时才返回该令牌。 这类权限只在默许状况下授与 SYSTEM 账户,然则因为我们已在收集上运用盘算机帐户的权限拿到了 SYSTEM 权限,所以我们不须要忧郁这一点。

别的,我之前提到过,因为 PowerShell.exe 的一些特征,假如你正在运用 PowerShell Version 2,那末你须要在单线程的 apartment 形式(带有“-sta”标志)中启动 PowerShell.exe,以便令牌冒充一般事情:

 Kerberos 委派进击道理之 S4U2 应用详解

设置了 msds-allowedtodelegateto 的盘算机的 SYSTEM 权限

 Kerberos 委派进击道理之 S4U2 应用详解

盘算机帐户的 S4U2Proxy

场景3: 用户帐户设置为束缚委派而且已知 NTLM 哈希

我们的下一个目的是仅给定目的用户的 NTLM 哈希就从 windows 体系实行这类转换进击,遗憾的是,我们没法运用与场景2雷同的要领一般事情。 我们的直觉是,我们疏忽了一些愚昧的细节,但我们想细致申明我们尝试了什么,那里出了题目,以防有人给出一个能一般事情的发起。Ben 指出 /key:NTLM 也适用于 asktgt.exe,下面将引见这一点。

我们尝试运用 Mimikatz PTH 敕令将用户的哈希注入内存(假定你是跳板机上的当地管理员) ,而不是运用 Kekro asktgt.exe 这里的一个题目(如场景2中所示)就是 SeTcbPrivilege,然则只管明确地授与了我们的主要用户这类权限,我们照旧遇到了题目。 看起来 S4U2Self 操纵步骤可以事情一般:

 Kerberos 委派进击道理之 S4U2 应用详解

只管我们已拿到了必要的特权或权限,但好像 S4U2Proxy 历程退回到了 NTLM,而不是 Kerberos,用一些值为 NULL 的身份验证信息替代了准确的历程:

 Kerberos 委派进击道理之 S4U2 应用详解

你可以运用 asktgt.exe /s4u.exe 实行此计划,其实行体式格局险些与场景1完整雷同。 只需将 / assword:PLAINTEXT 替换为 /key: NTLM,以下图所示:

 Kerberos 委派进击道理之 S4U2 应用详解

场景4: 盘算机帐户设置为束缚委派设置而且已知 NTLM 哈希

假如你经由过程某种体式格局拿到了盘算机帐户的哈希,并愿望从另一个域的盘算机实行进击,我们想象你将实行一个险些与场景3雷同的进击流程。 不幸的是,我们也遇到了一样的题目。 再次强调,假如有人能通知我们那里做错了,请通知我们,我们会异常感激🙂 这可以用  /user:MACHINE$ /key:NTLM实行,与场景3雷同:

 Kerberos 委派进击道理之 S4U2 应用详解

保护措施

微软已在运动目次中内置了很好的保护措施,可以协助削减委派滥用。 假如一个帐户启用了(敏感账户不能委派)Account is sensitive and can not be delegated”,那末纵然将效劳帐户设置为 Kerberos 委派的受信托帐户,也不会将用户的平安上下文委派给效劳 经由过程再次搜检 userAccountControl 属性,搜检 NOT_DELEGATED  值,就可以轻松地搜检帐户是不是设置了这个属性。 Powerview 许可你轻松搜刮已设置或未设置该值的帐户(Get-DomainUser -AllowDelegation/-DisallowDelegation) ,而且可以运用 ConvertFrom-UACValue 函数搜检特定帐户中该属性的值,如前面的示例所示。

后续我将宣布一篇与本文主题稍有堆叠的文章,并提出更多关于修正用户对象的委派组件所需权限的防御性主意。

原文地点: https://www.4hou.com/system/18825.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明Kerberos 委派进击道理之 S4U2 应用详解
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

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