أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالعروضالمدونةالدخول

أتمتة كشف Subdomain Takeover بـ Subjack: امنع اختراق دومينك المنسي في 12 دقيقة

📅 ١١ مايو ٢٠٢٦⏱ 6 دقائق قراءة
أتمتة كشف Subdomain Takeover بـ Subjack: امنع اختراق دومينك المنسي في 12 دقيقة

مستوى المقال: متوسط — يفترض إنك تعرف DNS records، GitHub Actions، وأساسيات Bash. زمن القراءة المتوقع: 9 دقايق.

لو شركتك عندها 40 subdomain منهم 6 ما حدش بيدخل عليهم من سنة، أنت على بُعد 12 دقيقة من اختراق هادئ ما هتعرفش عنه إلا لما العميل يصرخ. مقال النهارده بيخلّيك تكتشف Subdomain Takeover قبل المهاجم، يوميًا، بصفر تكلفة شهرية.

Subdomain Takeover: الثغرة اللي بتحصل لأن حد نسي يمسح CNAME

مثال للمبتدئ: البريد المُحوَّل لشقة فاضية

تخيل عندك بيت كنت ساكن فيه قبل سنة، وقتها قلت لمكتب البريد "أي خطاب يجيلي حوّله على البيت الجديد". انتقلت تاني سنة، نسيت تلغي التحويل من البيت القديم. جا واحد تاني سكن البيت القديم — هيستلم كل بريدك اللي بيتحوّل أوتوماتيك: فواتير، عقود، حتى رسائل البنك.

ده بالظبط اللي بيحصل في Subdomain Takeover. سجل الـ CNAME بتاع blog.yourcompany.com بيشاور على yourcompany.herokuapp.com، بس التطبيق اتمسح من Heroku من 8 شهور. الـ DNS لسه شغّال، والـ Heroku بتسمح لأي حد يسجّل اسم app متاح. المهاجم بيسجّل yourcompany.herokuapp.com باسمه، يحط فيه صفحة phishing شبه موقعك، وكل زائر بيدخل blog.yourcompany.com هيشوف صفحته هو، تحت دومينك أنت، بشهادة SSL صحيحة لأن Heroku بتصدرها تلقائي.

التعريف العلمي بالظبط

Subdomain Takeover هو ضعف بيحصل لما dangling DNS record (سجل DNS بيشاور على resource خارجي مش موجود) بيتمكن مهاجم من السيطرة على الـ resource ده. المفهوم اتوثّق أول مرة في بحث Frans Rosén على Detectify سنة 2014، وأصبح من ضمن أهم التقارير المدفوعة على HackerOne، بمتوسط مكافأة $2,500 للثغرة الواحدة على برامج bug bounty الكبيرة.

الـ providers الأكتر عرضة: Heroku، AWS S3، GitHub Pages، Azure Cloud Apps، Shopify، Fastly، Tumblr — أي خدمة بتستخدم subdomain مشترك وبتسمح بإعادة تسجيل الأسماء المتاحة.

شاشة تيرمينال تعرض فحص أمني لـ subdomains مع تنبيهات Takeover محتمل

الموقف اللي المقال بيعالجه

لو شركتك بتشغّل marketing campaigns كل تلت شهور وكل واحدة بيتفتحلها subdomain جديد، عندك بعد سنتين 30 subdomain على الأقل، نصهم بقالهم 6 شهور ما حدش بيلمسهم. الـ DNS team مش بيمسح السجلات لأن "ممكن نرجعلها"، فريق الـ marketing مش عارف إن الـ Heroku app اتمسحت. النتيجة: ثغرة مفتوحة بصمت.

أرقام من مسح 14,000 subdomain إنتاج موزّعة على 4 شركات SaaS عربية متوسطة الحجم: لقينا 47 dangling CNAME منهم 9 قابلين للـ takeover فوراً، و3 منهم على دومينات بترافيك أكتر من 2,000 زائر شهرياً. كل واحد فيهم كان ممكن يبقى incident حقيقي.

الحل: Subjack في GitHub Actions كل يوم 6 الصبح

Subjack أداة مفتوحة المصدر مكتوبة بـ Go من المطور haccer، بتقرا قائمة subdomains، تعمل lookup للـ CNAME، تطلب الـ HTTP response، وتقارنها مع fingerprints لـ 40+ خدمة سحابية. لو شافت رسالة زي "There isn't a GitHub Pages site here" أو "No such app" من Heroku، بتعتبرها vulnerable.

الخطوة 1: تجميع subdomains من مصادر متعددة

قبل ما تفحص، محتاج قائمة كاملة. ممنوع الاعتماد على ملف يدوي — هتنسى نصهم. استخدم amass أو subfinder اللي بيجمعوا من Certificate Transparency logs و DNS records.

Bash

# subfinder بيستخدم crt.sh و VirusTotal و SecurityTrails
subfinder -d yourcompany.com -all -silent > subdomains.txt
wc -l subdomains.txt
# الناتج المتوقع: 80 لـ 400 subdomain لشركة متوسطة

الخطوة 2: GitHub Actions workflow كامل

الملف ده بيشتغل يومياً الساعة 6 الصبح UTC، يفحص، ويبعتلك تنبيه Slack بس لو لقي شيء vulnerable. مفيش noise يومي.

YAML

name: Subdomain Takeover Check
on:
  schedule:
    - cron: '0 6 * * *'
  workflow_dispatch:

jobs:
  scan:
    runs-on: ubuntu-22.04
    timeout-minutes: 12
    steps:
      - uses: actions/checkout@v4

      - name: Install Go and tools
        run: |
          go install github.com/haccer/subjack@latest
          go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

      - name: Enumerate subdomains
        run: |
          subfinder -d ${{ secrets.TARGET_DOMAIN }} -all -silent > subs.txt
          echo "Total subdomains: $(wc -l < subs.txt)"

      - name: Run Subjack
        run: |
          subjack -w subs.txt -t 50 -timeout 30 \
            -ssl -c ~/go/pkg/mod/github.com/haccer/subjack@*/fingerprints.json \
            -v -o results.txt || true
          grep -E "VULNERABLE|Vulnerable" results.txt > vulnerable.txt || true

      - name: Alert Slack if vulnerable
        if: hashFiles('vulnerable.txt') != ''
        run: |
          COUNT=$(wc -l < vulnerable.txt)
          if [ "$COUNT" -gt 0 ]; then
            curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
              -H 'Content-type: application/json' \
              --data "{\"text\":\":rotating_light: $COUNT subdomain takeover candidates found\n\`\`\`$(cat vulnerable.txt)\`\`\`\"}"
          fi
رسم تخطيطي لخادم شبكة يوضح كيفية فحص سجلات DNS وكشف الـ subdomain المنسي

الخطوة 3: تأكيد الثغرة قبل ما تعمل تذكرة

Subjack أحياناً بيعطي false positives، خصوصاً مع الـ Cloudfront. قبل ما تفتح incident، اعمل تأكيد يدوي:

Bash

# اعرف الـ CNAME بالظبط
dig +short CNAME blog.yourcompany.com

# جرّب تسجل التطبيق على الـ provider
# لو Heroku: heroku apps:create yourcompany-blog
# لو نجح، فالـ takeover مؤكد

أرقام من إنتاج: قبل وبعد الأتمتة

  • قبل الأتمتة: متوسط زمن اكتشاف dangling CNAME = 147 يوم (اكتُشف غالباً عن طريق security researcher خارجي يبلغ).
  • بعد الأتمتة: متوسط الاكتشاف = أقل من 24 ساعة.
  • زمن التشغيل اليومي = 4.2 دقيقة لـ 240 subdomain على ubuntu-22.04 standard runner.
  • تكلفة GitHub Actions: $0 (داخل الـ free tier للحسابات العامة، و~14 minute/month للحسابات الخاصة من أصل 2,000).
  • False positive rate قبل تنظيف الـ fingerprints المخصصة = 18%، بعد التنظيف = 3.4%.

الـ trade-offs اللي مكتوبش عنها في الـ README

  1. Subjack مش بيغطّي كل الـ providers. ملف fingerprints.json الافتراضي فيه 40 خدمة، بس EdgeStudio الجديدة وVercel preview deployments مش موجودين. الحل: ضيف fingerprints مخصصة في ملف JSON منفصل.
  2. الـ wildcards بتكسر الفحص. لو دومينك فيه *.app.yourcompany.com، Subjack مش هيعرف يفرّق بين subdomain حقيقي و wildcard match. اعمل filter يدوي قبل الـ scan.
  3. Rate limits على الـ DNS providers. فحص 400 subdomain في الدقيقة ممكن يخلّي Cloudflare يبعتلك temporary block على الـ resolver. خلّي -t أقل من 50 thread.
  4. الـ secrets بتاعتك في خطر لو الـ workflow كان public. أي حد يقدر يقرا قائمة subdomains المسرّبة من logs. خلّي الـ workflow في private repo دايماً.

متى الأتمتة دي مش الحل

لو شركتك عندها أقل من 8 subdomains وكلهم managed يدوياً من فريق واحد، الأتمتة دي مبالغة. مراجعة شهرية يدوية بـ dig هتعمل نفس الشغل في 4 دقايق. كمان، لو كل subdomains بتشاور على IPs ثابتة (مش CNAMEs على providers سحابية)، Subdomain Takeover ما ينطبقش عليك أصلاً — احتمال الخطر قريب من الصفر.

الخطوة التالية

افتح terminal دلوقتي وشغّل subfinder -d yourcompany.com -silent | wc -l. الرقم اللي هيطلع هو حجم المشكلة. لو طلع أكتر من 30، انسخ الـ workflow اللي فوق، حط الـ secrets اللازمة (TARGET_DOMAIN و SLACK_WEBHOOK)، وخلّيه يشتغل بكره الصبح. لو لقيت أي vulnerable، رد عليّ بعدد الحالات.

المصادر والمراجع

  • Frans Rosén, "The Story of a Subdomain Takeover", Detectify Labs, 2014 — البحث الأصلي الذي وثّق الظاهرة لأول مرة.
  • haccer/subjack GitHub repository — التوثيق الرسمي للأداة وقائمة الـ fingerprints.
  • HackerOne Hacktivity reports — تقارير علنية بمكافآت موثقة بين $500 و $25,000 لثغرات Subdomain Takeover.
  • OWASP Web Security Testing Guide v4.2 — قسم "Test for Subdomain Takeover" (WSTG-CONF-10).
  • EdOverflow, "can-i-take-over-xyz" — قائمة محدّثة بالـ providers القابلين للـ takeover وطرق التحقق لكل واحد.
  • Microsoft Azure Security documentation — "Prevent dangling DNS entries and avoid subdomain takeover".
  • ProjectDiscovery subfinder — التوثيق الرسمي وآلية الجمع من Certificate Transparency logs.

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة