Enumeración de Servicios SMB con Nmap

NmapNmapBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos cómo enumerar los servicios SMB (Server Message Block) utilizando Nmap. SMB es un protocolo de compartición de archivos de red, y la identificación de las comparticiones disponibles puede revelar información valiosa sobre un sistema objetivo. Utilizaremos el script del Motor de Scripting de Nmap (NSE) smb-enum-shares para lograr esto.

El laboratorio implica ejecutar comandos de Nmap para enumerar las comparticiones SMB en una máquina objetivo, especificando la dirección IP objetivo (por ejemplo, 192.168.1.1 o 127.0.0.1 para el localhost), e interpretar la salida para identificar las comparticiones disponibles, sus tipos y los comentarios asociados. También exploraremos cómo agregar detalle, guardar los resultados en un archivo y comparar la salida con una exploración de banner.


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{{"Enumeración de Servicios SMB con Nmap"}} nmap/port_scanning -.-> lab-547099{{"Enumeración de Servicios SMB con Nmap"}} nmap/target_specification -.-> lab-547099{{"Enumeración de Servicios SMB con Nmap"}} nmap/verbosity -.-> lab-547099{{"Enumeración de Servicios SMB con Nmap"}} nmap/os_version_detection -.-> lab-547099{{"Enumeración de Servicios SMB con Nmap"}} nmap/service_detection -.-> lab-547099{{"Enumeración de Servicios SMB con Nmap"}} nmap/scripting_basics -.-> lab-547099{{"Enumeración de Servicios SMB con Nmap"}} nmap/script_management -.-> lab-547099{{"Enumeración de Servicios SMB con Nmap"}} end

Ejecutar la enumeración SMB con nmap --script smb-enum-shares 192.168.1.1

En este paso, usaremos Nmap con el script smb-enum-shares para enumerar las comparticiones SMB en una máquina objetivo. SMB (Server Message Block) es un protocolo de compartición de archivos de red, y la enumeración de comparticiones puede revelar información valiosa sobre el sistema objetivo, como los recursos disponibles y posibles vulnerabilidades.

Primero, entendamos el comando que usaremos:

  • nmap: Esta es la herramienta de mapeo de red que usaremos.
  • --script smb-enum-shares: Esto le dice a Nmap que use el script NSE (Nmap Scripting Engine) smb-enum-shares. Este script está diseñado específicamente para enumerar las comparticiones SMB.
  • 192.168.1.1: Esta es la dirección IP objetivo. Importante: Tendrás que reemplazar esto con la dirección IP real de la máquina objetivo que desees escanear. Si no tienes un objetivo específico, puedes usar 127.0.0.1 (localhost) a fines de prueba, pero ten en cuenta que solo escaneará tu propia máquina.

Ahora, ejecutemos el comando. Abre tu terminal Xfce y escribe el siguiente comando, luego presiona Enter:

nmap --script smb-enum-shares 192.168.1.1

Importante: Reemplaza 192.168.1.1 con la dirección IP real de tu objetivo. Si estás probando localmente, puedes usar 127.0.0.1.

La salida te mostrará los resultados de la enumeración de comparticiones SMB. Podría verse así (la salida exacta dependerá del sistema objetivo):

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

Esta salida muestra las comparticiones SMB que Nmap pudo descubrir en el sistema objetivo. Puedes ver los nombres de las comparticiones (por ejemplo, IPC$, ADMIN$, C$), sus tipos, comentarios y flags. Esta información puede ser útil para identificar posibles vectores de ataque o malconfiguraciones.

Escanear el puerto 445 con nmap --script smb-enum-shares -p 445 127.0.0.1

En este paso, nos centraremos en escanear un puerto específico, el 445, que está comúnmente asociado con SMB. Al especificar el puerto, podemos restringir el escaneo y posiblemente obtener resultados más rápidamente. Usaremos el mismo script smb-enum-shares que antes, pero esta vez le diremos a Nmap que solo escanee el puerto 445.

Analicemos el comando:

  • nmap: La herramienta de mapeo de red.
  • --script smb-enum-shares: Especifica el script NSE que se usará para la enumeración de comparticiones SMB.
  • -p 445: Esta opción le dice a Nmap que solo escanee el puerto 445. Sin esto, Nmap escanearía una gama de puertos comúnmente utilizados.
  • 127.0.0.1: Esta es la dirección IP objetivo, en este caso, el localhost. Esto significa que estamos escanando el servicio SMB que se ejecuta en nuestra propia máquina.

Ahora, abre tu terminal Xfce y ejecuta el siguiente comando:

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

La salida mostrará los resultados de la enumeración de comparticiones SMB específicamente en el puerto 445. Podría verse similar a esto:

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

Observa que la salida es similar al paso anterior, pero esta vez hemos dirigido específicamente al puerto 445. Esto puede ser útil cuando sabes que SMB está ejecutándose en un puerto específico y quieres evitar escanear otros puertos innecesariamente.

Agregar detalle con nmap -v --script smb-enum-shares 192.168.1.1

En este paso, agregaremos detalle a nuestro escaneo con Nmap. El detalle proporciona una salida más detallada, lo que puede ser útil para entender lo que está haciendo Nmap y para solucionar cualquier problema. La opción -v aumenta el nivel de detalle.

Echemos un vistazo al comando:

  • nmap: La herramienta de mapeo de red.
  • -v: Esta opción aumenta el nivel de detalle. Agregar más opciones -v (por ejemplo, -vv) aumenta aún más el detalle.
  • --script smb-enum-shares: Especifica el script NSE que se usará para la enumeración de comparticiones SMB.
  • 192.168.1.1: La dirección IP objetivo. Recuerda reemplazar esto con la dirección IP real de tu objetivo.

Ahora, abre tu terminal Xfce y ejecuta el siguiente comando:

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

Importante: Reemplaza 192.168.1.1 con la dirección IP real de tu objetivo. Si estás probando localmente y no tienes SMB habilitado, es posible que no veas mucha diferencia en la salida.

La salida será más detallada que los escaneos anteriores. Verás más información sobre el progreso del escaneo, los scripts que se están ejecutando y cualquier error que ocurra. Por ejemplo, es posible que veas una salida como esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 1 script for scanning.
Initiating Ping Scan at 10:10
Scanning 192.168.1.1 [4 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:10
Completed Parallel DNS resolution of 1 host. at 10:10, 0.00s elapsed
Initiating Connect Scan at 10:10
Scanning 192.168.1.1 [1000 ports]
Discovered open port 445/tcp on 192.168.1.1
Completed Connect Scan at 10:10, 0.12s elapsed (1000 total ports)
Initiating Service scan at 10:10
Scanning 1 service on 192.168.1.1
Completed Service scan at 10:10, 6.41s elapsed (1 service total)
NSE: Starting runlevel 1 (of 1) scan.
NSE: Running script smb-enum-shares on 192.168.1.1.
Nmap scan report for 192.168.1.1
Host is up (0.00038s 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

NSE: Script Post-scanning.
Nmap done: 1 IP address (1 host up) scanned in 7.01 seconds

La salida detallada muestra las diferentes etapas del escaneo con Nmap, incluyendo el escaneo de ping, la resolución DNS, el escaneo de conexión, el escaneo de servicios y la ejecución del script smb-enum-shares. Este nivel de detalle puede ser invaluable para la depuración y la comprensión del proceso de escaneo.

Guardar los resultados de SMB con nmap --script smb-enum-shares -oN smb.txt 127.0.0.1

En este paso, aprenderemos cómo guardar los resultados de nuestro escaneo con Nmap en un archivo. Esto es útil para un análisis posterior o para compartir los resultados con otros. Usaremos la opción -oN para guardar la salida en un formato "normal", que es legible por humanos.

Analicemos el comando:

  • nmap: La herramienta de mapeo de red.
  • --script smb-enum-shares: Especifica el script NSE que se usará para la enumeración de comparticiones SMB.
  • -oN smb.txt: Esta opción le dice a Nmap que guarde la salida en formato normal en un archivo llamado smb.txt. El archivo se guardará en tu directorio actual, que es ~/project.
  • 127.0.0.1: Esta es la dirección IP objetivo, en este caso, el localhost.

Ahora, abre tu terminal Xfce y ejecuta el siguiente comando:

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

Una vez que se complete el escaneo, no verás la salida en la terminal. En cambio, los resultados se guardarán en un archivo llamado smb.txt en tu directorio ~/project.

Para verificar que el archivo se creó y contiene los resultados del escaneo, puedes usar el comando cat para mostrar el contenido del archivo:

cat smb.txt

Deberías ver los resultados del escaneo con Nmap impresos en la terminal. La salida debería ser similar a la que viste en los pasos anteriores, pero ahora también está guardada en un archivo.

## 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

También puedes usar el comando ls -l para verificar el tamaño del archivo y la fecha de modificación:

ls -l smb.txt

Esto te mostrará información sobre el archivo smb.txt, incluyendo su tamaño, fecha de modificación y permisos.

Revisar las comparticiones SMB en la terminal Xfce

En este paso, revisaremos las comparticiones SMB que se identificaron en los pasos anteriores. Usaremos el comando cat para ver el contenido del archivo smb.txt, que contiene los resultados del escaneo con Nmap. Luego, discutiremos cómo interpretar la salida e identificar posibles vulnerabilidades de seguridad.

Primero, abre tu terminal Xfce y usa el comando cat para mostrar el contenido del archivo smb.txt:

cat smb.txt

La salida mostrará los resultados del escaneo con Nmap, incluyendo las comparticiones SMB identificadas. Por ejemplo, es posible que veas una salida como esta:

## 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

Analicemos la salida:

  • \\127.0.0.1\IPC$: Esta es la compartición de Comunicación Interproceso, que se utiliza para la comunicación entre procesos en la misma máquina o a través de una red. Por lo general, está oculta (STYPE_IPC_HIDDEN) y se utiliza para funciones del sistema.
  • \\127.0.0.1\ADMIN$: Esta es la compartición administrativa, que proporciona acceso al directorio del sistema Windows. Por lo general, se utiliza por los administradores para la administración remota.
  • \\127.0.0.1\C$: Esta es la compartición predeterminada para el disco C. Permite a los administradores acceder al disco C en su totalidad de forma remota.

Estas comparticiones suelen estar presentes en los sistemas Windows. Sin embargo, es importante revisar sus permisos y asegurarse de que estén adecuadamente protegidos. Por ejemplo, las comparticiones ADMIN$ y C$ por lo general solo deben ser accesibles a los administradores. Si estas comparticiones son accesibles a usuarios no autorizados, podría dar lugar a vulnerabilidades de seguridad.

En el siguiente paso, compararemos estos resultados con un escaneo de banner para recopilar más información sobre el sistema objetivo.

En este paso, realizaremos un escaneo de banner con Nmap y compararemos los resultados con los resultados de la enumeración de comparticiones SMB de los pasos anteriores. La captura de banners nos permite identificar el sistema operativo y los servicios que se ejecutan en el objetivo, lo que puede proporcionar información valiosa para identificar posibles vulnerabilidades.

Primero, realicemos un escaneo de banner en el puerto 445 con Nmap. Abre tu terminal Xfce y ejecuta el siguiente comando:

nmap -p 445 -sV 127.0.0.1

Aquí está una descripción del comando:

  • nmap: La herramienta de mapeo de red.
  • -p 445: Especifica el puerto 445, que es el puerto utilizado para SMB.
  • -sV: Habilita la detección de versiones, que intenta determinar la información del servicio y la versión que se ejecuta en el puerto objetivo.
  • 127.0.0.1: Esta es la dirección IP objetivo, en este caso, el localhost.

La salida del comando mostrará el servicio que se ejecuta en el puerto 445 y su información de versión. Por ejemplo, es posible que veas una salida como esta:

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

En este ejemplo, el escaneo de banner revela que el objetivo está ejecutando Windows 10 Pro 19042. Esta información se puede utilizar para identificar posibles vulnerabilidades específicas de esta versión del sistema operativo.

Ahora, comparemos esta información con los resultados de la enumeración de comparticiones SMB del paso anterior. En el paso anterior, identificamos las siguientes comparticiones SMB: IPC$, ADMIN$ y C$. También sabemos que el objetivo está ejecutando Windows 10 Pro 19042.

Al combinar esta información, podemos comenzar a construir una imagen más completa del sistema objetivo y sus posibles vulnerabilidades. Por ejemplo, podemos investigar las vulnerabilidades conocidas en Windows 10 Pro 19042 relacionadas con las comparticiones SMB y determinar si el sistema objetivo es vulnerable.

Esta comparación nos ayuda a priorizar nuestros esfuerzos y centrar nuestra atención en los vectores de ataque más probables. Por ejemplo, si encontramos una vulnerabilidad conocida en Windows 10 Pro 19042 que permite el acceso no autorizado a la compartición ADMIN$, podemos centrar nuestros esfuerzos en explotar esta vulnerabilidad.

Resumen

En este laboratorio, exploramos cómo usar Nmap con el script smb-enum-shares para enumerar las comparticiones SMB en una máquina objetivo. Aprendimos que SMB es un protocolo de compartición de archivos de red y que enumerar las comparticiones puede revelar información valiosa sobre el sistema objetivo, incluyendo los recursos disponibles y las posibles vulnerabilidades. El comando básico nmap --script smb-enum-shares <target_ip> se usó para realizar la enumeración.

Además, practicamos especificar el puerto objetivo (445), aumentar la verbosidad con la bandera -v y guardar la salida en un archivo usando la opción -oN. Finalmente, revisamos las comparticiones SMB en la terminal Xfce y comparamos los resultados con un escaneo de banner, demostrando diferentes métodos para recopilar información sobre los servicios SMB.