¿Cómo podrías saber qué hosts están activos y corriendo? Es esencial evitar gastar nuestro tiempo escaneando los puertos de un dispositivo offline o una dirección IP sin uso. Hay varias maneras de descubrir hosts online. Cuando no se dan opciones de host discovery, Nmap sigue el siguiente acercamiento para descubrirlos.
- Cuando un usuario privilegiado trata de escanear objetivos en una red local (Ethernet), Nmap usa peticiones ARP.
- Cuando un usuario privilegiado trata de escanear objetivos externos a la red local, Nmap usa peticiones echo ICMP, TCP ACK al puerto 80, TCP SYN al puerto 443 e ICMP petición timestamp.
- Cuando un usuario sin privilegios trata de escanear objetivos fuera de la red local, Nmap se queda con un TCP 3-way handdshake mandando paquetes SYN a los puertos 80 y 443.
Nmap usa ICMP por defecto para detectar hosts activos y luego los escanea. Si quieres usar Nmap para descubrir hosts activos sin escanear puertos, puedes usar la opción -sn.
El escaneo ARP es posible sólo si estás en la musma subred que el objetivo. En un Ethernet (802.3) y WiFi (802.11), necesitas saber la dirección MAC de cualquier sistema antes de poder comunicarte con él. Si sólo quieres que Nmap escanee ARP sin puertos debes usar nmap -PR -sn donde -PR indica que sólo quieres escaneo ARP. El siguiente ejemplo muestra a Nmap usando ARP para descubrimiento de hosts.
pentester@TryHackMe$ sudo nmap -PR -sn 10.10.210.6/24 Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-02 07:12 BST Nmap scan report for ip-10-10-210-75.eu-west-1.compute.internal (10.10.210.75) Host is up (0.00013s latency). MAC Address: 02:83:75:3A:F2:89 (Unknown) Nmap scan report for ip-10-10-210-100.eu-west-1.compute.internal (10.10.210.100) Host is up (-0.100s latency). MAC Address: 02:63:D0:1B:2D:CD (Unknown) Nmap scan report for ip-10-10-210-165.eu-west-1.compute.internal (10.10.210.165) Host is up (0.00025s latency). MAC Address: 02:59:79:4F:17:B7 (Unknown) Nmap scan report for ip-10-10-210-6.eu-west-1.compute.internal (10.10.210.6) Host is up. Nmap done: 256 IP addresses (4 hosts up) scanned in 3.12 seconds
ARP hace una petición a todos los dispositivos de la subred y los que están activos responden con su MAC e IP.

Si miramos los paquetes con una herramienta como Wireshark, veremos el tráfico de red similar a la imagen de abajo.

Deberíamos mencionar un escáner construido alrededor de peticiones ARP: arp-scan. Ofrece muchas opciones para personalizar el escaneo. Visita la wiki de arp-scan para obtener más información. Una opción popular es arp-scan --localnet o arp-scan -l. Si el sistema tiene más de una interfaz y estás interesado en saber cuáles están conectados a elle podemos usar arp-scan -I <interfaz> -l.
pentester@TryHackMe$ sudo arp-scan 10.10.210.6/24 Interface: eth0, datalink type: EN10MB (Ethernet) WARNING: host part of 10.10.210.6/24 is non-zero Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/) 10.10.210.75 02:83:75:3a:f2:89 (Unknown) 10.10.210.100 02:63:d0:1b:2d:cd (Unknown) 10.10.210.165 02:59:79:4f:17:b7 (Unknown) 4 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.9: 256 hosts scanned in 2.726 seconds (93.91 hosts/sec). 3 responded
De forma similar, el comando arp-scan generará bastantes peticiones ARP que podemos ver usando tcpdump, Wireshark u otra herramienta similar.

