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
Berserko — Extensão do Burp Suite para realizar autenticação Kerberos | Kitploit
Ferramentas/GitHubGitHub/nccgroup/berserko
Proxies Web e InterceptaçãoSegurança WebTestes de PenetraçãoAutenticação
GitHubnccgroup/berserko

Berserko

Extensão do Burp Suite para realizar autenticação Kerberos

Ver Repositório
105174há 2 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

Berserko - Autenticação Kerberos para o Burp Suite

Disponibilizado como código aberto pela NCC Group Plc - http://www.nccgroup.trust/

Desenvolvido por Richard Turnbull, richard [dot] turnbull [at] nccgroup [dot] com

http://www.github.com/nccgroup/Berserko

Distribuído sob a AGPL, consulte o LICENSE para mais informações


❗ Nota Importante ❗

O desenvolvimento adicional do Berserko terá lugar em https://github.com/rteatea/Berserko


Introdução

O Berserko é uma extensão do Burp para adicionar suporte à autenticação Kerberos. Isto é útil para testar num domínio Windows quando a autenticação NTLM não é suportada (o Burp já trata do NTLM). O Berserko não exige que a máquina onde o Burp está a ser executado esteja associada ao domínio (nem sequer que esteja a executar Windows).

A única solução existente de que temos conhecimento atualmente para testar aplicações Kerberos usando o Burp é encadear através do Fiddler, com a autenticação configurada de acordo com estas instruções. Mas o Fiddler é apenas para Windows, e encadear proxies acrescenta complexidade e prejudica o desempenho, por isso é bom ter capacidade Kerberos dentro do próprio Burp.

Requisitos do Sistema

  • Burp Suite
  • Testado em Windows e Linux (Kali)

Instalação

Obtenha o ficheiro jar do Berserko mais recente a partir do separador Releases, ou a partir da pasta berserko\releases

Vá ao separador Extender no Burp, selecione Add, certifique-se de que Java está selecionado como Extension type, e depois aponte para o ficheiro jar. Se tudo correr bem, o separador Berserko deverá ser adicionado à interface do Burp.

Início Rápido

  • Vá ao separador Berserko e marque a caixa Do Kerberos authentication.
  • Clique no botão Change no painel Domain Settings e forneça o nome DNS do domínio (não o nome NETBIOS) e o nome de host (ou endereço IP) de um KDC (controlador de domínio).
  • Clique no botão Test domain settings e verifique se obtém uma resposta Successfully contacted Kerberos service.
  • Clique no botão Change no painel Domain Credentials e forneça um nome de utilizador e palavra-passe para uma conta de domínio (apenas o nome de utilizador simples, não MYDOMAIN\user nem [email protected] nem nada do género).
  • Ative a delegação Kerberos deixando o Berserko criar um ficheiro krb5.conf por si. Clique no botão Create krb5.conf file no painel Delegation e escolha um local adequado onde o ficheiro possa ser criado. Qualquer local serve. Não deverá sobrescrever nenhum ficheiro krb5.conf existente ao nível do sistema. Responda sim quando o Berserko perguntar se pretende definir este ficheiro como o ficheiro krb5.conf. É chato ter de fazer isto (criar um ficheiro), mas não é culpa do Berserko nem do Burp - é uma limitação das APIs Kerberos do Java. Para mais informações, consulte as notas sobre Delegação abaixo.
  • Clique no botão Test credentials e verifique se obtém uma resposta "TGT successfully acquired". Esperemos que também diga "TGT is forwardable so delegation should work".
  • A autenticação Kerberos deverá agora estar operacional para os hosts no domínio especificado.

Definições

Existem vários controlos no separador Berserko no Burp.

A caixa de verificação Do Kerberos authentication é um interruptor principal. Enquanto não estiver ativada, o Berserko não fará absolutamente nada.

O botão Restore defaults repõe a configuração padrão do Berserko (na qual não estão presentes detalhes de domínio nem credenciais de utilizador).

O botão Clear Kerberos state limpa todos os tickets Kerberos e outro estado no cliente. A única razão pela qual poderá precisar de o utilizar seria se tivessem sido feitas alterações à configuração Kerberos no lado do servidor e quisesse começar a partir de um estado limpo.

O botão Write tickets to log escreverá informações sobre os seus tickets Kerberos atuais no fluxo de registo do Berserko - isto pode ser útil para depuração/resolução de problemas. Para ver os registos, vá ao separador Extender do Burp, selecione Berserko e consulte o separador Output abaixo. Pode fazer sentido usar a opção Save to file aqui, porque os dados dos tickets podem facilmente encher o buffer de registo na interface gráfica.

Alguns controlos têm um botão de ajuda que mostra mais informações.

Definições de Domínio

Especifique o Domain DNS Name e o KDC Host usando os controlos desta secção. As caixas de texto não podem ser editadas diretamente; tem de usar o botão 'Change' para as modificar.

O Domain DNS Name deve ser o nome DNS do domínio contra o qual pretende autenticar (para ser preciso, isto é na verdade o realm Kerberos). Deve ser algo como mydomain.acme.local. Não deve ser o nome NETBIOS do domínio (que seria algo como MYDOMAIN).

O KDC Host deve ser o nome de host (ou endereço IP) de um KDC Kerberos (Key Distribution Center). Num domínio Windows, um KDC é simplesmente um controlador de domínio.

Depois de fornecer o Domain DNS Name, pode usar o botão Auto para tentar localizar automaticamente um KDC. Para isso, envia uma consulta DNS SRV para o serviço Kerberos. Se um dos seus servidores DNS for um controlador de domínio para o domínio correto, isto deverá funcionar. Caso contrário, não funcionará. ❗Esta funcionalidade não funcionará em versões recentes do Burp, porque as bibliotecas DNS necessárias não estão a ser incluídas no JRE empacotado. Pode contornar isto iniciando com um JRE completo, conforme descrito no topo deste README.❗

Quando o Domain DNS Name e o KDC Host tiverem sido introduzidos, use o botão Test domain settings para testar a conectividade. Se tudo correr bem, obterá uma resposta Successfully contacted Kerberos service.

Consulte este ficheiro para obter muito mais informações sobre como obter os valores corretos para estas Definições de Domínio.

Credenciais de Domínio

Especifique o Username e a Password para uma conta de domínio usando os controlos desta secção. As caixas de texto não podem ser editadas diretamente; tem de usar o botão 'Change' para as modificar.

O Username deve ser apenas o nome de utilizador simples. Deve ser algo como bob. Não deve ser MYDOMAIN\bob nem [email protected] nem semelhante.

Depois de fornecer as credenciais, pode usar o botão Test credentials. Isto tentará adquirir um ticket-granting ticket (TGT) Kerberos para o utilizador especificado. Se for bem-sucedido, obterá uma resposta TGT successfully acquired. Se não for bem-sucedido, note que isto é uma tentativa de autenticação de domínio, por isso tenha cuidado para não bloquear a sua conta.

A palavra-passe não será guardada na configuração do Berserko para a próxima vez, a menos que a caixa Save password in Burp config? esteja marcada. No entanto, todas as outras definições serão guardadas.

Delegação

Algumas aplicações usam delegação Kerberos no lado do servidor para encaminhar a identidade do cliente para outros servidores (mas não há uma forma fácil de determinar a partir do lado do cliente se isto está em uso).

O Berserko suporta isto, mas há um senão. A delegação só funciona se o utilizador tiver um TGT forwardable (ticket-granting ticket). A implementação Java do Kerberos, infelizmente, não fornece uma forma de especificar programaticamente que deve ser adquirido um ticket forwardable. Isto só pode ser feito adicionando uma entrada apropriada ao ficheiro de configuração krb5.conf.

Assim, para que a delegação funcione, o Berserko tem de apontar para um ficheiro krb5.conf adequado, e há duas abordagens possíveis.

A coisa mais fácil a fazer, e a abordagem recomendada, é usar o botão Create krb5.conf file. Isto criará um ficheiro adequado para si num local à sua escolha. Pode colocá-lo num diretório temporário, no diretório do seu projeto, ou onde quiser. Mas o mesmo ficheiro pode ser reutilizado indefinidamente, por isso pode fazer sentido colocá-lo num local mais permanente. O botão Change permite-lhe selecionar um ficheiro diferente para ser usado.

Se estiver interessado, o ficheiro krb5.conf criado é muito simples e terá o seguinte conteúdo:

root@kitploit:~
[libdefaults]
    forwardable = true

Em alternativa, pode usar o botão Change para apontar para um ficheiro krb5.conf existente no sistema. A única razão pela qual poderá querer fazer isto seria se houvesse outras definições Kerberos importantes neste ficheiro que quisesse que o Berserko apanhasse (o que, em teoria, deveria funcionar bem, mas não foi testado na prática). Note que a localização predefinida deste ficheiro no Linux é /etc/krb5.conf - outros sistemas operativos têm menos probabilidade de ter um. Se estiver a apontar para um ficheiro krb5.conf existente, certifique-se de que o edita para ativar o encaminhamento (forwarding) - adicione forwardable = true à secção [libdefaults] (ou individualmente para cada realm). Mas tenha cuidado. Pedir ao Berserko para criar o ficheiro por si será a melhor opção 99% das vezes.

Se quiser saber se a sua configuração de delegação foi bem-sucedida, use o botão Check current config. Isto dir-lhe-á se o ficheiro krb5.conf foi localizado e se a definição forwardable está correta. Note também que o Berserko lhe dirá se adquiriu ou não com sucesso um TGT forwardable quando usar o botão Test credentials.

É uma boa ideia certificar-se de que tem um ticket forwardable antes de começar a usar uma aplicação. Parece que o IIS pode colocar em cache o estado de autenticação de um utilizador no lado do servidor de uma forma que mudar de um ticket não forwardable para um forwardable não funcionará.

Estratégia de Autenticação

As definições nesta secção controlam se o Berserko tenta a autenticação Kerberos de forma 'reativa' (ou seja, espera receber uma resposta 401 do servidor e depois reenvia o pedido com um cabeçalho de autenticação Kerberos adicionado) ou 'proativa' (ou seja, adiciona o cabeçalho de autenticação Kerberos ao pedido de saída).

A vantagem da autenticação proativa é que requer apenas uma viagem de ida e volta HTTP, enquanto a autenticação reativa requer duas. A desvantagem da autenticação proativa é a possibilidade de serem enviados cabeçalhos de autenticação Kerberos para hosts que não os esperam. O Berserko também está mais apto a diagnosticar erros de autenticação quando usa a estratégia reativa.

A opção Proactive Kerberos authentication, only after initial 401 received é um híbrido destas duas abordagens, em que o Berserko autentica reativamente no primeiro pedido a um host, mas a partir daí será proativo.

Âmbito

Nesta secção, pode definir quais os hosts que são considerados no âmbito para a autenticação Kerberos.

Por predefinição, a caixa All hosts in this Kerberos domain in scope for Kerberos estará marcada. Isto significa que o Berserko tentará a autenticação Kerberos apenas a servidores web cujo nome de host termina com o nome DNS do domínio. Em muitas situações, isto será suficiente. No entanto, é possível ter aplicações web com Kerberos ativado cujo nome de host não assume esta forma (assumindo que o administrador configurou um Service Principal Name adequado). Para ter isso em conta, pode adicionar hosts adicionais a considerar no âmbito usando a lista à direita. Note que podem ser usados caracteres curinga (* corresponde a zero ou mais caracteres, ? corresponde a qualquer caractere exceto um ponto).

Em alternativa, pode marcar a caixa All hosts in scope for Kerberos authentication. Obviamente, isto tem a vantagem de não precisar de se preocupar em especificar o âmbito manualmente. A potencial desvantagem desta configuração é que pode levar o Berserko a enviar pedidos Kerberos ao KDC para obter tickets de serviço para hosts que não estão no domínio. Isto pode causar problemas de desempenho e problemas de privacidade (se não quiser que esta informação seja divulgada ao KDC). Isto provavelmente será um problema particular com a estratégia Proactive Kerberos authentication, caso em que o Berserko tentará adicionar um cabeçalho de autenticação Kerberos a todos os pedidos que passam pelo Burp. Esta combinação de opções não é recomendada, e o Berserko avisá-lo-á se for selecionada (mas não o impedirá efetivamente).

Se nem All hosts in this Kerberos domain in scope for Kerberos nem All hosts in scope for Kerberos authentication estiverem selecionadas, os únicos hosts no âmbito serão os que forem adicionados à lista.

A opção Plain hostnames considered part of domain, se selecionada, significa que 'nomes de host simples' (ou seja, nomes de host que consistem apenas num único componente) serão considerados parte do domínio (e, portanto, automaticamente no âmbito se All hosts in this Kerberos domain in scope for Kerberos estiver selecionada). A principal razão pela qual poderá querer desativar isto seria se a sua máquina estivesse associada a um domínio diferente daquele contra o qual está a autenticar usando o Berserko (nesse caso, os nomes de host simples provavelmente referem-se a hosts no domínio ao qual está associado).

Se selecionada, a opção Do not perform Kerberos authentication to servers which support NTLM instruirá o Berserko a não tentar autenticação Kerberos contra hosts que suportam NTLM para além de Kerberos (ou seja, hosts que devolvem tanto os cabeçalhos WWW-Authenticate: NTLM como WWW-Authenticate: Negotiate).

Registo

O Alert Level e o Logging Level podem ser configurados aqui, para NONE, NORMAL ou VERBOSE.

O Alert Level controla a quantidade de informação enviada para o separador Alerts do Burp.

O Logging Level controla a quantidade de informação enviada para a saída padrão do Berserko (isto pode ser visto no separador Extender). Note que aumentar o Logging Level para VERBOSE fará com que seja fornecida mais informação sobre quaisquer erros ou exceções que possam ocorrer.

Relações de Confiança de Domínio

Se as relações de confiança de domínio Kerberos estiverem em uso no seu ambiente, pode encontrar algumas orientações aqui.

Encaminhamento de Portas / Kerberos sobre TCP

Por predefinição, o Berserko realiza todas as interações Kerberos com o KDC através de UDP (porta 88). Se quiser usar TCP em vez disso, é possível. A razão mais comum para o fazer é provavelmente quando está em uso um encaminhamento de porta SSH para a porta TCP 88. Basta adicionar udp_preference_limit = 1 ao seu ficheiro krb5.conf, para que fique assim:

root@kitploit:~
[libdefaults]
    forwardable = true
    udp_preference_limit = 1

Configuração Avançada

É possível configurar o SPN que será usado para um determinado host, incluindo uma secção [berserko_spn_hints] no ficheiro krb5.conf (ver acima). A sintaxe é apresentada abaixo.

root@kitploit:~
[berserko_spn_hints]
    [email protected]
	server2.bar.org=app.domain2.local

O servidor de destino está no lado esquerdo do sinal de igual, e o SPN a usar está no lado direito. O realm para o SPN pode ser opcionalmente especificado (se não for, o Berserko tentará determinar o realm correto como normalmente). Não inclua aqui a parte HTTP/ do SPN.

Bugs

  • Se a interface do separador Berserko não for apresentada corretamente, tente usar o tema Metal do Burp.

Limitações

  • O Berserko não se dará particularmente bem com a funcionalidade Platform Authentication do próprio Burp. Não há problema em ter o Platform Authentication ativado, mas não o configure para nenhum dos hosts que requerem autenticação Kerberos (em vez de NTLM).
  • O Berserko não pode utilizar mapeamentos de hosts personalizados definidos através da funcionalidade Hostname Resolution do Burp ao resolver um nome de host de KDC. Se isto for um problema, basta especificar o endereço IP do KDC na caixa KDC host. Note que isto não é um problema para os pedidos reais enviados a partir do Burp, apenas para as comunicações do próprio Berserko com o KDC.

(Possíveis) Planos Futuros

  • Utilização de tickets Kerberos já adquiridos em máquinas associadas a um domínio (não sei se isto é possível ou não)
  • Capacidade de autenticar em vários domínios ao mesmo tempo (isto deverá funcionar bem)
  • Melhor controlo sobre tickets forwardable e delegação

❗ Nota Importante ❗

O Berserko não é compatível com versões do Burp v2 anteriores à v2020.5.1. Não há problemas com o Burp v1.

Isto é causado pelo facto de a versão do OpenJDK que acompanha as versões anteriores do Burp 2 não incluir parte da funcionalidade Kerberos usada pelo Berserko. Isto causará um erro java.lang.ClassNotFoundException: com.sun.security.jgss.ExtendedGSSContext ao tentar usar o Berserko.

A solução óbvia é atualizar para a v2020.5.1 ou posterior. Em alternativa, o Berserko deverá funcionar com qualquer versão do Burp v2 se o iniciar usando uma versão completa do ambiente de execução Java (ou seja, não a que vem empacotada com o Burp).

Assumindo que tem java no seu path:

root@kitploit:~
java -jar burpsuite_pro.jar

Consulte a documentação do Burp sobre como iniciar a partir da linha de comandos.

Baixar ferramenta