
Triage forense dell'avvelenamento della cache DNS su hardware legacy. Include l'analisi PCAP di iniezioni di record non richieste da 839 byte, la mappatura CVE-2025-40778 e la riparazione tramite Unbound indurito (DoT) su Arch Linux.
Un esercizio educativo di analisi dei pacchetti e di rafforzamento del resolver completato su una workstation Arch Linux.
Ambito: Questa repository è un progetto di apprendimento. La cattura inclusa è utile per fare pratica con l'ispezione di DNS e ARP, ma non dimostra di per sé un attacco di avvelenamento della cache in corso, hardware dannoso, lo sfruttamento di una specifica CVE o una connessione causale con una metrica di routing di NetworkManager.
La mia prima relazione trattava diverse osservazioni come cause confermate. Era troppo assertivo. Un frame DNS di 839 byte non è automaticamente malformato o dannoso, e DNS-over-TLS protegge il traffico DNS verso il resolver upstream configurato—non ferma lo spoofing ARP o ogni attacco di livello 2/3.
La versione rivista mantiene le parti utili del laboratorio separando:
Questa distinzione fa parte di un buon lavoro di incident response. È meglio restringere una conclusione piuttosto che affermare più di quanto le prove supportino.
tshark.tsharkdigLe versioni esatte dei pacchetti dovrebbero essere registrate quando il laboratorio viene ripetuto. La repository attuale non contiene metadati di versione sufficienti per attribuire il traffico a una vulnerabilità di prodotto.
sha256sum evidence/incident_triage_snippet.pcap
capinfos evidence/incident_triage_snippet.pcap
Salva l'hash e i metadati della cattura con le tue note. Non chiamare la cattura "prova incidente completa"; è uno snippet.
tshark -r evidence/incident_triage_snippet.pcap -Y arp \
-T fields -e frame.number -e frame.time_relative \
-e arp.opcode -e arp.src.proto_ipv4 -e arp.src.hw_mac \
-e arp.dst.proto_ipv4 -e arp.dst.hw_mac
Cerca affermazioni IP-to-MAC ripetute o in conflitto. Un conflitto è uno spunto da indagare, non una prova automatica di un attaccante. Verifica se gli indirizzi sono valori sintetici di laboratorio, se un dispositivo è cambiato legittimamente e se la tempistica supporta l'ipotesi.
tshark -r evidence/incident_triage_snippet.pcap -Y dns \
-T fields -e frame.number -e frame.time_relative \
-e ip.src -e ip.dst -e udp.srcport -e udp.dstport \
-e dns.id -e dns.flags.response -e dns.qry.name \
-e dns.count.answers -e frame.len
Filtri di approfondimento utili:
dns && frame.len == 839
dns.flags.response == 1
dns.qry.name == "."
arp.duplicate-address-detected || arp.duplicate-address-frame
La dimensione dei pacchetti da sola non è un verdetto. Le dimensioni delle risposte DNS possono variare a causa del numero di record, EDNS, DNSSEC e del comportamento del trasporto. Ispeziona i record decodificati e confrontali con una baseline nota.
chmod +x scripts/checkdns.sh
./scripts/checkdns.sh example.com
Lo script etichetta correttamente una query diretta dig @1.1.1.1 come DNS in chiaro sulla porta 53. Quando kdig è disponibile, esegue anche un test TLS separato.
Rivedi configs/unbound.conf, adatta i percorsi dei certificati al sistema locale e valida prima dell'uso:
sudo unbound-checkconf configs/unbound.conf
sudo ss -tnp | grep ':853'
dig @127.0.0.1 example.com
Una query riuscita insieme a una connessione stabilita su TCP/853 supporta la conclusione più ristretta che Unbound stia inoltrando all'upstream configurato su TLS. Non dimostra che un problema ARP o di routing non correlato sia stato eliminato.
Usa strumenti di cattura pacchetti e test di rete solo su sistemi e reti di tua proprietà o per cui sei autorizzato a effettuare test. Controlla le catture per indirizzi privati, hostname, token, credenziali e informazioni personali prima di pubblicarle.
| Path | Purpose |
|---|
evidence/incident_triage_snippet.pcap | Campione di cattura pacchetti di piccole dimensioni usato per l'ispezione DNS/ARP |
evidence/wireshark_anomoly.png | Nome file screenshot legacy mantenuto per la storia della repository; anomaly è l'ortografia corretta |
reports/ANALYSIS.md | Revisione basata sulle prove e limitazioni |
scripts/checkdns.sh | Confronta l'output del resolver ed etichetta chiaramente il trasporto |
configs/unbound.conf | Esempio di configurazione di inoltro di Unbound che usa DNS-over-TLS |
logs/remediation_validation.txt | Esempio di output di validazione con conclusioni corrette |
CVE_RESEARCH.md | Spiega perché le prove disponibili non supportano un'attribuzione a una CVE |