Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ssh-enum — This project explores whether modern OpenSSH reveals valid usernames through subtle response or timing differences. CVE-2016-6210 user enumeration investigation ( Welch's t-test, Cohen's d, and detection engineering ) on a controlled lab on Ubuntu 22.04.5 LTS, it also examines the traces such attempts leave behind and how they can be detected.. | Kitploit
أدوات/GitHubGitHub/alisha-chaudhary/ssh-enum
ReconnaissanceVulnerability AnalysisInformation GatheringPenetration TestingPapers & ResearchLearning & EducationLog Analysis
GitHubalisha-chaudhary/ssh-enum

ssh-enum

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →

حول

عرض المستودع
منذ شهر واحدلم تتم المراجعة بعد

This project explores whether modern OpenSSH reveals valid usernames through subtle response or timing differences. CVE-2016-6210 user enumeration investigation ( Welch's t-test, Cohen's d, and detection engineering ) on a controlled lab on Ubuntu 22.04.5 LTS, it also examines the traces such attempts leave behind and how they can be detected..

مشاركة

ssh-enum

دراسة التحقق الإحصائي لـ CVE-2016-6210

إعادة تحقيق قابلة للتكرار لاستخراج أسماء المستخدمين في OpenSSH باستخدام التحليل الإحصائي.

يعيد هذا المشروع تحقيق CVE-2016-6210، وهو قناة جانبية زمنية موثقة في OpenSSH، لتحديد ما إذا كانت لا تزال قابلة للملاحظة على خادم Ubuntu حديث باستخدام تكوين PAM الافتراضي.

بدلاً من افتراض أن السلوك المنشور لا يزال ساريًا، يقوم المشروع بتقييم قياسات توقيت المصادقة التي تم جمعها من خلال الاستكشاف اليدوي و Hydra و Metasploit باستخدام اختبار t الخاص بـ Welch و Cohen's d لتمييز إشارات التوقيت الحقيقية عن ضوضاء القياس.

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


⚠️ إشعار قانوني

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


جدول المحتويات

  • بيان المشكلة
  • إعداد المختبر
  • المنهجية
  • ما تم بناؤه
  • الملاحظات والنتائج
  • عملية التفكير
  • المخاطر الأمنية
  • استراتيجيات التخفيف
  • التحسينات المستقبلية
  • هيكل المشروع
  • بداية سريعة
  • المراجع

🎯 بيان المشكلة

استخراج أسماء المستخدمين - القدرة على تحديد ما إذا كان اسم مستخدم معين موجودًا على نظام بعيد دون بيانات اعتماد صالحة. إنها خطوة أولى حاسمة في سلسلة الهجوم المؤدية إلى اختراق الحساب:``` Reconnaissance → [User Enumeration] → Password Attack → Access ↑ This project investigates here

root@kitploit:~
إذا تمكن المهاجم من التمييز بين "هذا المستخدم موجود" و"هذا المستخدم غير موجود" من خلال تحليل استجابات الخادم، فيمكنه تقليص فضاء المفاتيح بشكل كبير لهجمات القوة العمياء أو حشو بيانات الاعتماد اللاحقة.

بروتوكول SSH هو هدف متكرر لأنه معرّض للجميع تقريبًا، ويتعامل مع مصادقة كلمة المرور، وكانت الإصدارات الأقدم تحتوي على فروق زمنية قابلة للقياس بين أسماء المستخدمين الصالحة وغير الصالحة (CVE-2016-6210).

**هذا التحقيق يطرح سؤالين:**

1. هل OpenSSH الحديث على Ubuntu 22.04.5 LTS مع الإعدادات الافتراضية يتسرب وجود اسم المستخدم
   عبر رسائل الاستجابة، التوقيت، أو الإشارات التي يُبلغ عنها بواسطة الأدوات؟
2. إذا حاول المهاجم ذلك بغض النظر، فما هي الآثار التي يتركها؟ وبأي درجة من الموثوقية يمكن اكتشافها؟

---

## 🖥️ الإعداد المختبري

تم إجراء جميع الاختبارات على شبكة افتراضية معزولة كليًا (host-only) دون تعرض للإنترنت.

| الآلة | نظام التشغيل | الدور | عنوان IP | إصدار SSH |
|----------|---------------------------|-----------------------------------------|------------------|------------------|
| المهاجم | Kali Linux 2024.1 | أدوات هجومية، نصوص تحليلية | 192.168.56.5 | — |
| الهدف | Ubuntu Server 22.04.5 LTS | تشغيل OpenSSH مع إعدادات **افتراضية** | 192.168.56.10 | OpenSSH 8.9p1 |

**إعداد SSH الهدف (`/etc/ssh/sshd_config` الإعدادات الافتراضية):**```
PasswordAuthentication yes
UsePAM yes                  # Key setting — normalises timing via dummy hash
PermitRootLogin prohibit-password
MaxAuthTries 6
LogLevel INFO

UsePAM yes هو إعداد التعزيز الحرج. فهو يُجبر OpenSSH على إجراء حساب bcrypt وهمي للمستخدمين غير الموجودين، ليتوافق مع توقيت فحص كلمة المرور الحقيقي. تم تقديم هذا تحديدًا كإجراء مضاد لـ CVE-2016-6210.


🔬 المنهجية

تم تنفيذ كل أسلوب هجوم كتجربة مستقلة مع حالة سجل نظيفة:```bash

Reset log state on target before each trial

sudo truncate -s 0 /var/log/auth.log

After attack: collect evidence

sudo cp /var/log/auth.log ~/evidence/trial-N-auth.log

root@kitploit:~
الأدلة التي تم جمعها لكل تجربة:
- stdout/stderr للأداة (محفوظ حرفيًا)
- `/var/log/auth.log` من الهدف
- عينات توقيت الاستجابة عبر `time.perf_counter()` في `manual_ssh.py`
- لافتة SSH التي تم الحصول عليها قبل أي محاولة مصادقة

### طرق الهجوم

| الطريقة | الأداة | قائمة الكلمات | الغرض |
|---------|--------|--------------|--------|
| SSH اليدوي | `ssh` CLI + Paramiko | 50 اسم مستخدم شائع | خط الأساس؛ فحص الردود الأولية |
| القوة الغاشمة باستخدام Hydra | `hydra` | نفس الـ 50 | آلي؛ يستخدم وضع التعداد المدمج في Hydra |
| وحدة Metasploit | `auxiliary/scanner/ssh/ssh_enumuser` | نفس الـ 50 | وحدة التعداد المخصصة للإطار |
| بصمة اللافتة | `BannerFingerprinter` مخصص | غير متاح | تسريب الإصدار بدون مصادقة، فحص CVE |
| تحليل التوقيت | `ResponseAnalyzer` مخصص | مجموعة فرعية صالحة مقابل غير صالحة | فحص قناة جانبية إحصائية |

---

## ما تم بناؤه

يتجاوز هذا المشروع مجرد تشغيل الأدوات — فهو يغلف كل هجوم وكل منطق الكشف في قاعدة أكواد Python منظمة ويوفر منسقًا يقوم بتشغيل خط الأنابيب بالكامل من البداية إلى النهاية.

### أدوات الهجوم (`src/attack_tools/`)

**`ManualSSHEnumerator`** — يختبر كل اسم مستخدم N مرة باستخدام `paramiko`، مسجلاً التوقيت الدقيق ونوع النتيجة ولافتة SSH. يحسب المتوسط/الانحراف المعياري لكل اسم مستخدم. والأهم من ذلك أنه **لا** يعيد استخدام الاتصالات بين المحاولات، مما يضمن أن كل عينة تلتقط وقت المعالجة الكامل من جانب الخادم.

**`BannerFingerprinter`** — يحصل على لافتة SSH عبر مأخذ TCP خام (لا حاجة لبيانات الاعتماد). يحلل اسم التطبيق وسلسلة الإصدار وتلميح نظام التشغيل. يقارن مع سجل CVE محلي. يكشف إصدار مثل `OpenSSH_8.9p1 Ubuntu-3ubuntu0.6` عن برنامج الخادم بالضبط — قد يكون كافيًا لتحديد الثغرات المعروفة قبل محاولة أي مصادقة.

**`HydraAutomation`** — غلاف عملية فرعية حول Hydra. يحلل stdout لاستخراج عمليات تسجيل الدخول الناجحة ورسائل الخطأ وحكم التعداد الخاص بـ Hydra (`لا يدعم تعداد المستخدم`).

**`MetasploitScanner`** — يكتب سكريبت مورد مؤقت ويقود `msfconsole` عبر عملية فرعية. يحلل المخرجات للكشف عن التحصين وأي أسماء مستخدمين تم العثور عليها.

### أدوات الكشف (`src/detection_tools/`)

**`LogParser`** — محلل auth.log يعتمد على التعبيرات النمطية يدعم خمسة أنواع من أحداث SSH: `failed_invalid_user`، `failed_valid_user`، `pre_auth_reject`، `accepted`، `disconnected`. يُرجع قواميس أحداث منظمة مع الطابع الزمني ونوع الحدث واسم المستخدم وعنوان IP المصدر والمنفذ.

**`ResponseAnalyzer`** — يقوم باختبار t الخاص بـ Welch على توزيعات التوقيت من أسماء المستخدمين الصالحة مقابل غير الصالحة. يحسب فرق التوقيت (مللي ثانية) وقيمة p وحجم تأثير Cohen's d واستنتاج بلغة بسيطة. العتبة: فرق ≥ 5 مللي ثانية و p < 0.05 يؤدي إلى تحذير قناة جانبية.

**`EnumerationDetector`** — أربعة أنماط كشف:
- **استقصاءات المستخدم السريعة**: نافذة منزلقة - نفس عنوان IP، ≥10 أسماء مستخدمين مميزة خلال 60 ثانية
- **ارتباط قائمة الكلمات**: معدل المطابقة بين أسماء المستخدمين التي تمت محاولتها وقوائم الهجوم المعروفة
- **التوقيت التسلسلي**: معامل الاختلاف على الفجوات بين المحاولات (CoV منخفض → أداة)
- **الاستقصاء الموزع**: نفس اسم المستخدم من عناوين IP متعددة (استطلاع حشو بيانات الاعتماد)

**`AlertingSystem`** — باعث تنبيهات خفيف الوزن. يُنشئ تنبيهات JSON ذات طابع زمني إلى stdout. يمكن توسيعه بتكاملات البريد الإلكتروني/SIEM/webhook حسب الحاجة.

### المنسق

**`run_investigation.py`** — مشغل CLI يقوم بتشغيل جميع المراحل الأربع بالتسلسل ويكتب النتائج إلى `data/results/`. قم بتشغيله مع `--help` للحصول على الاستخدام الكامل.```bash
python run_investigation.py \
    -target 192.168.xx.xxxx \
    -usernames data/wordlists/common-usernames-50.txt \
    -log data/sample-logs/auth.log \
    -known-valid root ubuntu \
    -samples 10

الملاحظات والنتائج

النتيجة 1: تناسق الرد — الدفاع الأساسي

الفرضية المختبرة: هل يُرجع OpenSSH رسالة خطأ مختلفة لاسم مستخدم غير موجود مقارنةً باسم مستخدم موجود مع كلمة مرور خاطئة؟```bash

Non-existent user

$ ssh [email protected] Permission denied (publickey,password).

Existing user, wrong password

$ ssh [email protected] Permission denied (publickey,password).

root@kitploit:~
**النتيجة:** الاستجابات متطابقة بايتًا ببايت. البروتوكول لا يُسرب أي شيء.

**السبب:** منذ OpenSSH 7.3، يفرض `UsePAM yes` على الخادم تنفيذ عملية `crypt()` وهمية للمستخدمين غير الموجودين، مما يطابق توقيت ومسار الخطأ لعملية مصادقة فاشلة حقيقية. كان الإصلاح استجابة مباشرة لـ CVE-2016-6210.

---

### الاكتشاف 2: لم يتم اكتشاف قناة جانبية زمنية

**الفرضية المختبرة:** حتى إذا كانت رسائل الخطأ متطابقة، فهل هناك فرق زمني قابل للقياس بين أسماء المستخدمين الصالحة وغير الصالحة يمكن استغلاله إحصائيًا؟

تم جمع عشرة عينات زمنية لكل اسم مستخدم من أصل 50 اسمًا. تم مقارنة المستخدمين المعروفين بأنهم صالحون (مؤكدون من النظام) مع مجموعة المستخدمين غير الصالحين.

| المقياس                      | القيمة                               |
|-----------------------------|-------------------------------------|
| متوسط التوقيت — المستخدمون غير الصالحين | ~312 ms                             |
| متوسط التوقيت — المستخدمون الصالحون   | ~311 ms                             |
| الفرق                       | **~1 ms**                           |
| قيمة p لاختبار t الخاص بـ Welch | > 0.40                              |
| الاستنتاج                  | **لا يوجد قناة جانبية قابلة للتمييز** |

الفرق البالغ ~1 مللي ثانية أقل بكثير من عتبة الضوضاء البالغة 5 مللي ثانية وليس ذا دلالة إحصائية
(p >> 0.05). حساب التجزئة الوهمي في OpenSSH فعال.

---

### الاكتشاف 3: Hydra لا يدعم التعداد (Enumeration)

يعتمد وضع التعداد SSH في Hydra على واحد من ثلاثة إشارات: رسائل خطأ مختلفة،
توقيت مختلف، أو سلوك اتصال مختلف. مع تطبيع الثلاثة، يعلن Hydra صراحةً:```
[ERROR] target ssh://192.168.56.10:22/ does not support user enumeration
[STATUS] 50/50 tries completed, 0 valid logins found

Side effect observed: على الرغم من فشل التعداد، يتم تسجيل جميع المحاولات الخمسين في /var/log/auth.log مع عنوان IP المصدر، والطابع الزمني، واسم المستخدم المُحاول. وجود المهاجم مرئي بالكامل.


اكتشاف 4: ميتاسبلويت يكتشف التحصين قبل إكمال المسح

يتحقق وحدة auxiliary/scanner/ssh/ssh_enumuser من إصدار OpenSSH من اللافتة قبل محاولة التعداد. يتم وضع علامة على الإصدارات ≥ 7.3 مع UsePAM yes كموصنة وتخرج الوحدة مبكرًا:``` [] 192.168.xx.xxxx:22 - SSH - Checking for vulnerability [] 192.168.xx.xxxx:22 - SSH - Target is not vulnerable: OpenSSH 8.9p1 (hardened)

root@kitploit:~
هذا اكتشاف مفيد: اللافتة (banner) وحدها تُبلغ المهاجم بالوضع الدفاعي للخادم قبل أي محاولة تعداد (enumeration).

---

### الاكتشاف 5: الكشف موثوق حتى عند فشل التعداد

الرؤية الأساسية من منظور المدافع: **الهجوم يولّد ضوضاء حتى عندما لا ينجح**. جميع أنماط الكشف الأربعة عملت بشكل صحيح ضد ملف `auth.log` المُجمّع:

| الكشف (Detection)                | المحفز (Trigger)                                         | الخطورة (Severity) |
|----------------------------------|----------------------------------------------------------|---------------------|
| مسح سريع للمستخدمين (Rapid user probe) | قام IP كالي باختبار 50 اسم مستخدم في أقل من 60 ثانية      | عالية (HIGH)        |
| ارتباط قائمة الكلمات (Wordlist correlation) | 48/50 اسمًا محاولًا تطابق مع قائمة الكلمات              | عالية (HIGH)        |
| توقيت تسلسلي (Sequential timing) | معامل التباين (CoV) للمحاولات = 0.04 (توقيع الأداة)     | متوسطة (MEDIUM)     |
| فحص باللافتة فقط (Banner-only probe)        | قطع اتصال قبل المصادقة دون إرسال أي اسم مستخدم            | منخفضة (LOW)        |

---

## عملية التفكير

### لماذا التعداد اليدوي لـ SSH أولاً؟

الغريزة لبدء الاختبار اليدوي كانت سليمة من الناحية المنهجية: قبل الثقة بمخرجات الأداة، تحتاج إلى فهم ما يقوله البروتوكول الخام فعلاً. تشغيل `ssh ghost@target` ومراقبة رسالة الخطأ الدقيقة يخبرك ما إذا كان هناك *أي شيء* يمكن تعداده قبل استثمار الوقت في الأتمتة.

الملاحظة الأولى، أن `Permission denied (publickey,password)` تبدو متطابقة بغض النظر عن وجود المستخدم، كانت النتيجة المركزية. كل ما تبع ذلك كان التحقق من صحة تلك النتيجة.

### الافتراضات التي تم وضعها (وإعادة فحصها)

الافتراض الأولي كان أن Hydra و Metasploit ستكونان *أكثر* قدرة من الاختبار اليدوي، لذا إذا فشل اليدوي، فقد تنجح الأدوات. اتضح أن هذا كان خاطئًا في الاتجاه المتوقع ولكن صحيحًا في *لماذا*: الأدوات لا تضيف قدرة هنا لأن البروتوكول نفسه لا يُسرب الإشارة. الأدوات هي مجرد أتمتة فوق نفس البروتوكول.

افتراض ثانٍ يستحق الفحص: المحاولة اليدوية الأولى كانت أبطأ بشكل ملحوظ من اللاحقة، والمحاولة الناجحة بكلمة المرور كانت سريعة. تم تفسير ذلك مبدئيًا كإشارة توقيت محتملة. عند التأمل، كان التباطؤ ناتجًا عن حمل إنشاء اتصال TCP على حالة شبكة جديدة (حل ARP، إعداد الاتصال) وليس وقت معالجة الخادم. التحكم في ذلك — عن طريق القياس من `time.perf_counter()` *بعد* مصافحة TCP، أو باستبعاد العينة الأولى — كان سيكون أكثر دقة. يعالج تطبيق `ManualSSHEnumerator` ذلك عن طريق جمع 10 عينات لكل اسم مستخدم والإبلاغ عن المتوسط/الانحراف المعياري، مما يُخفف من ضوضاء العينة الأولى.

### ما تغير خلال المشروع

النطاق الأصلي كان ضيقًا: تشغيل ثلاث أدوات، توثيق ما إذا كانت تعمل. تطور المشروع في اتجاهين:

**للداخل (تحليل أعمق):** عندما كانت النتائج الأولية سلبية، السؤال الطبيعي أصبح *لماذا* — مما أدى إلى قراءة سجلات تغييرات OpenSSH، و CVE-2016-6210، وتنفيذ `UsePAM`. فهم الآلية أكثر قيمة من مجرد تسجيل النتيجة.

**للخارج (محور الكشف):** النتيجة السلبية للهجوم لا تزال نقطة بيانات دفاعية مفيدة. المحور إلى "بالرغم من فشل التعداد، ماذا رأى الخادم؟" أدى إلى تحليل السجلات ومكونات هندسة الكشف، مما حوّل تمرين تشغيل أداة أحادي البعد إلى تحقيق ثنائي الجانب.

### ما الذي سيفعل بشكل مختلف

تم أخذ قياسات التوقيت على شبكة افتراضية مخصصة (host-only)، مما يُحدث تشويشًا أقل من الشبكة الحقيقية ولكنه يعني أيضًا أن النتائج متفائلة. في بيئة حقيقية مع زمن انتقال TCP، تشويش، وإعادة إرسال، ستكون أرضية الضوضاء أعلى وسيحتاج تحليل التوقيت إلى عينات أكثر لكل اسم مستخدم. منهجية أكثر قوة ستختبر عبر رابط WAN محاكى (باستخدام `tc netem` لإدخال زمن انتقال وتحكم بالتشويش) لرؤية كيف تصمد الاستنتاجات تحت ظروف واقعية.

---

## المخاطر الأمنية

على الرغم من أن التعداد لم ينجح في هذا المختبر، فإن سطح الهجوم والمخاطر المرتبطة هي:

**إذا كان التعداد *ممكنًا* (مثل OpenSSH أقدم، `UsePAM no`، كومة PAM مخصصة):**
- يستطيع المهاجمون تضييق حملة القوة الغاشمة إلى أسماء مستخدمين مؤكدة فقط، مما يقلل خطر الكشف ويزيد الكفاءة بشكل كبير.
- عند دمجه مع رش كلمات المرور (كلمة مرور واحدة شائعة عبر جميع أسماء المستخدمين الصحيحة)، يتجاوز ذلك إقفالات `MaxAuthTries` لكل مستخدم.

**المخاطر التي تنطبق حتى مع مقاومة التعداد:**
- لافتة SSH تُسرب إصدار OpenSSH الدقيق ونظام التشغيل. المهاجم الذي يرى `OpenSSH_8.9p1` يمكنه فورًا التحقق مما إذا كان CVE-2024-6387 (regreSSHion) ينطبق، قبل إرسال حزمة مصادقة واحدة.
- جميع محاولات التعداد تُسجل بعنوان IP المصدر. إذا كان مراقبة السجلات غائبةًا، فإن هجوم الاحتراق البطيء (محاولة واحدة في الساعة) يمكنه اختبار آلاف المستخدمين دون تشغيل التنبيهات القائمة على المعدل.
- `PasswordAuthentication yes` يُبقي سطح هجوم كلمة المرور مفتوحًا حتى لو لم يكن التعداد مجديًا. هجمات بيانات الاعتماد بعد جمع المعلومات من المصادر المفتوحة (باستخدام قوائم كلمات مرور مخترقة ضد أسماء مستخدمين مستخلصة من OSINT) لا تتطلب تعدادًا من جانب الخادم على الإطلاق.

---

## استراتيجيات التخفيف

| التهديد                        | التخفيف                                                      | تغيير التكوين المطلوب                      |
|--------------------------------|--------------------------------------------------------------|--------------------------------------------|
| القناة الجانبية للتوقيت        | التأكد من `UsePAM yes` (افتراضي على Ubuntu)                 | لا شيء — افتراضي بالفعل                    |
| إفشاء إصدار اللافتة            | `VersionAddendum none` و `DebianBanner no` في `sshd_config`  | نعم                                        |
| الهجمات القائمة على كلمة المرور | `PasswordAuthentication no` — مصادقة بالمفتاح فقط            | نعم                                        |
| القوة الغاشمة بعد OSINT        | `fail2ban` مع سجن `sshd`                                     | تثبيت + تكوين                              |
| التعداد البطيء                 | إرسال السجلات إلى SIEM؛ التنبيه عند >N اسم مستخدم مميز/IP/ساعة | مطلوب SIEM                               |
| تسجيل الدخول كجذر              | `PermitRootLogin no`                                         | نعم (الافتراضي هو `prohibit-password`)     |
| قطع الاتصال قبل المصادقة       | `MaxStartups 10:30:60` للحد من معدل الاتصالات غير المصادق عليها | نعم                                        |

**الإضافات الدنيا الموصى بها لـ `sshd_config` في نشر محصن:**```
PasswordAuthentication no
PermitRootLogin no
MaxAuthTries 3
MaxStartups 10:30:60
VersionAddendum none
LogLevel VERBOSE

التحسينات المستقبلية

يختبر المشروع الحالي بروتوكولًا واحدًا في تكوين واحد. الامتدادات الطبيعية:

  • تعداد الخدمات الأخرى على نفس المضيف. SMTP (VRFY/EXPN)، LDAP (استعلامات السمات)، نماذج تسجيل الدخول HTTP، و SNMP كلها نواقل تسريب أسماء المستخدمين الشائعة على نفس الجهاز الذي يتم تقويته عند SSH. ستنتج دراسة مقارنة عبر الخدمات صورة أكثر اكتمالًا للمخاطر.

  • اختبار تكوينات SSH غير الافتراضية. UsePAM no، وحدات PAM مخصصة، أنظمة مصادقة Kerberos الخلفية، وإصدارات OpenSSH الأقدم (المنشورة في الأنظمة المضمنة، أجهزة الشبكة) قد تظهر تسريبات زمنية. اختبار نفس المسار ضد تكوين ضعيف عن عمد سيظهر التباين.

  • الكشف المباشر باستخدام inotify. يعمل الكشف الحالي بأثر رجعي مقابل ملف سجل منسوخ. ستستخدم نسخة بجودة إنتاجية inotify (أو tail -f + سلسلة محلل) للكشف والتنبيه في الوقت الحقيقي تقريبًا، في غضون ثوانٍ من بدء محاولة التعداد.

  • الكشف على مستوى الشبكة. Auth.log هو أثر قائم على المضيف. أكمله بكشف على مستوى الحزمة: اتصالات TCP قصيرة العمر للمنفذ 22 التي تغلق قبل إتمام المصافحة المصادقة هي توقيع للبصمة المستندة إلى الشعار فقط. يمكن تنفيذ ذلك كقاعدة Zeek أو Suricata.

  • دفاتر Jupyter للتقارير الإحصائية. بيانات التوقيت التي تم جمعها قابلة للتصور - مخططات صندوقية لتوزيعات التوقيت لكل اسم مستخدم، مخططات مبعثرة لتكرار المحاولة بمرور الوقت، خرائط حرارية لعناوين IP المصدر. ستجعل الدفاتر التحليل قابلاً للتكرار والمشاركة.


هيكل المشروع```

ssh-enumeration-analysis/ │ ├── README.md ├── run_investigation.py ← Full pipeline orchestrator (start here) ├── requirements.txt │ ├── src/ │ ├── attack_tools/ │ │ ├── init.py │ │ ├── manual_ssh.py ← Paramiko-based timing probe │ │ ├── banner_fingerprinter.py ← No-auth banner grab + CVE lookup │ │ ├── hydra_automation.py ← Hydra subprocess wrapper │ │ └── metasploit_scanner.py ← MSF console automation │ │ │ └── detection_tools/ │ ├── init.py │ ├── log_parser.py ← auth.log regex parser │ ├── response_analyzer.py ← Welch t-test + Cohen's d │ ├── pattern_detector.py ← 4 detection patterns │ └── alerting_system.py ← JSON alert emitter │ ├── data/ │ ├── sample-logs/ │ │ ├── auth-baseline.log ← Normal SSH activity (no attacks) │ │ ├── auth-hydra-run.log ← Captured during Hydra trial │ │ └── auth-msf-run.log ← Captured during Metasploit trial │ │ │ ├── wordlists/ │ │ ├── common-usernames-50.txt │ │ └── common-usernames-100.txt │ │ │ └── results/ ← Auto-generated (gitignored) │ ├── investigation-summary.json │ ├── manual-enumeration-results.json │ ├── timing-analysis.json │ └── detection-report.json │ ├── tests/ │ ├── test_enumeration.py │ ├── test_detection.py │ └── test_log_parser.py │ ├── case-study/ │ └── User_Enumeration_attempt_using_manual_SSH.docx │ └── screenshots/ ├── manual-ssh-same-response.png ├── hydra-no-enumeration-support.png ├── metasploit-hardened-detected.png ├── auth-log-hydra-evidence.png └── detection-alerts-output.png

root@kitploit:~
## ⚡ بداية سريعة```bash
# 1. Clone and install dependencies
git clone https://github.com/Alisha-chaudhary/ssh-enum
cd ssh-enum
pip install -r requirements.txt

# 2. Run just the banner fingerprint (no credentials needed)
python -c "
from src.attack_tools.banner_fingerprinter import BannerFingerprinter
r = BannerFingerprinter().grab('192.168.xx.xxxx')
print(r.raw_banner, r.cves)
"

# 3. Run the full investigation pipeline
python run_investigation.py \
    -target 192.168.xx.xxxx \
    -usernames data/wordlists/common-usernames-50.txt \
    -log data/sample-logs/auth-hydra-run.log \
    -known-valid root ubuntu \
    -samples 10

# 4. Analyse a log file only (no live target needed)
python -c "
from src.detection_tools.pattern_detector import EnumerationDetector
d = EnumerationDetector('data/sample-logs/auth-hydra-run.log')
import json; print(json.dumps(d.run_all(), indent=2))
"

متطلبات:``` paramiko>=3.3.1 scipy>=1.11.0 Hydra and Metasploit must be installed separately (pre-installed on Kali Linux).

root@kitploit:~
---

## 📚 المراجع

| المرجع                                                                                  | الصلة                                                |
|-----------------------------------------------------------------------------------------|------------------------------------------------------|
| [CVE-2016-6210](https://nvd.nist.gov/vuln/detail/CVE-2016-6210)                       | ثغرة التوقيت الجانبية التي اختبرها هذا المشروع       |
| [CVE-2024-6387 (regreSSHion)](https://nvd.nist.gov/vuln/detail/CVE-2024-6387)         | تنفيذ أوامر عن بُعد غير مصادق عليه في OpenSSH ≤ 9.7 |
| [دليل OpenSSH sshd_config](https://man.openbsd.org/sshd_config)                     | `UsePAM`، `MaxAuthTries`، `VersionAddendum`          |
| [OWASP — تعداد المستخدمين](https://owasp.org/www-community/attacks/User_Enumeration)  | أنماط هجوم التعداد العامة                            |
| [RFC 4252 — بروتوكول مصادقة SSH](https://tools.ietf.org/html/rfc4252)                 | مواصفات البروتوكول؛ تحدد سلوك رسائل الخطأ            |
| [توثيق fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page)                    | تحديد المعدل ومنع عنوان IP                           |

---

## 🎓 المهارات المُقدَّمة

| المجال                    | الدليل                                                                                                |
|---------------------------|-------------------------------------------------------------------------------------------------------|
| داخلية بروتوكول SSH       | فهم تسوية توقيت `UsePAM`، إصلاح CVE-2016-6210، كشف معلومات الشعار                                    |
| الأمن الهجومي             | استخدام عملي لـ Hydra و Metasploit واختبار Paramiko المخصص في منهجية منظمة                             |
| التحليل الإحصائي          | اختبار t الخاص بـ Welch، معامل d الخاص بـ Cohen، معامل التباين المطبق على بيانات التوقيت              |
| هندسة الكشف               | كشف مؤشرات الاختراق المستندة إلى السجلات عبر أربعة أنواع من الأنماط؛ إخراج تنبيه منظم                  |
| هندسة بايثون              | فئات البيانات، تلميحات الأنواع، أتمتة العمليات الفرعية، تحليل التعبيرات العادية، المكتبات الإحصائية   |
| البحث الأمني              | فرضية → تجربة مضبوطة → جمع أدلة → نتائج موثقة → استنتاجات قابلة للتنفيذ                               |

---

**الحالة:** مكتمل | **تم الاختبار على:** Ubuntu Server 22.04 LTS + OpenSSH 8.9p1 | Kali Linux 2024.1
تنزيل الأداة