Ejecutando un escaneo NMAP rápido para inventariar mi red

Nmap, que significa "Network Mapper", es una herramienta de código abierto que le permite realizar análisis en redes locales y remotas. Nmap es muy poderoso cuando se trata de descubrir protocolos de red, escanear puertos abiertos, detectar sistemas operativos que se ejecutan en máquinas remotas, etc. Los administradores de red utilizan la herramienta para hacer un inventario de los dispositivos de red, monitorear el estado del host remoto, guardar los resultados del escaneo para su uso posterior, etc.

el Nmap incluye una interfaz gráfica de usuario avanzada y un visor de resultados (Zenmap), una herramienta flexible de transferencia, redirección y depuración de datos (Ncat), una utilidad para comparar resultados de escaneo (Ndiff) y una herramienta de análisis de respuesta y generación de paquetes (Nping).

¿Por qué usar Nmap?

Además de ser libre, Nmap es muy flexible, portátil, bien documentado y fácil de usar. En el siguiente artículo te diremos cómo instalar Nmap, utilízalo y, sobre todo, aprende más sobre tu red.

Instalar Nmap

Instalar Nmap en Red Hat Enterprise Linux 8 o Sintió, ejecutarías:

# dnf -y install nmap

Reemplazar dnf para yum si está utilizando Red Hat Enterprise Linux 7 o posterior. Después de la instalación Nmap, puede ejecutar el nmap comando sin argumentos para mostrar todas sus opciones. También debe consultar el Nmap man página corriendo man nmap.

Usando Nmap

Suponga que su red local es 192.168.0.0/24 y desea ejecutar un escaneo en esta red. Ejecutar un escaneo sin argumentos excepto la dirección de red produce lo siguiente:

# nmap 192.168.0.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-06 21:00 CET
Nmap scan report for Archer.lan (192.168.0.1)
Host is up (0.0046s latency).
Not shown: 995 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
53/tcp    open  domain
80/tcp    open  http
1900/tcp  open  upnp
20005/tcp open  btx
MAC Address: 50:ff:BF:ff:ff:AC (Tp-link Technologies)

Nmap scan report for Lyric-1111C2.lan (192.168.0.101)
Host is up (0.013s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE0
80/tcp open  http
MAC Address: B8:dd:A0:dd:dd:C2 (Resideo)
Multiple networks can be scanned at once. For example
nmap 192.168.0.0/24 10.80.0.0/24

Se pueden analizar varias redes al mismo tiempo. Por ejemplo:

# nmap 192.168.0.0/24 10.80.0.0/24

Si queremos ejecutar un escaneo rápido de las máquinas en nuestra red sin intentar ver si un puerto está abierto, ejecutamos:

# nmap -sn 192.168.0.0/24

La salida del comando anterior es algo como:

# nmap -sn 192.168.0.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-06 21:24 CET
Nmap scan report for Archer.lan (192.168.0.1)
Host is up (0.016s latency).
MAC Address: 50:C7:FF:FF:15:FF (Tp-link Technologies)
Nmap scan report for Lyric-1111C2.lan (192.168.0.101)
Host is up (0.96s latency).
MAC Address: B8:FF:FF:11:FF:C2 (Resideo)
MAC Address: 88:DD:EA:DD:CE:37 (Texas Instruments)
Nmap scan report for SoundTouch-Kitchen.lan (192.168.0.160)
Host is up (0.39s latency).
MAC Address: 5C:DD:DD:FF:FF:B5 (Texas Instruments)
Nmap scan report for 192.168.0.181
Host is up (0.60s latency).
MAC Address: 40:DD:DD:8F:FF:F5 (Asustek Computer)
Nmap scan report for TL-WPA4220.lan (192.168.0.225)
Host is up (0.61s latency).
MAC Address: 50:DD:FF:AA:DD:BA (Tp-link Technologies)
Nmap scan report for f3d0r4.lan (192.168.0.165)
Host is up.
Nmap done: 256 IP addresses (7 hosts up) scanned in 9.11 seconds

Darse cuenta de -sn era conocido como -sP en versiones anteriores de Nmap. El uso de -sP sigue siendo compatible con versiones anteriores y debería funcionar en versiones recientes de Nmap.

Mientras que Nmap man las páginas están bien escritas y brindan muchos ejemplos, hay algunas cosas específicas que no encontrará en el man paginas Por ejemplo, ¿qué pasaría si quisiéramos almacenar las direcciones IP de la salida anterior en un archivo? Es algo específico y no pertenece a la man páginas de Nmap. Tenemos que analizar la salida nosotros mismos y extraer solo las direcciones IP.

Por ejemplo:

# nmap -sn 192.168.0.0/24 | awk '/Nmap scan/{gsub(/[()]/,"",$NF); print $NF > "nmap_scanned_ips"}'

Nmap ofrece muchas otras opciones para guardar la salida del escaneo en diferentes formatos.

Por ejemplo:

-oN/-oX/-oS/-oG : salida del análisis en formato normal, XML, s|

Entonces corriendo:

# nmap -sn 192.168.0.0/24 -oG nmap_output

produce la siguiente salida:

# cat nmap_output
# Nmap 7.80 scan initiated Fri Mar  6 22:01:57 2020 as: nmap -sn -oG nmap_output 192.168.0.0/24
Host: 192.168.0.1 (Archer.lan)    Status: Up
Host: 192.168.0.101 (Lyric-1111C2.lan)    Status: Up
Host: 192.168.0.151 (SoundTouch-VW-benee.lan)    Status: Up
Host: 192.168.0.160 (SoundTouch-VW-keuken.lan)    Status: Up
Host: 192.168.0.181 ()    Status: Up
Host: 192.168.0.225 (TL-WPA4220.lan)    Status: Up
Host: 192.168.0.165 (f3d0r4.lan)    Status: Up
# Nmap done at Fri Mar  6 22:02:06 2020 -- 256 IP addresses (7 hosts up) scanned in 9.45 seconds

Escanear puertos específicos

Nmap tiene la capacidad de escanear puertos específicos en objetivos específicos. Si quisiéramos comprobar el estado del puerto 22 y 443 (que por defecto usan el protocolo TCP), ejecutaríamos lo siguiente:

# nmap -sV -p 22,443 192.168.0.0/24

Si no está seguro de esto -sV hecho, solo ejecuta:

# nmap | grep -- -sV

El comando anterior muestra los puertos independientemente de su estado: abierto, cerrado, filtrado, etc. La mayoría de las veces, estamos interesados ​​en puertos abiertos, por lo que podemos agregar el –open bandera para lograrlo. Modificaremos ligeramente el comando anterior y ejecutaremos:

# nmap -sV -p 22,443 192.168.0.0/24 –open

En lugar de usar una coma para especificar un puerto, también es posible usar un rango de puertos, que es mucho más flexible y fácil de leer. Por ejemplo:

# nmap -p 54-111 192.168.0.0/24

Escaneo avanzado de Nmap

Ahora conocemos los conceptos básicos de Nmap y sus habilidades. Pasemos a un enfoque más avanzado para analizar objetivos, obtener más información de un objetivo y usar el seguimiento de paquetes.

Rastrear un paquete en una sola IP

En el momento de escribir este artículo, estoy conectado a mi servidor a través de SSH. Para mostrar cómo se realiza el seguimiento de paquetes mediante Nmap y cómo se ve la salida de dicho rastro, usaremos lo siguiente Nmap sintaxis para producir el siguiente resultado:

# nmap -vv -n -sn -PE -T4 --packet-trace 192.168.2.3
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-06 23:14 CET
Initiating Ping Scan at 23:14
Scanning 192.168.2.3 [1 port]
SENT (0.0282s) ICMP [192.168.0.165 > 192.168.2.3 Echo request (type=8/code=0) id=8524 seq=0] IP [ttl=43 id=25141 iplen=28 ]
RCVD (0.0336s) ICMP [192.168.2.3 > 192.168.0.165 Echo reply (type=0/code=0) id=8524 seq=0] IP [ttl=63 id=27840 iplen=28 ]
Completed Ping Scan at 23:14, 0.03s elapsed (1 total hosts)
Nmap scan report for 192.168.2.3
Host is up, received echo-reply ttl 63 (0.0055s latency).
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
           Raw packets sent: 1 (28B) | Rcvd: 1 (28B)

Las banderas anteriores tienen los siguientes significados:

  • -vv (Aumentar la verbosidad)
  • -n (Sin resolución de DNS. ¡Esto acelera nuestro análisis!)
  • -sn (Sin escaneo de puertos)
  • -PE (Utilice solicitudes de solicitud de eco ICMP. Esto es lo que se muestra en el resultado anterior)
  • -T4 (evita que el retraso de escaneo dinámico exceda los 10 ms para los puertos TCP. Consulte man nmap).
  • --packet-trace (Paquetes de seguimiento enviados y recibidos)

Uso de proxies DNS recursivos para escanear sigilosamente en un objetivo

Por defecto, Nmap lleva un rDNS (DNS inverso) en cualquier host receptivo. Veamos si podemos recopilar información sobre una red específica y permanecer en el anonimato. La parte anónima se debe a que usaremos servidores DNS públicos, a saber, 8.8.4.4 y 8.8.8.8, para realizar la consulta recursiva.

Primero, resolvemos tipstecnologicos.es usando el servidor DNS público de Google, lo que da los siguientes resultados:

# host tipstecnologicos.es 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

tipstecnologicos.es has address 209.132.183.105
tipstecnologicos.es mail is handled by 10 us-smtp-inbound-2.mimecast.com.
tipstecnologicos.es mail is handled by 10 us-smtp-inbound-1.mimecast.com.

En segundo lugar, ejecutemos un escaneo sigiloso de la lista. -sL en la dirección IP 209.132.183.105.

# nmap --dns-servers 8.8.4.4,8.8.8.8 -sL 209.132.183.105/24
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-07 00:22 CET
Nmap scan report for network (209.132.183.0)
Nmap scan report for elvis.tipstecnologicos.es (209.132.183.1)
Nmap scan report for ns2.tipstecnologicos.es (209.132.183.2)
Nmap scan report for ovpn-phx2.tipstecnologicos.es (209.132.183.3)
Nmap scan report for mimecast-mx01.tipstecnologicos.es (209.132.183.4)
Nmap scan report for selfservice.tipstecnologicos.es (209.132.183.5)
Nmap scan report for unused (209.132.183.6)
Nmap scan report for unused (209.132.183.7)
Nmap scan report for siperimeter.tipstecnologicos.es (209.132.183.8)
< –----- >
< –----- >
< –----- >

Podemos obtener mucha información sobre redes específicas usando algunas técnicas simples.

guiones NSE

Como se mencionó anteriormente, Nmap está equipado con muchas funciones avanzadas, incluidas las secuencias de comandos NSE (Nmap Scripting Engine). Use scripts NSE con Nmap le permite escanear diferentes hosts y encontrar vulnerabilidades en los servicios que se ejecutan en el host y posiblemente iniciar sesión mediante fuerza bruta en esos servicios.

El uso de la sintaxis del script NSE es el siguiente:

# nmap --script="name_of_script" --script-args="argument=arg" target

Ahora probablemente se esté preguntando dónde encontrar estos scripts NSE y cómo saber qué script usa qué argumentos. Empieza por correr man nmap. También puede saltar directamente a la sección correcta, es decir:

# PAGER='less "+/NMAP SCRIPTING ENGINE"' man nmap

Scripts NSE disponibles que puede pasar Nmap se encuentran en:

/usr/share/nmap/scripts/

También puede ubicar scripts NSE ejecutando:

# dnf -y install mlocate ; updatedb ; locate nmap/scripts

Ahora que sabemos dónde están los scripts NSE, veamos cómo podemos usarlos para obtener información sobre un objetivo que ejecuta un servidor web.

Ver si un WAF protege un sitio web

Un firewall de aplicaciones web (WAF) está diseñado específicamente para proteger sitios web contra inyecciones de SQL, secuencias de comandos entre sitios, paquetes HTTP con formato incorrecto, etc. Nmap, podemos detectar si un sitio web está protegido por dicho WAF. El siguiente ejemplo muestra el uso de un script NSE y sus argumentos:

# nmap -p443 --script http-waf-detect --script-args="http-waf-detect.aggro,http-waf-detect.detectBodyChanges" www.slimmer.ai
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-09 22:38 CET
Nmap scan report for www.slimmer.ai (172.104.131.188)
Host is up (0.023s latency).
rDNS record for 172.104.131.188: li1647-188.members.linode.com

PORT    STATE SERVICE
443/tcp open  https
| http-waf-detect: IDS/IPS/WAF detected:
|_www.slimmer.ai:443/?p4yl04d=id;uname%20-a

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

Como se indicó anteriormente, un firewall de aplicaciones web protege el sitio web de destino.

Más guiones NSE

Una vez más, Nmap Los administradores de sistemas suelen utilizarlo para hacer un inventario de su entorno, descubrir debilidades en su red y, por lo tanto, proteger sus sistemas contra intrusos. Los intrusos, por otro lado, pueden hacer lo mismo para explorar un sistema remoto e intentar recopilar la mayor cantidad de información posible sobre dicho sistema.

Suponga que una persona no autorizada ha escaneado su red y ha encontrado algunos puertos/servicios abiertos. Esta persona podría reenviar ciertos scripts NSE a Nmap y ver si estos servicios son vulnerables. Esto es lo que sucederá:

# nmap -Pn -sV --script=vulners 37.xx.xx.xx
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-09 22:41 CET
Nmap scan report for some.domain.nl (37.xx.xx.xx)
Host is up (0.016s latency).
Not shown: 998 filtered ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.4 (protocol 2.0)
| vulners:
|   cpe:/a:openbsd:openssh:7.4:
|         CVE-2018-15919    5.0    https://vulners.com/cve/CVE-2018-15919
|_        CVE-2017-15906    5.0    https://vulners.com/cve/CVE-2017-15906
25/tcp open  smtp    Postfix smtpd
Service Info: Host: some.domain.nlService detection performed. Please report any incorrect results at https://nmap.org/submit/
Nmap done: 1 IP address (1 host up) scanned in 18.20 seconds

Podemos ver que el sistema remoto ejecuta OpenSSH 7.4. Nmap consultó bases de datos de vulnerabilidades públicas y encontró CVE conocidos.

Conclusión

Nmap es una herramienta muy potente de inventario del sistema y escáner de puertos que se puede utilizar para buenos y malos propósitos. Depende del sombrero que uses. La mejor manera de aprender Nmap es leer man páginas, use los ejemplos presentados en el man páginas y probar los scripts NSE. Intenta también Zenmap. Si desea obtener más información sobre el análisis de puertos y la ciencia detrás de él, consulte el Documentación Nmap.

Artículos de interés

Subir