Tecniche di Rilevamento Host e Enumerazione di Rete
Scoperta ARP vs. Scoperta Host a Livello IP: Il Confine del Segmento Locale
La scoperta host di Nmap opera attraverso due meccanismi fondamentalmente diversi a seconda della topologia di rete. La scoperta ARP (-PR) domina sui segmenti Ethernet locali perché interroga direttamente il livello data-link, bypassando completamente il filtraggio dello stack IP. Quando si prende di mira 192.168.1.0/24 dallo stesso dominio di broadcast, Nmap invia richieste ARP e attende risposte—nessuna porta, nessun protocollo, solo risoluzione degli indirizzi MAC. Questo ha successo anche contro host con firewall personali aggressivi che bloccano tutto il traffico IP, poiché ARP è prerequisito per il funzionamento TCP/IP.
La limitazione è assoluta: ARP non attraversa i router. Per le reti remote, Nmap ricorre alla scoperta host a livello IP, dove i pacchetti devono attraversare l'infrastruttura di routing e affrontare il filtraggio ad ogni hop. Questo cambiamento riduce drasticamente i tassi di successo. I sistemi operativi moderni complicano ulteriormente la situazione: Windows 10/11 con Windows Defender Firewall predefinito blocca tutte le richieste di echo ICMP in entrata non sollecitate e ignora la maggior parte delle sonde TCP verso porte chiuse senza risposte RST, mentre le distribuzioni Linux con iptables/nftables o ufw abilitati silenziano analogamente il traffico di scoperta. La tua strategia deve adattarsi a questa eterogeneità.
Tecniche Basate su ICMP: Richieste Echo, Timestamp e Address Mask
Nmap fornisce tre famiglie di sonde ICMP, ciascuna con caratteristiche distinte di evasione firewall:
| Flag | Tipo di Sonda | Tasso di Successo Tipico | Note sull'Evasione | |------|--------------|--------------------------|-------------------| | -PE | Richiesta echo (Tipo 8 → 0) | Basso (ampiamente bloccato) | Primo obiettivo delle regole firewall; spesso scartato senza logging | | -PP | Richiesta timestamp (Tipo 13 → 14) | Moderato | Frequentemente permesso per sistemi dipendenti da NTP; Windows risponde per default | | -PM | Richiesta address mask (Tipo 17 → 18) | Molto basso | Raramente implementato; quasi universalmente bloccato |
Le differenze di comportamento concrete contano. Gli host Windows rispondono alle richieste ICMP timestamp (-PP) anche quando le richieste echo sono bloccate, perché il firewall Windows predefinito permette le risposte timestamp per compatibilità legacy. Linux con nftables predefinito o iptables -P INPUT DROP tipicamente blocca tutte e tre. La richiesta address mask (-PM) sopravvive principalmente su sistemi Unix antichi e dispositivi embedded; includila solo quando si effettua audit di reti di controllo industriale legacy.
Quando ICMP è interamente filtrato, la tua strategia di scoperta deve puntare sulle alternative TCP/UDP. Combina esplicitamente sonde per la difesa in profondità:
nmap -PE -PP -PM -PS22,80,443 -PA80,443 -PU53,161,40125 10.0.0.0/24
Questo inonda i target con molteplici tipi di sonde, massimizzando la possibilità di ottenere qualsiasi risposta.
TCP SYN Ping, TCP ACK Ping e Strategie di Sonda UDP
TCP SYN ping (-PS) invia pacchetti SYN verso porte specificate, attendendo SYN-ACK (host attivo) o RST (host attivo, porta chiusa). La selezione della porta determina il successo:
- Porta 22 (SSH): Universale sui server Linux; raramente filtrata per la gestione remota
- Porta 80/443 (HTTP/HTTPS): Presente su praticamente ogni sistema; i web application firewall possono scartare SYN senza flussi stabiliti
- Porta 445 (SMB): Specifico di Windows; spesso filtrato ai confini di rete per il rischio ransomware
- Porta 3389 (RDP): Specifico di Windows; frequentemente bloccato dalle policy aziendali
- Porte alte (49152–65535): Range effimero; utile contro dispositivi NAT dove il port forwarding crea listener inaspettati
TCP ACK ping (-PA) invia pacchetti ACK, sfruttando il comportamento dei firewall stateful. Gli ACL stateless lasciano passare gli ACK (corrispondono a regole "established"), rivelando host dietro router malconfigurati. I firewall stateful e i firewall host scartano ACK senza stato di connessione corrispondente, producendo falsi negativi. Windows risponde con RST agli ACK su porte chiuse a meno che la modalità "stealth" di Windows Defender Firewall sia abilitata (default sulle versioni più recenti). iptables di Linux con regole --tcp-flags può scartare silenziosamente.
UDP ping (-PU) prende di mira porte dove le risposte ICMP port unreachable indicano la presenza dell'host. La selezione delle porte è critica e controintuitiva:
# Strategia per ambiente misto Windows/Linux
nmap -PU53,67,68,69,111,123,137,138,161,162,500,1900,5353,40125 172.16.0.0/20
- Porta 53 (DNS): Risponditori UDP comuni; assenza di port unreachable = host attivo
- Porta 67/68 (DHCP): Infrastruttura broadcast; i client Windows ascoltano
- Porta 161 (SNMP): Dispositivi di rete, stampanti, server; target di scoperta ad alto valore
- Porta 40125 (alta casuale): Improbabile utilizzo; ICMP unreachable indica definitivamente che l'host esiste
La modalità di fallimento UDP è ambigua: nessuna risposta significa host attivo con porta filtrata, host inattivo, o ICMP administratively prohibited. Combina con -PS o -PA per conferma.
IP Protocol Ping per Ambienti Esotici
Il flag -PY invia sonde con numeri di protocollo IP variabili nell'intestazione IP (non TCP/UDP/ICMP). I target che rispondono con ICMP protocol unreachable (Tipo 3, Codice 2) confermano l'esistenza dell'host. Numeri di protocollo comuni da testare:
nmap -PY1,2,4,6,17,47,50,51,94,132,136 192.168.100.0/24
- Protocollo 1 (ICMP): Ridondante con
-PE, ma bypassa alcuni filtri a livello applicazione - Protocollo 6 (TCP): Incapsulamento insolito; può scivolare oltre ACL semplici basati su protocollo
- Protocollo 17 (UDP): Alternativa a
-PUquando le porte UDP sono specificamente filtrate ma il campo protocollo non è verificato - Protocollo 47 (GRE): Tunnel VPN; la presenza indica concentratori VPN
- Protocollo 50 (ESP) / 51 (AH): IPsec; gli endpoint VPN attivi rispondono
Il successo è di nicchia: principalmente valutabile contro reti MPLS, reti militari/governative con routing specifico per protocollo, e dispositivi embedded/IoT con stack IP minimi che rispondono in modo errato a protocolli inaspettati. La maggior parte dei firewall aziendali normalizza o scarta protocolli sconosciuti.
List Scanning e Nessuna Scansione Porte: Inventario Senza Intrusione
List scan (-sL) esegue lookup DNS inversi senza inviare pacchetti agli host target:
nmap -sL 203.0.113.0/24
L'output rivela i record PTR dove configurati, costruendo mappe di rete dalla sola infrastruttura DNS. Rischio di intrusione zero—nessun pacchetto raggiunge gli endpoint. Limitazione: richiede zone DNS inverse funzionanti, sempre meno comuni negli ambienti cloud (AWS, Azure) dove le allocazioni IP mancano di mapping DNS persistenti.
Nessuna scansione porte (-sn, precedentemente -sP) esegue la scoperta host senza scansione porte:
nmap -sn -PE -PS22,443 -PA80 -PU53,161 --traceroute 10.0.0.0/8
Questo scopre host attivi, esegue DNS inverso e traccia route, producendo un inventario di rete completo adatto alla gestione degli asset. Critico per la ricognizione pre-engagement dove la scansione porte attiva allarmi di intrusion detection o viola lo scope della valutazione. L'aggiunta di --traceroute mappa la topologia senza traffico di sonda aggiuntivo.
Sfide Specifiche della Scoperta IPv6
IPv6 altera fondamentalmente la scoperta host. Il flag -6 abilita la modalità IPv6, ma il design del protocollo introduce vincoli:
- Sostituzione di ARP con Neighbor Discovery (NDP): ICMPv6 Tipo 135/136 sostituisce ARP; Nmap utilizza questo automaticamente sui segmenti locali
- Enormità dello spazio di indirizzi: Le subnet
/64contengono 2^64 indirizzi; la scoperta brute-force è impossibile - Dipendenza dal multicast: Gli indirizzi multicast solicited-node (
ff02::1:ffxx:xxxx) riducono lo scope delle sonde ma richiedono infrastruttura multicast-capable
La scoperta IPv6 pratica richiede liste di target seminate da DNS, log DHCPv6 o router advertisements:
# IPv6 con scoperta mista, richiede input di indirizzo o DNS esplicito
nmap -6 -sn -PS80,443 -PA443 -PU53,547 server.example.com 2001:db8::/64
Nota: -PY e alcuni comportamenti -PU differiscono in IPv6; ICMPv6 è obbligatorio per la funzionalità di base, rendendo la scoperta pura TCP/UDP meno affidabile che negli ambienti IPv4. Assicurarsi sempre della connettività IPv6 (ping6, ip -6 route) prima di risolvere i problemi di Nmap in IPv6.
Disabilitazione Completa del Ping: Il Compromesso -Pn
Il flag -Pn tratta tutti i target come attivi, saltando interamente la scoperta host. Questo garantisce completezza a costo sostanziale:
# Rilevazione servizi ad alta accuratezza su target presunti attivi
nmap -Pn -sS -sV -O --version-intensity 5 target.example.com
Rischi: La scansione di 65.535 porte contro migliaia di host inesistenti spreca ore, genera rumore eccessivo e può attivare rate-limiting o blacklisting. Riservare -Pn per:
- Valutazioni single-host dove la presenza è confermata tramite mezzi out-of-band
- Ambienti firewallati dove tutte le sonde falliscono ma i servizi sono noti accessibili
- Evasione IDS dove i pattern di scoperta host sono riconosciuti dalle signature
Il comportamento Nmap predefinito (equivalente a -PE -PS80,443 -PA80,443 -PU40125) bilancia velocità e accuratezza. Personalizzare questo arsenale in base all'intelligence sull'ambiente target: le reti Windows-oriented privilegiano -PS con porte SMB/RDP; gli ambienti Linux/cloud danno priorità a SSH e UDP su porte alte; le reti legacy meritano sperimentazione con -PP e -PY.