Certificate Transparency: الشهادات بتتكلم

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

01 / ملخص الدرس

Certificate Transparency: الشهادات بتتكلم

إزاي سجلات Certificate Transparency العامة بتكشف أسماء subdomains، وإزاي تستخدم crt.sh، وتطلّع الأسماء من نتيجة JSON بـ Python.

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

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

أي موقع بيستخدم HTTPS، لازم يبقى عنده شهادة SSL. والمفاجأة إن كل شهادة بتطلع، بتتسجّل في سجل عام، أي حد يقدر يقراه.

السجل ده اسمه Certificate Transparency. اتعمل علشان يكشف الشهادات المزيّفة. بس كل شهادة فيها أسماء الـ domains اللي بتحميها. يعني الشركة لو عملت شهادة لـ internal hr، الاسم ده بقى عام.

أشهر موقع للبحث فيه هو crt dot sh. تكتب percent dot وبعدها الـ domain، علشان يجيب كل الـ subdomains. وتقدر تطلب النتيجة JSON علشان تشتغل عليها بالـ code.

وده جمع سلبي تماماً: إنت بتسأل crt dot sh، مش الهدف. خلّي بالك من الـ wildcard، زي star dot dev، معناها إن فيه subdomains كتير تحت dev. والشهادات القديمة ممكن تكشف أسماء لسه شغّالة. هنا نتيجة JSON محفوظة من crt dot sh. كل شهادة فيها name value، وساعات فيها أكتر من اسم، مفصولين بسطر جديد. فنقسم، ونحط الأسماء في set علشان نشيل التكرار. نشغّل… لقينا internal hr، وده اسم ما كانش في الـ wordlist بتاعتنا خالص. بس فيه اسم بادئ بـ star dot، وده مش اسم حقيقي تقدر تزوره.

main.py
import json

# Saved answer of https://crt.sh/?q=%25.example-corp.com&output=json (shortened)
data = json.loads("""[
 {"name_value": "example-corp.com\\nwww.example-corp.com", "not_before": "2024-01-10"},
 {"name_value": "mail.example-corp.com", "not_before": "2024-02-01"},
 {"name_value": "*.dev.example-corp.com", "not_before": "2024-03-15"},
 {"name_value": "internal-hr.example-corp.com", "not_before": "2023-06-20"},
 {"name_value": "www.example-corp.com", "not_before": "2024-06-10"}
]""")

names = set()
for cert in data:
    for name in cert["name_value"].split("\n"):
        names.add(name.lower())

for name in sorted(names):
    print(name)
print(len(names), "unique names from", len(data), "certificates")

المخرجات

*.dev.example-corp.com
example-corp.com
internal-hr.example-corp.com
mail.example-corp.com
www.example-corp.com
5 unique names from 5 certificates

دورك: شيل star dot من أول أي اسم قبل ما تضيفه، باستخدام removeprefix.

تمرين

استخدم name.lower().removeprefix("*.") قبل الإضافة.

الحل: نشغّل… بقى عندنا dev dot example corp، ونقدر نعمل عليه brute force تاني لِلّي تحته.

main.py
import json

# Saved answer of https://crt.sh/?q=%25.example-corp.com&output=json (shortened)
data = json.loads("""[
 {"name_value": "example-corp.com\\nwww.example-corp.com", "not_before": "2024-01-10"},
 {"name_value": "mail.example-corp.com", "not_before": "2024-02-01"},
 {"name_value": "*.dev.example-corp.com", "not_before": "2024-03-15"},
 {"name_value": "internal-hr.example-corp.com", "not_before": "2023-06-20"},
 {"name_value": "www.example-corp.com", "not_before": "2024-06-10"}
]""")

names = set()
for cert in data:
    for name in cert["name_value"].split("\n"):
        names.add(name.lower().removeprefix("*."))

for name in sorted(names):
    print(name)
print(len(names), "unique names from", len(data), "certificates")

المخرجات

dev.example-corp.com
example-corp.com
internal-hr.example-corp.com
mail.example-corp.com
www.example-corp.com
5 unique names from 5 certificates

الدرس الجاي: Google Dorking، إزاي تخلّي محرك البحث يلاقيلك ملفات وصفحات ما كانش المفروض تبقى عامة. يلا بينا.

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