اكتشاف النطاقات الفرعية (Subdomain Enumeration): الدليل الكامل لـ Bug Bounty
4 أكتوبر 2026 · بواسطة Pentevo
Subdomain Enumeration هي الخطوة الأولى في كل عملية Reconnaissance ناجحة. الهدف: اكتشاف أكبر سطح هجوم ممكن. النطاق الفرعي المنسي (admin.example.com، staging.example.com، dev.example.com) كثيرًا ما يحمل أضعف الدفاعات.
لماذا Subdomain Enumeration مهمة جدًا؟
النطاقات الفرعية كثيرًا ما تحمل:
- بيئات التطوير والاختبار — بدون MFA، بدون WAF، ببيانات حقيقية أحيانًا
- خدمات قديمة — APIs مهجورة لكن حية، نسخ قديمة من التطبيق
- خدمات داخلية مكشوفة — Jenkins، Grafana، GitLab، Jira
- نقاط نهاية API — v1، v2، beta، internal
- Subdomain Takeover — نطاقات تشير لخدمات معطّلة يمكن السيطرة عليها
أدوات Passive Enumeration
1. Subfinder
# تثبيت
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# استخدام أساسي
subfinder -d example.com
# حفظ النتائج
subfinder -d example.com -o subdomains.txt
# مع مصادر متعددة
subfinder -d example.com -all -recursive
# عدة نطاقات
subfinder -dL domains.txt -o all_subs.txt
2. Amass
# تثبيت
go install -v github.com/owasp-amass/amass/v4/...@master
# Passive scan
amass enum -passive -d example.com -o amass_output.txt
# مع API keys (يعطي نتائج أفضل)
amass enum -d example.com -config ~/.config/amass/config.ini
3. crt.sh (Certificate Transparency)
# استعلام مباشر
curl -s "https://crt.sh/?q=%.example.com&output=json" | \
jq '.[].name_value' | \
sort -u | \
sed 's/\*\.//g' | \
sed 's/"//g'
4. Assetfinder
go install github.com/tomnomnom/assetfinder@latest
assetfinder --subs-only example.com
أدوات Active Enumeration
تحذير: استخدم هذا فقط على النطاقات في Scope البرنامج.
DNS Brute Force مع ffuf
# تحميل قائمة subdomains شائعة
wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/DNS/subdomains-top1million-5000.txt
# Brute force
ffuf -w subdomains-top1million-5000.txt \
-u https://FUZZ.example.com \
-fc 404,400 \
-o ffuf_subs.json
Gobuster DNS
gobuster dns -d example.com \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
-t 50
معالجة النتائج
الخطوة 1: دمج وتنظيف
# دمج كل النتائج
cat subfinder_output.txt amass_output.txt assetfinder_output.txt | \
sort -u > all_subdomains.txt
# إزالة wildcards
sed -i 's/\*\.//g' all_subdomains.txt
الخطوة 2: اكتشاف النطاقات الحية
# httpx - أسرع وأفضل
cat all_subdomains.txt | httpx -silent -status-code -title -tech-detect \
-o live_hosts.txt
# httprobe
cat all_subdomains.txt | httprobe | tee live_hosts.txt
الخطوة 3: Screenshotting
# gowitness
gowitness file -f live_hosts.txt --screenshot-path ./screenshots/
# eyewitness
python3 EyeWitness.py -f live_hosts.txt --web
Subdomain Takeover
إحدى أقيم الثغرات المرتبطة بـ Subdomain Enumeration:
كيف تحدث:
1. الشركة تضيف: staging.example.com → myapp.github.io
2. تحذف الـ GitHub Pages
3. لكن الـ DNS record يبقى
4. أنت تنشئ GitHub Pages بنفس الاسم
5. staging.example.com يشير لصفحتك الآن!
أدوات الاكتشاف:
# nuclei مع templates الـ takeover
nuclei -l live_hosts.txt -t nuclei-templates/takeovers/
# subjack
subjack -w all_subdomains.txt -t 100 -timeout 30 -ssl
بناء workflow متكامل
#!/bin/bash
TARGET=$1
echo "[*] Starting recon for $TARGET"
# 1. Passive enumeration
subfinder -d $TARGET -o subs_subfinder.txt -silent
amass enum -passive -d $TARGET -o subs_amass.txt
assetfinder --subs-only $TARGET > subs_assetfinder.txt
curl -s "https://crt.sh/?q=%.${TARGET}&output=json" | \
jq '.[].name_value' 2>/dev/null | \
sort -u | sed 's/\*\.//g' | sed 's/"//g' > subs_crt.txt
# 2. Merge
cat subs_*.txt | sort -u > all_subs.txt
echo "[*] Found $(wc -l < all_subs.txt) unique subdomains"
# 3. Check live
cat all_subs.txt | httpx -silent -status-code -o live_hosts.txt
echo "[*] Live hosts: $(wc -l < live_hosts.txt)"
# 4. Screenshot
gowitness file -f live_hosts.txt --screenshot-path ./screenshots/
echo "[+] Done! Check live_hosts.txt and screenshots/"
الخلاصة
Subdomain Enumeration هي أساس أي Recon ناجح. ابدأ بـ Passive لتكون آمنًا دائمًا، ثم انتقل لـ Active على النطاقات في الـ Scope. النطاقات الفرعية المنسية تفتح أبوابًا لثغرات خطيرة — وأحيانًا تقودك لـ Subdomain Takeover الذي يُدفع عليه آلاف الدولارات.
الأسئلة الشائعة
ما الفرق بين Passive وActive Enumeration؟
Passive: تجمع معلومات من مصادر خارجية دون الاتصال بالهدف (آمن 100%). Active: ترسل طلبات مباشرة للهدف (مسموح داخل الـ Scope فقط).
هل Subdomain Enumeration قانوني دائمًا؟
الـ Passive دائمًا قانوني. الـ Active مسموح فقط على النطاقات داخل الـ Scope المحدد في برنامج Bug Bounty. لا تفحص نطاقات خارج الـ Scope.
كم نطاقًا فرعيًا يجب أن أجد عادةً؟
يعتمد على حجم الشركة. شركة صغيرة: 10-50. شركة متوسطة: 100-500. شركات كبيرة مثل Google أو Microsoft: آلاف.
مقالات ذات صلة
اختبار اختراق APIs: الدليل العملي لـ Bug Bounty في 2026
كيف تختبر REST APIs وGraphQL وgRPC في Bug Bounty: منهجية شاملة من Fuzzing الـ Endpoints إلى IDOR وBroken Authentication وInjection.
bug-bountyكيف تكتب Writeup Bug Bounty يجذب القراء ويعزز سمعتك
دليل كتابة Writeups احترافية لثغرات Bug Bounty: البنية الصحيحة، كيف تقدّم الثغرة بإبداع، ولماذا Writeups تُضاعف دخلك وفرص عملك.
bug-bountyشرح Bugcrowd للمبتدئين: كيف تبدأ وتختار البرنامج الصحيح
دليل شامل لمنصة Bugcrowd: التسجيل، الفرق عن HackerOne، أفضل البرامج للمبتدئين، نظام Trust وPoints، وكيف تستفيد من Crowdstream.
bug-bountyثغرات Command Injection: من الاكتشاف إلى RCE الكامل
دليل شامل لثغرات OS Command Injection: كيف تعمل، أين تظهر، Payloads عملية، تقنيات Out-of-Band Detection، وكيف توثّقها في Bug Bounty.
طبّق هذا عمليًا
أكاديمية Pentevo تحوّل هذه المفاهيم إلى دروس موجّهة وفيديوهات واختبارات — مجانًا.
ابدأ التعلّم مجانًا