message-linesSMB (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 :

Version
Systèmes supportés
Fonctionnalités principales

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 :

Paramètre
Risque potentiel

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 serveur

  • enumdomusers : énumération des utilisateurs

  • queryuser <RID> : infos détaillées sur un utilisateur

  • netshareenumall : 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 smbstatus pour 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