
Extensão do Burp Suite para realizar autenticação Kerberos
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
O desenvolvimento adicional do Berserko terá lugar em https://github.com/rteatea/Berserko
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.
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.
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.
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.
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.
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.