【内网渗透】深入实战:域渗透之Forest

信息收集

端口扫描

首先使用nmap进行端口探测,结果显示存在大量的Windows端口。

图片[1]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

然后随后使用nmap获取其版本信息。

图片[2]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

在发现5985端口后,若成功获取用户凭据,可利用WinRM获取shell。

然后使用nmap探测其版本信息。

图片[3]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

DNS协议探测

发现htb.local是由forest.htb.local的DNS服务器解析的。

图片[4]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

但无法执行区域传输。

图片[5]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

TCP-445端口

使用smbmap无法检索信息,但在未提供密码的情况下,通过smbclient成功获取目录列表。

图片[6]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

RPC检测用户

通过使用空用户连接,然后进行用户枚举,我们可以成功获取目录列表,而smbmap则无法检索信息。

图片[7]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

接着,我们获取了用户列表和用户组。

图片[8]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

接着进行群组成员查看,随后找到了一个管理员用户。

图片[9]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

在不使用用户名的情况下,成功测试了快速的No-Preauth功能,针对Kerberos服务。

漏洞利用

AS-REP 烘焙

AS-REP烘焙是一种技术,允许检索选择了“不需要Kerberos预身份验证”属性的用户的密码哈希值。实际上,如果用户未启用Kerberos预身份验证,可以请求该用户的AS-REP,并对部分回复进行离线破解以恢复其明文密码。

发现了一个可进行AS-REP烘焙的用户:svc-alfresco。

通常,进行AS-REP烘焙需要有效的用户名。在处理AD枚举时,有三个检查阶段:无凭据(匿名访问)、无密码的有效用户名,以及有效凭证集(用户名+密码)。

图片[10]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

hashcat解密

$krb5asrep$23$svc-alfresco@HTB.LOCAL:93fbd77d6d4b54d331e1a665047d4dfb$8a3d3a98956b1c0a9c

发现一个哈希值,然后利用hashcat进行解密。

图片[11]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

WinRM测试

对解密后的凭据进行测试,以验证其是否可用于WinRM。

图片[12]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

获取shell

验证解密后的凭据是否可用于WinRM,并确认可成功获取Shell。

图片[13]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

获取user.txt

图片[14]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

内网信息收集

使用BloodHound查找路径以获取user.txt文件,验证已解密的凭据是否可用于WinRM,并确认是否成功获取Shell。

图片[15]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

注意到我们的用户svc-alfresco是“Account Operators”组的成员,该组对“Exchange Windows Permissions”组拥有GenericAll权限。

拥有GenericAll权限意味着我们具备对目标对象的完全控制权,包括添加用户到组、重置用户密码等操作,并且我们可以滥用这种弱权限。

进一步地,“Exchange Windows Permissions”组确实在域htb.local上具有WriteDACL权限。这意味着,通过创建用户并将其添加到“Exchange Windows Permissions”组,我们可以授予该用户DCSync访问权限,并从中转储域控制器密码哈希值。

因此,我们需要执行以下四个步骤:

  1. 创建用户
  2. 将该用户添加到“Exchange Windows Permissions”组
  3. 将该用户添加到“远程管理用户”组(以获得远程访问权限)
  4. 滥用弱权限来获取DCSync权限

判断用户群组归属

接着,使用 net user /domain 命令来收集域信息。

获取所有域用户的列表后,进行数据筛选,将用户数据提取出来。

图片[16]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

接着,通过枚举用户组来收集域信息,使用 net user /domain 命令获取所有域用户的列表,随后进行数据筛选并提取用户数据。

图片[17]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

接着,检查本地组。

图片[18]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

查找嵌套组

使用 net user svc-alfresco /domain 进行查询。

发现当前用户是 ServiceAccounts 组的成员,但同时嵌套在多个服务帐户组的其他组中。

图片[19]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

权限提升

上传PowerVIew.ps1工具

上传PowerView.ps1工具

图片[20]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

用dot-sourcing将PowerView.ps1工具导入到当前会话中

图片[21]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

使用点源加载PowerView后,首先应该查找当前用户所属的所有组。

Get-DomainGroup -MemberIdentity 'svc-alfresco' | select samaccountname
图片[22]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

将用户添加到 Exchange Windows 权限组。

深入每个组,查找所有嵌套组关联的特权用户。

图片[23]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

在第一个嵌套组中发现存在“服务帐户”组的所有用户也是“特权IT帐户”组的成员。

图片[24]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

DCSync 权限

● GenericAll – full rights to the object (add users to a group or reset user’s password)GenericAll -对象的完全权限(将用户添加到组或重置用户的密码)● GenericWrite – update object’s attributes (i.e logon script)GenericWrite -更新对象的属性(即登录脚本)● WriteOwner – change object owner to attacker controlled user take over the objectWriteOwner -将对象所有者更改为攻击者控制的用户接管对象● WriteDACL – modify object’s ACEs and give attacker full control right over the objectWriteDACL -修改对象的ACE并给予攻击者对对象的完全控制权● AllExtendedRights – ability to add user to a group or reset passwordAllExtendedRights -将用户添加到组或重置密码的能力● ForceChangePassword – ability to change user’s passwordForceChangePassword -更改用户密码的能力● Self (Self-Membership) – ability to add yourself to a groupSelf(Self-Membership)-将自己添加到组的能力

图片[25]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

在Exchange受信任子系统组上滥用权限

net user /add testz1  testz1@qq.com /domainnet group /add 'Exchange Trusted Subsystem' testz1 /domain
图片[26]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛
1. $SecPassword = ConvertTo-SecureString 'testz1@qq.com' -AsPlainText -Force2. $Cred = New-Object System.Management.Automation.PSCredential('HTB.local\testz1', $SecPassword) 3. Add-DomainObjectAcl -Credential $Cred -TargetIdentity "DC=htb,DC=local" -PrincipalIdentity pwnt -Rights DCSync4. Add-DomainObjectAcl -Credential $Cred -TargetIdentity "DC=htb,DC=local" -PrincipalId
图片[27]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

转储哈希

secretsdump.py svc-alfresco:s3rvice@10.10.10.161
图片[28]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

使用管理员散列执行传递散列攻击,并成功获取标志。

图片[29]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

获取root.txt

使用WinRM获取Shell。

图片[30]-【内网渗透】深入实战:域渗透之Forest-山海云端论坛

总结:

DCSync和DCShadow是域渗透中常用的技术。

DCSync 攻击

2015年8月,Benjamin Delpy(Mimikatz的创作者)和Vincent Le Toux发布了Mimikatz的新版本,其中新增了DCSync功能。该功能模拟域控制器(DC),从实际的域控制器中请求数据,如账户口令哈希等信息。

在DCSync出现之前,获取域账户的口令信息需要登录域服务器并在其上运行代码。

DCSync的主要特点是可以远程复制域数据,无需登录域服务器,即可获取所需的用户口令信息。

值得注意的是,如果DCSync攻击的目标是RODC域控制器,则会失效,因为RODC无法参与复制同步数据。

DCSync攻击原理

DCSync攻击的原理十分清晰,它利用了域控制器之间的数据同步复制机制。

攻击者首先发现网络中的目标域控制器。

然后,通过DRS服务的GetNCChanges接口发起数据同步请求,该接口属于Directory Replication Service(DRS)远程协议。

Samba wiki对GetNCChanges的描述如下:

当一个域控制器(客户端DC)希望从另一个域控制器(服务端DC)获取数据时,它会向服务端DC发起GetNCChanges请求。服务端DC回应的数据包括需要同步的数据。如果需要同步的数据量较大,这个过程可能会重复进行,因为每次回应的数据都是有限的。

要发起DCSync攻击,攻击者必须具备以下权限之一:

  • Administrators组内的用户
  • Domain Admins组内的用户
  • Enterprise Admins组内的用户
  • 域控制器的计算机帐户

一般情况下,默认情况下域管理员组具有这些权限。

DCShadow 攻击

2018年1月24日,Benjamin Delpy(Mimikatz 神器的作者)和 Vincent Le Toux 在 BlueHat IL 会议上披露了一种新的针对域活动目录的攻击技术,即DCShadow。

在具备域管理员权限的情况下,攻击者可以利用DCShadow创建伪造的域控制器,并将预先设定的对象或对象属性复制到正在运行的域服务器中。

DCSync用于从域服务器复制数据,而DCShadow则将数据复制到域服务器上。

Luc Delsalle对此技术进行了验证和详细描述,并讨论了红蓝对抗中蓝队应对此类攻击技术的缺陷和补救方法。

就目前DCShadow展示的功能而言,它主要可用于红蓝对抗中的隐蔽后门。然而,DCShadow首次明确并实现了伪造一个域控制器的最小需求集,这一贡献是非常重要的。以前,许多攻击方法都受限于无法伪造域服务器,例如MS15-011和MS15-014等。有了DCShadow的基础,相信未来会涌现出许多新的攻击方法。

DCShadow 攻击流程

根据Luc Delsalle的描述,DCShadow攻击过程主要包括以下三个步骤:

  1. 在目标域的活动目录中注册一个伪造的DC。
  2. 使伪造的DC获得其他DC的认可,以便参与域复制。
  3. 强制触发域复制,将指定的新对象或修改后的对象属性同步复制到其他DC中。

具体步骤如下:

  1. 注册伪造的DC:一台机器要注册成为域中的DC服务器,需在域的活动目录中注册一个NTDS-DSA(nTDSDSA)类对象。注册位置为CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=adsec,DC=com。
  2. 让注册的DC获得其他DC的认可,使其能够参与域复制。
  3. 触发域复制。

REF:

https://github.com/gentilkiwi/mimikatz

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容