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í:
1i8n@htb[/htb]$ nmap <scan types> <options> <target>
Técnicas de escaneo¶
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
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)
Escanear el rango de la red¶
Este método de escaneo solo funciona si los firewalls los permiten
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) |
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
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 |
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
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¶
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
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
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¶
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. |
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¶
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.
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¶
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
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.
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
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). |
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)
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¶
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¶
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 |
1i8n@htb[/htb]$ sudo nmap <target> -sC
Categoria especifica de scripts¶
1i8n@htb[/htb]$ sudo nmap <target> --script <category>
Scripts definidos¶
1i8n@htb[/htb]$ sudo nmap <target> --script <script-name>,<script-name>,...
Uso de scripts específicos¶
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).
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.
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¶
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¶
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¶
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F | grep "/tcp" | wc -l
23
Reintentos reducidos¶
1i8n@htb[/htb]$ sudo nmap 10.129.2.0/24 -F --max-retries 0 | grep "/tcp" | wc -l
21
Donde¶
--max-retries 0Establece la cantidad de reintentos que se realizarán durante el escaneo.
Rates¶
Al configurar la tasa mínima (--min-rate
Escaneo predeterminado¶
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¶
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¶
1i8n@htb[/htb]$ cat tnet.default | grep "/tcp" | wc -l
23
Análisis optimizado: se encontraron puertos abiertos¶
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¶
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¶
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