انتقل إلى المحتوى الرئيسي

المختبر 5.2: تعداد DNS المتقدم

الأهداف التعليمية​

في نهاية هذا المختبر، ستكون قادرًا على:

  • فهم دور DNS في أمان الشبكة
  • تنفيذ استعلامات DNS من أنواع مختلفة (A، MX، NS، TXT، إلخ)
  • اكتشاف النطاقات الفرعية المخفية
  • محاولة نقل مناطق DNS
  • تحديد تسريبات المعلومات عبر DNS
  • استخدام أدوات تعداد DNS الآلية
  • تحليل تكوين DNS لتحديد الثغرات الأمنية
  • تطبيق تدابير تأمين DNS

المدة المقدرة​

35 دقيقة

المتطلبات المسبقة​

  • جهاز افتراضي Windows و/أو Kali Linux
  • اتصال بالإنترنت (لهذا المختبر، سنستخدم نطاقات اختبار قانونية)
  • فهم نظام DNS (دورة نظرية)
  • إكمال المختبر 5.1 (Nmap)

السياق المهني​

تعداد DNS هو خطوة حاسمة في الاستطلاع السلبي. يسمح بـ:

  • اكتشاف بنية المنظمة
  • تحديد الخوادم والخدمات غير المكشوفة عمدًا
  • العثور على نطاقات فرعية للتطوير/الاختبار
  • جمع عناوين البريد الإلكتروني للتصيد المستهدف
  • رسم خريطة للهندسة المعمارية للشبكة
  • تحديد التكوينات غير الصحيحة

يستخدم من قبل:

  • مختبري الاختراق أثناء الاستطلاع
  • صائدي الثغرات للعثور على الأصول
  • المسؤولين لمراجعة بنيتهم التحتية
  • المهاجمين لتحديد الأهداف

تحذير أخلاقي وقانوني​

يمكن اعتبار التعداد المفرط أو المستهدف لـ DNS كاستطلاع ضار.

مسموح به:

  • على نطاقاتك الخاصة
  • على نطاقات اختبار عامة (example.com، testphp.vulnweb.com)
  • في إطار مكافآت الثغرات مع الإذن
  • لمراجعة الأمان بعقد

ممنوع:

  • التعداد الجماعي للنطاقات بدون إذن
  • مسح البنى التحتية الحكومية أو العسكرية
  • الاستخدام لاستهداف الهجمات
  • القوة الغاشمة العدوانية التي تسبب رفض الخدمة

ملاحظة: سنستخدم فقط نطاقات اختبار قانونية في هذا المختبر.


الجزء 1: استعلامات DNS الأساسية​

الخطوة 1.1: أمر nslookup​

استعلام DNS بسيط:

nslookup example.com

النتيجة:

Server:  dns.google
Address: 8.8.8.8

Non-authoritative answer:
Name: example.com
Address: 93.184.216.34

المعلومات التي تم الحصول عليها:

  • خادم DNS المستخدم
  • عنوان IP للنطاق

استعلام من نوع محدد:

nslookup -type=MX example.com

الأنواع الشائعة:

  • A - عنوان IPv4
  • AAAA - عنوان IPv6
  • MX - خوادم البريد
  • NS - خوادم الأسماء
  • TXT - سجلات النص (SPF، DKIM، إلخ)
  • CNAME - الاسم القانوني (الاسم المستعار)
  • SOA - بداية السلطة

الخطوة 1.2: أمر dig (Linux)​

أكثر قوة من nslookup:

dig example.com

استعلام من نوع محدد:

dig example.com MX
dig example.com NS
dig example.com TXT
dig example.com ANY

الخيار ANY: جميع أنواع السجلات (أحيانًا محدود بواسطة خوادم DNS)

خادم DNS محدد:

dig @8.8.8.8 example.com
dig @1.1.1.1 example.com

أسئلة:

  1. ما هي خوادم البريد (MX) لـ example.com؟
  2. ما هي خوادم الأسماء (NS)؟

الخطوة 1.3: سجلات TXT وتسريبات المعلومات​

تحتوي سجلات TXT غالبًا على معلومات حساسة:

dig example.com TXT

المعلومات التي تم العثور عليها عادةً:

example.com. 3600 IN TXT "v=spf1 include:_spf.google.com ~all"
example.com. 3600 IN TXT "google-site-verification=xxxxxx"

يمكن أن تكشف:

  • الخدمات المستخدمة (Google Workspace، Microsoft 365)
  • تكوينات الأمان (SPF، DKIM، DMARC)
  • التحقق من النطاق
  • أحيانًا: معلومات داخلية غير مقصودة

أسئلة: 3. ما هي الخدمات التي تستخدمها المنظمة (بناءً على سجلات TXT)؟ 4. هل هناك معلومات حساسة في سجلات TXT؟


الجزء 2: نقل منطقة DNS​

الخطوة 2.1: فهم نقل المناطق​

نقل المنطقة (AXFR):

  • آلية شرعية لتكرار DNS بين الخوادم
  • يجب أن تكون مقيدة بالخوادم الثانوية المصرح بها
  • إذا تم تكوينها بشكل سيء: يسمح بتفريغ كامل لمنطقة DNS!

نتيجة نقل ناجح:

  • قائمة كاملة بجميع النطاقات الفرعية
  • جميع عناوين IP
  • جميع تكوينات DNS

إنه مثل الحصول على الدليل الكامل للمنظمة!

الخطوة 2.2: محاولة نقل منطقة​

مع dig:

dig axfr @ns1.example.com example.com

النتيجة إذا كانت ضعيفة:

example.com.        3600  IN  SOA   ns1.example.com. admin.example.com. ...
example.com. 3600 IN NS ns1.example.com.
example.com. 3600 IN NS ns2.example.com.
www.example.com. 3600 IN A 93.184.216.34
mail.example.com. 3600 IN A 93.184.216.35
ftp.example.com. 3600 IN A 93.184.216.36
admin.example.com. 3600 IN A 192.168.1.50
dev.example.com. 3600 IN A 192.168.1.100
test.example.com. 3600 IN A 10.0.0.50
...

جائزة كبرى! جميع النطاقات الفرعية مكشوفة، بما في ذلك الداخلية!

النتيجة إذا كانت محمية:

; Transfer failed.

مع nslookup (Windows):

nslookup
server ns1.example.com
ls -d example.com

الخطوة 2.3: تحديد خوادم الأسماء​

قبل محاولة النقل، حدد NS:

dig example.com NS

النتيجة:

example.com.  3600  IN  NS  ns1.example.com.
example.com. 3600 IN NS ns2.example.com.

محاولة النقل على كل منها:

dig axfr @ns1.example.com example.com
dig axfr @ns2.example.com example.com

أحيانًا يكون خادم واحد ضعيف التكوين ولكن ليس الآخر!

أسئلة: 5. هل نجح نقل المنطقة؟ 6. كم عدد النطاقات الفرعية التي اكتشفتها؟


الجزء 3: اكتشاف النطاقات الفرعية​

الخطوة 3.1: القوة الغاشمة للنطاقات الفرعية​

قائمة كلمات للنطاقات الفرعية الشائعة:

أنشئ subdomains.txt:

www
mail
ftp
admin
webmail
portal
vpn
remote
dev
test
staging
api

سكريبت bash بسيط:

#!/bin/bash

DOMAIN=$1
WORDLIST="subdomains.txt"

while read subdomain; do
result=$(host "$subdomain.$DOMAIN" 2>/dev/null)
if [[ $result != *"not found"* ]]; then
echo "[+] Found: $subdomain.$DOMAIN"
echo "$result"
fi
done < $WORDLIST

الاستخدام:

chmod +x subdomain_enum.sh
./subdomain_enum.sh example.com

الخطوة 3.2: أدوات آلية​

dnsenum (مثبت مسبقًا على Kali):

dnsenum example.com

الميزات:

  • محاولة نقل المنطقة
  • القوة الغاشمة للنطاقات الفرعية
  • الحل العكسي (سجلات PTR)
  • جلب Google للنطاقات الفرعية

نتيجة مثال:

dnsenum VERSION:1.2.6

----- example.com -----

Host's addresses:
__________________

example.com. 93.184.216.34

Name Servers:
______________

ns1.example.com. 199.43.135.53
ns2.example.com. 199.43.133.53

Brute forcing with subdomains.txt:
___________________________________

www.example.com. 93.184.216.34
mail.example.com. 93.184.216.35
ftp.example.com. 93.184.216.36

subfinder (أداة حديثة):

# التثبيت
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

# الاستخدام
subfinder -d example.com

يستخدم مصادر متعددة:

  • APIs البحث
  • شهادات SSL (crt.sh)
  • أرشيفات الويب
  • محركات البحث

الخطوة 3.3: شهادات SSL للنطاقات الفرعية​

شهادات SSL تكشف غالبًا عن النطاقات الفرعية!

بحث يدوي على crt.sh:

curl -s "https://crt.sh/?q=%.example.com&output=json" | jq -r '.[].name_value' | sort -u

النتيجة:

*.example.com
www.example.com
mail.example.com
api.example.com
staging.example.com

النطاقات الفرعية المكتشفة عبر شهادات SSL!

أسئلة: 7. كم عدد النطاقات الفرعية التي وجدتها باستخدام dnsenum؟ 8. هل يبدو أن بعض النطاقات الفرعية للتطوير/الاختبار؟


الجزء 4: التعداد العكسي (Reverse DNS)​

الخطوة 4.1: الحل العكسي (سجلات PTR)​

من عنوان IP، العثور على اسم النطاق:

nslookup 93.184.216.34

أو

dig -x 93.184.216.34

النتيجة:

34.216.184.93.in-addr.arpa name = example.com.

الخطوة 4.2: مسح نطاق IP لسجلات PTR​

سكريبت لمسح نطاق:

#!/bin/bash

NETWORK="93.184.216"

for i in {1..254}; do
IP="$NETWORK.$i"
PTR=$(dig -x $IP +short 2>/dev/null)
if [ ! -z "$PTR" ]; then
echo "$IP -> $PTR"
fi
done

النتيجة: قائمة بجميع النطاقات المستضافة على هذا النطاق IP!

مفيد لـ:

  • تحديد جميع المواقع لنفس المنظمة
  • اكتشاف النطاقات غير المعلنة
  • رسم خريطة للبنية التحتية

أسئلة: 9. كم عدد النطاقات المستضافة على نفس النطاق IP؟ 10. لماذا الحل العكسي مفيد في الاستطلاع؟


الجزء 5: تحليل تكوين DNS​

الخطوة 5.1: تحديد خوادم DNS المصرح بها​

dig example.com NS +trace

النتيجة تظهر التسلسل الهرمي الكامل:

.           خوادم الجذر
com. خوادم TLD
example.com. خوادم مصرح بها

رؤية التفويض الكامل من الجذر!

الخطوة 5.2: التحقق من SPF/DMARC​

SPF (إطار سياسة المرسل):

dig example.com TXT | grep spf

تحليل:

"v=spf1 include:_spf.google.com ~all"
  • ~all = SoftFail (يقبل ولكن يضع علامة مشبوهة)
  • -all = HardFail (يرفض)
  • +all = يقبل كل شيء (خطر!)

DMARC:

dig _dmarc.example.com TXT

إذا تم تكوينه بشكل سيء: التصيد يصبح أسهل!

الخطوة 5.3: تسميم ذاكرة التخزين المؤقت لـ DNS (عرض)​

على جهازك الافتراضي المحلي (ليس على الإنترنت!):

ملف hosts المحلي:

notepad C:\Windows\System32\drivers\etc\hosts

أضف:

192.168.100.50  facebook.com
192.168.100.50 google.com

احفظ واختبر:

ping facebook.com

النتيجة: Ping إلى 192.168.100.50 بدلاً من IP الحقيقي!

التطبيق: التصيد المحلي، إعادة توجيه حركة المرور

أسئلة: 11. هل يتجاوز ملف hosts الـ DNS؟ 12. كيف يمكن للمهاجم استغلال ذلك؟


الجزء 6: أدوات التعداد المتقدمة​

الخطوة 6.1: fierce (ماسح DNS)​

fierce --domain example.com

الميزات:

  • نقل المنطقة
  • القوة الغاشمة للنطاقات الفرعية
  • مسح النطاقات IP القريبة
  • الحل العكسي

الخطوة 6.2: dnsrecon​

dnsrecon -d example.com -t std

خيارات المسح (-t):

  • std - قياسي
  • axfr - نقل المنطقة
  • bing - بحث Bing
  • zonewalk - المشي في منطقة DNSSEC

مسح كامل:

dnsrecon -d example.com -t std,axfr,bing,zonewalk -n ns1.example.com

الخطوة 6.3: amass (الأكثر شمولاً)​

amass enum -d example.com

المصادر المستخدمة:

  • APIs متعددة
  • جلب الويب
  • شهادات SSL
  • الأرشيفات
  • القوة الغاشمة لـ DNS

مخرجات مفصلة:

amass enum -d example.com -o subdomains.txt -v

نتيجة نموذجية: اكتشاف 50-500+ نطاق فرعي!

أسئلة: 13. أي أداة وجدت أكبر عدد من النطاقات الفرعية؟ 14. هل يبدو أن بعض النطاقات الفرعية مكشوفة بشكل غير مقصود؟


الجزء 7: استغلال تكوينات DNS​

الخطوة 7.1: التطفل على ذاكرة التخزين المؤقت لـ DNS​

التحقق مما إذا كان خادم DNS قد حل بعض النطاقات:

nmap --script dns-cache-snoop --script-args 'dns-cache-snoop.mode=timed,dns-cache-snoop.domains={google.com,facebook.com,internalsite.local}' <DNS_SERVER>

إذا كان الخادم قد حل هذه النطاقات بالفعل: في ذاكرة التخزين المؤقت!

يكشف: ما هي المواقع التي تزورها المنظمة

الخطوة 7.2: المشي في منطقة DNS (DNSSEC)​

إذا تم تكوين DNSSEC بشكل سيء:

dnsrecon -d example.com -t zonewalk

يسمح بتعداد جميع السجلات حتى بدون نقل المنطقة!

الخطوة 7.3: الاستيلاء على النطاق الفرعي​

تحديد النطاقات الفرعية التي تشير إلى خدمات غير موجودة:

dig admin.example.com

إذا كان CNAME يشير إلى:

admin.example.com CNAME old-service.azurewebsites.net

وإذا كان old-service.azurewebsites.net لم يعد موجودًا:

يمكن للمهاجم:

  1. إنشاء old-service.azurewebsites.net
  2. التحكم في admin.example.com
  3. التصيد، سرقة الجلسات، إلخ.

الكشف الآلي:

subzy run --target subdomains.txt

أسئلة: 15. هل وجدت نطاقات فرعية مع CNAME إلى خدمات خارجية؟ 16. كيف تتحقق مما إذا كان النطاق الفرعي عرضة للاستيلاء؟


التسليمات​

لتقديم:

  1. تقرير تعداد DNS (Word/PDF، 3-4 صفحات):

    • إجابات على 16 سؤال
    • منهجية التعداد المستخدمة
    • قائمة كاملة بالنطاقات الفرعية المكتشفة
    • تحليل تكوين DNS
    • الثغرات الأمنية المحددة
  2. لقطات شاشة (الحد الأدنى 6):

    • استعلامات nslookup/dig من أنواع مختلفة
    • محاولة نقل المنطقة
    • نتائج dnsenum
    • مخرجات subfinder أو amass
    • تحليل سجلات TXT
    • تحديد التكوينات الخاطئة
  3. ملفات النتائج:

    • قائمة النطاقات الفرعية (subdomains.txt)
    • نتائج dnsenum الكاملة
    • تصدير amass
  4. تحليل الأمان (2 صفحات):

    • المخاطر المحددة
    • التأثير المحتمل
    • توصيات لتأمين DNS

معايير التقييم​

المعيارالنقاط
إتقان استعلامات DNS (nslookup، dig)20%
استخدام أدوات التعداد25%
اكتشاف النطاقات الفرعية20%
تحليل التكوين والثغرات الأمنية20%
جودة التقرير والتوصيات15%

أوامر مرجعية سريعة​

Windows (nslookup)​

nslookup example.com
nslookup -type=MX example.com
nslookup -type=NS example.com
nslookup -type=TXT example.com

Linux (dig)​

dig example.com
dig example.com MX
dig example.com ANY
dig @8.8.8.8 example.com
dig axfr @ns1.example.com example.com

التعداد​

dnsenum example.com
subfinder -d example.com
amass enum -d example.com
fierce --domain example.com
dnsrecon -d example.com -t std

الخاتمة​

هذا المختبر علمك:

  • استعلامات DNS من جميع الأنواع
  • نقل المناطق واستغلالها
  • اكتشاف النطاقات الفرعية بطرق متعددة
  • أدوات التعداد الآلية
  • تحليل تكوين DNS
  • تحديد ثغرات DNS

الدروس الرئيسية:

  1. DNS يكشف الكثير من المعلومات عن البنية التحتية
  2. نقل المناطق الضعيف التكوين = إفشاء كامل
  3. النطاقات الفرعية للتطوير/الاختبار غالبًا ما تكون أقل أمانًا
  4. سجلات TXT قد تحتوي على معلومات حساسة
  5. التعداد السلبي صعب الكشف

الخطوة التالية: المختبر 5.3 انتحال ARP والرجل في المنتصف!


مختبر مطور في إطار دورة أنظمة التشغيل - الوحدة 5