SMB (Server Message Block)
🧩 Introduction au protocole SMB
Le protocole SMB (Server Message Block) est un protocole client-serveur qui permet le partage de fichiers, d’imprimantes et d'autres ressources réseau telles que les ports ou interfaces. Il est principalement utilisé dans les environnements Windows, mais des implémentations libres comme Samba permettent son usage sur des systèmes Unix/Linux.
Initialement introduit via les systèmes LAN Manager sur OS/2, SMB est devenu un pilier des services réseau Windows. Grâce à sa compatibilité descendante, les versions récentes peuvent communiquer avec des versions plus anciennes du protocole.
🔗 Fonctionnement du protocole SMB
Dans un réseau IP, SMB repose sur le protocole TCP et s’appuie sur le three-way handshake classique pour établir une connexion fiable. Une fois connectés, client et serveur échangent des messages SMB pour accéder à des fichiers ou services partagés.
Les droits d’accès sont définis via des ACL (Access Control Lists). Ces ACLs permettent une gestion fine des permissions (lecture, écriture, exécution) pour chaque utilisateur ou groupe.
🐧 Implémentation avec Samba
Samba est une implémentation libre du protocole SMB/CIFS, permettant l'interopérabilité avec les systèmes Windows. Samba implémente plusieurs versions de SMB :
CIFS
Windows NT 4.0
Utilise l'interface NetBIOS
SMB 1.0
Windows 2000
Connexion directe via TCP
SMB 2.0
Vista / Server 2008
Caching, signature améliorée
SMB 2.1
Windows 7 / Server 2008 R2
Verrouillages optimisés
SMB 3.0
Windows 8 / Server 2012
Multi-connexion, chiffrement de bout en bout
SMB 3.1.1
Windows 10 / Server 2016
Intégrité, chiffrement AES-128
Depuis Samba 3, le serveur peut rejoindre un domaine Active Directory. Avec Samba 4, il peut même agir en tant que contrôleur de domaine AD.
⚙️ Fichier de configuration : smb.conf
Le fichier /etc/samba/smb.conf contient la configuration du serveur Samba. Exemple minimal :
🔒 Paramètres sensibles
Certaines options peuvent exposer le serveur :
browseable = yes
Permet de lister les dossiers (utile aussi à un attaquant)
guest ok = yes
Autorise les connexions anonymes
read only = no
Permet la modification de fichiers
create mask = 0777
Tous les droits sur les fichiers créés
enable privileges = yes
Honore les SID spéciaux
🛠️ Outils d'interaction et d'énumération
📂 smbclient
Permet d’interagir avec les partages SMB, y compris en session nulle :
Une fois connecté :
🔎 rpcclient
Utilitaire puissant pour interroger les services MS-RPC :
Commandes utiles :
srvinfo: infos sur le serveurenumdomusers: énumération des utilisateursqueryuser <RID>: infos détaillées sur un utilisateurnetshareenumall: liste des partages
🧰 Autres outils
nmap (avec scripts NSE) :
SMBMap :
CrackMapExec :
enum4linux-ng : outil complet d’énumération automatique
🧠 Bonnes pratiques en pentest
Rechercher les partages accessibles anonymement.
Vérifier les permissions : lecture, écriture, exécution.
Énumérer les utilisateurs/domaines via
rpcclient.Utiliser
smbstatuspour voir les connexions actives.Éviter de se reposer uniquement sur les outils automatisés.
📚 Ressources utiles
What version of the SMB server is running on the target system? Submit the entire banner as the answer.
Nous effectuons un scan sur notre cible :
La bannière associée est donc la suivante : Samba smbd 4.6.2.
What is the name of the accessible share on the target?
Nous effectuons une connexion NULL sur notre cible :
Le dossier accessible est sambashare.
Connect to the discovered share and find the flag.txt file. Submit the contents as the answer.
Nous nous connectons au dossier trouvé et récupérons le fichier flag.txt :
Les identifiants sont root:<nopassword>.
Nous récupérons le contenu du fichier flag.txt trouvé sur le serveur :
Nous obtenons donc le flag attendu :
Find out which domain the server belongs to.
Nous utilisons enum4linux afin d'obtenir le nom de domaine de notre cible :
Nous relevons le nom de domaine de la cible : DEVOPS.
Find additional information about the specific share we found previously and submit the customized version of that specific share as the answer.
Nous nous connectons à l'aide de rpcclient afin d'obtenir davantage d'informations concernant le partage sambashare :
Nous obtenons alors la version associée au partage de fichier est InFreight SMB v3.1.
What is the full system path of that specific share? (format: "/directory/names")
Le chemin associé au partage de fichier est /home/sambauser.
Last updated