139,445 - Pentesting SMB
139,445 - Pentesting SMB
Port 139
Le Système d'entrée/sortie de base du réseau** (NetBIOS)** est un protocole logiciel conçu pour permettre aux applications, aux PC et aux ordinateurs de bureau au sein d'un réseau local (LAN) d'interagir avec le matériel réseau et faciliter la transmission de données à travers le réseau. L'identification et la localisation des applications logicielles fonctionnant sur un réseau NetBIOS sont réalisées via leurs noms NetBIOS, qui peuvent comporter jusqu'à 16 caractères et sont souvent distincts du nom de l'ordinateur. Une session NetBIOS entre deux applications est initiée lorsqu'une application (agissant en tant que client) émet une commande pour "appeler" une autre application (agissant en tant que serveur) en utilisant le Port TCP 139.
Port 445
Techniquement, le Port 139 est appelé 'NBT sur IP', tandis que le Port 445 est identifié comme 'SMB sur IP'. L'acronyme SMB signifie 'Server Message Blocks', également connu de nos jours sous le nom de Common Internet File System (CIFS). En tant que protocole réseau de couche application, SMB/CIFS est principalement utilisé pour permettre l'accès partagé aux fichiers, imprimantes, ports série, et faciliter diverses formes de communication entre les nœuds d'un réseau.
Par exemple, dans le contexte de Windows, il est souligné que SMB peut fonctionner directement sur TCP/IP, éliminant ainsi la nécessité de NetBIOS sur TCP/IP, grâce à l'utilisation du port 445. En revanche, sur différents systèmes, l'utilisation du port 139 est observée, indiquant que SMB est exécuté en conjonction avec NetBIOS sur TCP/IP.
SMB
Le protocole Server Message Block (SMB), fonctionnant dans un modèle client-serveur, est conçu pour réguler l'accès aux fichiers, répertoires et autres ressources réseau comme les imprimantes et routeurs. Principalement utilisé dans la série de systèmes d'exploitation Windows, SMB garantit la compatibilité ascendante, permettant aux appareils avec des versions plus récentes du système d'exploitation de Microsoft d'interagir de manière transparente avec ceux exécutant des versions plus anciennes. De plus, le projet Samba propose une solution logicielle gratuite, permettant l'implémentation de SMB sur les systèmes Linux et Unix, facilitant ainsi la communication interplateforme via SMB.
Les partages, représentant des parties arbitraires du système de fichiers local, peuvent être fournis par un serveur SMB, rendant la hiérarchie visible pour un client en partie indépendante de la structure réelle du serveur. Les Listes de contrôle d'accès (ACL), qui définissent les droits d'accès, permettent un contrôle précis sur les autorisations des utilisateurs, incluant des attributs tels que exécution
, lecture
et accès complet
. Ces autorisations peuvent être attribuées à des utilisateurs individuels ou des groupes, en fonction des partages, et sont distinctes des autorisations locales définies sur le serveur.
Partage IPC$
L'accès au partage IPC$ peut être obtenu via une session nulle anonyme, permettant d'interagir avec des services exposés via des tubes nommés. L'utilitaire enum4linux
est utile à cette fin. Utilisé correctement, il permet d'obtenir :
Des informations sur le système d'exploitation
Des détails sur le domaine parent
Une compilation des utilisateurs et groupes locaux
Des informations sur les partages SMB disponibles
La politique de sécurité système effective
Cette fonctionnalité est cruciale pour les administrateurs réseau et les professionnels de la sécurité afin d'évaluer la posture de sécurité des services SMB (Server Message Block) sur un réseau. enum4linux
offre une vue complète de l'environnement SMB du système cible, essentielle pour identifier les vulnérabilités potentielles et garantir que les services SMB sont correctement sécurisés.
La commande ci-dessus est un exemple de la façon dont enum4linux
pourrait être utilisé pour effectuer une énumération complète contre une cible spécifiée par target_ip
.
Qu'est-ce que NTLM
Si vous ne savez pas ce qu'est NTLM ou si vous voulez savoir comment cela fonctionne et comment en abuser, vous trouverez très intéressante cette page sur NTLM où est expliqué comment ce protocole fonctionne et comment vous pouvez en tirer parti:
NTLMÉnumération du serveur
Analyser un réseau à la recherche d'hôtes:
Version du serveur SMB
Pour rechercher d'éventuelles failles dans la version SMB, il est important de connaître la version utilisée. Si cette information n'apparaît pas dans d'autres outils utilisés, vous pouvez :
Utiliser le module auxiliaire MSF _auxiliary/scanner/smb/smb_version
Ou ce script :
Recherche d'exploit
Identifiants Possibles
Nom d'utilisateur(s) | Mots de passe courants |
(vide) | (vide) |
invité | (vide) |
Administrateur, admin | (vide), mot de passe, administrateur, admin |
arcserve | arcserve, sauvegarde |
tivoli, tmersrvd | tivoli, tmersrvd, admin |
backupexec, backup | backupexec, backup, arcada |
test, lab, demo | mot de passe, test, lab, demo |
Brute Force
Informations sur l'environnement SMB
Obtenir des Informations
Enumérer les utilisateurs, les groupes et les utilisateurs connectés
Ces informations devraient déjà être collectées à partir de enum4linux et enum4linux-ng
Enumérer les utilisateurs locaux
Une ligne
Metasploit - Énumérer les utilisateurs locaux
Énumération de LSARPC et SAMR rpcclient
rpcclient enumerationConnexion GUI depuis Linux
Dans le terminal :
xdg-open smb://cascade.htb/
Dans la fenêtre du navigateur de fichiers (nautilus, thunar, etc)
smb://friendzone.htb/general/
Énumération des dossiers partagés
Liste des dossiers partagés
Il est toujours recommandé de vérifier si vous pouvez accéder à quoi que ce soit, si vous n'avez pas d'identifiants, essayez d'utiliser les identifiants nuls/utilisateur invité.
Connecter/Lister un dossier partagé
Énumérer manuellement les partages Windows et s'y connecter
Il est possible que vous soyez restreint à afficher les partages de la machine hôte et lorsque vous essayez de les lister, il semble qu'il n'y ait aucun partage auquel se connecter. Il pourrait donc être utile d'essayer de vous connecter manuellement à un partage. Pour énumérer les partages manuellement, vous voudrez peut-être rechercher des réponses telles que NT_STATUS_ACCESS_DENIED et NT_STATUS_BAD_NETWORK_NAME, lorsque vous utilisez une session valide (par exemple, une session nulle ou des identifiants valides). Cela peut indiquer si le partage existe et que vous n'y avez pas accès, ou si le partage n'existe pas du tout.
Les noms de partage courants pour les cibles Windows sont
C$
D$
ADMIN$
IPC$
PRINT$
FAX$
SYSVOL
NETLOGON
(Noms de partage courants tirés de Network Security Assessment 3rd edition)
Vous pouvez essayer de vous y connecter en utilisant la commande suivante
ou ce script (utilisant une session nulle)
Exemples
Enumération SMB
L'enumération SMB est une étape cruciale lors de l'évaluation de la sécurité d'un réseau. Voici quelques commandes couramment utilisées pour l'enumération SMB :
Enumération des utilisateurs
Enumération des partages
Enumération des informations sur le système
Enumération des versions SMB
Ces commandes peuvent vous aider à recueillir des informations précieuses sur un système SMB et à identifier les potentielles vulnérabilités à exploiter.
Énumérer les partages depuis Windows / sans outils tiers
PowerShell
Console CMD
MMC Snap-in (graphique)
explorer.exe (graphique), entrez \\<ip>\
pour voir les partages non cachés disponibles.
Monter un dossier partagé
Télécharger des fichiers
Lisez les sections précédentes pour apprendre comment vous connecter avec des identifiants/Pass-the-Hash.
Recherche de dossiers partagés de domaine
Snaffler****
Commandes :
mask : spécifie le masque utilisé pour filtrer les fichiers dans le répertoire (par exemple, "" pour tous les fichiers)
recurse : active la récursivité (par défaut : désactivée)
prompt : désactive la demande de noms de fichiers (par défaut : activée)
mget : copie tous les fichiers correspondant au masque de l'hôte vers la machine cliente
(Informations extraites de la page de manuel de smbclient)
CrackMapExec araignée.
-M araignée_plus [--share <nom_partage>]
--pattern txt
Les fichiers appelés Registry.xml
sont particulièrement intéressants car ils peuvent contenir des mots de passe pour les utilisateurs configurés avec l'autologon via la stratégie de groupe. Ou les fichiers web.config
car ils contiennent des informations d'identification.
Le partage SYSVOL est lisible par tous les utilisateurs authentifiés dans le domaine. Vous pouvez trouver de nombreux scripts batch, VBScript et PowerShell différents à l'intérieur. Vous devriez vérifier les scripts à l'intérieur car vous pourriez trouver des informations sensibles telles que des mots de passe.
Lire le Registre
Vous pouvez lire le registre en utilisant des informations d'identification découvertes. Impacket reg.py
vous permet d'essayer :
Post Exploitation
La configuration par défaut d'un serveur Samba est généralement située dans /etc/samba/smb.conf
et peut contenir certaines configurations dangereuses :
Paramètre | Description |
| Autoriser l'affichage des partages disponibles dans le partage actuel ? |
| Interdire la création et la modification de fichiers ? |
| Autoriser les utilisateurs à créer et modifier des fichiers ? |
| Autoriser la connexion au service sans utiliser de mot de passe ? |
| Respecter les privilèges attribués à un SID spécifique ? |
| Quelles autorisations doivent être attribuées aux fichiers nouvellement créés ? |
| Quelles autorisations doivent être attribuées aux répertoires nouvellement créés ? |
| Quel script doit être exécuté lors de la connexion de l'utilisateur ? |
| Quel script doit être exécuté lorsque le script est fermé ? |
| Où doit être stockée la sortie du script magique ? |
La commande smbstatus
fournit des informations sur le serveur et sur qui est connecté.
Authentification avec Kerberos
Vous pouvez vous authentifier auprès de Kerberos en utilisant les outils smbclient et rpcclient :
Exécuter des commandes
crackmapexec
crackmapexec peut exécuter des commandes en abusant de l'un des mmcexec, smbexec, atexec, wmiexec étant wmiexec la méthode par défaut. Vous pouvez indiquer quelle option vous préférez utiliser avec le paramètre --exec-method
:
Les deux options vont créer un nouveau service (en utilisant \pipe\svcctl via SMB) sur la machine victime et l'utiliser pour exécuter quelque chose (psexec va uploader un fichier exécutable vers le partage ADMIN$ et smbexec pointera vers cmd.exe/powershell.exe et mettra en arguments la charge utile --technique sans fichier--). Plus d'informations sur psexec et smbexec. Sur kali, il se trouve dans /usr/share/doc/python3-impacket/examples/
En utilisant le paramètre -k
, vous pouvez vous authentifier contre kerberos au lieu de NTLM
wmiexec/dcomexec
Exécutez furtivement un shell de commande sans toucher au disque ou exécuter un nouveau service en utilisant DCOM via le port 135. Dans kali, il se trouve dans /usr/share/doc/python3-impacket/examples/
En utilisant le paramètre -k
, vous pouvez vous authentifier contre kerberos au lieu de NTLM.
Exécutez des commandes via le Planificateur de tâches (en utilisant \pipe\atsvc via SMB). Dans kali, il se trouve dans /usr/share/doc/python3-impacket/examples/
Référence Impacket
https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/
Forcer les identifiants des utilisateurs
Ceci n'est pas recommandé, vous pourriez bloquer un compte si vous dépassez le nombre maximum de tentatives autorisées
Attaque de relais SMB
Cette attaque utilise l'outil Responder pour capturer les sessions d'authentification SMB sur un réseau interne, et les relaie vers une machine cible. Si la session d'authentification réussit, elle vous donnera automatiquement accès à un shell système. Plus d'informations sur cette attaque ici.
Piège SMB
La bibliothèque Windows URLMon.dll tente automatiquement de s'authentifier sur l'hôte lorsqu'une page tente d'accéder à un contenu via SMB, par exemple : img src="\\10.10.10.10\path\image.jpg"
Cela se produit avec les fonctions :
URLDownloadToFile
URLDownloadToCache
URLOpenStream
URLOpenBlockingStream
Qui sont utilisées par certains navigateurs et outils (comme Skype)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-f4a135d0c13d59b5136fe80c92a6c36013814904%252Fimage%2520%2893%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=e34861de&sv=1)
Piège SMB utilisant MitMf
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-0f8af75bf68fdace6958aeaeeef14fd2ca65b3c5%252Fimage%2520%2894%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=5d810d56&sv=1)
Vol de NTLM
Similaire au Piège SMB, le fait de placer des fichiers malveillants sur un système cible (via SMB, par exemple) peut provoquer une tentative d'authentification SMB, permettant à la hachure NetNTLMv2 d'être interceptée avec un outil tel que Responder. La hachure peut ensuite être craquée hors ligne ou utilisée dans une attaque de relais SMB.
Commandes automatiques HackTricks
Last updated