Tutorials

1. Host Discovery

📌 Host Discovery con Nmap ---

#enumeration#nmap

📌 Host Discovery con Nmap


🔍 Introduzione

L'Host Discovery è la fase in cui Nmap verifica se un determinato sistema è attivo sulla rete. Questa operazione è utile per identificare macchine raggiungibili prima di procedere con una scansione delle porte.

Nmap offre diverse tecniche per l’host discovery, utilizzando protocolli come ICMP, TCP, UDP e ARP. Tra le opzioni più usate troviamo:

  • -PE → ICMP Echo Request (ping classico)
  • -PS → TCP SYN Ping
  • -PA → TCP ACK Ping
  • -PU → UDP Ping
Vediamo nel dettaglio il comportamento di ciascuna opzione.

📌 -PE → ICMP Echo Request

Descrizione:
  • Invia un pacchetto ICMP Echo Request (Type 8, Code 0) al target.
  • Se il target risponde con ICMP Echo Reply (Type 0, Code 0), viene considerato attivo.
Quando funziona? ✅ Se il dispositivo risponde ai ping.

Quando fallisce? ❌ Se il firewall o l'host bloccano le richieste ICMP (comune in ambienti sicuri).

Esempio di utilizzo:

bash
nmap -sn -PE 192.168.1.1


📌 -PS → TCP SYN Ping

Descrizione:
  • Invia un pacchetto TCP SYN a una o più porte specificate.
  • Se il target risponde con SYN/ACK, significa che la porta è aperta e l'host è attivo.
  • Se risponde con RST, significa che la porta è chiusa, ma l'host è attivo.
  • Se non c’è risposta, la porta potrebbe essere filtrata.
Quando funziona? ✅ Se il target ha almeno una porta aperta o chiusa ma non filtrata.

Quando fallisce? ❌ Se tutte le porte specificate sono filtrate o chiuse senza risposta.

Esempio di utilizzo:

bash
nmap -sn -PS22,80,443 192.168.1.1

Nota: Se non viene specificata una porta, Nmap usa di default la porta 443.


📌 -PA → TCP ACK Ping

Descrizione:
  • Invia un pacchetto TCP ACK a una porta specificata.
  • Se il target risponde con RST, significa che l'host è attivo.
  • Se non c’è risposta, il pacchetto potrebbe essere stato filtrato da un firewall.
Quando funziona? ✅ Se il target risponde con un pacchetto RST, significa che è attivo.

Quando fallisce? ❌ Se il firewall blocca i pacchetti ACK senza inviare risposta.

Esempio di utilizzo:

bash
nmap -sn -PA80,443 192.168.1.1

Nota: Se non viene specificata una porta, Nmap usa di default la porta 80.


📌 -PU → UDP Ping

Descrizione:
  • Invia un pacchetto UDP a una porta specificata.
  • Se il target risponde con ICMP Port Unreachable (Type 3, Code 3), significa che l’host è attivo ma la porta è chiusa.
  • Se risponde con un pacchetto UDP, significa che la porta è aperta e l’host è attivo.
  • Se non c’è risposta, il firewall potrebbe bloccare il traffico UDP.
Quando funziona? ✅ Se il target risponde con un messaggio di errore ICMP o dati UDP validi.

Quando fallisce? ❌ Se il firewall blocca i pacchetti UDP senza inviare risposta.

Esempio di utilizzo:

bash
nmap -sn -PU53,161 192.168.1.1

Nota: Se non viene specificata una porta, Nmap usa di default la porta 40125.


📌 Confronto tra le tecniche di Host Discovery

OpzioneProtocolloMetodoQuando funzionaQuando fallisce
-PEICMPEcho RequestICMP abilitatoICMP bloccato
-PSTCPSYN PingPorta aperta o chiusaPorta filtrata
-PATCPACK PingRST ricevutoFirewall blocca tutto
-PUUDPUDP PingICMP Port Unreachable o risposta UDPNessuna risposta

📌 Tecniche avanzate di Host Discovery

#### 1️⃣ Eseguire più metodi contemporaneamente Se il target ha firewall restrittivi, combinare più tecniche aumenta le possibilità di rilevarlo:
bash
nmap -sn -PE -PS22,80,443 -PA80 -PU53 192.168.1.1

#### 2️⃣ Visualizzare i pacchetti inviati con --packet-trace Per verificare quali pacchetti vengono effettivamente inviati:

bash
nmap -sn --packet-trace 192.168.1.1

#### 3️⃣ Forzare l'uso di ARP (solo in LAN) Se si sta eseguendo una scansione su una rete locale, si può forzare l'uso dell'ARP:

bash
nmap -sn -PR 192.168.1.1


🎯 Conclusione

  • L'host discovery è essenziale per individuare macchine attive prima di una scansione più approfondita.
  • Se una tecnica fallisce, provare con un'altra (ICMP bloccato → usare TCP SYN o UDP).
  • Usare --packet-trace per controllare quali pacchetti vengono inviati.
  • Combinare più metodi per massimizzare il rilevamento.
🔎 Testare sempre con Wireshark per confermare il comportamento dei pacchetti! 🚀