اكتشاف الـ Subdomains

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

01 / ملخص الدرس

اكتشاف الـ Subdomains

ليه الـ subdomains أهم حاجة في الـ Recon، والطرق السلبية والنشطة لاكتشافها، وأدوات زي subfinder و amass و Zone Transfer، وتعمل Brute Force بسيط بـ Python.

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

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

الموقع الرئيسي للشركة غالباً محمي كويس. بس الشركة نفسها ممكن يكون عندها عشرات الـ subdomains: dev، و test، و admin… وده المكان اللي بتلاقي فيه الثَغَرات.

ليه الـ subdomains مهمة؟ نسخ dev و test غالباً حمايتها أضعف. لوحات تحكم زي admin و jenkins ساعات بتبقى مكشوفة. و servers قديمة محدش فاكرها، ولسه شغّالة.

فيه طرق سلبية: مواقع تجمّع بيانات DNS، زي DNSDumpster. و Certificate Transparency، وده الدرس الجاي. وأدوات بتجمّع من مصادر كتير مرة واحدة، زي subfinder و amass.

وفيه طرق نشطة: Brute Force، يعني تجرّب أسماء من wordlist، وتشوف أنهي اسم ليه IP. و Zone Transfer، ودي لو الـ DNS server متظبط غلط، بيديك كل الأسماء مرة واحدة. الأداة الأشهر للـ brute force هي gobuster في الـ dns mode. نعمل brute force بسيط. عندنا DNS وهمي للتجربة، و wordlist فيها تمانية أسماء. لكل كلمة نركّب الاسم الكامل، ونسأل الـ DNS: ليه IP؟ لو أيوه، نحفظه. نشغّل… لقينا أربع أسماء موجودة من تمانية، ومنهم dev و vpn. بس فيه حاجة فاتتنا: jenkins، علشان مش في الـ wordlist أصلاً.

main.py
# A fake DNS for the lab: name -> IP (the real one would be socket.gethostbyname)
DNS = {
    "www.example-corp.com": "203.0.113.10",
    "mail.example-corp.com": "203.0.113.11",
    "dev.example-corp.com": "203.0.113.40",
    "vpn.example-corp.com": "203.0.113.25",
    "jenkins.example-corp.com": "203.0.113.41",
}

def resolve(name):
    return DNS.get(name)

domain = "example-corp.com"
wordlist = ["www", "mail", "ftp", "dev", "test", "admin", "vpn", "api"]

found = {}
for word in wordlist:
    name = f"{word}.{domain}"
    ip = resolve(name)
    if ip:
        found[name] = ip

for name, ip in found.items():
    print(f"[+] {name:26} {ip}")
print(f"{len(found)} of {len(wordlist)} names exist")

المخرجات

[+] www.example-corp.com       203.0.113.10
[+] mail.example-corp.com      203.0.113.11
[+] dev.example-corp.com       203.0.113.40
[+] vpn.example-corp.com       203.0.113.25
4 of 8 names exist

ودي الفكرة المهمة: الـ brute force بيلاقي اللي في الـ wordlist بس. دورك: ضيف jenkins و staging للـ wordlist، وشغّل تاني.

تمرين

ضيف "jenkins" و "staging" لآخر الـ wordlist.

الحل: نشغّل… ظهر jenkins، وده Jenkins server ممكن يبقى مكشوف. علشان كده اختيار الـ wordlist مهم جداً.

main.py
# A fake DNS for the lab: name -> IP (the real one would be socket.gethostbyname)
DNS = {
    "www.example-corp.com": "203.0.113.10",
    "mail.example-corp.com": "203.0.113.11",
    "dev.example-corp.com": "203.0.113.40",
    "vpn.example-corp.com": "203.0.113.25",
    "jenkins.example-corp.com": "203.0.113.41",
}

def resolve(name):
    return DNS.get(name)

domain = "example-corp.com"
wordlist = ["www", "mail", "ftp", "dev", "test", "admin", "vpn", "api", "jenkins", "staging"]

found = {}
for word in wordlist:
    name = f"{word}.{domain}"
    ip = resolve(name)
    if ip:
        found[name] = ip

for name, ip in found.items():
    print(f"[+] {name:26} {ip}")
print(f"{len(found)} of {len(wordlist)} names exist")

المخرجات

[+] www.example-corp.com       203.0.113.10
[+] mail.example-corp.com      203.0.113.11
[+] dev.example-corp.com       203.0.113.40
[+] vpn.example-corp.com       203.0.113.25
[+] jenkins.example-corp.com   203.0.113.41
5 of 10 names exist

الدرس الجاي: Certificate Transparency، وإزاي شهادات الـ SSL بتفضح الـ 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