إنتقل إلى المحتوى الرئيسي

OSINT — ورشة تطبيقية

تأخذ هدفاً حقيقياً — برنامج bug bounty عمومي — وتفكّكه بشكل سلبي كامل. المُنتَج: بطاقة هدف كاملة، مع خمس نقاط هجوم ذات أولوية مُصنَّفة.

المدة المقدَّرة: من ساعتين إلى 3 ساعات.

المُنتَج: مجلد ~/osint/<cible>/ كامل، مع بطاقة fiche-cible.md من صفحتين في المقدمة.

إطار صارم

يجب عليك اختيار برنامج bug bounty عمومي يُصرِّح نطاقه صراحةً بالاستطلاع. لا يُقبل أي هدف آخر. استخدم HackerOne — Open programs أو Bugcrowd — Public programs أو Intigriti. ابقَ سلبياً بشكل صارم: هذه الورشة لا تتضمن أي فحص، ولا أي طلب موجَّه إلى الهدف.


الخطوة 1 — اختيار الهدف (10 دقائق)​

افتح قائمة البرامج العمومية. اختر برنامجاً:

  • يُصرِّح صراحةً بـ *.exemple.com ضمن نطاقه.
  • لا يشترط تسجيلاً مسبقاً للاستطلاع السلبي.
  • يخص شركة متوسطة الحجم (ليس Google — ضخم جداً، ولا شركة ناشئة من 5 أشخاص — فقيرة جداً في OSINT). شركة SaaS B2B بين 100 و1000 موظف مثالية.

دوّن:

البرنامج المختار : <الاسم>
المنصة : HackerOne / Bugcrowd / Intigriti
رابط البرنامج : ...
النطاق الجذري : cible.com
النطاق المشمول : *.cible.com، cible.io
النطاق المستبعد : blog.cible.com، salesforce.cible.com (SaaS خارجي)
سياسة الإفصاح : إفصاح مسؤول، 90 يوماً

هذه الكتلة تُوضَع في مقدمة ملفك fiche-cible.md. إنها تثبت أنك مصرَّح لك. هذا هو RoE الخاص بك لهذه الورشة.


الخطوة 2 — تحضير المجلد (دقيقتان)​

CIBLE=<votre-cible-sans-www>   # مثال: acme.io
mkdir -p ~/osint/$CIBLE/{dns,subs,tech,people,leaks,archive}
cd ~/osint/$CIBLE
touch fiche-cible.md

ابدأ fiche-cible.md بكتلة النطاق من الخطوة 1. دون ذلك، لا عذر مقبول إن سألك أحدهم "لماذا كنت تراقب شركتي؟".


الخطوة 3 — DNS وموقف البريد الإلكتروني (10 دقائق)​

أعد إنتاج حلقة العرض التوضيحي:

for t in A AAAA MX NS TXT SOA CAA; do
echo "=== $t ==="
dig +short $CIBLE $t
done | tee dns/racine.txt

dig +short _dmarc.$CIBLE TXT | tee dns/dmarc.txt

أجب، في fiche-cible.md، عن هذه الأسئلة:

  • هل النطاق خلف CDN؟ أيّ واحد؟
  • ما هم مزودو خدمة المراسلة؟
  • هل يذكر SPF خدمات SaaS؟ أيّها؟
  • هل سياسة DMARC هي none أو quarantine أو reject؟ (none = متجه تصيد)

الخطوة 4 — النطاقات الفرعية (20 دقيقة)​

ثلاثة مصادر، للتقاطع. سلبية صارمة.

# المصدر 1 — شفافية الشهادات
curl -s "https://crt.sh/?q=%25.$CIBLE&output=json" \
| jq -r '.[].name_value' \
| tr '[:upper:]' '[:lower:]' \
| sed 's/^\*\.//' \
| sort -u > subs/from-crt.txt

# المصدر 2 — subfinder
subfinder -d $CIBLE -silent -all -o subs/from-subfinder.txt

# المصدر 3 — amass سلبي
amass enum -passive -d $CIBLE -o subs/from-amass.txt

# الدمج
cat subs/from-*.txt | sort -u > subs/all-passive.txt
wc -l subs/all-passive.txt

التحليل السلبي (عبر محلّلات عمومية، أبداً عند العميل):

dnsx -l subs/all-passive.txt -a -resp -silent -r 1.1.1.1,8.8.8.8 \
-o subs/resolved.txt

افتح subs/resolved.txt. ارصد:

  • عناوين IP خارج CDN (تلك التي لا تبدأ بـ 104.16-31، 172.64-71، 141.101، 173.245 — كتل Cloudflare — أو بكتل Fastly وAkamai وغيرها). هذه العناوين غالباً ما تشير إلى الخادم الحقيقي خلف CDN. هدف ثمين.
  • النطاقات الفرعية بكلمات مفتاحية مُنبِّهة:
    • dev، staging، test، preprod، internal، old، legacy، admin، panel، jenkins، gitlab، sonar، vault، backup، vpn، ssh، rdp.
  • عناوين IP خاصة (10.x، 172.16-31.x، 192.168.x) منشورة في DNS عمومي: خطأ تهيئة يجب الإبلاغ عنه.

في fiche-cible.md، اذكر النطاقات الفرعية العشرة الأكثر إثارة للاهتمام مع عنوان IP وملاحظة عن سبب أهميتها.


الخطوة 5 — التقنيات (20 دقيقة)​

دون لمس الهدف. استخدم:

  • BuiltWith في متصفحك.
  • Shodan عبر CLI أو الويب:
# لكل عنوان IP خارج CDN تم تحديده في الخطوة 4:
shodan host <IP> > tech/shodan-<sous-domaine>.txt
  • Wappalyzer — انتباه، فعّال. إذا كان RoE ورشتك يقبل light active، يمكنك استخدامه (مجرد فتح صفحة في المتصفح = نقرة HTTP ظاهرة في سجلات الهدف). وإلا، تخلَّ عنه.

دوّن، في tech/synthese.md، لكل هدف تم تحديده:

  • الخادم الويب وإصداره.
  • إطار العمل التطبيقي إن أمكن تحديده.
  • المنافذ المفتوحة التي يراها Shodan (ليس أنت — Shodan فحصها مسبقاً، وأنت فقط تطّلع عليها).
  • لافتات الخدمة (SSH، البريد…).
  • أخطاء التهيئة الظاهرة: وضع DEBUG، صفحات خطأ تفضح الستاك، ترويسة Server: مُفرِطة في الإفصاح.

الخطوة 6 — الأشخاص (20 دقيقة)​

# البحث عن رسائل بريد + ملفات LinkedIn (عبر Bing)
theHarvester -d $CIBLE -b linkedin,bing,duckduckgo -l 500 \
-f people/harvester.html

أكمل يدوياً على LinkedIn:

  • موظفون حاليون بمناصب تقنية (CTO، VP Eng، DevOps، SRE، Sec، IT).
  • موظفون سابقون (آخر منصب: <هدفك>، ذِكر left in <date>). حساباتهم العمومية على GitHub تحتوي أحياناً على بقايا مفيدة.

جمّع people/personnes.csv:

prenom,nom,titre,email,linkedin,github

الهدف: 15 شخصاً على الأقل تم تحديدهم. لن تهاجم سوى 3 أو 4 منهم لاحقاً، لكن يجب توفير المخزون.


الخطوة 7 — التسريبات (20 دقيقة)​

ثلاثة مصادر، بهذا الترتيب:

1. HaveIBeenPwned حسب النطاق (إذا كان لديك مفتاح API، وإلا استخدم واجهة الويب لكل بريد إلكتروني على حدة):

curl -s -H "hibp-api-key: $HIBP_KEY" \
"https://haveibeenpwned.com/api/v3/breacheddomain/$CIBLE" \
| jq . > leaks/hibp.json

2. GitHub Search للهدف ولكل موظف مُدرَج:

https://github.com/search?type=commits&q=%22$CIBLE%22
https://github.com/search?type=code&q=%22$CIBLE%22+password
https://github.com/search?type=code&q=%22$CIBLE%22+AKIA
https://github.com/search?type=code&q=%22$CIBLE%22+secret

النمط AKIA يبحث عن مفاتيح AWS. النمط password يبحث عن... كلمات المرور. لن تجد دائماً شيئاً؛ عندما تجد، يكون ذهباً.

3. Pastebin / Ghostbin / Rentry عبر Google:

site:pastebin.com "$CIBLE"
site:ghostbin.co "$CIBLE"
"$CIBLE" password ext:txt

دوّن في leaks/synthese.md:

  • عدد رسائل بريد الهدف المُسرَّبة وفي أي تفريغات.
  • كل مفتاح، كل كلمة مرور، كل سرّ عُثر عليه في السنوات الثلاث الأخيرة.

الخطوة 8 — أرشيفات Wayback (10 دقائق)​

curl -s "https://web.archive.org/cdx/search/cdx?url=$CIBLE/*&output=json&limit=500" \
| jq -r '.[1:] | .[] | .[2]' \
| sort -u > archive/urls.txt

grep -iE 'admin|backup|debug|swagger|api-doc|test|internal|dev|graphql|env|config|status' archive/urls.txt \
> archive/interessants.txt

wc -l archive/urls.txt archive/interessants.txt

دوّن، في fiche-cible.md، الروابط الخمسة إلى العشرة الأكثر إثارة للاهتمام الموجودة في الأرشيفات — يجب إعادة التحقق منها في الأسبوع 4.


الخطوة 9 — Google Dorks (15 دقيقة)​

افتح Google (أو DuckDuckGo، أقل ضجيجاً) ونفّذ على الأقل هذه الطلبات، مع التنويع:

site:$CIBLE inurl:admin
site:$CIBLE inurl:login
site:$CIBLE inurl:.git
site:$CIBLE ext:sql
site:$CIBLE ext:env
site:$CIBLE ext:log
site:$CIBLE ext:bak
site:$CIBLE intitle:"index of"
site:$CIBLE "internal use only"
site:$CIBLE "confidential"
site:$CIBLE "-----BEGIN" # بداية مفاتيح PGP/RSA
site:*.amazonaws.com "$CIBLE" # حاويات S3 المُسمَّاة
site:*.blob.core.windows.net "$CIBLE" # حاويات Azure blob
site:*.digitaloceanspaces.com "$CIBLE"

التقط صورة لأي نتيجة غير تافهة. لا تنقر انطلاقاً من Google (النقر يمر عبر مُعيد توجيه من Google لكنه يصل عند الهدف = فعّال). انسخ والصق الرابط في نافذة curl -I -A "Mozilla/5.0" لاحقاً، في الأسبوع 4، في وضع فعّال مُتحمَّل.


الخطوة 10 — التوحيد (30 دقيقة)​

افتح fiche-cible.md واملأ بدقة الأقسام التالية. كل قسم له معايير اكتمال.

# بطاقة الهدف — <CIBLE>  (<التاريخ>)

## 0. النطاق والتصريح
[كتلة الخطوة 1، مع رابط البرنامج]

## 1. الأصول المؤكَّدة
- النطاق الجذري + مسجّل النطاقات
- <N> نطاقاً فرعياً تم جمعها (المصادر: crt.sh، subfinder، amass)
- النطاقات الفرعية الأكثر إثارة للاهتمام (5-10، مع IP + ملاحظة)

## 2. العنونة
- الكتل والموردون (Cloudflare، AWS، Azure، GCP، OVH، Vultr…)
- عناوين IP خارج CDN المحدَّدة

## 3. التقنيات
- الواجهة، الخلفية، قاعدة البيانات المحتملة
- الخوادم الويب والإصدارات (عبر Shodan)
- خدمات SaaS المرتبطة (Stripe، Twilio، Sentry، Datadog… المرصودة في SPF أو الترويسات)

## 4. موقف البريد الإلكتروني
- MX
- SPF (قائمة الـ include)
- DMARC (السياسة، المحاذاة)
- هل DKIM موجود؟

## 5. الأشخاص الرئيسيون (>= 15)
- ملف people/personnes.csv مُرفَق

## 6. التسريبات العمومية
- HIBP: <N> حساباً معنياً، التفريغات
- GitHub: أسرار عُثر عليها (حدِّد المستودع، الملف، نوع السر)
- Pastebin / Google: اكتشافات

## 7. خمسة أهداف ذات أولوية (ترتيب تنازلي)
1. <الهدف> — <السبب> — <الجهد المقدَّر للتأكيد>
2. ...
3. ...
4. ...
5. ...

## 8. الخطوة التالية (الوحدة 4)
- خطة المرحلة الفعّالة: أي نطاق فرعي، أي أداة، أي نافذة زمنية.
- نقاط يجب التفاوض عليها في RoE (إذا اكتُشف نطاق فرعي خارج النطاق الأصلي).

شبكة التقييم الذاتي​

  • برنامج bug bounty ونطاقه مذكوران في مقدمة البطاقة.
  • 50 نطاقاً فرعياً على الأقل تم جمعها (استهدف 100+ على هدف عادي).
  • التقاطع تم: crt.sh + subfinder + amass (الثلاثة، لا واحد فقط).
  • كل عناوين IP مُصنَّفة CDN / غير CDN / خاصة.
  • موقف البريد الإلكتروني موثَّق (SPF، DMARC، DKIM).
  • 15 شخصاً على الأقل مع بريدهم الإلكتروني المُخمَّن من النمط.
  • مصدر تسريب واحد على الأقل تمت استشارته (HIBP أو GitHub Search).
  • Wayback Machine تمت استشارتها، أهم الروابط مدوَّنة.
  • خمسة أهداف ذات أولوية مُصنَّفة مع تبرير.
  • لا أمر واحد لمس الهدف. لا فحص. لا curl مباشر.

كلها مُحقَّقة؟ بطاقتك جاهزة لتغذية الأسبوع 4.


ما يعيق العملية عموماً​

  • نطاقات فرعية قليلة: الهدف صغير، أو مختفٍ غالباً خلف CDN يخفي جيداً. اقضِ وقتاً أطول على GitHub وLinkedIn.
  • لا وصول إلى Shodan/HIBP: نسخ مجانية متوفرة، أقل ثراءً. أو انتظر نهاية الدورة، يستحق الاشتراك.
  • theHarvester يُنتج القليل: LinkedIn يُغلق وصول Bing بانتظام. أنجز الهيكل التنظيمي يدوياً، الأمر يستغرق 30 دقيقة.
  • إغراء الفحص: هذا دليل على أنك لم تحفر بما يكفي في المصادر السلبية. عد للبحث.

ما تخرج به من هذه الورشة​

  • سير عمل قابل للتكرار خلال ساعتين على أي هدف مصرَّح به.
  • بطاقة من صفحتين ستكون المرجع لكل الوحدات اللاحقة على هذا الهدف.
  • الحدس للتعرف على نطاق فرعي مثير للاهتمام في ثانية واحدة.
  • الانضباط بعدم إرسال أي شيء قبل النظر إلى كل شيء.