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

AAAA — 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.com

CNAME — Canonical Name (alias)

  • Risponde a: questo nome è un alias? Se sì, a quale nome reale punta?
  • Direzione: alias → nome canonico.

Due malintesi frequenti

  1. “canonico = originale / primo nome” — ❌ No. Canonico = il nome reale e ufficiale a cui l’alias inoltra.
  2. “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.comexample.comstesso dominio
shop.example.comstore.myshopify.comusa Shopify
blog.example.comuser.github.iousa GitHub Pages
example.comd1234.cloudfront.netusa 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.com

NS — 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.com

Esempio di output:

ns1.bluehost.com
ns2.bluehost.com

NS elenca TUTTI i server autoritativi NS restituisce 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.com

Campi SOA, nell’ordine:

CampoSignificato
MNAMEServer primario (la risposta a “server primario”)
RNAMEEmail dell’admin (il primo . sostituisce la @)
SerialNumero di versione della zona
RefreshOgni quanto i secondari controllano gli aggiornamenti
RetryIntervallo di ritentativo se il refresh fallisce
ExpireQuando i secondari smettono di rispondere se non raggiungono il primario
MinimumTTL 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.com

TXT — 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.com

PTR — 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.11

2. Tabella di riferimento rapido

RecordDomanda a cui rispondedignslookup
AIPv4 di un nomedig +short A nomenslookup -type=a nome
AAAAIPv6 di un nomedig +short AAAA nomenslookup -type=aaaa nome
CNAMENome reale dietro un aliasdig +short CNAME nomenslookup -type=cname nome
NSServer DNS autoritatividig +short NS nomenslookup -type=ns nome
SOAServer primario + parametri zonadig SOA nomenslookup -type=soa nome
MXMail serverdig +short MX nomenslookup -type=mx nome
TXTTesto/SPF/verifichedig +short TXT nomenslookup -type=txt nome
PTRNome da un IP (inverso)dig +short -x IPnslookup 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 il 8.8.8.8 di 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ù

  1. Server primario ≠ primo NS. → È il campo MNAME del SOA.
  2. Server DNS primario ≠ web host. → Server DNS (SOA/NS) e host del sito (record A) sono ruoli diversi.
  3. 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.