Skip to content

Introduction to Nmap

Network Mapper (Nmap). Está diseñado para escanear redes e identificar qué hosts están disponibles en la red utilizando paquetes sin procesa Nmap también ofrece capacidades de escaneo que pueden determinar si los filtros de paquetes, firewalls o sistemas de detección de intrusiones (IDS) están configurados según sea necesario.

Arquitectura de Nmap

Nmap se puede dividir en las siguientes técnicas de escaneo: - Host discovery - Port scanning - Service enumeration and detection - OS detection - Scriptable interaction with the target service (Nmap Scripting Engine)

Sintaxis

La sintaxis de Nmap es amigable y se ve así:

Introduction to Nmap
1i8n@htb[/htb]$ nmap <scan types> <options> <target>

Técnicas de escaneo

Introduction to Nmap
1i8n@htb[/htb]$ nmap --help

<SNIP>
SCAN TECHNIQUES:
  -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
  -sU: UDP Scan
  -sN/sF/sX: TCP Null, FIN, and Xmas scans
  --scanflags <flags>: Customize TCP scan flags
  -sI <zombie host[:probeport]>: Idle scan
  -sY/sZ: SCTP INIT/COOKIE-ECHO scans
  -sO: IP protocol scan
  -b <FTP relay host>: FTP bounce scan
<SNIP>

Ejemplo: Usando -sS

El escaneo TCP-SYN (-sS) es una de las configuraciones predeterminadas. El escaneo TCP-SYN envía un paquete con el indicador SYN y, por lo tanto, nunca completa el protocolo de enlace de tres vías. - Si nuestro destino nos envía un paquete con la etiqueta SYN-ACK, Nmap detecta que el puerto está abierto. - Si el destino responde con un paquete con la etiqueta RST, es un indicador de que el puerto está cerrado. - Si Nmap no recibe un paquete de vuelta, lo mostrará como filtrado. Según la configuración del firewall

Introduction to Nmap
1i8n@htb[/htb]$ sudo nmap -sS localhost

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

Descubrimiento de host

Existen varios métodos de descubrimiento de hosts las cuales ofrece Nmap uno de los métodos mas eficaces es el método de  ICMP echo requests (solicitudes de eco ICMP)


💡
Una practica muy recomendada es almacenar siempre cada `escaneo`, para comparar, documentar, y generar informes

Escanear el rango de la red

Este método de escaneo solo funciona si los firewalls los permiten

Host Discovery
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -sn -oA tnet | grep for | cut -d" " -f5

10.129.2.4
10.129.2.10
10.129.2.11
10.129.2.18
10.129.2.19
10.129.2.20
10.129.2.28

Explicación

Opcion Descripcion
10.29.21.0/24 Alcance de la red objetivo.
-sn Desactiva el escaneo de puertos, es decir solo escaneo de ping
-oA tnet Almacena los resultados en todos los formatos que comienzan con el nombre 'tnet' (.nmap, .xml, .gnmap)
grep for Busca líneas que contengan la palabra "for", ya que Nmap presenta los resultados en este formato Nmap scan report for 10.129.2.5
| cut -d" " -f5 cut para extraer el campo deseado, -d" " define el delimitador como el separador, -f5 selecciona el quinto campo
## Scan IP List
Analicemos este caso. Durante una prueba de penetracion interna, se nos proporcionaría una lista de IPs las cuales necesitan ser probadas, entonces para ese Nmap también permite trabajar con listas (.lst)
Host Discovery
1i8n@htb[/htb]$ cat hosts.lst

10.129.2.4
10.129.2.10
10.129.2.11
10.129.2.18
10.129.2.19
10.129.2.20
10.129.2.28

Si queremos utilizar la técnica anterior pero con listas, el comando quadria

Host Discovery
1i8n@htb[/htb]$ sudo nmap -sn -oA tnet -iL hosts.lst | grep for | cut -d" " -f5

10.129.2.18
10.129.2.19
10.129.2.20

Donde

Opcion Descripcion
-iL Realiza exploraciones definidas contra objetivos en la lista 'hosts.lst' proporcionada.
## Escaneando Multiples IPs
Host Discovery
1i8n@htb[/htb]$ sudo nmap -sn -oA tnet 10.129.2.18 10.129.2.19 10.129.2.20| grep for | cut -d" " -f5

10.129.2.18
10.129.2.19
10.129.2.20

Escaneo en una rango definido de IPs en un rango definido en el octeto que corresponde

Host Discovery
1i8n@htb[/htb]$ sudo nmap -sn -oA tnet 10.129.2.18-20| grep for | cut -d" " -f5

10.129.2.18
10.129.2.19
10.129.2.20

Escanear una sola IP

Host Discovery
1i8n@htb[/htb]$ sudo nmap 10.129.2.18 -sn -oA host 

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-14 23:59 CEST
Nmap scan report for 10.129.2.18
Host is up (0.087s latency).
MAC Address: DE:AD:00:00:BE:EF
Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds

💡
Si deshabilitamos es escaneo de puertos (-sn), Nmap automáticamente ara un ping scan con son `solicitudes de ECO ICMP` (-PE)

Host Discovery
1i8n@htb[/htb]$ sudo nmap 10.129.2.18 -sn -oA host -PE --packet-trace 

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 00:08 CEST
SENT (0.0074s) ARP who-has 10.129.2.18 tell 10.10.14.2
RCVD (0.0309s) ARP reply 10.129.2.18 is-at DE:AD:00:00:BE:EF
Nmap scan report for 10.129.2.18
Host is up (0.023s latency).
MAC Address: DE:AD:00:00:BE:EF
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Opción Descripcion
-PE Realiza el escaneo de ping utilizando 'solicitudes de eco ICMP' contra el objetivo.
--packet-trace Muestra todos los paquetes enviados y recibidos
mas estrategias de descubrimiento de host

Escaneo de host y puerto

Nmap nos permite ver diferentes tipos de información de las cuales podemos mencionar - Puertos abiertos y sus servicios - Version de los servicios - sistema operativo Tambien podemos filtrar los puertos dependiendo del estado que se requiera existen 6 6 diferentes estados:

Estado Descripcion
open Esto indica que la conexión se a establecido. Estas conexiones pueden ser conexiones TCP, datagramas UDP y asociaciones SCTP.
closed Cuando el puerto se muestra como cerrado, el protocolo TCP indica que el paquete que recibimos contiene un indicador RST. Este método de escaneo también se puede utilizar para determinar si nuestro objetivo está activo 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 una respuesta para un puerto específico, Nmap lo establecerá en ese estado. Esto indica que un firewall o un filtro de paquetes puede 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.
## Descubrimiento de puertos TCP abiertos
Nmap escanea los 1000 puertos TCP principales con el escaneo SYN (-sS).
si no definimos puertos ni métodos de escaneo, estos parámetros se configuran automáticamente. Podemos definir los puertos uno por uno (-p 22,25,80,139,445), por rango (-p 22-445), por los puertos más frecuentes (--top-ports=10) de la base de datos de Nmap que se han marcado como más frecuentes, escaneando todos los puertos (-p-) pero también definiendo un escaneo rápido de puertos, que contiene los 100 puertos más frecuentes (-F).
#### Scanning Top 10 TCP Ports

Host and Port Scanning      

Host and Port Scanning
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 --top-ports=10 

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 15:36 CEST
Nmap scan report for 10.129.2.28
Host is up (0.021s latency).

PORT     STATE    SERVICE
21/tcp   closed   ftp
22/tcp   open     ssh
23/tcp   closed   telnet
25/tcp   open     smtp
80/tcp   open     http
110/tcp  open     pop3
139/tcp  filtered netbios-ssn
443/tcp  closed   https
445/tcp  filtered microsoft-ds
3389/tcp closed   ms-wbt-server
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)

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

Scanning Options Description
10.129.2.28 Scans the specified target.
--top-ports=10 Escanea los puertos superiores especificados que se han definido como los más frecuentes.

Nmap - Seguimiento de paquetes

Host and Port Scanning
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p 21 --packet-trace -Pn -n --disable-arp-ping

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 15:39 CEST
SENT (0.0429s) TCP 10.10.14.2:63090 > 10.129.2.28:21 S ttl=56 id=57322 iplen=44  seq=1699105818 win=1024 <mss 1460>
RCVD (0.0573s) TCP 10.129.2.28:21 > 10.10.14.2:63090 RA ttl=64 id=0 iplen=40  seq=0 win=0
Nmap scan report for 10.11.1.28
Host is up (0.014s latency).

PORT   STATE  SERVICE
21/tcp closed ftp
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
Scanning Options Description
10.129.2.28 objetivo
-p 21 Escanea sólo el puerto especificado.
--packet-trace Muestra todos los paquetes enviados y recibidos.
-n Deshabilita la resolución DNS
--disable-arp-ping Desactiva el ping ARP.
Explicación acerca de la salida anterior
#### Request -:> Pedido
Message Description
SENT (0.0429s) Indica la operación SENT de Nmap, que envía un paquete al destino.
TCP Muestra el protocolo que se está utilizando para interactuar con el puerto de destino.
10.10.14.2:63090 > Representa nuestra dirección IPv4 y el puerto de origen, que será utilizado por Nmap para enviar los paquetes.
10.129.2.28:21 Muestra la dirección IPv4 de destino y el puerto de destino.
S Bandera SYN del paquete TCP enviado.
ttl=56 id=57322 iplen=44 seq=1699105818 win=1024 mss 1460 Parámetros adicionales del encabezado TCP.
#### Response -:> respuesta
Message Description
RCVD (0.0573s) Indica un paquete recibido del destino.
TCP Muestra el protocolo que se está utilizando.
10.129.2.28:21 > Representa la dirección IPv4 de destino y el puerto de origen, que se utilizará para responder.
10.10.14.2:63090 Muestra nuestra dirección IPv4 y el puerto al que se responderá.
RA Banderas RST y ACK del paquete TCP enviado.
ttl=64 id=0 iplen=40 seq=0 win=0 Parámetros adicionales del encabezado TCP.
#### Connect Scan
El escaneo de conexión TCP de Nmap (-sT) usa el protocolo de enlace de tres vias para determinar si un puerto especifico es un host de destino esta abierto o cerrado.
El escaneo envía un paquete SYN al puerto de destino y espera una respuesta. Se considera abierto si el puerto de destino responde con un paquete SYN-ACK y cerrado si responde con un paquete RST.
Escaneo de host y puerto
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p 443 --packet-trace --disable-arp-ping -Pn -n --reason -sT 

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 16:26 CET
CONN (0.0385s) TCP localhost > 10.129.2.28:443 => Operation now in progress
CONN (0.0396s) TCP localhost > 10.129.2.28:443 => Connected
Nmap scan report for 10.129.2.28
Host is up, received user-set (0.013s latency).

PORT    STATE SERVICE REASON
443/tcp open  https   syn-ack

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

Puertos filtrados

Host and Port Scanning
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p 139 --packet-trace -n --disable-arp-ping -Pn

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 15:45 CEST
SENT (0.0381s) TCP 10.10.14.2:60277 > 10.129.2.28:139 S ttl=47 id=14523 iplen=44  seq=4175236769 win=1024 <mss 1460>
SENT (1.0411s) TCP 10.10.14.2:60278 > 10.129.2.28:139 S ttl=45 id=7372 iplen=44  seq=4175171232 win=1024 <mss 1460>
Nmap scan report for 10.129.2.28
Host is up.

PORT    STATE    SERVICE
139/tcp filtered netbios-ssn
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)

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

Descubriendo puertos UDP abiertos

Veamos un ejemplo de cómo puede verse un escaneo UDP (-sU) y qué resultados nos da.

Host and Port Scanning
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -F -sU

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 16:01 CEST
Nmap scan report for 10.129.2.28
Host is up (0.059s latency).
Not shown: 95 closed ports
PORT     STATE         SERVICE
68/udp   open|filtered dhcpc
137/udp  open          netbios-ns
138/udp  open|filtered netbios-dgm
631/udp  open|filtered ipp
5353/udp open          zeroconf
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)

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

Guardando resultados

Nmap puede guardar los resultados en 3 formatos diferentes. - Salida normal (-oN) con la extensión de archivo .nmap - Salida grepable (-oG) con la extensión de archivo .gnmap - Salida XML (-oX) con la extensión de archivo .xml - Salida en todos los formatos (-oA)


Guardando la salida en todos los formatos

Saving the Results
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p- -oA target

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-16 12:14 CEST
Nmap scan report for 10.129.2.28
Host is up (0.0091s latency).
Not shown: 65525 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
25/tcp    open  smtp
80/tcp    open  http
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)

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

si no se proporciona una ruta, estos se almacenan en el directorio en el cual te encuentras

Saving the Results
1i8n@htb[/htb]$ ls

target.gnmap target.xml  target.nmap

Html

A partir de la salida XML podemos transfórmalo a html esto para poder informes y presentarlo fácilmente a personas sin conocimiento técnico. Para convertir los resultados almacenados de formato XML a HTML, podemos utilizar la herramienta xsltproc.

Saving the Results
1i8n@htb[/htb]$ xsltproc target.xml -o target.html

Service Enumeration

Es importante determinar las versiones de las aplicaciones y servicios que se encuentran en el objetivo. Para poder escanear vulnerabilidades y conocer el código de origen, para que de esta forma no permite buscar un exploit que se adecue al servicio y al SO de nuestro objetivo

Detectando version de servicios

En esta sección lo primero que se recomienda es hacer un escaneo rápido de puertos utilizando la propiedad (-p-) posteriormente podemos utilizar (-sV) para escanear los puertos específicos en busca de servicios y sus verciones

💡
Para ver el estado en el cual esta el escaneo puedes utilizar la [Barra espaciadora] durante el escaneo, ya que esto suele llevar mucho tiempo
Service Enumeration
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p- -sV

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 19:44 CEST
[Space Bar]
Stats: 0:00:03 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 3.64% done; ETC: 19:45 (0:00:53 remaining)
Opciones Descripción
10.129.2.28 Objetivo
-p- Permite escanear todos los puertos
-sV Detecta la version de los servicios en los puertos
Por otro lado podemos utilizar (--stats-every=5s) para definir en cuantos periodos de tiempo debe mostrarse el estado, Aquí podemos especificar el número de segundos (s) o minutos (m).
Service Enumeration
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p- -sV --stats-every=5s

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 19:46 CEST
Stats: 0:00:05 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 13.91% done; ETC: 19:49 (0:00:31 remaining)
Stats: 0:00:10 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 39.57% done; ETC: 19:48 (0:00:15 remaining)
Opciones Descripción
--stats-every=5s Shows the progress of the scan every 5 seconds.

Hasta este punto para poder ver que puertos o servicios se ejecutan en el objetivo, tenemos que esperar a que termine el escaneo, pero existe una forma de poder ver los puertos abiertos una vez que Nmap los encuentre, esto lo logramos inidcando la verbosidad e ir incrementando según como se requiera. nivel de verbosidad (-v / -vv)

Service Enumeration
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p- -sV -v 

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-15 20:03 CEST
NSE: Loaded 45 scripts for scanning.
Initiating ARP Ping Scan at 20:03
Scanning 10.129.2.28 [1 port]
Completed ARP Ping Scan at 20:03, 0.03s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 20:03
Completed Parallel DNS resolution of 1 host. at 20:03, 0.02s elapsed
Initiating SYN Stealth Scan at 20:03
Scanning 10.129.2.28 [65535 ports]
Discovered open port 995/tcp on 10.129.2.28
Discovered open port 80/tcp on 10.129.2.28
Discovered open port 993/tcp on 10.129.2.28
Discovered open port 143/tcp on 10.129.2.28
Discovered open port 25/tcp on 10.129.2.28
Discovered open port 110/tcp on 10.129.2.28
Discovered open port 22/tcp on 10.129.2.28
<SNIP>

Donde: - -vv permite Aumenta la verbosidad del escaneo, que muestra información más detallada.

Básicamente, Nmap examina los banners de los puertos escaneados y los imprime. Si no puede identificar versiones a través de los banners, Nmap intenta identificarlas mediante un sistema de comparación basado en firmas. Pero esto aumenta significativamente la duración del análisis. Una desventaja de los resultados presentados por Nmap es que el análisis automático puede perder cierta información porque a veces Nmap no sabe cómo manejarla.

Si nos conectamos manualmente al servidor SMTP usando nc, tomamos el banner e interceptamos el tráfico de red usando tcpdump, podemos ver lo que Nmap no nos mostró

Tcpdump

Service Enumeration
1i8n@htb[/htb]$ sudo tcpdump -i eth0 host 10.10.14.2 and 10.129.2.28

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

Nc

Service Enumeration
1i8n@htb[/htb]$  nc -nv 10.129.2.28 25

Connection to 10.129.2.28 port 25 [tcp/*] succeeded!
220 inlane ESMTP Postfix (Ubuntu)

Motor de scripts Nmap

Nmap Scripting Engine (NSE) es otra característica útil de Nmap. Nos brinda la posibilidad de crear scripts en Lua para interactuar con determinados servicios. Existen un total de 14 categorías en las que se pueden dividir estos scripts:

Category Description
auth Determinación de credenciales de autenticación.
broadcast Los scripts que se utilizan para el descubrimiento de host mediante difusió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 que se ejecutan utilizando la opción -sC.
discovery Evaluación de servicios accesibles.
dos Estos scripts se utilizan para comprobar si los servicios tienen vulnerabilidades de denegación de servicio y se usan 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 un procesamiento posterior.
fuzzer Esto utiliza scripts para identificar vulnerabilidades y manejo de paquetes inesperados 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 acceso intrusivo y destructivo.
version Extensión para detección de servicios.
vuln Identificación de vulnerabilidades específicas.
## Tenemos varias formas de definir los scripts deseados en Nmap.
### Scripts predeterminados
Nmap Scripting Engine
1i8n@htb[/htb]$ sudo nmap <target> -sC

Categoria especifica de scripts

Nmap Scripting Engine
1i8n@htb[/htb]$ sudo nmap <target> --script <category>

Scripts definidos

Nmap Scripting Engine
1i8n@htb[/htb]$ sudo nmap <target> --script <script-name>,<script-name>,...

Uso de scripts específicos

Nmap Scripting Engine
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p 25 --script banner,smtp-commands

Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-16 23:21 CEST
Nmap scan report for 10.129.2.28
Host is up (0.050s latency).

PORT   STATE SERVICE
25/tcp open  smtp
|_banner: 220 inlane ESMTP Postfix (Ubuntu)
|_smtp-commands: inlane, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8,
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)

Vemos que podemos reconocer la distribución Ubuntu de Linux mediante el script 'banner'. El script smtp-commands nos muestra qué comandos podemos utilizar al interactuar con el servidor SMTP de destino. Nmap también nos da la posibilidad de escanear nuestro objetivo con la opción agresiva (-A). Esto escanea el objetivo con múltiples opciones como detección de servicio (-sV), detección de SO (-O), traceroute(--traceroute) y con los scripts NSE predeterminados (-sC).

Nmap Scripting Engine
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p 80 -A
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-17 01:38 CEST
Nmap scan report for 10.129.2.28
Host is up (0.012s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-generator: WordPress 5.3.4
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: blog.inlanefreight.com
MAC Address: DE:AD:00:00:BE:EF (Intel Corporate)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 2.6.32 (96%), Linux 3.2 - 4.9 (96%), Linux 2.6.32 - 3.10 (96%), Linux 3.4 - 3.10 (95%), Linux 3.1 (95%), Linux 3.2 (95%), 
AXIS 210A or 211 Network Camera (Linux 2.6.17) (94%), Synology DiskStation Manager 5.2-5644 (94%), Netgear RAIDiator 4.2.28 (94%), 
Linux 2.6.32 - 2.6.35 (94%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop

TRACEROUTE
HOP RTT      ADDRESS
1   11.91 ms 10.129.2.28

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

Evaluación de vulnerabilidad

Pasemos ahora al puerto HTTP 80 y veamos qué información y vulnerabilidades podemos encontrar utilizando la categoría vuln de NSE.

Nmap Scripting Engine
1i8n@htb[/htb]$ sudo nmap 10.129.2.28 -p 80 -sV --script vuln 

Nmap scan report for 10.129.2.28
Host is up (0.036s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
| http-enum:
|   /wp-login.php: Possible admin folder
|   /readme.html: Wordpress version: 2
|   /: WordPress version: 5.3.4
|   /wp-includes/images/rss.png: Wordpress version 2.2 found.
|   /wp-includes/js/jquery/suggest.js: Wordpress version 2.5 found.
|   /wp-includes/images/blank.gif: Wordpress version 2.6 found.
|   /wp-includes/js/comment-reply.js: Wordpress version 2.7 found.
|   /wp-login.php: Wordpress login page.
|   /wp-admin/upgrade.php: Wordpress login page.
|_  /readme.html: Interesting, a readme.
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-wordpress-users:
| Username found: admin
|_Search stopped at ID #25. Increase the upper limit if necessary with 'http-wordpress-users.limit'
| vulners:
|   cpe:/a:apache:http_server:2.4.29:
|       CVE-2019-0211   7.2 https://vulners.com/cve/CVE-2019-0211
|       CVE-2018-1312   6.8 https://vulners.com/cve/CVE-2018-1312
|       CVE-2017-15715  6.8 https://vulners.com/cve/CVE-2017-15715
<SNIP>

Rendimiento

El rendimiento del escaneo juega un papel importante cuando necesitamos escanear una red extensa o estamos lidiando con un ancho de banda de red bajo. Podemos usar varias opciones para decirle a Nmap qué tan rápido (-T <0-5>), con qué frecuencia (--min-parallelism <número>), qué tiempos de espera (--max-rtt-timeout <tiempo>) deben tener los paquetes de prueba, cuántos paquetes deben enviarse simultáneamente (--min-rate <número>) y con el número de reintentos (--max-retries <número>) para los puertos escaneados se deben escanear los objetivos.

Tiempos de espera

Cuando Nmap envía un paquete, lleva un tiempo lo cual se conoce como un tiempo de IDA y VUELTA Nmap comienza con un tiempo de espera alto (--min-RTT-timeout) de 100 ms. Veamos un ejemplo en el que escaneamos toda la red con 256 hosts, incluidos los 100 puertos principales.

Escaneo predeterminado

Performance
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 39.44 seconds

RTT optimizado

Performance
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F --initial-rtt-timeout 50ms --max-rtt-timeout 100ms

<SNIP>
Nmap done: 256 IP addresses (8 hosts up) scanned in 12.29 seconds
Opciones Descripcion
-F Escanea los 100 puertos principales.
--initial-rtt-timeout 50ms Establece el valor de tiempo especificado como tiempo de espera RTT inicial.
--max-rtt-timeout 100ms Establece el valor de tiempo especificado como tiempo de espera RTT máximo.
Al comparar los dos análisis, podemos ver que encontramos dos hosts menos con el análisis optimizado, pero el análisis solo tomó una cuarta parte del tiempo. A partir de esto, podemos concluir que configurar el tiempo de espera inicial de RTT (--initial-rtt-timeout) en un período de tiempo demasiado corto puede hacer que pasemos por alto algunos hosts.

Máximo de reintentos

Otra forma de aumentar la velocidad de escaneo es especificando la tasa de reintentos de los paquetes enviados (--max-retries). El valor predeterminado es 10, pero podemos reducirlo a 0. Esto significa que si Nmap no recibe una respuesta para un puerto, no enviará más paquetes a ese puerto y lo omitirá.

Escaneo predeterminado

Performance
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F | grep "/tcp" | wc -l

23

Reintentos reducidos

Performance
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F --max-retries 0 | grep "/tcp" | wc -l

21

Donde

  • --max-retries 0 Establece la cantidad de reintentos que se realizarán durante el escaneo.
💡
Nuevamente, reconocemos que acelerar también puede tener un efecto negativo en nuestros resultados, lo que significa que podemos pasar por alto información importante.

Rates

Al configurar la tasa mínima (--min-rate ) para enviar paquetes, le indicamos a Nmap que envíe simultáneamente la cantidad especificada de paquetes

Escaneo predeterminado

Performance
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F -oN tnet.default

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 29.83 seconds

Escaneo optimizado

Performance
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F -oN tnet.minrate300 --min-rate 300

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 8.67 seconds

Análisis predeterminado: se encontraron puertos abiertos

Performance
1i8n@htb[/htb]$ cat tnet.default | grep "/tcp" | wc -l

23

Análisis optimizado: se encontraron puertos abiertos

Performance
1i8n@htb[/htb]$ cat tnet.minrate300 | grep "/tcp" | wc -l

23

Timing

Debido a que dichas configuraciones no siempre se pueden optimizar manualmente, como en una prueba de penetración de caja negra, Nmap ofrece seis plantillas de tiempo diferentes (-T <0-5>) para que las usemos. para que los usemos. Estos valores (0-5) determinan la agresividad de nuestros análisis. Esto también puede tener efectos negativos si el análisis es demasiado agresivo, y los sistemas de seguridad pueden bloquearnos debido al tráfico de red producido. La plantilla de tiempo predeterminada que se utiliza cuando no hemos definido nada más es la normal (-T 3).

  • -T 0 / -T paranoid
  • -T 1 / -T sneaky
  • -T 2 / -T polite
  • -T 3 / -T normal
  • -T 4 / -T aggressive
  • -T 5 / -T insane

Escaneo predeterminado

Performance
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F -oN tnet.default 

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 32.44 seconds

Insane Scan

Performance
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F -oN tnet.T5 -T 5

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 18.07 seconds