tags: Record_DNS Spiegazione_Record_DNS
Il modello mentale
Il DNS è in sostanza un elenco telefonico distribuito. Interroghi un nome, lui ti restituisce una risposta. Ma tipi di record diversi rispondono a domande diverse:
- “Qual è l’IP di questo nome?” → A / AAAA
- “Questo nome è solo un soprannome — qual è il nome reale?” → CNAME
- “Chi sono i server DNS responsabili di questa zona?” → NS
- “Qual è il server master della zona e i suoi parametri amministrativi?” → SOA
- “Dove va l’email di questo dominio?” → MX
- “A quale nome corrisponde questo IP (mappatura inversa)?” → PTR (reverse)
- “Ci sono record di testo / verifica / policy?” → TXT
Analogia Immagina il centralino di una grande azienda. A/AAAA = il numero di telefono diretto di una persona. CNAME = "Bob è anche noto come il tizio delle vendite, inoltra a Bob". NS = i centralinisti che smistano tutte le chiamate dell'azienda. SOA = il capo-centralinista che possiede l'elenco ufficiale. MX = l'indirizzo dell'ufficio posta. PTR = la ricerca inversa: "di chi è questo numero?".
I tipi di record in dettaglio
A — Address (IPv4)
- Risponde a: a quale indirizzo IPv4 risolve questo hostname?
- Valore nel footprinting: l’IP reale che serve il sito (a meno che davanti non ci sia una CDN/WAF — in quel caso è l’IP del proxy, non dell’origin).
# dig
dig +short A certifiedhacker.com
# nslookup (one-liner)
nslookup -type=a certifiedhacker.com
# nslookup (interattivo)
nslookup
> set type=a
> certifiedhacker.comAAAA — Address (IPv6)
- Risponde a: come A, ma l’indirizzo IPv6.
- Nota: molti host non pubblicano ancora record AAAA; una risposta vuota è normale, non è un errore.
dig +short AAAA certifiedhacker.com
nslookup -type=aaaa certifiedhacker.comCNAME — Canonical Name (alias)
- Risponde a: questo nome è un alias? Se sì, a quale nome reale punta?
- Direzione:
alias → nome canonico.
Due malintesi frequenti
- “canonico = originale / primo nome” — ❌ No. Canonico = il nome reale e ufficiale a cui l’alias inoltra.
- “un alias è sempre un sottodominio” / “col CNAME trovi il dominio principale” — ❌ No. Un nome è un alias perché possiede un record CNAME, non perché è un sottodominio. E il target canonico molto spesso NON è il dominio principale — è spesso un servizio di terze parti.
Esempio dal lab:
www.certifiedhacker.com canonical name = certifiedhacker.com
└── alias └── nome canonico (il nome reale che possiede il record A)
Qui il nome canonico coincideva con il dominio principale — è una coincidenza di questo caso, non una regola. I target reali di solito rivelano l’infrastruttura:
| Alias (interrogato) | Nome canonico (dove punta) | Cosa rivela |
|---|---|---|
www.example.com | example.com | stesso dominio |
shop.example.com | store.myshopify.com | usa Shopify |
blog.example.com | user.github.io | usa GitHub Pages |
example.com | d1234.cloudfront.net | usa la CDN AWS CloudFront |
Perché il CNAME è prezioso in ricognizione Seguire il nome canonico spesso ti dice quali servizi esterni/CDN/hosting usa il target — informazione preziosa sull'infrastruttura.
dig +short CNAME www.certifiedhacker.com
nslookup -type=cname www.certifiedhacker.comNS — Name Server
- Risponde a: quali server DNS sono autoritativi per questa zona?
- Valore nel footprinting: identifica il provider DNS (es. Bluehost, Cloudflare) e ti dà i bersagli per eventuali tentativi di zone transfer (
AXFR).
dig +short NS certifiedhacker.com
nslookup -type=ns certifiedhacker.comEsempio di output:
ns1.bluehost.com
ns2.bluehost.com
NS elenca TUTTI i server autoritativi
NSrestituisce ogni name server autoritativo (primario e secondari) senza indicare quale sia il primario. Per identificare specificamente il primario, usa SOA (sotto).
SOA — Start of Authority
- Risponde a: chi è il primary master name server della zona, più i parametri amministrativi della zona (serial, refresh, retry, expire, TTL minimo).
- Campo chiave:
MNAME= il server primario.
Trappola del "server primario" (frequentissima nei lab CEH) Il server primario NON è "il primo NS della lista". È il server indicato nel campo MNAME del record SOA. Quando una traccia chiede il server primario, interroga SOA, non NS.
Inoltre: il server primario è un server DNS (risponde alle interrogazioni sui nomi). NON è il web server che ospita il sito (quello è il record A), e non ha nulla a che vedere con l’IP di una macchina target in THM/HTB.
# dig — l'output completo mostra tutti i campi SOA; MNAME è il primo campo
dig SOA certifiedhacker.com
# dig — solo la riga SOA
dig +short SOA certifiedhacker.com
# nslookup
nslookup -type=soa certifiedhacker.comCampi SOA, nell’ordine:
| Campo | Significato |
|---|---|
| MNAME | Server primario (la risposta a “server primario”) |
| RNAME | Email dell’admin (il primo . sostituisce la @) |
| Serial | Numero di versione della zona |
| Refresh | Ogni quanto i secondari controllano gli aggiornamenti |
| Retry | Intervallo di ritentativo se il refresh fallisce |
| Expire | Quando i secondari smettono di rispondere se non raggiungono il primario |
| Minimum | TTL minimo / delle risposte negative |
MX — Mail Exchange
- Risponde a: quali mail server ricevono la posta per questo dominio, e con quale ordine di priorità (numero più basso = priorità più alta)?
- Valore nel footprinting: i mail server spesso bypassano la CDN/WAF, quindi l’MX può far trapelare l’infrastruttura reale / indizi sull’origin.
bash
dig +short MX certifiedhacker.com
nslookup -type=mx certifiedhacker.comTXT — Text
- Risponde a: record di testo libero — comunemente SPF, DKIM, DMARC e token di verifica del dominio.
- Valore nel footprinting: i record SPF elencano IP/domini autorizzati a inviare mail (indizi sull’infrastruttura); i token di verifica rivelano servizi di terze parti in uso.
bash
dig +short TXT certifiedhacker.com
nslookup -type=txt certifiedhacker.comPTR — Pointer (Reverse DNS)
- Risponde a: quale hostname corrisponde a un dato indirizzo IP? (l’inverso di A)
- Valore nel footprinting: la risoluzione inversa degli IP può rivelare schemi di denominazione e host vicini.
bash
# dig — il flag -x esegue le ricerche inverse
dig +short -x 162.241.216.11
# nslookup — basta dargli l'IP
nslookup 162.241.216.112. Tabella di riferimento rapido
| Record | Domanda a cui risponde | dig | nslookup |
|---|---|---|---|
| A | IPv4 di un nome | dig +short A nome | nslookup -type=a nome |
| AAAA | IPv6 di un nome | dig +short AAAA nome | nslookup -type=aaaa nome |
| CNAME | Nome reale dietro un alias | dig +short CNAME nome | nslookup -type=cname nome |
| NS | Server DNS autoritativi | dig +short NS nome | nslookup -type=ns nome |
| SOA | Server primario + parametri zona | dig SOA nome | nslookup -type=soa nome |
| MX | Mail server | dig +short MX nome | nslookup -type=mx nome |
| TXT | Testo/SPF/verifiche | dig +short TXT nome | nslookup -type=txt nome |
| PTR | Nome da un IP (inverso) | dig +short -x IP | nslookup IP |
Extra utili di dig
dig nome ANY→ chiede tutto in un colpo (molti server ormai rifiutano ANY, quindi non farci affidamento).dig @8.8.8.8 nome A→ interroga un resolver specifico (qui il8.8.8.8di Google) invece di quello di default.dig +short nome→ riduce l’output verboso alla sola risposta.dig +trace nome→ percorre la delega dai root server fino in fondo (utile per vedere l’intero percorso di risoluzione).
3. Tre trappole in cui non cadere più
- Server primario ≠ primo NS. → È il campo MNAME del SOA.
- Server DNS primario ≠ web host. → Server DNS (SOA/NS) e host del sito (record A) sono ruoli diversi.
- Nome canonico ≠ “originale”, e alias ≠ “sottodominio”. → Il CNAME punta un alias al suo nome reale, che spesso è un servizio di terze parti, non il dominio principale.