Énumérer les services SMB avec Nmap

NmapNmapBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons explorer la manière d'énumérer les services SMB (Server Message Block) à l'aide de Nmap. SMB est un protocole de partage de fichiers réseau, et l'identification des partages disponibles peut révéler des informations précieuses sur un système cible. Nous allons utiliser le script smb-enum-shares du Nmap Scripting Engine (NSE) pour y parvenir.

Le laboratoire consiste à exécuter des commandes Nmap pour énumérer les partages SMB sur une machine cible, en spécifiant l'adresse IP cible (par exemple, 192.168.1.1 ou 127.0.0.1 pour l'hôte local), et à interpréter la sortie pour identifier les partages disponibles, leur type et les commentaires associés. Nous explorerons également l'ajout de verbeux, la sauvegarde des résultats dans un fichier et la comparaison de la sortie avec un scan de bannière.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/scripting_basics("Scripting Engine Basics") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") subgraph Lab Skills nmap/save_output -.-> lab-547099{{"Énumérer les services SMB avec Nmap"}} nmap/port_scanning -.-> lab-547099{{"Énumérer les services SMB avec Nmap"}} nmap/target_specification -.-> lab-547099{{"Énumérer les services SMB avec Nmap"}} nmap/verbosity -.-> lab-547099{{"Énumérer les services SMB avec Nmap"}} nmap/os_version_detection -.-> lab-547099{{"Énumérer les services SMB avec Nmap"}} nmap/service_detection -.-> lab-547099{{"Énumérer les services SMB avec Nmap"}} nmap/scripting_basics -.-> lab-547099{{"Énumérer les services SMB avec Nmap"}} nmap/script_management -.-> lab-547099{{"Énumérer les services SMB avec Nmap"}} end

Exécutez l'énumération SMB avec nmap --script smb-enum-shares 192.168.1.1

Dans cette étape, nous allons utiliser Nmap avec le script smb-enum-shares pour énumérer les partages SMB sur une machine cible. SMB (Server Message Block) est un protocole de partage de fichiers réseau, et l'énumération des partages peut révéler des informations précieuses sur le système cible, telles que les ressources disponibles et les vulnérabilités potentielles.

Commençons par comprendre la commande que nous allons utiliser :

  • nmap : C'est l'outil de cartographie de réseau que nous allons utiliser.
  • --script smb-enum-shares : Cela indique à Nmap d'utiliser le script smb-enum-shares du NSE (Nmap Scripting Engine). Ce script est spécifiquement conçu pour énumérer les partages SMB.
  • 192.168.1.1 : C'est l'adresse IP cible. Important : Vous devrez la remplacer par l'adresse IP réelle de la machine cible que vous souhaitez scanner. Si vous n'avez pas de cible spécifique, vous pouvez utiliser 127.0.0.1 (localhost) à des fins de test, mais gardez à l'esprit que cela ne scannera que votre propre machine.

Maintenant, exécutons la commande. Ouvrez votre terminal Xfce et tapez la commande suivante, puis appuyez sur Entrée :

nmap --script smb-enum-shares 192.168.1.1

Important : Remplacez 192.168.1.1 par l'adresse IP réelle de votre cible. Si vous testez localement, vous pouvez utiliser 127.0.0.1.

La sortie vous montrera les résultats de l'énumération des partages SMB. Elle peut ressembler à ceci (la sortie exacte dépendra du système cible) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00043s latency).
Not shown: 999 filtered ports
PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\192.168.1.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\192.168.1.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\192.168.1.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0

Nmap done: 1 IP address (1 host up) scanned in 2.54 seconds

Cette sortie montre les partages SMB que Nmap a été capable de découvrir sur le système cible. Vous pouvez voir les noms de partage (par exemple, IPC$, ADMIN$, C$), leur type, les commentaires et les drapeaux. Cette information peut être utile pour identifier les vecteurs d'attaque potentiels ou les configurations erronées.

Scan le port 445 avec nmap --script smb-enum-shares -p 445 127.0.0.1

Dans cette étape, nous allons nous concentrer sur le scan d'un port spécifique, le port 445, qui est généralement associé à SMB. En spécifiant le port, nous pouvons resserrer le scan et potentiellement obtenir des résultats plus rapidement. Nous utiliserons le même script smb-enum-shares que précédemment, mais cette fois-ci, nous dirons à Nmap de ne scanner que le port 445.

Analysons la commande :

  • nmap : L'outil de cartographie de réseau.
  • --script smb-enum-shares : Spécifie le script NSE à utiliser pour l'énumération des partages SMB.
  • -p 445 : Cette option indique à Nmap de ne scanner que le port 445. Sans cela, Nmap scannerait une plage de ports couramment utilisés.
  • 127.0.0.1 : C'est l'adresse IP cible, dans ce cas, l'hôte local. Cela signifie que nous sommes en train de scanner le service SMB exécuté sur notre propre machine.

Maintenant, ouvrez votre terminal Xfce et exécutez la commande suivante :

nmap --script smb-enum-shares -p 445 127.0.0.1

La sortie montrera les résultats de l'énumération des partages SMB spécifiquement sur le port 445. Elle peut ressembler à ceci :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\127.0.0.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\127.0.0.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\127.0.0.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0

Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds

Remarquez que la sortie est similaire à l'étape précédente, mais cette fois-ci, nous avons spécifiquement ciblé le port 445. Cela peut être utile lorsque vous savez que SMB est exécuté sur un port spécifique et que vous voulez éviter de scanner inutilement d'autres ports.

Ajoutez la détaillement avec nmap -v --script smb-enum-shares 192.168.1.1

Dans cette étape, nous allons ajouter un détaillement à notre scan Nmap. Le détaillement fournit une sortie plus détaillée, ce qui peut être utile pour comprendre ce que fait Nmap et pour résoudre tout problème éventuel. L'option -v augmente le niveau de détaillement.

Examinons la commande :

  • nmap : L'outil de cartographie de réseau.
  • -v : Cette option augmente le niveau de détaillement. Ajouter plus d'options -v (par exemple, -vv) augmente encore le détaillement.
  • --script smb-enum-shares : Spécifie le script NSE à utiliser pour l'énumération des partages SMB.
  • 192.168.1.1 : L'adresse IP cible. N'oubliez pas de la remplacer par l'adresse IP réelle de votre cible.

Maintenant, ouvrez votre terminal Xfce et exécutez la commande suivante :

nmap -v --script smb-enum-shares 192.168.1.1

Important : Remplacez 192.168.1.1 par l'adresse IP réelle de votre cible. Si vous testez localement et que vous n'avez pas SMB activé, vous risquez de ne pas voir beaucoup de différence dans la sortie.

La sortie sera plus détaillée que les scans précédents. Vous verrez plus d'informations sur la progression du scan, les scripts exécutés et tout problème qui se produit. Par exemple, vous pourriez voir une sortie comme celle-ci :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Chargé 1 script pour le scan.
Lancement d'un scan Ping à 10:10
Scan de 192.168.1.1 [4 ports]
Scan Ping terminé à 10:10, 0.00s écoulé (1 hôte au total)
Lancement de la résolution DNS parallèle de 1 hôte. à 10:10
Résolution DNS parallèle de 1 hôte terminée à 10:10, 0.00s écoulé
Lancement d'un scan de connexion à 10:10
Scan de 192.168.1.1 [1000 ports]
Port ouvert 445/tcp découvert sur 192.168.1.1
Scan de connexion terminé à 10:10, 0.12s écoulé (1000 ports au total)
Lancement d'un scan de service à 10:10
Scan d'un service sur 192.168.1.1
Scan de service terminé à 10:10, 6.41s écoulé (1 service au total)
NSE: Démarrage du scan au niveau 1 (sur 1).
NSE: Exécution du script smb-enum-shares sur 192.168.1.1.
Rapport de scan Nmap pour 192.168.1.1
L'hôte est actif (0.00038s de latence).
Ports non affichés : 999 ports filtrés
PORT    ÉTAT SERVICE
445/tcp ouvert  microsoft-ds
Résultats des scripts d'hôte :
| smb-enum-shares:
|   compte_utilisé : invité
|   \\192.168.1.1\IPC$:
|     type : STYPE_IPC_HIDDEN
|     commentaire : IPC distant
|     drapeaux : 0x80000000
|   \\192.168.1.1\ADMIN$:
|     type : STYPE_DISKTREE
|     commentaire : Administration distante
|     drapeaux : 0x0
|_  \\192.168.1.1\C$:
|     type : STYPE_DISKTREE
|     commentaire : Partage par défaut
|     drapeaux : 0x0

NSE: Post-scan des scripts.
Nmap terminé : 1 adresse IP (1 hôte actif) scanné en 7.01 secondes

La sortie détaillée montre les différents stades du scan Nmap, y compris le scan Ping, la résolution DNS, le scan de connexion, le scan de service et l'exécution du script smb-enum-shares. Ce niveau de détail peut être précieux pour le débogage et la compréhension du processus de scan.

Enregistrez les résultats SMB avec nmap --script smb-enum-shares -oN smb.txt 127.0.0.1

Dans cette étape, nous allons apprendre à enregistrer les résultats de notre scan Nmap dans un fichier. Cela est utile pour une analyse ultérieure ou pour partager les résultats avec d'autres. Nous utiliserons l'option -oN pour enregistrer la sortie au format "normal", qui est lisible par un humain.

Analysons la commande :

  • nmap : L'outil de cartographie de réseau.
  • --script smb-enum-shares : Spécifie le script NSE à utiliser pour l'énumération des partages SMB.
  • -oN smb.txt : Cette option indique à Nmap d'enregistrer la sortie au format normal dans un fichier nommé smb.txt. Le fichier sera enregistré dans votre répertoire actuel, qui est ~/projet.
  • 127.0.0.1 : C'est l'adresse IP cible, dans ce cas, l'hôte local.

Maintenant, ouvrez votre terminal Xfce et exécutez la commande suivante :

nmap --script smb-enum-shares -oN smb.txt 127.0.0.1

Une fois le scan terminé, vous ne verrez pas la sortie dans le terminal. Au lieu de cela, les résultats seront enregistrés dans un fichier nommé smb.txt dans votre répertoire ~/projet.

Pour vérifier que le fichier a été créé et contient les résultats du scan, vous pouvez utiliser la commande cat pour afficher le contenu du fichier :

cat smb.txt

Vous devriez voir les résultats du scan Nmap imprimés dans le terminal. La sortie devrait être similaire à ce que vous avez vu dans les étapes précédentes, mais maintenant elle est également enregistrée dans un fichier.

## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023 as: nmap --script smb-enum-shares -oN smb.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\127.0.0.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\127.0.0.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\127.0.0.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0
## Nmap done at Fri Oct 27 10:15:01 2023 -- 1 IP address (1 host up) scanned in 1.23 seconds

Vous pouvez également utiliser la commande ls -l pour vérifier la taille du fichier et sa date de modification :

ls -l smb.txt

Cela vous montrera des informations sur le fichier smb.txt, y compris sa taille, sa date de modification et ses permissions.

Vérifiez les partages SMB dans le terminal Xfce

Dans cette étape, nous allons vérifier les partages SMB identifiés dans les étapes précédentes. Nous utiliserons la commande cat pour afficher le contenu du fichier smb.txt, qui contient les résultats du scan Nmap. Ensuite, nous discuterons de la manière d'interpréter la sortie et d'identifier les vulnérabilités de sécurité potentielles.

Tout d'abord, ouvrez votre terminal Xfce et utilisez la commande cat pour afficher le contenu du fichier smb.txt :

cat smb.txt

La sortie montrera les résultats du scan Nmap, y compris les partages SMB identifiés. Par exemple, vous pourriez voir une sortie comme celle-ci :

## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023 as: nmap --script smb-enum-shares -oN smb.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\127.0.0.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\127.0.0.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\127.0.0.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0
## Nmap done at Fri Oct 27 10:20:01 2023 -- 1 IP address (1 host up) scanned in 1.23 seconds

Analysons la sortie :

  • \\127.0.0.1\IPC$ : Ceci est le partage de communication entre processus, qui est utilisé pour la communication entre les processus sur la même machine ou à travers un réseau. Il est généralement caché (STYPE_IPC_HIDDEN) et utilisé pour les fonctions système.
  • \\127.0.0.1\ADMIN$ : Ceci est le partage d'administration, qui fournit un accès au répertoire système Windows. Il est généralement utilisé par les administrateurs pour la gestion distante.
  • \\127.0.0.1\C$ : Ceci est le partage par défaut pour le lecteur C. Il permet aux administrateurs d'accéder au lecteur C dans son intégralité à distance.

Ces partages sont souvent présents sur les systèmes Windows. Cependant, il est important de vérifier leurs autorisations et de s'assurer qu'ils sont correctement sécurisés. Par exemple, les partages ADMIN$ et C$ devraient généralement être accessibles seulement aux administrateurs. Si ces partages sont accessibles à des utilisateurs non autorisés, cela pourrait entraîner des vulnérabilités de sécurité.

Dans l'étape suivante, nous comparerons ces résultats avec un scan de bannière pour recueillir plus d'informations sur le système cible.

Comparez avec un scan de bannière dans le terminal Xfce

Dans cette étape, nous allons effectuer un scan de bannière à l'aide de Nmap et comparer les résultats avec les résultats d'énumération des partages SMB des étapes précédentes. Le banner grabbing nous permet d'identifier le système d'exploitation et les services en cours d'exécution sur la cible, ce qui peut fournir des informations précieuses pour identifier les vulnérabilités potentielles.

Tout d'abord, effectuons un scan de bannière sur le port 445 à l'aide de Nmap. Ouvrez votre terminal Xfce et exécutez la commande suivante :

nmap -p 445 -sV 127.0.0.1

Voici une analyse de la commande :

  • nmap : L'outil de cartographie de réseau.
  • -p 445 : Spécifie le port 445, qui est le port utilisé pour SMB.
  • -sV : Active la détection de version, qui tente de déterminer l'information sur le service et la version en cours d'exécution sur le port cible.
  • 127.0.0.1 : Cette est l'adresse IP cible, dans ce cas, l'hôte local.

La sortie de la commande montrera le service en cours d'exécution sur le port 445 et ses informations de version. Par exemple, vous pourriez voir une sortie comme celle-ci :

Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:25:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).

PORT    STATE SERVICE      VERSION
445/tcp open  microsoft-ds Windows 10 Pro 19042 microsoft-ds

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds

Dans cet exemple, le scan de bannière révèle que la cible est exécutée Windows 10 Pro 19042. Cette information peut être utilisée pour identifier les vulnérabilités potentielles spécifiques à cette version de système d'exploitation.

Maintenant, comparons cette information avec les résultats d'énumération des partages SMB de l'étape précédente. Dans l'étape précédente, nous avons identifié les partages SMB suivants : IPC$, ADMIN$ et C$. Nous savons également que la cible est exécutée Windows 10 Pro 19042.

En combinant cette information, nous pouvons commencer à construire une image plus complète du système cible et de ses vulnérabilités potentielles. Par exemple, nous pouvons rechercher les vulnérabilités connues dans Windows 10 Pro 19042 liées aux partages SMB et déterminer si le système cible est vulnérable.

Cette comparaison nous aide à prioriser nos efforts et à nous concentrer sur les vecteurs d'attaque les plus probables. Par exemple, si nous trouvons une vulnérabilité connue dans Windows 10 Pro 19042 qui permet un accès non autorisé au partage ADMIN$, nous pouvons nous concentrer sur l'exploitation de cette vulnérabilité.

Sommaire

Dans ce laboratoire, nous avons exploré la manière d'utiliser Nmap avec le script smb-enum-shares pour énumérer les partages SMB sur une machine cible. Nous avons appris que SMB est un protocole de partage de fichiers réseau et que l'énumération des partages peut révéler des informations précieuses sur le système cible, y compris les ressources disponibles et les vulnérabilités potentielles. La commande de base nmap --script smb-enum-shares <target_ip> a été utilisée pour effectuer l'énumération.

En outre, nous avons pratiqué la spécification du port cible (445), l'augmentation de la verbosité avec le drapeau -v et l'enregistrement de la sortie dans un fichier à l'aide de l'option -oN. Enfin, nous avons vérifié les partages SMB dans le terminal Xfce et comparé les résultats avec un scan de bannière, démontrant différentes méthodes pour recueillir des informations sur les services SMB.