سجلات DNS: كنز المعلومات

جارٍ التحميل…

01 / ملخص الدرس

سجلات DNS: كنز المعلومات

أنواع سجلات DNS المهمة للـ Pentester (A و MX و NS و TXT و CNAME)، وإزاي تستعلم عنها بـ dig و nslookup، وتنظّم النتايج بـ Python.

02 / شرح الدرس مكتوبًا

نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.

في الكورس اللي فات عرفنا إن الـ DNS بيحوّل اسم الـ domain لـ IP. النهارده هنشوف إن الـ DNS فيه معلومات أكتر من كده بكتير، وكلها عامة.

أهم أنواع السجلات: A، وده الـ IP بتاع الاسم. MX، وده الـ mail server. NS، وده الـ Name Server. TXT، نص حر، وساعات بيكشف الخدمات اللي الشركة بتستخدمها. و CNAME، يعني الاسم ده هو هو اسم تاني.

الأدوات: dig، وتكتب بعده الـ domain ونوع السجل. أو nslookup، وده موجود كمان على Windows. وبـ dig تقدر تحدد DNS server معيّن بعلامة at.

إيه اللي يلفت نظرك؟ subdomain اسمه vpn أو dev أو admin، ده هدف مهم. سجل TXT فيه SPF بيقولّك إنهم بيستخدموا Google للإيميل. و CNAME لخدمة خارجية، زي Shopify، معناه إن جزء من الـ Attack Surface عند طرف تالت. هنا عندنا نتيجة استعلامات DNS محفوظة في list. نجمّعها حسب نوع السجل في dictionary، ونطبع كل نوع لوحده. نشغّل… كده بقى قدامك كل الـ A records، والـ mail، والـ NS، والـ TXT، والـ CNAME مترتّبين. ولاحظ الـ vpn، ليه IP مختلف.

main.py
# What "dig example-corp.com ANY" might return (saved, no internet here)
records = [
    ("A", "example-corp.com", "203.0.113.10"),
    ("A", "www.example-corp.com", "203.0.113.10"),
    ("A", "vpn.example-corp.com", "203.0.113.25"),
    ("MX", "example-corp.com", "10 mail.example-corp.com"),
    ("NS", "example-corp.com", "ns1.example-corp.com"),
    ("TXT", "example-corp.com", "v=spf1 include:_spf.google.com ~all"),
    ("CNAME", "shop.example-corp.com", "example-corp.myshopify.com"),
]

by_type = {}
for rtype, name, value in records:
    by_type.setdefault(rtype, []).append((name, value))

for rtype, items in by_type.items():
    print(rtype)
    for name, value in items:
        print(f"   {name:24} -> {value}")

المخرجات

A
   example-corp.com         -> 203.0.113.10
   www.example-corp.com     -> 203.0.113.10
   vpn.example-corp.com     -> 203.0.113.25
MX
   example-corp.com         -> 10 mail.example-corp.com
NS
   example-corp.com         -> ns1.example-corp.com
TXT
   example-corp.com         -> v=spf1 include:_spf.google.com ~all
CNAME
   shop.example-corp.com    -> example-corp.myshopify.com

دورك: طلّع كل الـ IPs من سجلات A بس، من غير تكرار، واطبعهم مترتّبين. دول اللي هنعمل عليهم Scan بعدين.

تمرين

اعمل set من قيم سجلات A، واطبعها بـ sorted.

الحل: نشغّل… اتنين IPs بس، رغم إن عندنا تلات أسماء.

main.py
# What "dig example-corp.com ANY" might return (saved, no internet here)
records = [
    ("A", "example-corp.com", "203.0.113.10"),
    ("A", "www.example-corp.com", "203.0.113.10"),
    ("A", "vpn.example-corp.com", "203.0.113.25"),
    ("MX", "example-corp.com", "10 mail.example-corp.com"),
    ("NS", "example-corp.com", "ns1.example-corp.com"),
    ("TXT", "example-corp.com", "v=spf1 include:_spf.google.com ~all"),
    ("CNAME", "shop.example-corp.com", "example-corp.myshopify.com"),
]

by_type = {}
for rtype, name, value in records:
    by_type.setdefault(rtype, []).append((name, value))

for rtype, items in by_type.items():
    print(rtype)
    for name, value in items:
        print(f"   {name:24} -> {value}")

ips = sorted({value for rtype, name, value in records if rtype == "A"})
print("unique IPs:", ips)

المخرجات

A
   example-corp.com         -> 203.0.113.10
   www.example-corp.com     -> 203.0.113.10
   vpn.example-corp.com     -> 203.0.113.25
MX
   example-corp.com         -> 10 mail.example-corp.com
NS
   example-corp.com         -> ns1.example-corp.com
TXT
   example-corp.com         -> v=spf1 include:_spf.google.com ~all
CNAME
   shop.example-corp.com    -> example-corp.myshopify.com
unique IPs: ['203.0.113.10', '203.0.113.25']

الدرس الجاي: إزاي تلاقي الـ subdomains اللي الشركة مش عايزاك تعرفها. يلا بينا.

03 / دروس المسار (22)
  1. 01يعني إيه جمع معلومات (Recon)؟
  2. 02سلبي ولا نشط؟ والنطاق القانوني
  3. 03WHOIS: مين صاحب الـ Domain؟
  4. 04سجلات DNS: كنز المعلوماتانت هنا
  5. 05اكتشاف الـ Subdomains
  6. 06Certificate Transparency: الشهادات بتتكلم
  7. 07Google Dorking
  8. 08OSINT: الموظفين والإيميلات
  9. 09الـ Metadata: أسرار جُوّه الملفات
  10. 10اكتشاف الأجهزة الشغّالة (Host Discovery)
  11. 11الـ Port Scanning بيشتغل إزاي؟
  12. 12Nmap: البداية
  13. 13أنواع الـ Scan والسرعة في Nmap
  14. 14كشف الخدمات والإصدارات ونظام التشغيل
  15. 15NSE Scripts وحفظ النتايج
  16. 16تعداد الويب: الـ Headers والتكنولوجيا
  17. 17الـ Directory Brute Force
  18. 18تعداد SMB
  19. 19تعداد خدمات تانية: FTP و DNS و SNMP وغيرهم
  20. 20تنظيم نتايج الـ Recon
  21. 21أتمتة الـ Recon بـ Python
  22. 22مراجعة شاملة وخطة Recon