Read Team
Curso de Penetration Testing 2
Hoy vamos a ver como escanear una red con nmap
Siguiendo con la clase anterior donde usamos arp-scan netdiscover y nmap (-sn) e identificamos los objetivos, es necesario realizar un reconocimiento de puertos en cada una de las máquinas victimas, de tal forma que podremos identificar servicios vulnerables que estén corriendo en los puertos, así como la versión de cada uno de ellos, lo cual podemos utilizarlo más tarde para buscar alguna herramienta o exploit que nos permita explotar las distintas vulnerabilidades.
En este caso voy a usar la maquinola de dokerlabs “firsthacking” xq tenemos cara de malo pero en realidad no lo somos. Asi que la ip que nos da es 172.17.2, por lo tanto procedemos a escribir estos coman2 en vuestra terminal
nmap -p- --open -sS -sC -sV --min-rate 2000 -n -vvv -Pn 172.17.0.2-oN scanned.txt- -p- Escanea TODOS los puertos TCP (1 al 65535)
- — open Solo muestra en la salida final los puertos que están abiertos
- -sS SYN scan (half-open scan) → envía SYN, espera SYN-ACK o RST, no completa el handshake TCP [Rápido, bastante sigiloso (no genera conexión completa en la mayoría de sistemas)]
- -sC Ejecuta los scripts NSE por defecto ( — script=default) [Hace detección de banners, enum básica, chequeos de vulns comunes, etc.]
- -sV Detección de versión de servicio [Intenta identificar qué software y versión exacta corre en cada puerto abierto (ej: Apache 2.4.57, OpenSSH 9.2p1, etc.)]
- — min-rate=200 Fuerza a enviar al menos 2000 paquetes por segundo [Hace el escaneo muy rápido (timing muy agresivo)]
- -n No resuelve DNS (no hace reverse lookups) [Más rápido + no deja rastro en servidores DNS]
- -vvv Nivel de verbosidad máximo (3 v) [Te muestra TODO lo que está pasando en tiempo real (muy ruidoso)]
- -Pn No hace host discovery (salta el ping / ARP / etc.) [Trata al objetivo como si estuviera vivo aunque no responda ICMP]
- -oN scanned.txt Guarda la salida en formato normal (legible por humanos) en el archivo scanned.txt [Guarda todo lo que ves en pantalla también en el archivo]
pegue la imagen escaneando otro ip, soy un boludo
Ahora si, podemos ver que onda con el fichero si le hacemos un cat
Como se ve tiene el puerto 21 abierto corre el servicio ftp de tipo syn/ack y la version es vsftpd 2.3.4. Esta info es muy importante xq podemos ver como explotarla, pero eso lo vamos a ver mas adelante.
Nmap tiene una banda de flags para hacer un escaneo personalizado o que se ajuste a lo que queremos averiguar en este caso se pueden ver las vulnerabilidades mediante scripts automatizados
nmap --script "vuln" -p445 172.17.0.2— script “vuln”
Ejecuta todos los scripts NSE que pertenecen a la categoría vuln [Corre ~30–50 scripts (depende de la versión de Nmap) que chequean vulnerabilidades conocidas]
-p445
Escanea solo el puerto 445/TCP [No toca otros puertos. 445 es el puerto principal de SMB (Windows file sharing)]
Que pasa si esta cerrado o filtrado?
445/tcp closed microsoft-dsNmap no hace host discovery por defecto aquí (no usa ping), pero como solo es un puerto asume que debe intentarlo. Intenta conectar al puerto 445/tcp del objetivo. Si esta cerrado termina rapido (como vos) y no ejecuta el script.
Pero si el puerto esta abierto detecta que es SMB (Microsoft-DS), normalmente con -sV implícito en muchos casos, pero aca no lo puse. Luego ejecuta todos los scripts de la categoría vuln que sean aplicables al servicio detectado en el puerto 445 (es decir, casi todos los que tienen que ver con SMB).
Scripts típicos que se ejecutan en puerto 445 con — script vuln Algunos de los más comunes que suelen reportar algo (si existen):
- smb-vuln-ms17–010 (EternalBlue / WannaCry)
- smb-vuln-ms08–067 (Conficker / old exploit muy famoso)
- smb-vuln-cve-2017–7494 (SambaCry / IsKnownPwned)
- smb-vuln-cve-2017–7494 (otra variante)
- smb-vuln-webexec
- smb-vuln-regsvc DoS
- smb-double-pulsar-backdoor
- smb-vuln-eternalblue
- smb-vuln-cve-2020–0796 (SMBGhost)
- smb-vuln-cve-2021-XXXX (si hay nuevos en tu versión de Nmap)
Esto sirve si en el caso que le hayamos hecho ping a la ip victima y el ttl indicara que fuese windows
# Versión recomendada (más info)
nmap -p445 --script vuln -sV --open 192.1.1.1
# Con más verbose y guardar salida
nmap -p445 --script vuln -sV -oN smb-vuln.txt 192.1.1.1
# Si querés también vulners (necesitas descargarlo antes)
nmap -p445 --script vuln,vulners -sV 192.1.1.1Vulners.nse, es un script muy popular del Nmap Scripting Engine (NSE) que ayuda a detectar vulnerabilidades conocidas (CVEs) en servicios que Nmap identifica durante un escaneo.
Get Heavenblack’s stories in your inbox
Join Medium for free to get updates from this writer.
¿Qué hace exactamente vulners.nse?
- Requiere que uses -sV (detección de versión de servicio) para que funcione bien.
- Cuando Nmap detecta un servicio con su versión (ej: Apache 2.4.41, OpenSSH 8.2p1, nginx 1.18.0, etc.), el script toma esa info (en formato CPE: Common Platform Enumeration).
- Envía esa info a la base de datos pública de vulners.com (un sitio que recopila vulnerabilidades, exploits, boletines, etc., de muchas fuentes).
- El script recibe de vuelta una lista de CVEs (vulnerabilidades conocidas) que afectan exactamente esa versión del software.
- En la salida de Nmap te muestra:
- El CVE-ID (ej: CVE-2021–41773)
- El puntaje CVSS (severidad: 0–10)
- Una descripción breve
- Links directos a más info (exploit-db, mitre, etc.)
- A veces exploits disponibles si los hay
#Asi se ve la salida
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
| vulners:
| CVE-2021-41773 7.5 https://vulners.com/cve/CVE-2021-41773
| CVE-2021-42013 9.8 https://vulners.com/cve/CVE-2021-42013
|_ Path Traversal + RCE in Apache (Path Traversal)Cómo instalarlo (si no lo tenés)
#si tenes kali o parrot suele venir preinstalado peeeeero
cd /usr/share/nmap/scripts/
git clone https://github.com/vulnersCom/nmap-vulners.git
nmap --script-updatedb # actualiza la lista de scripts# modo de uso
nmap -sV --script vulners -p- --open 172.17.0.2
# o con filtro de severidad
nmap -sV --script vulners --script-args mincvss=7.0 172.17.0.2Hasta ahora vimos sobre el protocolo TCP pero que onda con el UDP?
Otra forma de escanear puertos con nmap es mediante el protocolo UDP, donde es posible que haya otros puertos funcionando en la máquina, por lo que veremos qué parámetro de nmap debemos de utilizar para realizar un escaneo de puertos de este tipo
Supongamos que hay servicios UDP expuestos como DNS, SNMP, SIP, VPNs, juegos, etc.
nmap -sU --top-ports 200 --min-rate=5000 -Pn 192.168.0.164-sU
UDP scan — envía paquetes UDP (sin payload en la mayoría de puertos)[Busca puertos UDP abiertos. Es el único tipo de escaneo UDP nativo en Nmap]
— top-ports 200
Escanea solo los 200 puertos UDP más comunes (según la base de datos de Nmap)[Mucho más rápido que -p- (65.535 puertos). Los top-200 cubren ~95–98% de servicios UDP reales]
— min-rate=5000
Fuerza un envío mínimo de 5000 paquetes por segundo[Timing muy agresivo → escaneo ultrarrápido (ideal en labs/redes locales)]
-Pn
No hace host discovery (salta ping/ARP/ICMP)[Trata la IP como viva aunque no responda ping (común cuando ICMP está bloqueado)]
Lo que realmente ocurre (paso a paso)
- Nmap no verifica si el host está vivo (-Pn).
- Toma la lista interna de — top-ports 200 para UDP (puertos como 53, 123, 161, 500, 5060, 1900, 137, 138, 67, 68, 5353, 1194, etc.).
- Envía paquetes UDP a cada uno de esos 200 puertos lo más rápido posible (mínimo 5000 pps).
- Analiza las respuestas:
- Respuesta UDP → puerto open
- ICMP port unreachable → puerto closed
- No respuesta → puerto open|filtered (el más común en UDP, porque muchos sistemas no responden nada a puertos cerrados)
- ICMP admin prohibited o similar → filtered
- Como es UDP, no hay versión automática ni scripts por defecto (a menos que agregues -sV o — script).
# asi se veria la salida
Starting Nmap 7.94 ( https://nmap.org ) at 2026-03-05 16:50 -03
Nmap scan report for 192.168.0.164
Host is up (0.0012s latency).
Not shown: 197 closed ports
PORT STATE SERVICE
53/udp open|filtered domain
123/udp open|filtered ntp
161/udp open|filtered snmp
500/udp open isakmp
1900/udp open|filtered upnp
5353/udp open|filtered mdns
Nmap done: 1 IP address (1 host up) scanned in 4.82 seconds- En redes locales con — min-rate 5000 → suele terminar en 3–12 segundos (depende de la red y el host).
- Muchos puertos aparecerán como open|filtered porque Linux/Windows suelen no responder a UDP en puertos cerrados (rate-limiting de ICMP).
# estas son algunas variante recomendadas
# + detección de versión (muy útil en UDP)
nmap -sU -sV --top-ports 200 --min-rate 3000 -Pn 192.168.0.164
# + scripts por defecto (p.ej. snmp-info, upnp-info, etc.)
nmap -sU -sV -sC --top-ports 200 -Pn 192.168.0.164
# Si querés ser más rápido y no te importa algo de imprecisión
nmap -sU --top-ports 100 --min-rate 10000 --defeat-icmp-ratelimit -Pn 192.168.0.164
# Combinado TCP + UDP (el combo clásico rápido)
nmap -sS -sU -sV --top-ports 200 --min-rate 5000 -Pn 192.168.0.164Bueno en el proximo capitulo vamos a ver cosas mas atrevidas






