Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
SSHintel — مستودع SSH وهمي مستقل لالتقاط تفاعلات المهاجمين وتحويلها إلى استخبارات أمنية منظمة. | Kitploit
أدوات/GitHubGitHub/sonitbahl/sshintel
أمن الشبكاتاستخبارات التهديداتكشف التسللالاستجابة للحوادثتحليل السجلات
GitHubsonitbahl/sshintel

SSHintel

مستودع SSH وهمي مستقل لالتقاط تفاعلات المهاجمين وتحويلها إلى استخبارات أمنية منظمة.

عرض المستودع
378منذ 2 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

SSHintel — مصيدة SSH خفيفة الوزن

License: MIT Python Last Commit Repo Size

SSHintel هي مصيدة SSH خفيفة الوزن مبنية باستخدام Python وParamiko. وهي تحاكي صدفة Linux وهمية لتسجيل محاولات الوصول غير المصرح بها، والتقاط بيانات الاعتماد، وتحليل سلوك المهاجمين في بيئة مُتحكَّم بها.


🔧 الميزات

  • تسجيل محاولات تسجيل الدخول عبر SSH مع عنوان IP واسم المستخدم وكلمة المرور
  • توفير صدفة Linux محاكاة (بيئة وهمية في الذاكرة)
  • دعم مجموعة واسعة من أوامر الاستطلاع والتنقل (ls، cd، pwd، cat، echo، grep، find، tree، head، tail، wc، stat، ps، df، free، env، id، whoami، وغيرها)
  • وضع --tarpit اختياري لإبطاء المهاجمين عبر تأخير الإخراج
  • نظام ملفات وهمي معزول لكل جلسة مع دعم إنشاء الملفات وقراءتها
  • لوحة تحكم ويب محلية لتصوّر بيانات القياس الأمنية الملتقطة (الجلسات، الأوامر، محاولات المصادقة، أبرز المهاجمين)
  • عرض تحقيق الجلسة — اختر أي جلسة وأعد بناء الجدول الزمني الكامل للهجوم بترتيب زمني، بما في ذلك عنوان IP المصدر، ونتيجة المصادقة، وكل أمر تم تنفيذه مع دليل العمل الخاص به، ومدة الجلسة
  • كل شيء محاكى — لا تُنفَّذ الأوامر أبدًا على المضيف، ولا تصل إلى نظام الملفات الحقيقي، ولا تُجري أي طلبات شبكية.

SSHintel ليست صدفة Bash/Linux كاملة. إنها تحاكي مجموعة فرعية معقولة من الأوامر الشائعة لجمع بيانات القياس الخاصة بالمهاجمين. يتم توزيع الأوامر عبر سجل خفيف الوزن؛ وإضافة أمر تعني إضافة دالة معالج صغيرة.


🛠️ الإعداد

1. 📦 تثبيت التبعيات

pip install -r requirements.txt

ملاحظة: يتم إنشاء مفتاح مضيف SSH تلقائيًا عند التشغيل الأول. لا حاجة لإنشاء المفتاح يدويًا.


🚀 تشغيل المصيدة

شغّل المصيدة بمنفذ واسم مستخدم وكلمة مرور محددة:

python3 run.py serve --port 2222 --username user1 --password pass123

المنفذ الافتراضي هو 2222 والمضيف هو 0.0.0.0.

يقوم الـ honeypot بإنشاء مفتاح مضيف SSH تلقائيًا في static/server.key عند التشغيل الأول إذا لم يكن موجودًا. لا حاجة لإنشاء المفتاح يدويًا.

لتفعيل وضع tarpit:

python3 run.py serve --port 2222 --username user1 --password pass123 --tarpit

لتعطيل قياس SQLite (JSONL فقط):

python3 run.py serve --port 2222 --username user1 --password pass123 --no-db

ملفات التهيئة ومتغيرات البيئة

تستخدم إعدادات المستشعر CLI > environment > configuration file > defaults. فقط أعلام CLI المقدمة صراحةً تتجاوز المصادر الأخرى. ينطبق هذا على serve؛ تحتفظ أوامر لوحة المعلومات/الاستعلام بإعدادات CLI الخاصة بها.

على Python 3.11+:

cp sshintel.toml.example sshintel.toml
chmod 600 sshintel.toml
python3 run.py serve

على Python 3.8/3.10، استخدم المكافئ JSON الخالي من التبعيات:

cp sshintel.json.example sshintel.json
chmod 600 sshintel.json
python3 run.py serve

حرّر الملف المنسوخ قبل النشر. يتطلب TOML الإصدار 3.11+ من Python؛ وتفشل الإصدارات الأقدم مع تعليمات واضحة لاستخدام JSON. وعند عدم وجود ملف صريح، يبحث SSHintel عن sshintel.toml، ثم sshintel.json في الدليل الحالي. استخدم serve --config /path/to/settings.json أو HONEYPOT_CONFIG لاختيار ملف آخر (يفوز --config). وتفشل الملفات الصريحة المفقودة، والملفات المشوّهة، والمفاتيح غير المعروفة، والقيم غير الصالحة قبل بدء الخادم أو قاعدة البيانات. مسارات الملفات داخل الإعدادات نسبية إلى دليل عمل العملية، وليس إلى ملف الإعدادات.

مفتاح الملفمتغير البيئةالقيمة الافتراضية
hostHONEYPOT_HOST0.0.0.0
portHONEYPOT_PORT (اسم بديل قديم: PORT)2222
usernameHONEYPOT_USERNAMEuser1
passwordHONEYPOT_PASSWORDpass123
tarpitHONEYPOT_TARPITfalse
tarpit_max_secondsHONEYPOT_TARPIT_MAX_SECONDS120
max_connectionsHONEYPOT_MAX_CONNECTIONS50
auth_timeoutHONEYPOT_AUTH_TIMEOUT60
session_idle_timeoutHONEYPOT_SESSION_IDLE_TIMEOUT300
sensor_idHONEYPOT_SENSOR_IDغير مضبوط
db_pathHONEYPOT_DB_PATHdata/sshintel.db
no_dbHONEYPOT_NO_DBfalse
fetch_payloadsHONEYPOT_FETCH_PAYLOADSfalse (محجوز)

تقبل القيم المنطقية في متغيرات البيئة true/false و1/0 وyes/no وon/off. وتأخذ HONEYPOT_PORT الأولوية على PORT. يجب أن تكون المنافذ بين 1 و65535، ويجب أن تكون الحدود والمهلات أعدادًا صحيحة موجبة. استخدم --no-tarpit أو --db-enabled أو --no-fetch-payloads لتجاوز إعداد صحيح ذي أولوية أدنى. تستخدم مسارات قاعدة البيانات علامة --db الحالية في سطر الأوامر. جلب الحمولات غير مُنفَّذ: يُرفض تفعيل fetch_payloads بدلًا من تجاهله بصمت.

تُستثنى ملفات sshintel.toml/sshintel.json المحلية من Git ومن عمليات بناء Docker لأنها قد تحتوي على بيانات اعتماد. بدلًا من ذلك، اربط ملف إعدادات للقراءة فقط داخل حاوية. تستهلك Docker متغيرات البيئة مباشرةً (دون إجراء استبدال shell لبيانات الاعتماد)؛ وتأخذ قيم ENV الافتراضية الحالية الأولوية على ملف مربوط. تجاوز تلك المتغيرات حسب الحاجة أو استخدم علامات CLI صريحة.

🛡️ حدود الاتصال والمهلات

يحمي SSHintel من استنزاف الموارد الناتج عن كثرة الاتصالات المتزامنة أو الاتصالات التي تبقى نشطة إلى أجل غير مسمى. ويمكن ضبط هذه عبر CLI:

العلامةالافتراضيالغرض
--max-connections50الحد الأقصى للاتصالات النشطة المتزامنة؛ تُرفض الاتصالات الإضافية وتُسجَّل كحدث connection_rejected
--auth-timeout60 (ث)الوقت المسموح لإكمال مصافحة SSH/المصادقة؛ تُفصل العملاء المتوقفة
--session-idle-timeout300 (ث)مهلة الخمول لجلسة shell مصادَق عليها؛ تُنهى الجلسة الخاملة، لكن المهاجم الذي يكتب بنشاط لا يُقتل أبدًا

مثال:

python3 run.py serve --port 2222 --username user1 --password pass123 \
  --max-connections 25 --auth-timeout 30 --session-idle-timeout 300

عندما تكون اتصالات كثيرة مفتوحة، يُغلق الاتصال الإضافي فورًا وتُكتب حادثة أمنية connection_rejected (مع reason: connection_limit) في سجل JSONL. تُسجَّل المصادقة المتوقفة كقطع اتصال مع reason: auth_timeout؛ وتنتهي الصدفة الخاملة بـ reason: idle_timeout.

يرسل وضع Tarpit المخرجات ببطء عمدًا لإبقاء المهاجم منشغلًا، لذا لا تخضع حلقة لافتة tarpit لمهلة الخمول — لكن جلسات tarpit تُحتسب ضمن حد الاتصالات.


📊 لوحة المعلومات

تتضمن SSHinteL لوحة معلومات ويب محلية تعرض القياسات الأمنية المخزنة في SQLite.

تشغيل لوحة المعلومات

python3 run.py dashboard

ثم افتح http://localhost:5000 في متصفحك.

تقرأ لوحة المعلومات من قاعدة بيانات SQLite الموجودة في data/sshintel.db افتراضيًا. ابدأ تشغيل المصيدة أولًا حتى يتم التقاط البيانات التليمترية، ثم شغّل لوحة المعلومات لمشاهدتها وهي تُملأ.

ما الذي تعرضه

  • بطاقات مؤشرات الأداء الرئيسية — إجمالي الجلسات، وعناوين IP المصدر الفريدة، ومحاولات المصادقة، وعمليات المصادقة الناجحة/الفاشلة، والأوامر المنفذة
  • مخطط النشاط — الاتصالات بمرور الوقت، مجمّعة حسب الساعة
  • الأوامر الأكثر تكرارًا — أوامر المهاجمين الأكثر تنفيذًا
  • أسماء المستخدمين المستهدفة — أسماء المستخدمين التي يحاول المهاجمون استخدامها
  • الجلسات الأخيرة — انقر على أي معرّف جلسة للتحقيق فيه
  • النشاط الأخير — أحدث الأحداث التليمترية في جدول قابل للبحث

التحقيق في الجلسة

انقر على معرّف جلسة (أو انتقل إلى /session/<session_id>) لفتح عرض التحقيق في الجلسة، الذي يعيد بناء هجوم واحد بترتيب زمني:

  • ملخص الجلسة — عنوان IP المصدر، واسم المستخدم، وأوقات البدء/الانتهاء، والمدة، ونتيجة المصادقة، وسبب قطع الاتصال
  • الخط الزمني للهجوم — كل حدث (الاتصال، ومحاولات المصادقة، والأوامر، وقطع الاتصال) بترتيب زمني
  • تسلسل الأوامر — عرض مختصر بصيغة $ command لكل ما كتبه المهاجم، مع أدلة العمل

سير عمل نموذجي

# Terminal 1: start the honeypot
python3 run.py serve --port 2222 --username user1 --password pass123

# Terminal 2: start the dashboard
python3 run.py dashboard

# Terminal 3: simulate an attacker
ssh user1@localhost -p 2222
# (run some commands, then exit)

ثم افتح http://localhost:5000 لفحص النشاط المُلتقط.

تنزيل الأداة