# Network Enumeration with NMAP

{% file src="/files/XGIZAk1OP08XNbKS6h8Y" %}

## Introducción a Nmap

**Nmap** (Network Mapper) es una herramienta de auditoría de seguridad y análisis de redes de código abierto, escrita en C, C++, Python y Lua. Está diseñada para escanear redes e identificar qué hosts están disponibles, los servicios y aplicaciones en ejecución, incluyendo sus nombres y versiones cuando es posible. Además, Nmap puede identificar sistemas operativos y versiones de los hosts, y evaluar configuraciones de filtros de paquetes, firewalls y sistemas de detección de intrusos (IDS).

### Casos de Uso

Nmap es ampliamente utilizado por administradores de red y especialistas en seguridad informática para:

* Auditar la seguridad de redes
* Realizar pruebas de penetración
* Verificar configuraciones de firewall e IDS
* Mapear redes
* Analizar respuestas
* Identificar puertos abiertos
* Evaluar vulnerabilidades

### Arquitectura de Nmap

Nmap ofrece varias técnicas de escaneo que proporcionan distintos tipos de información sobre los objetivos. Estas técnicas se pueden clasificar en las siguientes categorías:

1. **Descubrimiento de Host**: Determina qué hosts están disponibles en la red.
2. **Escaneo de Puertos**: Identifica puertos abiertos en los hosts.
3. **Enumeración y Detección de Servicios**: Determina los servicios y aplicaciones que se están ejecutando, junto con sus versiones.
4. **Detección del Sistema Operativo**: Identifica el sistema operativo y su versión en el host.
5. **Interacción Programable con el Servicio de Destino**: Utiliza el motor de scripts de Nmap para ejecutar scripts personalizados.

### Sintaxis

La sintaxis básica de Nmap es la siguiente:

```bash
nmap <scan types> <options> <target>
```

### Técnicas de Escaneo

Nmap ofrece diversas técnicas de escaneo que pueden utilizar diferentes tipos de conexiones y paquetes para obtener distintos resultados. A continuación se muestran algunas de las técnicas de escaneo disponibles:

```bash
nmap --help
```

#### Técnicas de Escaneo Comunes

* `-sS`: TCP SYN scan (escaneo SYN)
* `-sT`: TCP Connect scan (escaneo Connect)
* `-sU`: UDP scan (escaneo UDP)
* `-sN`: TCP Null scan (escaneo Null)
* `-sF`: TCP FIN scan (escaneo FIN)
* `-sX`: TCP Xmas scan (escaneo Xmas)
* `-sO`: IP protocol scan (escaneo de protocolo IP)
* `-sI <zombie host[:probeport]>`: Idle scan (escaneo Idle)
* `-b <FTP relay host>`: FTP bounce scan (escaneo FTP bounce)

#### Ejemplo de Escaneo TCP-SYN

El escaneo TCP-SYN (`-sS`) es uno de los métodos de escaneo más populares y predeterminados en Nmap. Este método permite escanear varios miles de puertos por segundo sin completar el protocolo de enlace de tres vías TCP.

* **Funcionamiento**:
  * Envia un paquete con el indicador SYN.
  * Si el objetivo responde con un paquete SYN-ACK, el puerto se considera **abierto**.
  * Si responde con un paquete RST, el puerto se considera **cerrado**.
  * Si no se recibe respuesta, el puerto se considera **filtrado**.

**Ejemplo de uso**:

```bash
sudo nmap -sS localhost
```

**Salida**:

```bash
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-11 22:50 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
5432/tcp open  postgresql
5901/tcp open  vnc-1

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

En este ejemplo, se muestran cuatro puertos TCP abiertos: 22 (ssh), 80 (http), 5432 (postgresql) y 5901 (vnc-1).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://beafn28.gitbook.io/beafn28/apuntes-hacking/network-enumeration-with-nmap.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
