信息收集
端口扫描
首先使用nmap进行端口探测,结果显示存在大量的Windows端口。
然后随后使用nmap获取其版本信息。
在发现5985端口后,若成功获取用户凭据,可利用WinRM获取shell。
然后使用nmap探测其版本信息。
DNS协议探测
发现htb.local是由forest.htb.local的DNS服务器解析的。
但无法执行区域传输。
TCP-445端口
使用smbmap无法检索信息,但在未提供密码的情况下,通过smbclient成功获取目录列表。
RPC检测用户
通过使用空用户连接,然后进行用户枚举,我们可以成功获取目录列表,而smbmap则无法检索信息。
接着,我们获取了用户列表和用户组。
接着进行群组成员查看,随后找到了一个管理员用户。
在不使用用户名的情况下,成功测试了快速的No-Preauth功能,针对Kerberos服务。
漏洞利用
AS-REP 烘焙
AS-REP烘焙是一种技术,允许检索选择了“不需要Kerberos预身份验证”属性的用户的密码哈希值。实际上,如果用户未启用Kerberos预身份验证,可以请求该用户的AS-REP,并对部分回复进行离线破解以恢复其明文密码。
发现了一个可进行AS-REP烘焙的用户:svc-alfresco。
通常,进行AS-REP烘焙需要有效的用户名。在处理AD枚举时,有三个检查阶段:无凭据(匿名访问)、无密码的有效用户名,以及有效凭证集(用户名+密码)。
hashcat解密
$krb5asrep$23$svc-alfresco@HTB.LOCAL:93fbd77d6d4b54d331e1a665047d4dfb$8a3d3a98956b1c0a9c
发现一个哈希值,然后利用hashcat进行解密。
WinRM测试
对解密后的凭据进行测试,以验证其是否可用于WinRM。
获取shell
验证解密后的凭据是否可用于WinRM,并确认可成功获取Shell。
获取user.txt
内网信息收集
使用BloodHound查找路径以获取user.txt文件,验证已解密的凭据是否可用于WinRM,并确认是否成功获取Shell。
注意到我们的用户svc-alfresco是“Account Operators”组的成员,该组对“Exchange Windows Permissions”组拥有GenericAll权限。
拥有GenericAll权限意味着我们具备对目标对象的完全控制权,包括添加用户到组、重置用户密码等操作,并且我们可以滥用这种弱权限。
进一步地,“Exchange Windows Permissions”组确实在域htb.local上具有WriteDACL权限。这意味着,通过创建用户并将其添加到“Exchange Windows Permissions”组,我们可以授予该用户DCSync访问权限,并从中转储域控制器密码哈希值。
因此,我们需要执行以下四个步骤:
- 创建用户
- 将该用户添加到“Exchange Windows Permissions”组
- 将该用户添加到“远程管理用户”组(以获得远程访问权限)
- 滥用弱权限来获取DCSync权限
判断用户群组归属
接着,使用 net user /domain
命令来收集域信息。
获取所有域用户的列表后,进行数据筛选,将用户数据提取出来。
接着,通过枚举用户组来收集域信息,使用 net user /domain 命令获取所有域用户的列表,随后进行数据筛选并提取用户数据。
接着,检查本地组。
查找嵌套组
使用 net user svc-alfresco /domain 进行查询。
发现当前用户是 ServiceAccounts 组的成员,但同时嵌套在多个服务帐户组的其他组中。
权限提升
上传PowerVIew.ps1工具
上传PowerView.ps1工具
用dot-sourcing将PowerView.ps1工具导入到当前会话中
使用点源加载PowerView后,首先应该查找当前用户所属的所有组。
Get-DomainGroup -MemberIdentity 'svc-alfresco' | select samaccountname
将用户添加到 Exchange Windows 权限组。
深入每个组,查找所有嵌套组关联的特权用户。
在第一个嵌套组中发现存在“服务帐户”组的所有用户也是“特权IT帐户”组的成员。
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)-将自己添加到组的能力
在Exchange受信任子系统组上滥用权限
net user /add testz1 testz1@qq.com /domainnet group /add 'Exchange Trusted Subsystem' testz1 /domain
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
转储哈希
secretsdump.py svc-alfresco:s3rvice@10.10.10.161
使用管理员散列执行传递散列攻击,并成功获取标志。
获取root.txt
使用WinRM获取Shell。
总结:
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攻击过程主要包括以下三个步骤:
- 在目标域的活动目录中注册一个伪造的DC。
- 使伪造的DC获得其他DC的认可,以便参与域复制。
- 强制触发域复制,将指定的新对象或修改后的对象属性同步复制到其他DC中。
具体步骤如下:
- 注册伪造的DC:一台机器要注册成为域中的DC服务器,需在域的活动目录中注册一个NTDS-DSA(nTDSDSA)类对象。注册位置为CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=adsec,DC=com。
- 让注册的DC获得其他DC的认可,使其能够参与域复制。
- 触发域复制。
REF:
https://github.com/gentilkiwi/mimikatz
暂无评论内容