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
smbcrawler — smbcrawler est un outil sans fioritures qui prend des identifiants et une liste d'hôtes et 'crawle' (ou 'spiderise') ces partages. | Kitploit
Outils/GitHubGitHub/syss-research/smbcrawler
ReconnaissanceAnalyse des VulnérabilitésExfiltration de DonnéesCollecte d'InformationsSécurité RéseauTests d'Intrusion
GitHubsyss-research/smbcrawler

smbcrawler

smbcrawler est un outil sans fioritures qui prend des identifiants et une liste d'hôtes et 'crawle' (ou 'spiderise') ces partages.

Voir le dépôt
18926il y a 9 moisVé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

SmbCrawler

SmbCrawler est un outil sans fioritures qui prend des identifiants et une liste d'hôtes et 'explore' (ou 'araignée') ces partages. Fonctionnalités :

  • accepte les noms d'hôtes, les adresses IP, les plages IP ou un fichier xml nmap en entrée
  • vérifie les permissions (la vérification des permissions d'écriture est facultative, car elle nécessite la création d'un répertoire vide sur le partage)
  • la profondeur d'exploration est personnalisable
  • produit des résultats dans des formats lisibles par machine ou sous forme de rapport HTML interactif
  • support du pass-the-hash
  • téléchargement automatique des fichiers intéressants
  • signale les secrets potentiels
  • multithreadé
  • mettable en pause
  • ignorer interactivement des partages et hôtes individuels

Installation

Si vous avez besoin d'instructions sur la façon d'installer un paquet Python, je vous recommande de vous assurer que vous avez pipx installé et d'exécuter pipx install smbcrawler.

SmbCrawler peut automatiquement convertir certains fichiers binaires comme PDF, XLSX, DOCX, ZIP, etc. en texte brut en utilisant MarkItDown. Comme ce paquet tire beaucoup de dépendances, il est marqué comme un extra. Cependant, il est fortement recommandé pour obtenir les meilleurs résultats. Si vous souhaitez convertir automatiquement des binaires, installez SmbCrawler comme ceci :

root@kitploit:~
pipx install 'smbcrawler[binary-conversion]'

L'ajout de la complétion shell est fortement recommandé. En tant qu'application Python utilisant la bibliothèque click, vous pouvez ajouter la complétion par tabulation à bash, zsh et fish en utilisant le mécanisme habituel.

Exemple

Exécutez-le comme ceci (10 threads, profondeur maximale 5) :

root@kitploit:~
$ smbcrawler crawl -i hosts.txt -u pen.tester -p iluvb0b -d contoso.local -t 10 -D 5

Changements majeurs dans la version 1.0

SmbCrawler a subi une refonte majeure. Les changements les plus significatifs sont :

  • Nous avons nettoyé la CLI et introduit un mécanisme de 'profil' pour orienter le comportement de l'explorateur
  • La sortie est maintenant une base de données sqlite au lieu de fichiers JSON éparpillés
  • Les permissions sont maintenant signalées de manière plus granulaire

Les anciens arguments de la CLI concernant les 'fichiers intéressants', les 'partages ennuyeux' etc. étaient lourds et confus. Nous utilisons désormais des 'profils' ; voir ci-dessous pour plus de détails.

Aussi, j'ai réalisé que j'avais essentiellement réinventé les bases de données relationnelles, mais très mal, alors pourquoi ne pas utiliser sqlite directement ? L'approche sqlite nous permet de produire un joli rapport HTML interactif avec de bonnes performances. Vous pouvez toujours exporter les résultats dans divers formats si vous devez utiliser les données dans un pipeline d'outils.

L'ancienne façon dont SmbCrawler signalait les permissions n'était parfois pas très utile. Par exemple, il n'est pas rare d'avoir des permissions de lecture dans le répertoire racine du partage, mais tous les sous-répertoires sont protégés, par exemple pour les profils utilisateurs. SmbCrawler signalera désormais jusqu'à quelle profondeur il a pu lire l'arborescence des répertoires d'un partage et s'il a atteint le maximum ou s'il aurait pu aller plus loin si vous aviez fourni une valeur plus élevée pour l'argument de profondeur maximale.

Si vous préférez l'ancienne version, elle est toujours disponible sur PyPI et installable avec pipx install smbcrawler==0.2.0, par exemple.

Utilisation

Pendant l'exécution, vous pouvez utiliser les touches suivantes :

  • p : mettre en pause l'explorateur et ignorer des hôtes ou partages individuels
  • <space> : afficher la progression actuelle
  • s : afficher une mise à jour de statut plus détaillée

Pour plus d'informations, exécutez smbcrawler -h.

Notes

Même dans des réseaux de taille moyenne, SmbCrawler trouvera des tonnes de données. Le défi est de réduire les faux positifs.

Notes sur les permissions

Il est important de réaliser que les permissions peuvent s'appliquer au niveau du service et au niveau du système de fichiers. Le service SMB distant peut vous permettre de vous authentifier et votre compte utilisateur peut avoir des permissions de lecture en principe, mais il pourrait manquer ces permissions sur le système de fichiers.

SmbCrawler signalera si vous avez les permissions de :

  • vous authentifier contre une cible en tant qu'invité et lister les partages
  • vous authentifier contre une cible avec les identifiants utilisateur
  • accéder à un partage en tant qu'invité
  • accéder à un partage avec les identifiants utilisateur
  • créer un répertoire dans le répertoire racine du partage
  • le niveau de répertoire le plus profond d'un partage qui a pu être accédé (limité par l'argument --depth)

Comme il n'est pas trivial de vérifier les permissions des partages SMB sans tenter l'action en question, SmbCrawler tentera de créer un répertoire sur chaque partage. Son nom est smbcrawler_DELETEME_<8 caractères aléatoires> et sera supprimé immédiatement, mais soyez-en conscient.

[!WARNING] Parfois, vous avez la permission de créer des répertoires, mais pas de les supprimer, vous laisserez donc un répertoire vide.

Profils

Pour décider quoi faire avec certains partages, fichiers ou répertoires, SmbCrawler a une fonctionnalité appelée 'profils'. Jetez un œil au profil par défaut.

Les profils sont chargés à partir de fichiers avec les extensions *.yml ou *.yaml depuis ces emplacements :

  • Le profil par défaut intégré
  • $XDG_DATA_HOME/smbcrawler/ (~/.local/share/smbcrawler par défaut)
  • Le répertoire supplémentaire défini par --extra-profile-directory
  • Les fichiers supplémentaires définis par --extra-profile-file

Les profils de chaque emplacement remplacent les définitions précédentes.

La valeur regex détermine si un profil correspond, et le dernier profil correspondant sera utilisé. Toutes les expressions régulières sont insensibles à la casse, reflétant le comportement le plus courant dans le monde Windows.

Comme il peut être déroutant de comprendre comment les profils de différentes sources fonctionnent ensemble, assurez-vous d'utiliser le paramètre --dry-run. Il vous montre la configuration effective et ne fait rien de plus.

Regardons chaque section, qui est toujours une liste de dictionnaires. Chaque clé du dictionnaire est une étiquette arbitraire et chaque valeur est à nouveau un dictionnaire avec différentes propriétés.

Fichiers

  • comment : Une chaîne utile décrivant ce profil
  • regex : Une expression régulière qui définit à quels fichiers ce profil s'applique. La dernière regex qui correspond est celle qui compte.
  • regex_flags : Un tableau de drapeaux qui seront passés à la fonction match de la regex
  • high_value (défaut : false) : Si un fichier est de 'haute valeur', sa présence sera signalée, mais il ne sera pas nécessairement téléchargé (pensez aux disques durs virtuels - importants, mais trop gros pour être téléchargés automatiquement)
  • download (défaut : true) : Si true, les premiers 200KiBi seront téléchargés (ou le fichier entier si high_value=true) et analysés pour trouver des secrets

Partages et répertoires

  • comment, regex, regex_flags : Identique à ci-dessus
  • high_value : sa présence sera signalée et la profondeur d'exploration changée à l'infini
  • crawl_depth : Explorez ce partage ou répertoire jusqu'à une profondeur différente de celle définie par l'argument --depth

Secrets

  • comment, regex_flags : Identique à ci-dessus
  • regex : Une expression régulière correspondant au secret. Le secret lui-même peut être un groupe nommé avec le nom secret.

Flux de travail typique

Il est logique d'exécuter d'abord SmbCrawler avec une profondeur d'exploration de 1 pour avoir une idée de ce avec quoi vous travaillez. Dans ce premier passage, vous pouvez activer la vérification d'écriture avec -w :

root@kitploit:~
$ smbcrawler -C permissions_check.crwl crawl -D1 -t10 -w \
    -i <INPUT FILE> -u <USER> -d <DOMAIN> -p <PASSWORD>

Notez que cela vérifie les permissions d'écriture et de lecture uniquement dans le répertoire racine de chaque partage. Seul un passage complet vous en dira plus sur la profondeur des permissions de lecture.

Après la vérification initiale des permissions, vous pouvez identifier les partages intéressants et ennuyeux pour votre prochain passage ou plusieurs passages. Certains partages comme SYSVOL et NETLOGON apparaissent plusieurs fois, vous devriez donc définir la profondeur d'exploration à zéro lors de votre prochain passage et choisir un hôte pour analyser ces partages en double lors d'un troisième passage. Voici un exemple :

root@kitploit:~
$ smbcrawler -C dc_only.crwl crawl -D -1 <DC IP> \
    -u <USER> -d <DOMAIN> -p <PASSWORD>
$ smbcrawler -C full.crwl crawl -D5 -t10 -i <NEW INPUT FILE> \
    -u <USER> -d <DOMAIN> -p <PASSWORD> \
    --extra-profile-file skip_sysvol.yml

Ici, skip_sysvol.yml serait :

root@kitploit:~
shares:
  sysvol:
    comment: "Skip sysvol and netlogon share"
    regex: 'SYSVOL|NETLOGON'
    crawl_depth: 0

N'hésitez pas à inclure ici d'autres partages que vous pensez ne pas valoir la peine d'être explorés.

Sortie

Les données brutes sont contenues dans une base de données SQLite et un répertoire (output.crwl et output.crwl.d par défaut). Le répertoire contient deux autres répertoires : un avec les fichiers téléchargés rendus uniques par le contenu de hachage et un répertoire miroir de tous les partages avec des liens symboliques pointant vers les fichiers de contenu. Ce dernier est utile pour grepper à travers tous les fichiers téléchargés.

Les données peuvent être transformées en différents formats. Vous pouvez également simplement accéder à la base de données avec sqlitebrowser, par exemple. Des vues utiles ont été prédéfinies. Ou vous pouvez sortir du JSON et utiliser jq pour manipuler les données.

Si vous souhaitez afficher tous les partages que vous avez pu lire au-delà du répertoire racine dans un tableau LaTeX, par exemple, utilisez cette requête :

root@kitploit:~
SELECT target_id || " & " || name || " & " || remark || " \\"
FROM share
WHERE read_level > 0
ORDER BY target_id, name

Il existe également une fonctionnalité expérimentale de sortie HTML. Elle n'est peut-être pas encore entièrement utile pour de grandes quantités de données.

Aider

Si vous remarquez beaucoup de faux positifs ou de faux négatifs dans les secrets signalés, aidez-nous et faites-le moi savoir. Les contributions de la communauté sont importantes pour améliorer la détection automatique. Le meilleur scénario : fournir une pull request avec des modifications du fichier de profil par défaut.

Crédits

Adrian Vollmer, SySS GmbH

Licence

Licence MIT ; voir LICENSE pour les détails.

Télécharger l’outil