Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Berserko — Extension Burp Suite pour effectuer l'authentification Kerberos | Kitploit
Outils/GitHubGitHub/nccgroup/berserko
Proxies Web et InterceptionSécurité WebTests d'IntrusionAuthentification
GitHubnccgroup/berserko

Berserko

Extension Burp Suite pour effectuer l'authentification Kerberos

Voir le dépôt
105174il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Berserko - Authentification Kerberos pour Burp Suite

Publié en open source par NCC Group Plc - http://www.nccgroup.trust/

Développé par Richard Turnbull, richard [dot] turnbull [at] nccgroup [dot] com

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

Publié sous licence AGPL, voir LICENSE pour plus d'informations


❗ Note importante ❗

Le développement ultérieur de Berserko aura lieu à https://github.com/rteatea/Berserko


Introduction

Berserko est une extension Burp qui ajoute la prise en charge de l'authentification Kerberos. Elle est utile pour les tests dans un domaine Windows lorsque l'authentification NTLM n'est pas prise en charge (Burp gère déjà NTLM). Berserko n'exige pas que la machine exécutant Burp soit jointe au domaine (ni même qu'elle exécute Windows).

La seule solution existante dont nous ayons actuellement connaissance pour tester des applications Kerberos avec Burp consiste à passer par Fiddler, avec une authentification configurée selon ces instructions. Mais Fiddler est exclusivement Windows, et le chaînage de proxys ajoute de la complexité et nuit aux performances, il est donc agréable de disposer de la fonctionnalité Kerberos directement dans Burp.

Exigences système

  • Burp Suite
  • Testé sur Windows et Linux (Kali)

Installation

Téléchargez le dernier fichier jar de Berserko depuis l'onglet Releases, ou depuis le dossier berserko\releases

Allez dans l'onglet Extender de Burp, sélectionnez Add, assurez-vous que Java est sélectionné comme Extension type, puis pointez-le vers le fichier jar. Si tout se passe bien, l'onglet Berserko devrait être ajouté à l'interface de Burp.

Démarrage rapide

  • Allez dans l'onglet Berserko et cochez la case Do Kerberos authentication.
  • Cliquez sur le bouton Change dans le panneau Domain Settings et fournissez le nom DNS du domaine (pas le nom NETBIOS) et le nom d'hôte (ou l'adresse IP) d'un KDC (contrôleur de domaine).
  • Cliquez sur le bouton Test domain settings et vérifiez que vous obtenez une réponse Successfully contacted Kerberos service.
  • Cliquez sur le bouton Change dans le panneau Domain Credentials et fournissez un nom d'utilisateur et un mot de passe pour un compte de domaine (simplement le nom d'utilisateur, pas MYDOMAIN\user ni [email protected] ou quelque chose comme ça).
  • Activez la délégation Kerberos en laissant Berserko créer un fichier krb5.conf pour vous. Cliquez sur le bouton Create krb5.conf file dans le panneau Delegation et choisissez un emplacement approprié où le fichier peut être créé. N'importe où fera l'affaire. Vous ne voulez pas écraser un éventuel fichier krb5.conf existant au niveau du système. Répondez oui lorsque Berserko demande si vous voulez définir ce fichier comme fichier krb5.conf. C'est dommage de devoir faire cela (créer un fichier), mais ce n'est ni la faute de Berserko ni celle de Burp - c'est une limitation des API Kerberos de Java. Pour plus d'informations, voir les notes sur la délégation ci-dessous.
  • Cliquez sur le bouton Test credentials et vérifiez que vous obtenez une réponse "TGT successfully acquired". Espérons qu'elle dira aussi "TGT is forwardable so delegation should work".
  • L'authentification Kerberos devrait maintenant être opérationnelle pour les hôtes du domaine spécifié.

Paramètres

Il y a divers contrôles sur l'onglet Berserko de Burp.

La case Do Kerberos authentication est un interrupteur principal. Tant qu'elle n'est pas activée, Berserko ne fait rien du tout.

Le bouton Restore defaults remet Berserko à la configuration par défaut (dans laquelle aucun détail de domaine ni identifiants utilisateur n'est présent).

Le bouton Clear Kerberos state efface tous les tickets Kerberos et autres états côté client. La seule raison pour laquelle vous pourriez avoir besoin de l'utiliser serait si des modifications avaient été apportées à la configuration Kerberos côté serveur et que vous souhaitiez repartir d'un état vierge.

Le bouton Write tickets to log écrit des informations sur vos tickets Kerberos actuels dans le flux de journalisation de Berserko - cela peut être utile pour le débogage / le dépannage. Pour voir les journaux, allez dans l'onglet Extender de Burp, sélectionnez Berserko et regardez l'onglet Output en dessous. Il peut être judicieux d'utiliser l'option Save to file ici, car les données de tickets peuvent facilement remplir le tampon de journalisation de l'interface graphique.

Certains contrôles disposent d'un bouton d'aide qui affiche plus d'informations.

Paramètres du domaine

Spécifiez le nom DNS du domaine et l'hôte KDC à l'aide des contrôles de cette section. Les zones de texte ne peuvent pas être modifiées directement ; vous devez utiliser le bouton 'Change' pour les modifier.

Le Domain DNS Name doit être le nom DNS du domaine contre lequel vous souhaitez vous authentifier (pour être précis, il s'agit en réalité du realm Kerberos). Cela devrait ressembler à mydomain.acme.local. Il ne doit pas s'agir du nom NETBIOS du domaine (qui serait quelque chose comme MYDOMAIN).

L'hôte KDC doit être le nom d'hôte (ou l'adresse IP) d'un KDC Kerberos (Key Distribution Center). Dans un domaine Windows, un KDC est simplement un contrôleur de domaine.

Après avoir fourni le Domain DNS Name, vous pouvez utiliser le bouton Auto pour essayer de localiser automatiquement un KDC. Il procède en envoyant une requête DNS SRV pour le service Kerberos. Si l'un de vos serveurs DNS est un contrôleur de domaine pour le bon domaine, cela devrait fonctionner. Si ce n'est pas le cas, cela ne fonctionnera pas. ❗**Cette fonctionnalité ne fonctionnera pas dans les versions récentes de Burp, car les bibliothèques DNS nécessaires ne sont pas fournies avec le JRE intégré. Vous pouvez contourner ce problème en lançant sous un JRE complet comme décrit en haut de ce README.}❗

Lorsque le Domain DNS Name et l'hôte KDC ont été saisis, utilisez le bouton Test domain settings pour tester la connectivité. Si tout se passe bien, vous obtiendrez une réponse Successfully contacted Kerberos service.

Voir ce fichier pour beaucoup plus d'informations sur l'obtention des bonnes valeurs pour ces paramètres de domaine.

Identifiants du domaine

Spécifiez le nom d'utilisateur et le mot de passe d'un compte de domaine à l'aide des contrôles de cette section. Les zones de texte ne peuvent pas être modifiées directement ; vous devez utiliser le bouton 'Change' pour les modifier.

Le Username doit être simplement le nom d'utilisateur. Cela devrait ressembler à bob. Il ne doit pas s'agir de MYDOMAIN\bob ni de [email protected] ou similaire.

Après avoir fourni les identifiants, vous pouvez utiliser le bouton Test credentials. Cela tentera d'acquérir un ticket d'octroi de ticket Kerberos pour l'utilisateur spécifié. En cas de succès, vous obtiendrez une réponse TGT successfully acquired. En cas d'échec, notez qu'il s'agit d'une tentative d'authentification au domaine, alors veillez à ne pas verrouiller votre compte.

Le mot de passe ne sera pas enregistré dans la configuration de Berserko pour la prochaine fois, sauf si la case Save password in Burp config? est cochée. Tous les autres paramètres seront toutefois enregistrés.

Délégation

Certaines applications utilisent la délégation Kerberos côté serveur pour transmettre l'identité du client à d'autres serveurs (mais il n'existe pas de moyen simple de déterminer côté client si elle est utilisée).

Berserko prend bien en charge cela, mais il y a un piège. La délégation ne fonctionne que si l'utilisateur dispose d'un TGT forwardable (ticket d'octroi de ticket). L'implémentation Java de Kerberos ne fournit malheureusement aucun moyen de spécifier par programmation qu'un ticket forwardable doit être acquis. Cela ne peut être fait qu'en ajoutant une entrée appropriée au fichier de configuration krb5.conf.

Ainsi, pour que la délégation fonctionne, Berserko doit être pointé vers un fichier krb5.conf approprié, et deux approches sont possibles ici.

La chose la plus simple à faire, et l'approche recommandée, est d'utiliser le bouton Create krb5.conf file. Cela créera pour vous un fichier approprié à l'emplacement de votre choix. Vous pouvez le placer dans un répertoire temporaire, dans le répertoire de votre projet, ou n'importe où. Mais le même fichier peut être réutilisé indéfiniment, il peut donc être judicieux de le placer dans un endroit plus permanent. Le bouton Change vous permet de sélectionner un autre fichier à utiliser.

Si cela vous intéresse, le fichier krb5.conf créé est très simple et aura le contenu suivant :

root@kitploit:~
[libdefaults]
    forwardable = true

Alternativement, vous pouvez utiliser le bouton Change pour pointer vers un fichier krb5.conf existant sur le système. La seule raison pour laquelle vous pourriez vouloir faire cela serait s'il y avait d'autres paramètres Kerberos importants dans ce fichier que vous souhaiteriez que Berserko prenne en compte (ce qui devrait fonctionner correctement en théorie, mais n'a pas été testé en pratique). Notez que l'emplacement par défaut de ce fichier sous Linux est /etc/krb5.conf - les autres systèmes d'exploitation sont moins susceptibles d'en avoir un. Si vous pointez vers un fichier krb5.conf existant, assurez-vous de le modifier pour activer le transfert - ajoutez forwardable = true à la section [libdefaults] (ou individuellement pour chaque realm). Mais soyez prudent. Demander à Berserko de créer le fichier pour vous sera la meilleure option 99 % du temps.

Si vous voulez savoir si votre configuration de délégation est réussie, utilisez le bouton Check current config. Cela vous indiquera si le fichier krb5.conf a été localisé et si le paramètre forwardable est correct. Notez également que Berserko vous indiquera s'il a réussi ou non à acquérir un TGT forwardable lorsque vous utilisez le bouton Test credentials.

Il est conseillé de vous assurer que vous disposez d'un ticket forwardable avant de commencer à utiliser une application. Il semble qu'IIS puisse mettre en cache l'état d'authentification d'un utilisateur côté serveur d'une manière telle que le passage d'un ticket non forwardable à un ticket forwardable ne fonctionnera pas.

Stratégie d'authentification

Les paramètres de cette section contrôlent si Berserko tente l'authentification Kerberos « réactive » (c'est-à-dire attendre une réponse 401 du serveur puis renvoyer la requête avec un en-tête d'authentification Kerberos ajouté) ou « proactive » (c'est-à-dire ajouter l'en-tête d'authentification Kerberos à la requête sortante).

L'avantage de l'authentification proactive est qu'elle ne nécessite qu'un seul aller-retour HTTP, tandis que l'authentification réactive en nécessite deux. L'inconvénient de l'authentification proactive est qu'il est possible que des en-têtes d'authentification Kerberos soient envoyés à des hôtes qui ne les attendent pas. Berserko est également plus à même de diagnostiquer les erreurs d'authentification lorsqu'il utilise la stratégie réactive.

L'option Proactive Kerberos authentication, only after initial 401 received est un hybride de ces deux approches, où Berserko s'authentifie de manière réactive à la première requête vers un hôte, mais devient ensuite proactif.

Portée

Dans cette section, vous pouvez définir quels hôtes sont considérés comme dans le périmètre de l'authentification Kerberos.

Par défaut, la case All hosts in this Kerberos domain in scope for Kerberos est cochée. Cela signifie que Berserko ne tentera l'authentification Kerberos qu'auprès des serveurs web dont le nom d'hôte se termine par le nom DNS du domaine. Dans de nombreuses situations, cela sera suffisant. Cependant, il est possible d'avoir des applications web compatibles Kerberos avec un nom d'hôte qui ne prend pas cette forme (en supposant que l'administrateur a configuré un Service Principal Name approprié). Pour en tenir compte, vous pouvez ajouter des hôtes supplémentaires à considérer dans le périmètre à l'aide de la liste à droite. Notez que les jokers peuvent être utilisés (* correspond à zéro ou plusieurs caractères, ? correspond à n'importe quel caractère sauf un point).

Alternativement, vous pouvez cocher la case All hosts in scope for Kerberos authentication. Cela présente évidemment l'avantage de ne pas avoir à spécifier manuellement le périmètre. L'inconvénient potentiel de cette configuration est qu'elle pourrait amener Berserko à envoyer des requêtes Kerberos au KDC pour acquérir des tickets de service pour des hôtes qui ne sont pas dans le domaine. Cela pourrait entraîner des problèmes de performances et des problèmes de confidentialité (si vous ne voulez pas que ces informations soient divulguées au KDC). Cela risque d'être un problème particulier avec la stratégie Proactive Kerberos authentication, auquel cas Berserko essaiera d'ajouter un en-tête d'authentification Kerberos à chaque requête passant par Burp. Cette combinaison d'options n'est pas recommandée, et Berserko vous avertira si elle est sélectionnée (mais sans réellement l'empêcher).

Si ni All hosts in this Kerberos domain in scope for Kerberos ni All hosts in scope for Kerberos authentication ne sont sélectionnés, les seuls hôtes dans le périmètre seront ceux ajoutés à la liste.

L'option Plain hostnames considered part of domain, si elle est sélectionnée, signifie que les « noms d'hôte simples » (c'est-à-dire les noms d'hôte composés d'un seul élément) seront considérés comme faisant partie du domaine (et donc automatiquement dans le périmètre si All hosts in this Kerberos domain in scope for Kerberos est sélectionné). La principale raison pour laquelle vous pourriez vouloir désactiver cette option serait si votre machine était jointe à un domaine différent de celui contre lequel vous vous authentifiez avec Berserko (dans ce cas, les noms d'hôte simples se réfèrent probablement à des hôtes du domaine auquel vous êtes joint).

Si elle est sélectionnée, l'option Do not perform Kerberos authentication to servers which support NTLM demandera à Berserko de ne pas tenter l'authentification Kerberos contre les hôtes qui prennent en charge NTLM en plus de Kerberos (c'est-à-dire les hôtes qui renvoient à la fois les en-têtes WWW-Authenticate: NTLM et WWW-Authenticate: Negotiate).

Journalisation

Le Alert Level et le Logging Level peuvent être configurés ici, sur NONE, NORMAL ou VERBOSE.

Alert Level contrôle la quantité d'informations envoyée à l'onglet Alerts de Burp.

Logging Level contrôle la quantité d'informations envoyée à la sortie standard de Berserko (cela peut être consulté dans l'onglet Extender). Notez que l'augmentation du Logging Level à VERBOSE fournira plus d'informations sur les erreurs ou exceptions qui pourraient survenir.

Approbations de domaine

Si des approbations de domaine Kerberos sont utilisées dans votre environnement, vous pouvez trouver quelques conseils ici.

Redirection de ports / Kerberos sur TCP

Par défaut, Berserko effectue toutes les interactions Kerberos avec le KDC en UDP (port 88). Si vous souhaitez utiliser TCP à la place, c'est possible. La raison la plus courante de procéder ainsi est probablement lorsqu'une redirection de port SSH pour le port TCP 88 est utilisée. Ajoutez simplement udp_preference_limit = 1 à votre fichier krb5.conf, pour qu'il ressemble à ceci :

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

Configuration avancée

Il est possible de configurer le SPN qui sera utilisé pour un hôte particulier, en incluant une section [berserko_spn_hints] dans le fichier krb5.conf (voir ci-dessus). La syntaxe est indiquée ci-dessous.

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

Le serveur cible se trouve à gauche du signe égal, et le SPN à utiliser est à droite. Le realm du SPN peut éventuellement être spécifié (sinon, Berserko tentera de déterminer le realm correct comme d'habitude). N'incluez pas la partie HTTP/ du SPN ici.

Bogues

  • Si l'interface de l'onglet Berserko ne s'affiche pas correctement, essayez d'utiliser le thème Metal de Burp.

Limitations

  • Berserko ne s'entend pas particulièrement bien avec la fonctionnalité Platform Authentication de Burp. Il est acceptable d'avoir Platform Authentication activée, mais ne la configurez pas pour les hôtes qui nécessitent une authentification Kerberos (plutôt que NTLM).
  • Berserko ne peut pas utiliser les mappages d'hôtes personnalisés définis via la fonctionnalité Hostname Resolution de Burp lors de la résolution d'un nom d'hôte KDC. Si cela pose problème, spécifiez simplement l'adresse IP du KDC dans la case KDC host. Notez que cela ne pose pas de problème pour les requêtes réellement envoyées par Burp, uniquement pour les communications de Berserko avec le KDC.

(Possibles) Projets futurs

  • Utilisation de tickets Kerberos déjà acquis sur des machines jointes au domaine (pas sûr que cela soit possible ou non)
  • Capacité à s'authentifier auprès de plusieurs domaines en même temps (cela devrait bien fonctionner)
  • Meilleur contrôle des tickets forwardable et de la délégation

❗ Note importante ❗

Berserko n'est pas compatible avec Burp v2 antérieur à v2020.5.1. Il n'y a aucun problème avec Burp v1.

Cela est dû au fait que la version d'OpenJDK fournie avec les premières versions de Burp 2 n'inclut pas une partie de la fonctionnalité Kerberos utilisée par Berserko. Cela provoquera une erreur java.lang.ClassNotFoundException: com.sun.security.jgss.ExtendedGSSContext lors d'une tentative d'utilisation de Berserko.

La solution évidente est de passer à v2020.5.1 ou une version ultérieure. Alternativement, Berserko devrait fonctionner avec n'importe quelle version de Burp v2 si vous lancez avec une version complète de l'environnement d'exécution Java (c'est-à-dire pas celle fournie avec Burp).

En supposant que vous avez java dans votre PATH :

root@kitploit:~
java -jar burpsuite_pro.jar

Voir la documentation Burp sur le lancement depuis la ligne de commande.

Télécharger l’outil