
Triage forensique de l'empoisonnement du cache DNS sur du matériel hérité. Comprend l'analyse PCAP d'injections d'enregistrements non sollicités de 839 octets, la mise en correspondance avec CVE-2025-40778, et la remédiation via Unbound durci (DoT) sous Arch Linux.
Un exercice pédagogique d'analyse de paquets et de durcissement de résolveur réalisé sur une station de travail Arch Linux.
Portée : Ce dépôt est un projet d'apprentissage. La capture incluse est utile pour s'entraîner à l'inspection DNS et ARP, mais elle ne prouve pas en soi une attaque active d'empoisonnement de cache, un matériel malveillant, l'exploitation d'une CVE spécifique, ou un lien de causalité avec une métrique de routage NetworkManager.
Mon premier compte rendu traitait plusieurs observations comme des causes confirmées. C'était trop affirmatif. Une trame DNS de 839 octets n'est pas automatiquement malformée ou malveillante, et DNS-over-TLS protège le trafic DNS vers le résolveur amont configuré — il n'arrête pas l'usurpation ARP ni toutes les attaques des couches 2/3.
La version révisée conserve les parties utiles du laboratoire tout en distinguant :
Cette distinction fait partie d'un bon travail d'investigation d'incident. Mieux vaut resserrer une conclusion que d'affirmer plus que ce que les preuves soutiennent.
tshark.tsharkdigLes versions exactes des paquets devraient être consignées lorsque le laboratoire est relancé. Le dépôt actuel ne contient pas assez de métadonnées de version pour attribuer le trafic à une vulnérabilité produit.
sha256sum evidence/incident_triage_snippet.pcap
capinfos evidence/incident_triage_snippet.pcap
Enregistrez le hash et les métadonnées de capture avec vos notes. N'appelez pas la capture « preuve complète d'incident » ; c'est un extrait.
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
Recherchez des affirmations IP-vers-MAC répétées ou contradictoires. Un conflit est une piste à investiguer, pas une preuve automatique d'un attaquant. Vérifiez si les adresses sont des valeurs de laboratoire synthétiques, si un appareil a légitimement changé, et si le minutage soutient l'hypothèse.
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
Filtres de suivi utiles :
dns && frame.len == 839
dns.flags.response == 1
dns.qry.name == "."
arp.duplicate-address-detected || arp.duplicate-address-frame
La taille des paquets seule n'est pas un verdict. Les tailles de réponses DNS peuvent varier en raison du nombre d'enregistrements, d'EDNS, de DNSSEC et du comportement de transport. Inspectez les enregistrements décodés et comparez-les à un référentiel connu fiable.
chmod +x scripts/checkdns.sh
./scripts/checkdns.sh example.com
Le script étiquette correctement une requête directe dig @1.1.1.1 comme du DNS en clair sur le port 53. Lorsque kdig est disponible, il effectue également un test TLS séparé.
Examinez configs/unbound.conf, adaptez les chemins des certificats pour le système local, et validez avant utilisation :
sudo unbound-checkconf configs/unbound.conf
sudo ss -tnp | grep ':853'
dig @127.0.0.1 example.com
Une requête réussie plus une connexion établie vers TCP/853 soutiennent la conclusion plus restreinte selon laquelle Unbound transmet au résolveur amont configuré via TLS. Cela ne prouve pas qu'un problème ARP ou de routage sans rapport a été éliminé.
Utilisez les outils de capture de paquets et de test réseau uniquement sur des systèmes et réseaux que vous possédez ou que vous êtes autorisé à tester. Examinez les captures pour détecter les adresses privées, les noms d'hôtes, les jetons, les identifiants et les informations personnelles avant de les publier.
| Chemin | Objectif |
|---|
evidence/incident_triage_snippet.pcap | Petit échantillon de capture de paquets utilisé pour l'inspection DNS/ARP |
evidence/wireshark_anomoly.png | Nom de fichier de capture d'écran hérité conservé pour l'historique du dépôt ; anomaly est l'orthographe correcte |
reports/ANALYSIS.md | Examen fondé sur les preuves et limites |
scripts/checkdns.sh | Compare la sortie du résolveur et étiquette clairement le transport |
configs/unbound.conf | Exemple de configuration de transmission Unbound utilisant DNS-over-TLS |
logs/remediation_validation.txt | Exemple de sortie de validation avec des conclusions corrigées |
CVE_RESEARCH.md | Explique pourquoi les preuves disponibles ne soutiennent pas une attribution à une CVE |