Notas de Luis

NMAP

Escaneos básicos

Escaneos básicos con nmap Si queremos hacer un escaneo básico de los puertos de una máquina podemos hacerlo de esta forma:

Escanear 2 máquinas a la vez También podemos hacer un escaneo de dos máquinas a la vez con nmap:

Escanear todo el rango de red O también podemos hacer un escaneo completo de nuestra red privada, por lo que detectaremos todos los equipos conectados:

Descubrir hosts con nmap Para descubrir hosts con nmap lo haremos así:

nmap -sn 192.168.0.0/24

Enumerar rango de puertos También podría enumerar todos los puertos de una máquina o sólo un rango de ellos. Por ejemplo podría enumerar todos de esta forma:

Aunque si ponemos simplemente -p- también estaríamos enumerando todo el rango de puertos:

O también podría analizar sólo un rango de ellos, por ejemplo analizar sólo los 100 primeros:

También podemos enumerar los 500, 100 o el número que queramos del top de los puertos más comunes, por tanto lo haríamos de esta forma:

Escaneos de nmap por udp (Cuando por TCP no nos encuentra lo que queremos)

Lo haríamos con el parámetro sU de esta manera escaneando los 100 puertos más comunes:

Y este sería el resultado:

Escaneos de nmap a una dirección ipv6

Para hacer un escaneo de puertos a una dirección IPv6 con nmap lo hacemos usando el parámetro -6 de la siguiente forma:

nmap -p- -sS -sC -sV --min-rate 5000 -n -vvv -Pn -6 fe80::da3a:ddff:fe80:f61c%eth0

Parámetros de nmap

Opción sP (Sondeo de Ping) Esto sirve para detectar equipos conectados a mi red utilizando un ping:

Opción -sn Este parámetro sirve para detectar equipos encendidos dentro de nuestra web, es algo similar al arp-scan:

Opción -sS (TCP Syn) Con esta opción podremos hacer un escaneo más sigiloso sin dejar rastro en la máquina objetivo:

Opción -T (Plantillas de temporizado) El parámetro -T de nmap sirve para aplicar una plantilla para hacer más rápidos o no los escaneos; y tenemos hasta 5 posibles plantillas, siendo la 5 la más rápida.

Opción -vvv (Triple verbose) Esto sirve para que a medida que encuentre algo, nos lo vaya reportando al mismo tiempo:

Sondeo UDP Para hacer escaneos por UDP utilizamos la opción -sU:

Sondeo TCP ACK (Detectar tipo de Firewall con nmap) Con estas opciones podemos detectar el tipo de firewall:

SCRIPTS DE NMAP Con el script Default ejecutamos los scripts de nmap por defecto para obtener información de las máquinas objetivo:

Por otra parte, tenemos el script vuln podemos brindar información sobre las vulnerabilidades de la víctima:

También podemos ejecutar el script all para ejecutar todos los scripts de nmap:

Y con el script Auth podemos comprobar si existen contraseñas vacías o por defecto en el sistema:

También podemos tener un fuzzer web en nmap con el script HTTP-Enum:

Otro script interesante es para hacer fuerza bruta FTP con nmap de esta forma:

También podemos hacer ataques de fuerza bruta con SSH-Brute:

Para detectar vulnerabilidades en el firewall podemos utilizar este parámetro:

Guardar tráfico de nmap en fichero .cap con tcpdump

Podemos utilizar tcpdump para guardar un determinado tráfico que corre por una interfaz dentro de un fichero con extensión .cap

Lo haríamos de la siguiente forma, donde primero nos ponemos en escucha con tcpdump guardando el tráfico en un fichero y por la interfaz correspondiente:

Y ahora mientras se queda en escucha, vamos a probar por ejemplo en lanzarnos a nosotros mismos un escaneo por el puerto 22 por ejemplo:

Se hace el reporte:

Y ya tenemos el fichero .cap con el tráfico interceptado:

Ahora lanzamos wireshark con la captura:

Escaneos silenciosos con nmap

Para hacer un escaneo de nmap lo más silencioso posible, puede usar la opción “-sS” para realizar un escaneo de “SYN Stealth” en lugar del escaneo de TCP completo. Además, puede utilizar la opción “-T2” para establecer la velocidad de escaneo en un nivel bajo y reducir así el ruido generado por el escaneo en la red.

El siguiente comando de ejemplo utiliza estas opciones para realizar un escaneo de nmap lo más silencioso posible:

nmap -sS -T2 -Pn <dirección_ip>

Donde:

  • “-sS” indica que se realizará un escaneo de “SYN Stealth”.
  • “-T2” establece la velocidad de escaneo en un nivel bajo.
  • “-Pn” indica que no se realice detección de hosts, lo que reduce aún más el ruido generado por el escaneo.

Nmap en windows (con zenmap)

Así sería el asistente de nmap para Windows, el cual se llama zenmap y tiene interfaz gráfica:

También podemos crear un perfil para tener guardado una máquina objetivo con los mismos parámetros de siempre:

Y ya tengo este nuevo perfil con el objetivo y parámetros previamente definidos:

Evasión de firewall con nmap

Un firewall es un sistema que se encarga de controlar las conexiones entrantes y salientes de una red determinada. Incluso también es posible que un puerto se encuentre como filtrado, lo que significa que hay algo que no está impidiendo conocer con exactitud ese puerto, tal y como nos explican en la páginas man de nmap:

Incluso también, dentro de las páginas man de nmap, tenemos instrucciones para hacer escaneos más silenciosos para evadir los firewall:

PARÁMETRO -f

Con el parámetro -f podemos fragmentar los paquetes a la hora de hacer el escaneo, por lo que de esta forma es posible que los puertos que se encuentren filtrados podamos llegar a verlos:

Parámetro –script-mpu El parámetro mpu sirve para ajustar el tamaño máximo de paquete sin fragmentar (MPU) para los paquetes enviados durante las pruebas de detección de firewall. De esta forma podemos evadir firewalls que tengan algún tipo de tope para la detección de este tipo de paquetes. Es importante recalcar que se debe poner siempre un número que sea múltiplo de 8, por ejemplo el 8, 16, etc…

Parámetro -D (decoy) Esto sirve para confundir el firewall. Es decir, sirve para indicar otra dirección IP y hacerle creer al firewall que ademas de lanzar nosotros los paquetes, también lo haga otra dirección IP; y por eso en las instrucciones nos pone que esto sirve para disimular el análisis con señuelos:

Si guardamos esto en un fichero .cap para analizarlo con wireshark, veremos que en este escaneo además de nuestra IP también se habrá enviado otros paquetes desde la IP 192.168.0.232 que hemos proporcionado como señuelo:

0 - Consideraciones Previas

(TCPDUMP PARA INTERCEPTAR PAQUETES DENTRO DE LA CONEXIÓN)

Source port (Regular el origen de los paquetes)

Cuando hacemos un escaneo con nmap se emplea un puerto aleatorio de origen para hacer el escaneo y la respuesta vuelve a entrar por otro puerto aleatorio, tal y como podemos ver en el ejemplo de antes, que se utilizó el puerto 55043:

Es posible que los firewalls tengan una lista blanca de los paquetes que procedan de los puertos más frecuentes en lugar de este tipo de puertos más aleatorios. Lo haríamos de esta forma por ejemplo para indicar que nuestro escaneo procede del puerto 53:

Ahora si examinamos esto con wireshark como antes, veremos que el origen del tráfico ya no procede de un puerto random, sino del puerto 53:

Data length (Modificar la longitud del paquete enviado)

Es posible que un firewall cuente con restricciones dependiendo del tamaño de paquete. Por lo que podemos modificar este tamaño para engañar al firewall:

Este va a ser el tamaño mínimo que va a tener el paquete, pero le podemos sumar cantidades adicionales de tamaño para estos paquetes con el parámetro –data-length:

Y en wireshark si analizamos este fichero .cap vemos que el tamaño de los paquetes es mayor en un 20:

Cambiar dirección mac en nmap Con la opción –spoof-mac podremos cambiar la MAC:

Scripts de nmap

El parámetro “–script” de Nmap se utiliza para especificar un conjunto de scripts que se ejecutarán durante un escaneo.

El parámetro “–script” puede tomar un solo script como argumento, o puede especificar varios scripts separados por comas. También se pueden utilizar comodines para seleccionar múltiples scripts a la vez. Por ejemplo, –script=http-* ejecutará todos los scripts relacionados con el protocolo HTTP. El uso de scripts puede aumentar significativamente la eficacia de un escaneo de Nmap, ya que permite a los usuarios detectar vulnerabilidades y recopilar información que de otra manera sería difícil de obtener.

Nmap cuenta con scripts para automatizar ciertas partes del reconocimiento; y para ello podemos utilizar el parámetro -sC para lanzar ciertos scripts de nmap. Por lo que si además lo juntamos con el parámetro -sV obtendremos la versión de los servicios del puerto:

También podemos lanzar un script en concreto, por ejemplo el script vuln para detectar vulnerabilidades de un puerto en concreto:

Aunque por sí solo el script vuln es muy intrusivo, por lo que podemos lanzar el script safe junto con el vuln:

También tenemos otro script para hacer fuzzing web muy sencillo con el script llamado http-enum:

Como hacer un escaneo de nmap mucho más rápido y eficiente

  • Ponemos triple verbose para que se nos vaya mostrando los resultados mientras analiza.
  • Con -n evitamos la resolución DNS
  • Con min rate también aceleramos.
  • Con el comando -Pn indicamos que no realice una comprobación de ping antes de realizar el escaneo de puertos.
  • Con -oG lo podemos exportar.
nmap -p- --open -sS -sC -sV --min-rate 5000 -vvv -n -Pn 10.10.11.191 -oN escaneo

Script para hacer fuzzing

Podemos hacer fuzzing con un script de nmap, donde vamos a hacerlo sobre el puerto 80 de la MAQUINA OVERPASS (Obtener id_rsa modificando cookies en web, ssh2john para cracking de ir_rsa y escalada privilegios permisos suid con exploit de pkexec) de tryhackme para detectar directorios web:

nmap --script http-enum -p80 10.10.186.249 -vvv

Script vuln para detectar vulnerabilidades

Podemos mirar si esta máquina Máquina blue de tryhackme es vulnerable a alguna vulnerabilidad; y vemos que sí lo es a eternalblue:

Por tanto vamos a usar metasploit para ganar acceso al sistema explotando esta vulnerabilidad utilizando el siguiente exploit:

Realizamos las configuraciones básicas:

Configuramos el payload correspondiente, ya que el que viene por defecto da error:

Y si ejecutamos el comando run ya estaríamos dentro:

Script de nmap para ataques de fuerza bruta ssh

Para hacer un ataque de fuerza bruta al puerto ssh, podemos hacerlo con el siguiente parámetro de nmap:

nmap --script ssh-brute 192.168.0.25

Y nos realiza el ataque probando usuarios y contraseñas:

Pero en caso de conocer el nombre de usuario, que por ejemplo es mario, y querer encontrar sólo la contraseña, lo haríamos de la siguiente forma:

nmap -p 22 --script ssh-brute --script-args userdb='usuario.txt',passdb='rockyou.txt' 192.168.0.25

Y vemos que ahora comprueba las distintas contraseñas para el usuario mario:

Script enumerar smb

Podemos usar este script para ver vulnerabilidades de smb:

nmap -p445 --script smb-protocols 192.168.0.48

También podemos saber la seguridad si permite iniciar sesión como invitado o no con este otro script, de tal forma que podríamos entrar sin proporcionar contraseña:

nmap -p445 --script smb-security-mode 192.168.0.48

Listar recursos compartidos smb

Podemos también listar recursos compartidos con nmap usando el siguiente script:

nmap -p445 --script smb-enum-shares 192.168.0.48

computing/hacking/generico/nmap.txt · Última modificación: por 127.0.0.1