域环境下的委派

1.什么是委派

在Windows 2000 Server首次发布Active Directory时,Microsoft必须提供一种简单的机制来支持用户通过Kerberos向Web Server进行身份验证并需要代表该用户更新后端数据库服务器上的记录的方案。这通常称为“ Kerberos双跳问题”,并且要求进行委派,以便Web Server在修改数据库记录时模拟用户。需要注意的一点是接受委派的用户只能是服务账户或者计算机用户

说人话就是:为了解决服务代表用户访问其他应用产生的功能

2.非约束委派

如果某台机器A(Web Server)配置了非约束的委派,那么这个机器A(Web Server)就可以接受任何用户的委派请求其他所有的服务。任意用户在访问机器A(Web Server)时会将自己的TGT票据发送给机器A(Web Server),如果机器A(Web Server)被攻陷,攻击者可以dump所有的TGT,然后任意伪造ST,访问域内各种服务。

只有域管在域控可以配置 并且可以修改非约束和约束委派

使用非约束委派,被授予此权限的服务器或服务帐户能够模拟用户对任何主机上的任何服务进行身份验证。

约束和非约束委派的鉴权都是在web server上

image-20220328101040022.png

如何配置“非约束委派”
image-20220328101224669.png

如何判断配置“非约束委派”

配置了非约束委派的用户的userAccountControl 属性有个FLAG位 TrustedForDelegation


image-20220328101411937.png

userAccountControl 中的TRUSTED_FOR_DELEGATION 对应是 0x80000 ,也就是 524288。

2.1.涉及的问题

非约束委派的安全问题就是如果我们找到配置了非约束的委派的账户,比如test,并且通过一定手段拿下该账户的权限,然后诱导域管访问该test,这个时候域管会将自己TGT发送到test$并缓存到LSASS中,那我们就可以从LSASS中导出域管的TGT票据,然后通过PTT,从而拥有域管的权限。

因为配置非约束的委派的账户的UserAccount 配置了TRUSTED_FOR_DELEGATION flag位,TRUSTED_FOR_DELEGATION 对应是 0x80000 ,也就是 524288 。

所以对应的LDAP过滤规则是

(&(objectCategory=computer)(objectClass=computer)(userAccountControl:1.2.840.113556.1.4.803:=524288))

可以通过这个规则进行查找

3.约束委派

微软很早就意识到非约束委派并不是特别安全,在 Windows 2003上发布了"约束"委派。 其中包括一组 Kerberos 协议扩展。配置它后,约束委派将限制指定服务器可以代表用户执行的服务。这需要域管理员特权(其实严谨一点是SeEnableDelegation特权,该特权很敏感,通常仅授予域管理员)才能为服务配置域帐户,并且将帐户限制为单个域。

约束委派 和 非约束委派 区别是,约束委派只能访问委派的那个机器并是指定的服务

image-20220329092626628.png

如何配置约束委派
image-20220329092817974.png

image-20220329092840219.png

配置了约束委派的用户的userAccountControl 属性有个FLAG位 TrustedToAuthForDelegation 。

其中 TRUSTED_TO_AUTH_FOR_DELEGATION 对应是 0x1000000 ,也就是 16777216 。

所以对应的LDAP过滤规则是

(&(objectCategory=computer)(objectClass=computer)(userAccountControl:1.2.840.113556.1.4.803:=16777216))

约束的资源委派,除了配置TRUSTED_TO_AUTH_FOR_DELEGATION 之外,还有个地方是存储对哪个spn 进行委派的,位于msDS-AllowedToDelegateTo

3.1.涉及的问题

约束委派的安全问题就是如果我们找到配置了约束委派的服务账号,比如test2,并且通过一定手段拿下该账号所在的计算机。我们就可以利用这个服务账号代表任意用户(这里面很重要的一点是服务代表用户获得针对服务自身的kerberos票据这个过程,服务是不需要用户的凭据的)进行s4u2self获得一个可转发的票据,然后把获取到的票据用于s4u2proxy(作为AddtionTicket),获取一个可转发的TGS,这样服务就可以代替任意用户访问另外一个服务(既被配置的约束委派的服务)。

相较于非约束的委派,约束的委派并不需要用户过来访问就可以代表该用户,但是只能访问特定的服务。不同服务下所能达到的效果是不同的,例如:对于 HOST SPN,则可以实现完全的远程接管。 对于 MSSQLSvc SPN,则可以拿到 DBA 权限。 对于 CIFS SPN 则可以实现完全的远程文件访问。对于 HTTP SPN 则可能实现接管远程网络服务,而对于 LDAP 则可以执行 DCSync。而对于 HTTP 或 SQL 服务帐户,即使它们没有提升目标服务器上的管理员权限,也可能使用 Rotten Potato 进一步滥用,提权至 SYSTEM 的权限

4.基于资源的约束委派

为了配置受约束委派,必须拥有SeEnableDelegation特权,该特权十分敏感,通常仅授予域管理员。为了使用户/资源更加独立,Windows Server 2012中引入了基于资源的约束委派。基于资源的约束委派允许资源配置受信任的帐户委派给他们。基于资源的约束委派将委派的控制权交给拥有被访问资源的管理员。

这种约束委派的风格与传统约束委派非常相似,但配置相反。从帐户A到帐户B的传统约束委派在msDS-AllowedToDelegateTo属性中的帐户A上配置,并定义从A到B的“传出”信任,而在马上到!S-AllowedToActOnBehalfOfOtherIdentity属性中的帐户B上配置基于资源的约束委派,并定义从A到B的“传入”信任。

说人话就是:A配置对于B的基于资源的约束委派,那么A对于B就处于完全信任状态,如果我们拿下了B,那么我们就可以利用B申请任意用户到A的票据(前提是具有合法的SPN的)。

从安全性的角度来讲,基于资源的约束委派相对于约束委派来讲,是不那么安全的。更片面的武断的来讲,约束委派好歹还限定了特定的某个服务,但是基于资源的约束委没有。相较于传统的约束委派。基于资源的约束委派的利用又相对较为简单。

基于资源的约束委派在Active Directory中的表现:


image-20220330092122533.png

4.1涉及的问题

直接抛结论:

1.利用基于资源的约束委派进行提权操作

具体实现手法很简单,利用可以连接且可修改ldap的账户,去设置msDS-AllowedToActOnBehalfOfOtherIdentity属性,配置该属性的值指向自己已控制的用户账户。

2.利用基于资源的约束委派RCE

我们前面文章讲过,域环境下,计算机与服务之间、服务与服务之间的数据交互以及鉴权都是通过“票据”来实现的,换句话说,我们拿到对应服务的票据,也就意味着利用该服务进行数据操作。

举个栗子:当我们手里有A、B两个用户,我们发现A可以配置msDS-AllowedToActOnBehalfOfOtherIdentity属性,那我们直接配置AmsDS-AllowedToActOnBehalfOfOtherIdentity到B,就可以利用B申请到任意用户的到A的CIFS票据(前提是CIFS已经配置合法的SPN)。

5.SPN

关于SPN,microsoft文档是这么写的:

System Center Virtual Machine Manager uses Kerberos-based authentication. If you are using Kerberos-based authentication, you must configure a Service Principal Name (SPN) for Network Controller in Active Directory. The SPN is a unique identifier for the Network Controller service instance, which is used by Kerberos authentication to associate a service instance with a service login account. For more details, see Service Principal Names.

翻译成人话就是:SPN(ServicePrincipal Names)服务主体名称,是服务实例(比如:HTTP、SMB、MySQL等服务)的唯一标识符。Kerberos认证过程使用SPN将服务实例与服务登录账户相关联,只有正确配置SPN,你才能申请对应服务的票。否则,哒咩!

SPN分为两种,一种注册在AD上机器帐户(Computers)下,另一种注册在域用户帐户(Users)下

当一个服务的权限为Local System或Network Service,则SPN注册在机器帐户(Computers)下

当一个服务的权限为一个域用户,则SPN注册在域用户帐户(Users)下


image-20220408100536629.png

注册SPN,直接给结论:

在Windows域里,默认普通机器账号有权注册SPN

image-20220408103150519.png

普通域用户账号没有权注册SPN
image-20220408103658107.png

如果需要域用户能够有注册SPN的权限,需要在DC上为域账号赋予 Read servicePrincipalNameWrite serverPrincipalName的权限。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容