
smbcrawler est un outil sans fioritures qui prend des identifiants et une liste d'hôtes et 'crawle' (ou 'spiderise') ces partages.
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 :
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 :
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.
Exécutez-le comme ceci (10 threads, profondeur maximale 5) :
$ smbcrawler crawl -i hosts.txt -u pen.tester -p iluvb0b -d contoso.local -t 10 -D 5
SmbCrawler a subi une refonte majeure. Les changements les plus significatifs sont :
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.
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 actuelles : afficher une mise à jour de statut plus détailléePour plus d'informations, exécutez smbcrawler -h.
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.
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 :
--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.
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 :
$XDG_DATA_HOME/smbcrawler/ (~/.local/share/smbcrawler par défaut)--extra-profile-directory--extra-profile-fileLes 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.
comment : Une chaîne utile décrivant ce profilregex : 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 regexhigh_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 secretscomment, regex, regex_flags : Identique à ci-dessushigh_value : sa présence sera signalée et la profondeur d'exploration changée à l'infinicrawl_depth : Explorez ce partage ou répertoire jusqu'à une profondeur différente de celle définie par l'argument --depth