# Nmap Cheat Sheets

***

```bash
# Ejecución promedio

nmap 10.10.10.10 -p- --open --min-rate 500 -vvv -n -Pn --disable-arp-ping --defeat-rst-ratelimit -oG allPorts
cat allPorts| grep -oP '\d+(?=\/\w+\/\w+)' | paste -sd, -
nmap 186.64.114.175 -p 21,25,110,143,465,587,993,995,2812,10050,30215,40137,43270,43527,44029,47959 -sC -sV -O --min-rate 500 -oN target
```

***

### 1. ESCANEO DE RED

* Escanear rango de red

```bash
nmap 10.10.10.0/24 -sn -oA net | grep "for" | cut -d " " -f 5 code
```

* Escanear red por lista de IP

```bash
nmap -sn -oA net -iL hosts.txt | grep for | cut -d " " -f 5
```

***

## 2. ESCANEO DE HOSTS

* Escaneo básico

```bash
nmap 10.10.10.10 -sn -oA host
```

* Escaneo básico sobre múltiples direcciones IP

```bash
nmap 10.10.10.10 10.10.10.20 -sn -oA hosts | grep for | cut -d" " -f 5
```

* Escaneo con envío de paquetes ICMP

```bash
nmap 10.10.10.10 -sn -PE -oA host
```

* Escaneo con análisis de tráfico sobre paquetes tramitados

```bash
nmap 10.10.10.10 -sn -PE --packet-trace -oA host
```

* Escaneo muestra el razón del resultado

```bash
nmap 10.10.10.10 -sn -PE --reason -oA host
```

* Escaneo con ping ARP deshabilitado

```bash
nmap 10.10.10.10 -sn -PE --packet-trace --disable-arp-ping -oA host
```

***

## 3. ESCANEO DE PUERTOS

* Escaneo de los 10 puertos principales (cambiar 10 por 100, 1000 en función del top requerido)

```bash
nmap 10.10.10.10 --top-ports=10
```

* Escaneo específico de puerto

```bash
nmap 10.10.10.10 -p 443
```

* Escaneo de puertos con rastreo de paquetes

```bash
nmap 10.10.10.10 -p 21 --packet-trace -Pn -n --disable-arp-ping
```

* Escaneo de puertos bajo protocolo TCP

```bash
nmap 10.10.10.10 -p- -sT -Pn -n --reason --packet-trace --disable-arp-ping
```

* Escaneo de puerto filtrado (status= filtered)

```bash
nmap 10.10.10.10 -p 139 --packet-trace --disable-arp-ping -Pn -n
```

* Escaneo de puertos bajo protocolo UDP

```bash
nmap 10.10.10.10 -sU -F
```

* Escaneo de puerto con detección de versión del servicio activo

```bash
nmap 10.10.10.10 -sV -Pn -n --disable-arp-ping --packet-trace -p 445 --reason
```

***

## 4. GUARDAR RESULTADOS DE ESCANEOS

* Guardar escaneo en formato nmap

```bash
nmap 10.10.10.10 -p- -oN target
```

* Guardar escaneo en formato grep

```bash
nmap 10.10.10.10 -p- -oG target
```

* Guardar escaneo en formato xml

```bash
nmap 10.10.10.10 -p- -oX target
```

* Crear reporte html para formato xml

```bash
xsltproc target.xml -o target.html
```

***

## 5. ENUMERACIÓN DE SERVICIOS

* Escaneo de puertos con detección de versión de servicio activo

```bash
nmap 10.10.10.10 -p- -sV
```

* Escaneo con retardo en salida

```bash
nmap 10.10.10.10 -p- -sV --stats-every=5s
```

* Escaneo con aumento de los niveles de verbosidad

```bash
nmap 10.10.10.10 -p- -sV -v
nmap 10.10.10.10 -p- -sV -vv
nmap 10.10.10.10 -p- -sV -vvv
```

* Escaneo con captura del banner de servicio

<pre class="language-bash"><code class="lang-bash"><strong>nmap 10.10.10.10 -p- -sV
</strong>nmap 10.10.10.10 -p- -sV -Pn -n --disable-arp-ping --packet-trace
tcpdump -i eth0 host 10.10.10.10 and 10.10.10.20
nc -nv 10.10.10.10
</code></pre>

***

## 6. ESCANEO CON EJECUCIÓN DE SCRIPT

* Escaneo con scripts por defecto

```bash
nmap 10.129.2.28 -sC
```

* Escaneo con script específico

```bash
nmap 10.129.2.28 --script vuln
```

* Escaneo con grupo general de scripts

```bash
nmap 10.129.2.28 --script vuln,brute,version
```

* Escaneo con grupo de subíndices por puerto

```bash
nmap 10.129.2.28 -p 25 --script banner,smtp-commands
```

* Escaneo agresivo

```bash
nmap 10.129.2.28 -p 80 -A
```

***

## 7. ESCANEO CON GESTIÓN DE RENDIMIENTO

* Escaneado optimizado

```bash
nmap 10.129.2.28 -p- --min-rate X --min-parallelism X --min-rtt-timeout X
```

***

## 8. EVASIÓN DE FIREWALL, IDS E IPS

* Escaneo SYN

```bash
nmap 10.129.2.28 -p 21,22 -sS -Pn -n --disable-arp-ping
```

* Escaneo ACK

```bash
nmap 10.129.2.28 -p 21,22 -sA -Pn -n --disable-arp-ping
```

* Escaneo con dirección IP de salida falsa

```bash
nmap 10.129.2.28 -p 80 -sS -Pn -n --disable-arp-ping --packet-trace-D RND:5
```

* Escaneo desde una IP de origen diferente

```bash
nmap 10.129.2.28 -n -Pn -p 445 -O -S 10.129.2.200 -e tun0
```

* Proxy DNS con escaneo SYN para puerto filtrado&#x20;

```bash
nmap 10.129.2.28 -p50000 -sS -Pn -n --disable-arp-ping --packet-trace
```

* Proxy DNS con escaneo SYN desde el puerto DNS como origen

```bash
nmap 10.129.2.28 -p50000 -sS -Pn -n --disable-arp-ping --packet-trace --source-port 53
```

* Conexión vía Netcat para confirmar puerto DNS filtrado

```bash
ncat -nv --source-port 53 10.129.2.28 50000
```

***

## PARÁMETROS GENERALES

| **Parámetros de escaneo** | **Descripción**                                                                                                                                                                                                                                                                                |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| -sn                       | Desactiva el escaneo de puertos                                                                                                                                                                                                                                                                |
| -oA                       | Almacena los resultados en todos los formatos (.nmap, grepeable y xml)                                                                                                                                                                                                                         |
| -oN                       | Almacena el resultado en formato .nmap                                                                                                                                                                                                                                                         |
| -oG                       | Almacena el resultado en formato .gnmap (grepeable)                                                                                                                                                                                                                                            |
| -oX                       | Almacena el resultado en formato .xml                                                                                                                                                                                                                                                          |
| -iL                       | Realiza análisis definidos contra una lista proporcionada                                                                                                                                                                                                                                      |
| -PE                       | Realiza el escaneo de ping utilizando solicitudes ICMP contra el objetivo                                                                                                                                                                                                                      |
| --packet-trace            | Muestra todos los paquetes enviados y recibidos                                                                                                                                                                                                                                                |
| --disable-arp-ping        | Deshabilita el ping ARP                                                                                                                                                                                                                                                                        |
| --reason                  | Muestra el motivo de un resultado específico                                                                                                                                                                                                                                                   |
| --top-ports=10            | Explora los puertos principales especificados que se han definido como más frecuentes (10, 100 ó 1000)                                                                                                                                                                                         |
| -p                        | Explora sólo el puerto especificado                                                                                                                                                                                                                                                            |
| -p-                       | Explora los 65535 puertos                                                                                                                                                                                                                                                                      |
| --open                    | Explora solo los puertos abiertos                                                                                                                                                                                                                                                              |
| -n                        | Desactiva la resolución DNS                                                                                                                                                                                                                                                                    |
| -sT                       | TCP Connect Scan. Envía un paquete SYN al destino. Recibe un SYN/ACK. Envía un ACK confirmando conexión. Recibe un Data con info. Envía un RST para finalizar. Si se completa indica puerto abierto. Si recibe RST indica puerto cerrado. Es más confiable pero menos sigiloso que el SYN scan |
| -sS                       | TCP SYN Scan. Envía un paquete SYN. Si recibe un SYN/ACK indica puerto abierto. Si recibe un RST indica puerto cerrado. Este escaneo es sigiloso, ya que no completa el proceso de conexión TCP                                                                                                |
| -sA                       | TCP ACK Scan. Envía un paquete ACK. Si recibe un RST indica puerto cerrado. Si no recibe respuesta, puede indicar que el puerto está filtrado. Es útil para eludir firewalls, ya que no establece una conexión completa                                                                        |
| -sU                       | Realiza un escaneo UDP                                                                                                                                                                                                                                                                         |
| -Pn                       | Deshabilita las solicitudes de eco ICMP                                                                                                                                                                                                                                                        |
| -F                        | Escanea los 100 puertos principales                                                                                                                                                                                                                                                            |
| -sV                       | Realiza la detección de la versión del servicio en puertos específicos                                                                                                                                                                                                                         |
| --stats-every=5s          | Muestra el progreso del escaneo cada 5 segundos                                                                                                                                                                                                                                                |
| -v / -vv / -vvv           | Aumenta el detalle de la información mostrada por output en el escaneo                                                                                                                                                                                                                         |
| -sC                       | Escaneo que aplica la ejecución de scripts NSE predeterminados                                                                                                                                                                                                                                 |
| --script                  | Utiliza secuencias de comandos NSE específicos para escaneos por scripts                                                                                                                                                                                                                       |
| --traceroute              | Rastrea la ruta de un paquete ICMP para mostrar los nodos intermedios                                                                                                                                                                                                                          |
| -O                        | Detecta el sistema operativo del objetivo                                                                                                                                                                                                                                                      |
| -A                        | Escaneo agresivo. Aplica automáticamente -sV, -O --traceroute y -sC                                                                                                                                                                                                                            |
| -T X                      | Velocidad de escaneo en relación a paquetes enviados al objetivo (0 mas baja, 5 mas alta)                                                                                                                                                                                                      |
| --initial-rtt-timeout Xms | Establece el valor de tiempo especificado como tiempo de espera inicial de RTT (Round-Trip-Time- RTT / Tiempo de ida y vuelta de un paquete)                                                                                                                                                   |
| --min-parallelism X       | Establece el valor especificado como la frecuencia mínima de envío de paquetes sobre el objetivo                                                                                                                                                                                               |
| --max-parallelism X       | Establece el valor especificado como la frecuencia máxima de envío de paquetes sobre el objetivo                                                                                                                                                                                               |
| --min-rtt-timeout X       | Establece el valor de tiempo especificado como tiempo de espera mínimo de RTT                                                                                                                                                                                                                  |
| --max-rtt-timeout X       | Establece el valor de tiempo especificado como tiempo de espera máximo de RTT                                                                                                                                                                                                                  |
| --min-rate X              | Establece el número mínimo de paquetes que se enviarán por segundo de forma simultanea                                                                                                                                                                                                         |
| --max-rate X              | Establece el número máximo de paquetes que se enviarán por segundo de forma simultanea                                                                                                                                                                                                         |
| --max-retries X           | Establece el número de reintentos que se realizarán durante el análisis                                                                                                                                                                                                                        |
| --min-hostgroup X         | Establece el número mínimo de hosts en paralelo                                                                                                                                                                                                                                                |
| --max-hostgroup X         | Establece el número máximo de hosts en paralelo                                                                                                                                                                                                                                                |
| -D RND:X                  | Genera X direcciones IP aleatorias que indican la IP de origen de la que proviene la conexión                                                                                                                                                                                                  |
| -S 10.129.2.20            | Escanea el objetivo utilizando una dirección IP de origen diferente                                                                                                                                                                                                                            |
| -e tun0                   | Envía todas las solicitudes a través de la interfaz especificada                                                                                                                                                                                                                               |
| --source-port 53          | Realiza los análisis desde un puerto el origen especificado                                                                                                                                                                                                                                    |

***

ESTADO DE PUERTOS

| **Estado de un puerto** | **Descripción**                                                                                                                                                                                      |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| open                    | Indica que se ha establecido la conexión con el puerto escaneado. Estas conexiones pueden ser conexiones TCP , datagramas UDP y asociaciones SCTP                                                    |
| closed                  | El protocolo TCP indica que el paquete que recibimos contiene una flag RST. Este método de escaneo también se puede utilizar para determinar si nuestro objetivo está vivo o no.                     |
| filtered                | Nmap no puede identificar correctamente si el puerto escaneado está abierto o cerrado porque no se devuelve ninguna respuesta del destino para el puerto o recibimos un código de error del destino. |
| unfiltered              | Este estado de un puerto solo ocurre durante el escaneo TCP-ACK y significa que el puerto es accesible, pero no se puede determinar si está abierto o cerrado.                                       |
| open\|filtered          | Si no obtenemos respuesta para un puerto concreto, Nmap lo establece en este estado. Esto indica que un firewall o un filtro de paquetes pueden proteger el puerto.                                  |
| closed\|filtered        | Este estado solo ocurre en los escaneos inactivos de ID de IP e indica que fue imposible determinar si el puerto escaneado está cerrado o filtrado por un firewall.                                  |

***

### GRUPOS DE SCRIPTS PARA ANÁLISIS CON --script

| **Categoría** | **Descripción**                                                                                                                                                            |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| auth          | Determinación de credenciales de autenticación.                                                                                                                            |
| broadcast     | Los scripts, que se utilizan para el descubrimiento de hosts mediante la transmisión y los hosts descubiertos, se pueden agregar automáticamente a los análisis restantes. |
| brute         | Ejecuta scripts que intentan iniciar sesión en el servicio respectivo mediante fuerza bruta con credenciales.                                                              |
| default       | Scripts predeterminados ejecutados usando la -sCopción.                                                                                                                    |
| discovery     | Evaluación de servicios accesibles.                                                                                                                                        |
| dos           | Estos scripts se utilizan para comprobar los servicios en busca de vulnerabilidades de denegación de servicio y se utilizan menos porque dañan los servicios.              |
| exploit       | Esta categoría de scripts intenta explotar vulnerabilidades conocidas del puerto escaneado.                                                                                |
| external      | Scripts que utilizan servicios externos para su posterior procesamiento.                                                                                                   |
| fuzzer        | Utiliza scripts para identificar vulnerabilidades y manejo inesperado de paquetes mediante el envío de diferentes campos, lo que puede llevar mucho tiempo.                |
| intrusive     | Scripts intrusivos que podrían afectar negativamente al sistema de destino.                                                                                                |
| malware       | Comprueba si algún malware infecta el sistema de destino.                                                                                                                  |
| safe          | Scripts defensivos que no realizan accesos intrusivos y destructivos.                                                                                                      |
| version       | Extensión para detección de servicios.                                                                                                                                     |
| vuln          | Identificación de vulnerabilidades específicas.                                                                                                                            |

***

### PLANTILLA DE TIEMPOS DE ENVÍO Y EFECTOS

|                                                 | **T0**                                    | **T1**                                    | **T2**                                    | **T3**                                    | **T4**                                    | **T5**                                    |
| ----------------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- |
| Name                                            | Paranoid                                  | Sneaky                                    | Polite                                    | Normal                                    | Aggressive                                | Insane                                    |
| min-rtt-timeout                                 | 100 ms                                    | 100 ms                                    | 100 ms                                    | 100 ms                                    | 100 ms                                    | 50 ms                                     |
| max-rtt-timeout                                 | 5 minutes                                 | 15 seconds                                | 10 seconds                                | 10 seconds                                | 1250 ms                                   | 300 ms                                    |
| initial-rtt-timeout                             | 5 minutes                                 | 15 seconds                                | 1 second                                  | 1 second                                  | 500 ms                                    | 250 ms                                    |
| max-retries                                     | 10                                        | 10                                        | 10                                        | 10                                        | 6                                         | 2                                         |
| Initial (and minimum) scan delay (--scan-delay) | 5 minutes                                 | 15 seconds                                | 400 ms                                    | 0                                         | 0                                         | 0                                         |
| Maximum TCP scan delay                          | 5 minutes                                 | 15,000                                    | 1 second                                  | 1 second                                  | 10 ms                                     | 5 ms                                      |
| Maximum UDP scan delay                          | 5 minutes                                 | 15 seconds                                | 1 second                                  | 1 second                                  | 1 second                                  | 1 second                                  |
| host-timeout                                    | 0                                         | 0                                         | 0                                         | 0                                         | 0                                         | 15 minutes                                |
| script-timeout                                  | 0                                         | 0                                         | 0                                         | 0                                         | 0                                         | 10 minutes                                |
| min-parallelism                                 | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates |
| max-parallelism                                 | 1                                         | 1                                         | 1                                         | Dynamic                                   | Dynamic                                   | Dynamic                                   |
| min-hostgroup                                   | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates |
| max-hostgroup                                   | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates | Dynamic, not affected by timing templates |
| min-rate                                        | No minimum rate limit                     | No minimum rate limit                     | No minimum rate limit                     | No minimum rate limit                     | No minimum rate limit                     | No minimum rate limit                     |
| max-rate                                        | No maximum rate limit                     | No maximum rate limit                     | No maximum rate limit                     | No maximum rate limit                     | No maximum rate limit                     | No maximum rate limit                     |
| defeat-rst-ratelimit                            | Not enabled by default                    | Not enabled by default                    | Not enabled by default                    | Not enabled by default                    | Not enabled by default                    | Not enabled by default                    |

***

### RESPUESTA DE FIREWALL

| **Paquetes** | **Descripción**                                                                                                                           |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| dropped      | Nmap envía paquetes pero no recibe respuesta, pueden ser bloqueados por firewalls, IDS o congestión de red                                |
| rejected     | Nmap recibe una respuesta explícita de rechazo del host de destino, indicando que el puerto está closed o filtered. Devuelve una flag RST |

***

### ERRORES DE RESPUESTA DE FIREWALL

| **Errores**       | **Descripción**                                                                                               |
| ----------------- | ------------------------------------------------------------------------------------------------------------- |
| Net Unreachable   | El destino no puede alcanzarse debido a problemas en la red entre el origen y el destino                      |
| Net Prohibited    | La red entre el origen y el destino está prohibida, probablemente debido a reglas de firewall                 |
| Host Unreachable  | El destino no puede ser alcanzado, posiblemente porque está apagado o no está en la red                       |
| Host Prohibited   | La comunicación con el host está prohibida, probablemente por reglas de firewall o configuración de seguridad |
| Port Unreachable  | El destino está disponible pero el puerto específico no está abierto o accesible                              |
| Proto Unreachable | El protocolo especificado no es compatible o está bloqueado en el destino                                     |

***
