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
Outils/GitHubGitHub/skelsec/jackdaw
Cassage de Mots de PasseCollecte d'InformationsTests d'IntrusionDétection d'Anomalies
GitHubskelsec/jackdaw

jackdaw

rassembler rassembler rassembler

Voir le dépôt
58586il y a 1 anVé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

jackdaw

rassemble rassemble rassemble jackdaw_card

Qu'est-ce que c'est ?

Jackdaw a pour but de collecter toutes les informations de votre domaine, de les stocker dans une base de données SQL et de vous montrer de beaux graphiques sur la façon dont les objets de votre domaine interagissent entre eux et comment un attaquant potentiel pourrait exploiter ces interactions. Il est également doté d'une fonctionnalité pratique pour vous aider dans un projet de cassage de mots de passe en stockant/recherchant/rapportant les hachages/mots de passe/utilisateurs.

Informations d'utilisation rapide

  • Si vous n'utilisez pas la collecte automatique (par exemple, pas sur Windows), vous devrez créer une base de données initiale vide via dbinit
  • Vous devez d'abord effectuer enum. Cela peut être fait automatiquement sur Windows en double-cliquant sur l'exécutable, ou en tapant jackdaw.exe auto.
  • Ensuite, vous devrez exécuter nest pour obtenir l'interface web. Par défaut, elle est servie sous http://127.0.0.1:5000/nest ; il y a une API documentée SWAGGER sous http://127.0.0.1:5000/ui.
  • Interface web : vous devrez aller dans la vue domaine et cliquer sur Generate graph cache une seule fois pour obtenir les informations de bord dans un fichier cache. Cela peut prendre un certain temps, mais dans la ligne de commande, vous verrez une barre de progression.
  • Une fois le cache de graphe terminé, vous pouvez jouer avec le graphe dans la vue graphe, mais n'oubliez pas de sélectionner le bon numéro de cache en haut à gauche.

Astuces/conseils de performance

Cette section sera régulièrement mise à jour en fonction des retours des utilisateurs.

Collecte de données

Aucun conseil ici, même si certaines améliorations peuvent être apportées dans le code, rien qu'un utilisateur générique ne puisse faire.

Génération du fichier cache de données de graphe

La génération du fichier cache de données de graphe doit être effectuée une fois sur chaque graphe (et une seule fois), ce qui peut prendre du temps avec l'outil sqlalchemy par défaut.
Les performances et la vitesse peuvent être considérablement améliorées (plus de 50x de vitesse et 20x moins de mémoire) si vous utilisez le backend sqlite ET placez l'utilitaire en ligne de commande "sqlite3" quelque part dans le PATH. Je recommande cela à tous les utilisateurs.

Calcul de chemin et chargement des données de graphe

Voici le grand compromis. Les premières implémentations de Jackdaw utilisaient le module networkx comme backend de graphe car il est entièrement écrit en Python. Mais cela avait un coût significatif en mémoire et en vitesse. Pour que Jackdaw reste en Python pur, cette option existe toujours, mais l'utilisation du backend igraph est désormais la valeur par défaut.
Remarque : igraph est une bibliothèque C++ avec des liaisons Python. Elle a des wheels pré-compilées pour Windows et les principales distributions Linux, mais si vous utilisez Jackdaw sur autre chose (systèmes embarqués/téléphones mobiles/navigateurs web), vous devrez soit revenir à networkx, soit subir un temps de compilation de plusieurs heures.

Exemples de commandes

Énumération automatique - Windows uniquement, avec un utilisateur joint au domaine -

Pas besoin de pré-initialiser la base de données, cela sera fait automatiquement. En utilisant le binaire distribué, vous pouvez simplement double-cliquer sur jackdaw.exe
En utilisant comme script Python jackdaw auto

Initialisation de la base de données

jackdaw --sql sqlite:///<full path here>/test.db dbinit
SUR LES SYSTÈMES LINUX, <full path here> inclut le premier / donc vous aurez //// quatre (4) tirets avant le nom du fichier. Ne paniquez pas.

Énumération

Énumération complète avec sspi intégré - Windows uniquement

jackdaw --sql sqlite:///test.db enum 'ldap+sspi-ntlm://<domain>\<placeholder>@10.10.10.2' 'smb+sspi-ntlm://<domain>\<placeholder>@10.10.10.2'

Énumération complète avec nom d'utilisateur et mot de passe - indépendant de la plateforme

Le mot de passe est Passw0rd!
jackdaw --sql sqlite:///test.db enum 'ldap+ntlm-password://TEST\victim:[email protected]' 'smb+ntlm-password://TEST\victim:[email protected]'

Énumération LDAP uniquement avec nom d'utilisateur et mot de passe - indépendant de la plateforme

Le mot de passe est Passw0rd!
jackdaw --sql sqlite:///test.db ldap 'ldap+ntlm-password://TEST\victim:[email protected]'

Démarrer l'interface web interactive pour tracer le graphe et accéder aux fonctionnalités supplémentaires

jackdaw --sql sqlite:///<FULL PATH TO DB> nest

Ouvrez http://127.0.0.1:5000/ui pour l'API

Veuillez consulter la section Construction de l'interface utilisateur plus bas pour apprendre à construire l'interface. Une fois construite :

Ouvrez http://127.0.0.1:5000/nest pour l'interface graphique (affiche le graphe, mais loin d'être fonctionnel)

Fonctionnalités

Acquisition de données

via LDAP

La phase d'énumération LDAP acquiert des données sur les informations AD, les objets Utilisateur, Machine, OU, Groupe qui seront représentés comme un nœud dans le graphe, et comme une table séparée dans la base de données. De plus, le descripteur de sécurité de tous les objets susmentionnés sera analysé et les ACL pour la DACL ajoutées à la base de données. Ceci, avec les informations d'appartenance, sera représenté comme des arêtes dans le graphe. De plus, des requêtes SQL personnalisées peuvent être effectuées sur n'importe lequel des types de données susmentionnés si nécessaire.

via SMB

La phase d'énumération SMB acquiert des données sur les partages, les groupes locaux, les sessions, les données NTLM via la connexion à chaque machine du domaine (acquises via LDAP)

via Kerberos

Le module Kerberos effectue automatiquement le kerberoasting et l'aspreproasting

via les dumps LSASS (optionnel)

Le framework permet aux utilisateurs de télécharger des dumps mémoire LSASS pour stocker les identifiants et étendre la table d'informations de session. Les deux seront utilisés comme arêtes supplémentaires dans le graphe (mot de passe partagé et session respectivement). Le framework utilise également ces informations pour créer un rapport de mots de passe sur les identifiants faibles/partagés/cassés.

via les résultats DCSYNC (optionnel)

Le framework permet aux utilisateurs de télécharger les fichiers DCSYNC d'impacket pour stocker les identifiants. Ceux-ci seront utilisés comme arêtes supplémentaires dans le graphe (mot de passe partagé). Le framework utilise également ces informations pour créer un rapport de mots de passe sur les identifiants faibles/partagés/cassés.

via téléchargement manuel (optionnel)

Le framework permet d'étendre manuellement la base de données disponible dans tous les aspects. Exemple : lorsque des informations de session utilisateur sur un ordinateur donné sont découvertes (en dehors de l'énumération automatique), il est possible de télécharger manuellement ces sessions, ce qui remplira la base de données ainsi que le graphe de résultat.

Graphe

Le framework peut générer un graphe en utilisant les informations disponibles dans la base de données et le tracer via l'interface web (nest). De plus, la génération du graphe et les calculs de chemin peuvent être invoqués par programmation, soit en utilisant l'API web (point de terminaison /ui) soit les fonctions de l'objet graphe.

Détection d'anomalies

Le framework peut identifier les mauvaises configurations AD courantes sans génération de graphe. Actuellement uniquement via l'API web.

Utilisateur

La détection d'anomalies utilisateur implique la détection de permissions UAC non sécurisées et de valeurs de description utilisateur étendues. Cet ensemble de fonctionnalités devrait s'étendre à l'avenir avec la mise en œuvre de nouvelles fonctionnalités.

Machine

La détection d'anomalies machine implique la détection de permissions UAC non sécurisées, de signature SMB non obligatoire, de version de système d'exploitation obsolète, de machines hors domaine. Cet ensemble de fonctionnalités devrait s'étendre à l'avenir avec la mise en œuvre de nouvelles fonctionnalités.

Cassage de mots de passe

Le framework n'effectue aucun cassage, il organise seulement les hachages et les résultats du cassage
actuellement l'accent principal est mis sur les résultats dcsync d'impacket et aiosmb !NT et LM hachages uniquement!
Le processus type est le suivant :

  1. Récolte d'identifiants sous forme de fichier texte via impacket/aiosmb ou sous forme de dumps mémoire du processus LSASS via l'outil de votre choix.
  2. Télécharger les identifiants récoltés via l'API
  3. Interroger les hachages non cassés via l'API
  4. Les casser (hashcat ?)
  5. Télécharger les résultats vers le framework via l'API
  6. Générer un rapport sur les utilisateurs cassés/non cassés et la force des mots de passe et le partage de mots de passe

note de l'auteur : Cette fonctionnalité a été implémentée à la fois pour les attaquants et les défenseurs. Personnellement, je ne vois pas beaucoup de valeur ajoutée d'un côté ou de l'autre, car une fois qu'on a obtenu le hachage NT d'un utilisateur, c'est aussi bien que le mot de passe... Néanmoins, de plus en plus d'entreprises effectuent des exercices de force des mots de passe, et cette fonctionnalité pourrait les aider. Quant aux attaquants : c'est juste pour frimer à ce stade, mais faites comme bon vous semble. Peut-être effrayer la direction pour des points supplémentaires.

Important

Ce projet est en phase expérimentale ! Cela signifie plusieurs choses :

  1. il peut planter
  2. les contrôles que vous utilisez pourraient changer à l'avenir (très probablement)
  3. (le pire) La conception de la base de données n'est pas nécessairement adaptée aux demandes futures, elle peut donc changer. Aucun effort ne sera fait pour maintenir la rétrocompatibilité avec la structure de base de données en phase expérimentale !

Partie technique

Backend de base de données

Jackdaw utilise le module ORM SQLAlchemy, ce qui vous donne la possibilité d'utiliser n'importe quel backend de base de données SQL que vous souhaitez. Les tests sont principalement effectués sur SQLite pour des raisons évidentes. Aucune commande spécifique au backend ne sera utilisée dans ce projet qui pourrait vous limiter.

Construction de l'interface utilisateur

CECI N'EST NÉCESSAIRE QUE SI VOUS INSTALLEZ VIA GIT ET/OU MODIFIEZ QUELQUE CHOSE DANS LE CODE DE L'INTERFACE
L'interface a été écrite en React. Avant la première utilisation/installation, vous devez la construire. Pour cela, vous aurez besoin de nodejs et npm installés. Ensuite :

  1. Allez dans jackdaw/nest/site/nui
  2. Exécutez npm install
  3. Exécutez npm run build

Une fois ceci fait, l'interface est prête à être utilisée.

Remerciements

"Si j'ai vu plus loin, c'est en montant sur les épaules de géants."

Pour l'idée originale

BloodHound team

Pour le calcul des arêtes ACL

@dirkjanm (https://github.com/dirkjanm/)

Pour la super interface utilisateur

Zsolt Imre (https://github.com/keymandll)

Pour les parties de collecte de données

veuillez consulter la section des remerciements dans les modules aiosmb et msldap

Si j'ai oublié de mentionner quelqu'un, veuillez envoyer une PR

Télécharger l’outil