
Extensión de Burp Suite para realizar autenticación Kerberos
Publicado como código abierto por NCC Group Plc - http://www.nccgroup.trust/
Desarrollado por Richard Turnbull, richard [dot] turnbull [at] nccgroup [dot] com
http://www.github.com/nccgroup/Berserko
Publicado bajo AGPL, consulte LICENSE para obtener más información
El desarrollo adicional de Berserko tendrá lugar en https://github.com/rteatea/Berserko
Berserko es una extensión de Burp que añade soporte para realizar autenticación Kerberos. Esto es útil para realizar pruebas en un dominio de Windows cuando no se admite la autenticación NTLM (Burp ya gestiona NTLM). Berserko no requiere que la máquina que ejecuta Burp esté unida al dominio (ni siquiera que esté ejecutando Windows).
La única solución existente que conocemos actualmente para probar aplicaciones Kerberos con Burp es encadenar a través de Fiddler, con la autenticación configurada según estas instrucciones. Pero Fiddler es solo para Windows, y encadenar proxies añade complejidad y perjudica el rendimiento, por lo que es bueno tener capacidad Kerberos dentro del propio Burp.
Obtenga el último archivo jar de Berserko desde la pestaña Releases, o desde la carpeta berserko\releases
Vaya a la pestaña Extender en Burp, seleccione Add, asegúrese de que Java está seleccionado como Extension type, y entonces indíquele el archivo jar. Si todo va bien, la pestaña Berserko debería añadirse a la interfaz de Burp.
La casilla Do Kerberos authentication es un interruptor general. Hasta que se active, Berserko no hará nada en absoluto.
El botón Restore defaults devolverá Berserko a la configuración predeterminada (en la que no hay detalles de dominio ni credenciales de usuario).
El botón Clear Kerberos state borrará todos los tickets Kerberos y cualquier otro estado en el cliente. La única razón por la que podría necesitar usar esto sería si se hubieran realizado cambios en la configuración de Kerberos en el lado del servidor y quisiera comenzar desde un estado limpio.
El botón Write tickets to log escribirá información sobre sus tickets Kerberos actuales en el flujo de registro de Berserko; esto puede ser útil para depurar y solucionar problemas. Para ver los registros, vaya a la pestaña Extender de Burp, seleccione Berserko y mire la pestaña Output de abajo. Puede tener sentido usar la opción Save to file aquí, porque los datos de los tickets pueden llenar fácilmente el búfer de registro en la interfaz gráfica.
Algunos controles tienen un botón de ayuda que mostrará más información.
Especifique el Domain DNS Name y el KDC Host utilizando los controles de esta sección. Los cuadros de texto no se pueden editar directamente; tiene que usar el botón 'Change' para modificarlos.
El Domain DNS Name debe ser el nombre DNS del dominio contra el que desea autenticarse (para ser precisos, en realidad es el realm de Kerberos). Debería ser algo como mydomain.acme.local. No debe ser el nombre NETBIOS del dominio (que sería algo como MYDOMAIN).
El KDC Host debe ser el nombre de host (o dirección IP) de un KDC de Kerberos (Key Distribution Center). En un dominio de Windows, un KDC es simplemente un controlador de dominio.
Una vez proporcionado el Domain DNS Name, puede usar el botón Auto para intentar localizar automáticamente un KDC. Lo hace enviando una consulta DNS SRV para el servicio Kerberos. Si uno de sus servidores DNS es un controlador de dominio para el dominio correcto, esto debería funcionar. Si no, no funcionará. ❗Esta funcionalidad no funcionará en versiones recientes de Burp, ya que las bibliotecas DNS necesarias no se incluyen como parte del JRE empaquetado. Puede solucionarlo ejecutando con un JRE completo como se describe al principio de este README.❗
Cuando se hayan introducido el Domain DNS Name y el KDC Host, use el botón Test domain settings para probar la conectividad. Si todo va bien, obtendrá una respuesta Successfully contacted Kerberos service.
Consulte este archivo para obtener mucha más información sobre cómo obtener los valores correctos para estos ajustes de dominio.
Especifique el Username y la Password para una cuenta de dominio utilizando los controles de esta sección. Los cuadros de texto no se pueden editar directamente; tiene que usar el botón 'Change' para modificarlos.
El Username debe ser simplemente el nombre de usuario simple. Debería ser algo como bob. No debe ser MYDOMAIN\bob ni [email protected] ni algo similar.
Una vez proporcionadas las credenciales, puede usar el botón Test credentials. Esto intentará adquirir un ticket de concesión de tickets (ticket-granting ticket) de Kerberos para el usuario especificado. Si tiene éxito, obtendrá una respuesta TGT successfully acquired. Si no tiene éxito, tenga en cuenta que se trata de un intento de autenticación de dominio, así que tenga cuidado de no bloquear su cuenta.
La contraseña no se guardará en la configuración de Berserko para la próxima vez a menos que se marque la casilla Save password in Burp config?. Sin embargo, el resto de ajustes sí se guardarán.
Algunas aplicaciones usan la delegación Kerberos en el lado del servidor para reenviar la identidad del cliente a otros servidores (pero no hay una forma fácil de determinar desde el lado del cliente si esto está en uso).
Berserko sí lo admite, pero hay una pega. La delegación solo funciona si el usuario tiene un TGT (ticket-granting ticket) forwardable (reenviable). La implementación de Kerberos en Java, lamentablemente, no proporciona una forma de especificar mediante programación que se debe adquirir un ticket reenviable. Esto solo se puede hacer añadiendo una entrada apropiada al archivo de configuración krb5.conf.