
الفحص الجنائي الأولي لتسميم ذاكرة التخزين المؤقت لـ DNS في الأجهزة القديمة. يتضمن تحليل PCAP لحقن سجلات غير مرغوب فيها بحجم 839 بايت، وربط CVE-2025-40778، والمعالجة عبر Unbound المحصن (DoT) على Arch Linux.
تمرين تعليمي لتحليل الحزم وتصلب المحلل (resolver) تم إنجازه على محطة عمل Arch Linux.
النطاق: هذا المستودع هو مشروع تعليمي. الـ capture المرفق مفيد لممارسة فحص DNS وARP، لكنه لا يثبت بذاته هجوم تسميم ذاكرة تخزين مؤقت (cache-poisoning) حقيقي، أو عتاد خبيث، أو استغلال ثغرة معينة (CVE)، أو علاقة سببية بمقياس توجيه NetworkManager.
كانت كتابتي الأولى تعامل عدة ملاحظات كأسباب مؤكدة. كان ذلك مبالغًا فيه. إطار DNS بحجم 839 بايت ليس تلقائيًا مشوّهًا أو خبيثًا، و DNS-over-TLS يحمي حركة مرور DNS إلى المحلل upstream المهيأ—لا يمنع انتحال ARP أو كل هجوم من الطبقة 2/3.
النسخة المنقحة تحتفظ بالأجزاء المفيدة من المختبر مع فصل:
هذا التمييز جزء من العمل الجيد في التعامل مع الحوادث. من الأفضل تضييق نطاق الاستنتاج بدلاً من ادعاء أكثر مما تدعمه الأدلة.
tshark.tsharkdigيجب تسجيل إصدارات الحزم exact عند إعادة تشغيل المختبر. لا يحتوي المستودع الحالي على بيانات كافية عن الإصدارات لنسب حركة المرور إلى ثغرة منتج.
sha256sum evidence/incident_triage_snippet.pcap
capinfos evidence/incident_triage_snippet.pcap
احفظ التجزئة (hash) وبيانات الـ capture مع ملاحظاتك. لا تُسمِّ الـ capture "دليل حادثة كامل"؛ إنها مجرد مقتطف.
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
ابحث عن ادعاءات متكررة أو متضاربة لـ IP-to-MAC. الادعاء المتضارب هو دليل للتحقيق، وليس دليلاً تلقائياً على وجود مهاجم. تحقق مما إذا كانت العناوين قيماً مختبرية اصطناعية، أو ما إذا كان الجهاز قد تغير بشكل شرعي، وما إذا كان التوقيت يدعم الفرضية.
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
عوامل تصفية مفيدة للمتابعة:
dns && frame.len == 839
dns.flags.response == 1
dns.qry.name == "."
arp.duplicate-address-detected || arp.duplicate-address-frame
حجم الحزمة وحده ليس حكماً. يمكن أن تختلف أحجام استجابات DNS بسبب عدد السجلات، وEDNS، وDNSSEC، وسلوك النقل. افحص السجلات المُفككة وقارنها بخط أساس معروف جيد.
chmod +x scripts/checkdns.sh
./scripts/checkdns.sh example.com
يقوم السكريبت بتسمية استعلام dig @1.1.1.1 المباشر بشكل صحيح كـ DNS نصي على المنفذ 53. عندما يكون kdig متاحًا، يقوم أيضًا بإجراء اختبار TLS منفصل.
راجع configs/unbound.conf، وقم بتكييف مسارات الشهادات للنظام المحلي، وتحقق قبل الاستخدام:
sudo unbound-checkconf configs/unbound.conf
sudo ss -tnp | grep ':853'
dig @127.0.0.1 example.com
استعلام ناجح مع اتصال قائم بـ TCP/853 يدعم الاستنتاج الأضيق بأن Unbound يُحيل إلى الـ upstream المهيأ عبر TLS. لا يثبت ذلك أن مشكلة ARP أو توجيه غير ذات صلة قد تم إزالتها.
استخدم أدوات التقاط الحزم واختبار الشبكة فقط على الأنظمة والشبكات التي تملكها أو مخول باختبارها. راجع عمليات الالتقاط بحثاً عن عناوين خاصة، وأسماء مضيفين، ورموز، وبيانات اعتماد، ومعلومات شخصية قبل نشرها.
| المسار | الغرض |
|---|
evidence/incident_triage_snippet.pcap | عينة صغيرة من التقاط الحزم تُستخدم لفحص DNS/ARP |
evidence/wireshark_anomoly.png | اسم ملف لقطة شاشة قديم محفوظ لتاريخ المستودع؛ التهجئة الصحيحة هي anomaly |
reports/ANALYSIS.md | مراجعة مبنية على الأدلة وقيود |
scripts/checkdns.sh | يقارن مخرجات المحلل ويُسمِّي النقل بوضوح |
configs/unbound.conf | مثال لتكوين إعادة توجيه Unbound باستخدام DNS-over-TLS |
logs/remediation_validation.txt | مثال لمخرجات التحقق مع استنتاجات مصححة |
CVE_RESEARCH.md | يشرح لماذا لا تدعم الأدلة المتاحة نسب CVE |