
3 outils qui fonctionnent ensemble pour simplifier la reconnaissance des partages de fichiers Windows
L'une des tâches les plus chronophages pour un red teamer est de fouiller dans les systèmes de fichiers et les partages, en essayant d'identifier toute information potentiellement sensible. SMBCrunch permet à un red teamer d'identifier rapidement les partages de fichiers Windows dans un réseau, d'effectuer un listage récursif des répertoires des partages fournis, et peut même récupérer un fichier du partage distant s'il ressemble à une cible intéressante.
Il y a trois (3) outils différents qui fonctionnent ensemble. Lisez les trois sections ci-dessous pour comprendre comment ils fonctionnent ensemble.
Étant donné un fichier (ou un fichier gnmap), SMBHunt trouve tous les partages de fichiers Windows associés aux serveurs fournis (si un fichier gnmap est fourni, il examine les serveurs avec le port 445 ouvert). Si aucun identifiant n'est fourni pour effectuer la vérification, il vérifiera les partages de session nulle.
Avertissement : si votre utilisateur a accès à un partage sur le serveur, le script affichera tous les partages hébergés par ce serveur. Si un partage est listé dans cette sortie, cela ne signifie pas que vous avez accès à ce partage. Utilisez l'outil suivant pour cela.
Ce script vous avertit si les identifiants que vous fournissez échouent pour éviter de verrouiller les comptes de domaine. Le commutateur '-f' remplace cette protection.
Ce script ne vérifie un serveur qu'avec un seul identifiant. C'est volontaire car le serveur répondra avec une liste complète des partages si l'utilisateur a accès à un seul partage sur le système.
./SMBHunt.pl [-a <account>] -i <file> [-o <output_file>]
./SMBHunt.pl -a 'testdomain\john:hunter2' -i portscan445.gnmap -o shares_found.txt
./SMBHunt.pl -h
-a, --account <string>
Identifiants utilisateur à tester. Les noms d'utilisateur sont acceptés sous la forme 'Domain\Username:Password' ('Domain' est facultatif) Si aucun compte n'est fourni, le script vérifie les partages de session nulle.
-i, --inputFile <file>
Un fichier de systèmes séparés par une nouvelle ligne, ou un fichier gnmap d'un scan de ports contenant le port 445. Chaque serveur avec le port 445 ouvert sera vérifié pour les partages SMB.
-o, --output <file>
Imprimer les résultats dans un fichier
-f, --force
Force le script à continuer même si l'identifiant de domaine peut être incorrect.
--noipc
Ne pas afficher les partages IPC (IPC$)
--nohidden
Ne pas afficher les partages cachés (C$, IPC$, ADMIN$, etc)
SMBList prendra le fichier de sortie de "SMBHunt.pl" (ou un fichier de partages séparés par une nouvelle ligne au format "\server\share") et effectuera un listage récursif des répertoires de ces partages en utilisant les identifiants fournis. SMBList tentera de s'authentifier au partage jusqu'à ce qu'un identifiant valide soit trouvé dans la liste fournie. Il stockera ensuite les listages de répertoires dans un sous-dossier spécifié.
Cela rend le listage des fichiers extrêmement facile à parcourir avec grep !
** Le meilleur fichier de résultat à utiliser est : /ALL_COMBINED_RESULTS.txt **
./SMBList.pl -c <credential/file> -s <share/file> -o <nonexistent directory>
./SMBList.pl -c credentials_found.txt -s shares_found.txt -o share_listing -m 150
./SMBList.pl -h
-c, --credentials <credential/file>
Un seul identifiant ou un fichier d'identifiants à tester. Les identifiants sont acceptés sous la forme 'Domain\Username:Password' séparés par une nouvelle ligne (si vous fournissez un fichier).
-s, --shares <share/file>
Un seul partage ou un fichier de partages à tester. Chaque identifiant sera testé pour l'autorisation jusqu'à ce qu'un valide soit trouvé. Les partages doivent être au format "\server\share", séparés par une nouvelle ligne (si vous fournissez un fichier).
-o, --output <nonexistent directory>
Un nouveau répertoire sera créé avec ce nom. Pour la protection de la sortie, le script ne peut pas être exécuté si ce répertoire existe déjà. Il doit s'agir d'un répertoire qui n'existe pas !
-m, --maxexec <seconds>
Le temps maximum alloué au dump d'un partage, en secondes. Par défaut 300 secondes (5 minutes).
-f, --force
Ne jamais retirer un partage de la liste en cas d'erreur et ne jamais retirer un identifiant s'il reçoit un message d'échec de connexion. Si vous utilisez ce drapeau, assurez-vous de savoir ce que vous faites ! Vous risquez de verrouiller des comptes si vous n'êtes pas prudent !
-n, --nocreds
Ne pas inclure les identifiants dans la sortie. AVERTISSEMENT : si vous utilisez ce commutateur, vous ne pouvez pas utiliser la sortie avec l'outil suivant, "SMBGrab.pl".
Les listages de fichiers de SMBList.pl peuvent être redirigés vers cet utilitaire pour récupérer les fichiers souhaités depuis les partages. Le listage original de SMBList.pl doit être "grepé" avant d'être passé à ce script, sinon tous les fichiers seront téléchargés (ce qui équivaut à copier la totalité du partage et c'est mauvais).
Ce script nécessite que SMBList.pl soit redirigé vers lui. Regardez "Exemple d'utilisation" ci-dessous
./SMBGrab.pl [-s <directory>]
grep -i 'password.txt' share_listing/ALL_COMBINED_RESULTS.TXT | ./SMBGrab.pl -s savedfiles
./SMBGrab.pl -h
Si aucun argument n'est fourni, le fichier est récupéré depuis le partage et affiché à l'utilisateur. Il n'est pas sauvegardé.
-s, --savedir <directory>
Un répertoire pour sauvegarder tous les fichiers récupérés. Si ce répertoire n'existe pas, il sera créé. Utiliser cet argument sauvegarde les fichiers mais empêche leur affichage à l'écran.
-a, --all
Lire tous les fichiers redirigés. Sans ce commutateur, le script protège contre le téléchargement accidentel de quantités massives de fichiers en limitant l'entrée à 100 fichiers.
-n, --noedit
Cela préservera les fichiers dans leur forme originale. Si ce commutateur n'est pas utilisé, une note sera ajoutée en bas de chaque fichier contenant des informations sur les métadonnées du fichier (heures de lecture/écriture, emplacement du fichier dans le partage, etc.)
-h, --help
Afficher un menu d'aide
N'hésitez pas à me contacter pour toute modification ou demande de fonctionnalité !