> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/metodologias-de-evaluacion/enumeracion/motor-de-scripts-nmap-nse/escaneo-y-enumeracion-de-puertos-con-nmap.md).

# Escaneo y enumeración de puertos con Nmap

### 🚀 ¿Qué es Nmap?

**Nmap** es un escáner de red libre y de código abierto diseñado para detectar hosts, identificar puertos abiertos y enumerar servicios en una red. Su versatilidad y potencia lo han convertido en una herramienta estándar en casi todos los flujos de trabajo de ciberseguridad ofensiva.

***

### 🔍 Funciones clave de Nmap

* **Descubrimiento de hosts**: Identifica qué sistemas están activos en una red específica.
* **Escaneo de puertos**: Detecta qué puertos están abiertos o filtrados en el sistema objetivo.
* **Detección de servicios**: Determina qué servicios están corriendo en los puertos abiertos, e incluso intenta identificar su versión exacta.
* **Detección del sistema operativo**: A través de técnicas de fingerprinting, Nmap puede estimar el sistema operativo y versión que corre en el objetivo.
* **Exportación de resultados**: Los escaneos pueden exportarse en formatos como XML o `grepable`, útiles para automatizar tareas o integrarse con otras herramientas, como Metasploit.

***

## 🧪Laboratorio Práctico

**Paso 1:** Abra el enlace del laboratorio para acceder a la máquina Kali.

<figure><img src="/files/sGIKp5YSoKs28GVDPZgQ" alt=""><figcaption></figcaption></figure>

**Paso 2:** Haga ping a la máquina de destino para ver si está activa o no.

**Dominio:**

```
ping -c 5 demo.ine.local
```

<figure><img src="/files/6eeoN5POjiBNdeBnInbV" alt=""><figcaption></figcaption></figure>

Podemos observar que el objetivo no responde a las solicitudes de ping, por lo que esto no confirma si está activo o inactivo.

**Paso 3:** Ejecute un escaneo de Nmap contra el objetivo.

**Dominio:**

```
nmap demo.ine.local
```

<figure><img src="/files/A2KdqMi351jCOHp05X4t" alt=""><figcaption></figcaption></figure>

Nmap tampoco pudo detectar si el host estaba activo. Muchas herramientas de seguridad primero hacen ping al host antes de comenzar a escanear o explotar el objetivo. En ese caso, es necesario usar opciones avanzadas de Nmap, como -A o -T5, para obtener el resultado correcto.

En nmap, hay una opción: -Pn (Tratar todos los hosts como si estuvieran en línea; omitir la detección de hosts). Esta opción forzará el escaneo incluso si se detecta que el objetivo está inactivo en la detección de hosts.

**Paso 4:** Ejecutar Nmap usando la opción -Pn para descubrir todos los puertos activos.

**Dominio:**

```
nmap -Pn demo.ine.local
```

<figure><img src="/files/tEOiL6dFVqH7m1Q1rMrD" alt=""><figcaption></figcaption></figure>

Podemos ver que hay varios puertos abiertos en la máquina de destino.

Ahora, escanearemos cualquier puerto aleatorio que no esté abierto. En este caso, escanearemos el puerto 443. Si el puerto no está abierto, recibiremos una salida filtrada de ese puerto.

**Dominio:**

```
nmap -Pn -p 443 demo.ine.local
```

<figure><img src="/files/3Ild4b20tlzbUJU1qU2F" alt=""><figcaption></figcaption></figure>

Podemos observar en la salida de Nmap que el host está activo, pero el puerto 443 está filtrado.

**Acerca del puerto filtrado:**

Nmap no puede determinar si el puerto está abierto porque el filtrado de paquetes impide que sus sondas lo alcancen. El filtrado podría provenir de un cortafuegos dedicado, reglas de router o software de cortafuegos basado en host. Estos puertos frustran a los atacantes por su escasa información. A veces responden con mensajes de error ICMP, como el tipo 3, código 13 (destino inalcanzable: comunicación administrativamente prohibida), pero los filtros que simplemente descartan las sondas sin responder son mucho más comunes. Esto obliga a Nmap a reintentar varias veces por si la sonda se descartó debido a la congestión de la red en lugar del filtrado. Esto ralentiza considerablemente el análisis.

**Fuente:** <https://nmap.org/book/man-port-scanning-basics.html>

**Paso 5:** De manera similar, si queremos descubrir la aplicación que se está ejecutando en el puerto 80, podríamos usar la opción -sV, y esta opción se utiliza para determinar la información de la versión de la aplicación.

**Dominio:**

```
nmap -Pn -sV -p 80 demo.ine.local
```

<figure><img src="/files/52SfDLr7f1N7spkZoJKt" alt=""><figcaption></figcaption></figure>

Esta es una de las formas en las que podemos descubrir una máquina que está detrás de un firewall, forzando a las herramientas a escanearla.

#### Conclusión

En este laboratorio, vimos un método estándar para descubrir hosts usando Nmap, que está detrás de un firewall.
