
rassembler rassembler rassembler
rassemble rassemble rassemble

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.
dbinitenum. Cela peut être fait automatiquement sur Windows en double-cliquant sur l'exécutable, ou en tapant jackdaw.exe auto.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.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.vue graphe, mais n'oubliez pas de sélectionner le bon numéro de cache en haut à gauche.Cette section sera régulièrement mise à jour en fonction des retours des utilisateurs.
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.
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.
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.
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
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.
jackdaw --sql sqlite:///test.db enum 'ldap+sspi-ntlm://<domain>\<placeholder>@10.10.10.2' 'smb+sspi-ntlm://<domain>\<placeholder>@10.10.10.2'
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]'
Le mot de passe est Passw0rd!
jackdaw --sql sqlite:///test.db ldap 'ldap+ntlm-password://TEST\victim:[email protected]'
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)
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.
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)
Le module Kerberos effectue automatiquement le kerberoasting et l'aspreproasting
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.
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.
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.
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.
Le framework peut identifier les mauvaises configurations AD courantes sans génération de graphe. Actuellement uniquement via l'API web.
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.
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.
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 :
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.
Ce projet est en phase expérimentale ! Cela signifie plusieurs choses :
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.
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 :
jackdaw/nest/site/nuinpm installnpm run buildUne fois ceci fait, l'interface est prête à être utilisée.
"Si j'ai vu plus loin, c'est en montant sur les épaules de géants."
BloodHound team
@dirkjanm (https://github.com/dirkjanm/)
Zsolt Imre (https://github.com/keymandll)
veuillez consulter la section des remerciements dans les modules aiosmb et msldap