Cargando...
Cargando...
Duración: 1.5 horas (Estimada)
¡Bienvenido/a al segundo episodio de nuestro curso completo de Nmap! En este módulo, vamos a profundizar en las técnicas de descubrimiento de hosts, explorar diferentes métodos para identificar sistemas activos en una red y aprender cómo optimizar nuestro reconocimiento para diferentes entornos.
Basándonos en la base del Episodio 1, vamos a ponernos prácticos con ejemplos concretos que te prepararán para el reconocimiento de redes en el mundo real. Al final de este módulo, vas a poder descubrir hosts eficientemente en cualquier red que estés autorizado/a a escanear.
Antes de que podamos analizar servicios o identificar vulnerabilidades, primero necesitamos saber qué sistemas están activos en una red. El descubrimiento de hosts (a veces llamado "escaneo ping" o "ping scanning") es el proceso de identificar hosts vivos antes de realizar escaneos de puertos más intensivos.
Un descubrimiento de hosts efectivo:
Nmap ofrece varios métodos para determinar si los hosts están activos. Exploremos estas técnicas y entendamos cuándo usar cada una.
El método más básico utiliza solicitudes ICMP echo (ping):
sudo nmap -sn 10.129.2.0/24Este comando:
-snStarting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 14:00 EDT
Nmap scan report for 10.129.2.4
Host is up (0.0023s latency).
Nmap scan report for 10.129.2.10
Host is up (0.0046s latency).
Nmap scan report for 10.129.2.11
Host is up (0.0032s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.51 secondsDurante pruebas de penetración o auditorías de red, podrías recibir una lista de direcciones IP para escanear. Nmap puede leer objetivos desde un archivo:
# Crear una lista de hosts
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
# Escanear hosts desde la lista
sudo nmap -sn -iL hosts.lstLa opción -iL le dice a Nmap que lea los objetivos del archivo especificado.
Podemos especificar múltiples direcciones IP individuales:
sudo nmap -sn 10.129.2.18 10.129.2.19 10.129.2.20O usar la notación de rango para direcciones consecutivas:
sudo nmap -sn 10.129.2.18-20Por defecto, cuando ejecutamos un escaneo ping (-sn), Nmap usa varias técnicas:
Esta combinación aumenta la posibilidad de detección incluso cuando ciertos tipos de paquetes están bloqueados.
Para ver exactamente qué está pasando durante un escaneo, usamos la opción --packet-trace:
sudo nmap 10.129.2.18 -sn --packet-traceStarting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 14:15 EDT
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 secondsNotá que Nmap primero intenta una solicitud ARP cuando el objetivo está en la misma subred. Esto es más rápido y fiable que las sondas ICMP o TCP.
Para ver por qué Nmap determinó que un host está activo, usamos la opción --reason:
sudo nmap 10.129.2.18 -sn --reasonStarting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 14:20 EDT
Nmap scan report for 10.129.2.18
Host is up, received arp-response (0.028s latency).
MAC Address: DE:AD:00:00:BE:EF
Nmap done: 1 IP address (1 host up) scanned in 0.03 secondsEl "received arp-response" nos dice que Nmap determinó que el host estaba activo porque recibió una respuesta ARP.
Si querés usar específicamente solicitudes ICMP echo (incluso en una red local), podés deshabilitar los pings ARP:
sudo nmap 10.129.2.18 -sn -PE --packet-trace --disable-arp-pingStarting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 14:25 EDT
SENT (0.0107s) ICMP [10.10.14.2 > 10.129.2.18 Echo request (type=8/code=0) id=13607 seq=0] IP [ttl=255 id=23541 iplen=28]
RCVD (0.0152s) ICMP [10.129.2.18 > 10.10.14.2 Echo reply (type=0/code=0) id=13607 seq=0] IP [ttl=128 id=40622 iplen=28]
Nmap scan report for 10.129.2.18
Host is up (0.086s latency).
MAC Address: DE:AD:00:00:BE:EF
Nmap done: 1 IP address (1 host up) scanned in 0.11 secondsOpciones explicadas:
-PE: Usar solicitud ICMP echo--packet-trace: Mostrar todos los paquetes enviados y recibidos--disable-arp-ping: Omitir el descubrimiento ARP y usar los métodos especificados-Pn)A veces los firewalls bloquean los paquetes ICMP y las sondas comunes. En estos casos, podemos omitir la fase de descubrimiento de hosts por completo:
sudo nmap 10.129.2.18 -PnLa opción -Pn le dice a Nmap que asuma que el host está activo y proceda directamente al escaneo de puertos. Esto es útil cuando sabemos que el host existe pero no responde al ping.
-PS)Podemos usar paquetes TCP SYN a puertos específicos para el descubrimiento de hosts:
sudo nmap 10.129.2.0/24 -PS22,80,443Esto envía paquetes TCP SYN a los puertos 22, 80 y 443. Si algún puerto responde (incluso con un rechazo), el host se marca como activo.
-PA)Similar al ping SYN, pero usa paquetes ACK:
sudo nmap 10.129.2.0/24 -PA22,80,443Esto puede ser efectivo contra ciertas configuraciones de firewall que bloquean paquetes SYN.
-PU)Algunos hosts podrían tener TCP completamente filtrado pero responder a paquetes UDP:
sudo nmap 10.129.2.0/24 -PU53,161Esto envía paquetes UDP a los puertos DNS (53) y SNMP (161), que comúnmente responden incluso en sistemas muy restringidos.
-PY)Para redes que usan el protocolo SCTP (común en telecomunicaciones):
sudo nmap 10.129.2.0/24 -PY132Esto envía paquetes SCTP INIT al puerto 132.
-PO)Esta técnica utiliza varios protocolos IP para descubrir hosts:
sudo nmap 10.129.2.0/24 -PO1,2,4Esto envía paquetes IP con los números de protocolo 1 (ICMP), 2 (IGMP) y 4 (IP-in-IP).
Diferentes entornos de red requieren diferentes enfoques de descubrimiento:
En una red local, el escaneo ARP es lo más eficiente:
sudo nmap 192.168.1.0/24 -snNmap utiliza automáticamente solicitudes ARP para hosts en la misma subred.
Para redes remotas, usá una combinación de métodos ICMP y TCP:
sudo nmap 10.0.0.0/24 -sn -PE -PS22,80,443 -PA80,443Esto combina solicitudes ICMP echo con sondas TCP SYN y ACK a puertos comúnmente abiertos en servidores.
Para redes con firewalls estrictos:
sudo nmap 10.0.0.0/24 -Pn -p 80,443Esto omite por completo el descubrimiento de hosts y escanea puertos específicos en todas las direcciones.
Para escanear grandes redes eficientemente:
sudo nmap 10.0.0.0/16 -sn --min-hostgroup 512 --min-rate 1000Esto optimiza la velocidad aumentando el tamaño del grupo de hosts y la tasa de paquetes.
Una vez que identificamos los hosts activos, el siguiente paso es determinar qué puertos están abiertos. Exploremos los conceptos básicos del escaneo de puertos.
Nmap reporta seis posibles estados para los puertos escaneados:
El tipo de escaneo más común es el escaneo TCP SYN:
sudo nmap 10.129.2.28 --top-ports=10Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 15:36 EDT
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
Nmap done: 1 IP address (1 host up) scanned in 1.44 secondsPara entender qué está pasando durante un escaneo de puertos, usá la opción de rastreo de paquetes:
sudo nmap 10.129.2.28 -p 21 --packet-trace -Pn -n --disable-arp-pingStarting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 15:39 EDT
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.129.2.28
Host is up (0.014s latency).
PORT STATE SERVICE
21/tcp closed ftp
MAC Address: DE:AD:00:00:BE:EF
Nmap done: 1 IP address (1 host up) scanned in 0.07 secondsEn este ejemplo:
Cuando un puerto se muestra como "filtered" (filtrado), típicamente significa que un firewall está bloqueando el acceso:
sudo nmap 10.129.2.28 -p 139 --packet-trace -n --disable-arp-ping -PnStarting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 15:45 EDT
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
Nmap done: 1 IP address (1 host up) scanned in 2.06 secondsNotá que Nmap envía múltiples paquetes SYN pero no recibe respuesta, indicando que el puerto está filtrado (probablemente descartado por un firewall).
Los firewalls pueden manejar el tráfico no deseado de dos maneras:
Acá hay un ejemplo de una conexión rechazada:
sudo nmap 10.129.2.28 -p 445 --packet-trace -n --disable-arp-ping -PnStarting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 15:55 EDT
SENT (0.0388s) TCP 10.10.14.2:52472 > 10.129.2.28:445 S ttl=49 id=21763 iplen=44 seq=1418633433 win=1024 <mss 1460>
RCVD (0.0487s) ICMP [10.129.2.28 > 10.10.14.2 Port 445 unreachable (type=3/code=3)] IP [ttl=64 id=20998 iplen=72]
Nmap scan report for 10.129.2.28
Host is up (0.0099s latency).
PORT STATE SERVICE
445/tcp filtered microsoft-ds
MAC Address: DE:AD:00:00:BE:EF
Nmap done: 1 IP address (1 host up) scanned in 0.05 secondsAcá, el firewall rechaza activamente la conexión con un mensaje ICMP "port unreachable" (puerto inalcanzable).
Aunque el escaneo TCP es más común, el escaneo UDP es crucial para una evaluación de seguridad completa. El escaneo UDP se realiza con la opción -sU:
sudo nmap 10.129.2.28 -F -sUStarting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 16:01 EDT
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
Nmap done: 1 IP address (1 host up) scanned in 98.07 secondsEl escaneo UDP es más lento porque:
Miremos un puerto UDP abierto:
sudo nmap 10.129.2.28 -sU -Pn -n --disable-arp-ping --packet-trace -p 137Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 16:15 EDT
SENT (0.0367s) UDP 10.10.14.2:55478 > 10.129.2.28:137 ttl=57 id=9122 iplen=78
RCVD (0.0398s) UDP 10.129.2.28:137 > 10.10.14.2:55478 ttl=64 id=13222 iplen=257
Nmap scan report for 10.129.2.28
Host is up (0.0031s latency).
PORT STATE SERVICE
137/udp open netbios-ns
MAC Address: DE:AD:00:00:BE:EF
Nmap done: 1 IP address (1 host up) scanned in 0.04 secondsY un puerto UDP cerrado:
sudo nmap 10.129.2.28 -sU -Pn -n --disable-arp-ping --packet-trace -p 100Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 16:25 EDT
SENT (0.0445s) UDP 10.10.14.2:63825 > 10.129.2.28:100 ttl=57 id=29925 iplen=28
RCVD (0.1498s) ICMP [10.129.2.28 > 10.10.14.2 Port unreachable (type=3/code=3)] IP [ttl=64 id=11903 iplen=56]
Nmap scan report for 10.129.2.28
Host is up (0.11s latency).
PORT STATE SERVICE
100/udp closed unknown
MAC Address: DE:AD:00:00:BE:EF
Nmap done: 1 IP address (1 host up) scanned in 0.15 secondsEs esencial guardar los resultados del escaneo para documentación, comparación y reportes.
Nmap puede guardar resultados en tres formatos principales:
# Guardar en todos los formatos con un comando
sudo nmap 10.129.2.28 -p- -oA objetivoEsto crea:
objetivo.nmap (formato de texto normal)objetivo.gnmap (formato grepable)objetivo.xml (formato XML).nmap)Contiene la misma salida vista en la terminal.
# Nmap 7.94 scan initiated Tue Apr 14 12:14:53 2025 as: nmap -p- -oA objetivo 10.129.2.28
Nmap scan report for 10.129.2.28
Host is up (0.053s 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
# Nmap done at Tue Apr 14 12:15:03 2025 -- 1 IP address (1 host up) scanned in 10.22 seconds.gnmap)Diseñado para facilitar el análisis con herramientas como grep.
# Nmap 7.94 scan initiated Tue Apr 14 12:14:53 2025 as: nmap -p- -oA objetivo 10.129.2.28
Host: 10.129.2.28 () Status: Up
Host: 10.129.2.28 () Ports: 22/open/tcp//ssh///, 25/open/tcp//smtp///, 80/open/tcp//http/// Ignored State: closed (65525)
# Nmap done at Tue Apr 14 12:14:53 2025 -- 1 IP address (1 host up) scanned in 10.22 seconds.xml)Proporciona datos estructurados que pueden ser procesados por otras herramientas.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<?xml-stylesheet href="file:///usr/local/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
<nmaprun scanner="nmap" args="nmap -p- -oA objetivo 10.129.2.28" start="1713013200" startstr="Tue Apr 14 12:15:00 2025" version="7.94" xmloutputversion="1.04">
<scaninfo type="syn" protocol="tcp" numservices="65535" services="1-65535"/>
<verbose level="0"/>
<debugging level="0"/>
<host starttime="1713013200" endtime="1713013210"><status state="up" reason="arp-response" reason_ttl="0"/>
<address addr="10.129.2.28" addrtype="ipv4"/>
<address addr="DE:AD:00:00:BE:EF" addrtype="mac" vendor="Intel Corporate"/>
<hostnames>
</hostnames>
<ports><extraports state="closed" count="65525">
<extrareasons reason="resets" count="65525"/>
</extraports>
<port protocol="tcp" portid="22"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="ssh" method="table" conf="3"/></port>
<port protocol="tcp" portid="25"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="smtp" method="table" conf="3"/></port>
<port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="http" method="table" conf="3"/></port>
</ports>
<times srtt="52614" rttvar="75640" to="355174"/>
</host>
<runstats><finished time="1713013210" timestr="Tue Apr 14 12:15:10 2025" elapsed="10.22" summary="Nmap done at Tue Apr 14 12:15:10 2025; 1 IP address (1 host up) scanned in 10.22 seconds" exit="success"/><hosts up="1" down="0" total="1"/>
</runstats>
</nmaprun>La salida XML puede convertirse a HTML para una mejor legibilidad usando `xsltproc`:
xsltproc objetivo.xml -o objetivo.htmlEsto crea un reporte HTML bien formateado que es fácil de compartir con miembros del equipo o clientes.
Compará diferentes técnicas de descubrimiento de hosts en tu red de laboratorio:
# Escaneo ping estándar
sudo nmap -sn 192.168.1.0/24 -oN escaneo_ping.txt
# Ping TCP SYN a puertos comunes
sudo nmap -PS22,80,443 -sn 192.168.1.0/24 -oN ping_syn.txt
# Ping TCP ACK a puertos comunes
sudo nmap -PA22,80,443 -sn 192.168.1.0/24 -oN ping_ack.txt
# Ping UDP a puertos comunes
sudo nmap -PU53,161 -sn 192.168.1.0/24 -oN ping_udp.txtCompará los resultados:
Identificá hosts con firewalls analizando los estados de los puertos:
# Escanear puertos comunes
sudo nmap -p 21,22,23,25,80,443,445,3389 192.168.1.0/24 -oN test_firewall.txtAnalizá los resultados:
sudo nmap -p 21,22,23,25,80,443,445,3389 -A --reason 192.168.1.x Identificá servicios UDP en tu red:
# Escaneo UDP rápido de puertos comunes
sudo nmap -sU --top-ports=20 192.168.1.0/24 -oN servicios_udp.txtAnalizá los resultados:
Realizá escaneos en diferentes momentos y compará los resultados:
# Escaneo matutino
sudo nmap -sS 192.168.1.0/24 -oX manana.xml
# Escaneo vespertino
sudo nmap -sS 192.168.1.0/24 -oX tarde.xml
# Comparar usando ndiff
ndiff manana.xml tarde.xml > diferencias.txtAnalizá las diferencias:
Problema: Tu escaneo no encuentra ningún host, aunque sabés que existen.
Soluciones:
nmap -Pn 192.168.1.0/24nmap -PS22,80 -PA443 -PU161 -sn 192.168.1.0/24Problema: Los escaneos UDP tardan muchísimo en completarse.
Soluciones:
nmap -sU --top-ports=20 192.168.1.0/24nmap -sU -T4 --top-ports=20 192.168.1.0/24nmap -sU --min-rate=1000 --top-ports=20 192.168.1.0/24Problema: Ves "Note: Host seems down" (Nota: El host parece caído) o no podés ejecutar ciertos tipos de escaneo.
Solución:
Ejecutá Nmap con sudo o privilegios de administrador:
sudo nmap -sS 192.168.1.1Problema: Obtenés resultados diferentes al escanear el mismo objetivo varias veces.
Soluciones:
nmap -T4 192.168.1.0/24nmap --max-retries 3 192.168.1.0/24En el próximo episodio, exploraremos:
Nota: Usá este video como guía visual para complementar el material escrito.
Test your understanding with these questions
1. ¿Cuál es el propósito principal del descubrimiento de hosts en el escaneo de redes?
2. ¿Qué opción de Nmap se utiliza para realizar un escaneo ping, deshabilitando el escaneo de puertos?
3. ¿Cuál es la técnica de descubrimiento de hosts más eficiente para usar al escanear hosts en el mismo segmento de red local?
4. En situaciones donde una red objetivo podría bloquear solicitudes ICMP, ¿qué opción de Nmap se puede usar para omitir la fase de descubrimiento de hosts y asumir que todos los objetivos especificados están en línea?
5. Al usar la opción `-oA` para guardar los resultados del escaneo de Nmap, ¿en qué tres formatos se guardan los resultados?
