
Penelope Shell Handler
Penelope هو معالج شل حديث لمختبرَي الاختراق ولاعبي CTF. يوفر بديلاً أكثر قدرةً من مستمعات netcat الأساسية، مع إضافة ترقيات PTY تلقائية، وإدارة الجلسات، والتسجيل، ونقل الملفات، والوحدات المساعدة.
يعمل Penelope على الأنظمة الشبيهة بـ Unix، بما في ذلك Linux وmacOS وFreeBSD، ويتطلب Python 3.6+.
يتوفر Penelope في Kali Linux:
sudo apt update
sudo apt install penelope
تم تنفيذ Penelope بالكامل باستخدام المكتبة القياسية لـ Python، مما يسمح بتشغيله كنص برمجي مستقل دون أي تبعيات خارجية:
wget -q https://raw.githubusercontent.com/brightio/penelope/refs/heads/main/penelope.py && python3 penelope.py
لتثبيت أحدث إصدار من المنبع مباشرةً من GitHub:
pipx install git+https://github.com/brightio/penelope
للحصول على مسار إصدار محدد وأكثر استقرارًا، يتوفر Penelope أيضًا على PyPI:
pipx install penelope-shell-handler
| الميزة | الهدف الشبيه بـ Unix | الهدف Windows |
|---|---|---|
| الترقية التلقائية للشل | PTY | readline(*) |
| تغيير حجم الطرفية في الوقت الفعلي | ✅ | ❌ |
| تسجيل نشاط الشل | ✅ | ✅ |
| تنزيل الملفات/المجلدات البعيدة | ✅ | ✅ |
| رفع الملفات/المجلدات المحلية/عبر HTTP | ✅ | ✅ |
| تنفيذ النصوص المحلية/عبر HTTP في الذاكرة مع تنزيل النتائج في الوقت الفعلي | ✅ | ❌ |
| إعادة توجيه المنفذ المحلي | ✅ | ❌ |
| إطلاق شلات على علامات تبويب و/أو مضيفين متعددين | ✅ | ❌ |
| الحفاظ التلقائي على N من الشلات النشطة لكل مضيف (إعادة الإطلاق عند الموت) | ✅ | ❌ |
(*) يمكن ترقيتها يدويًا إلى PTY باستخدام الأمر upgrade
⚠️ دعم Windows تجريبي قيد التطوير النشط.
set DisablePayloadHandler True--mcp (HTTP محلي، معتمد على رمز مميز)، لتوجيه نفس الشلات بجانبك

penelope # الاستماع للشلات العكسية على 0.0.0.0:4444
penelope -p 5555 # الاستماع للشلات العكسية على 0.0.0.0:5555
penelope -p 4444,5555 # الاستماع للشلات العكسية على 0.0.0.0:4444 و 0.0.0.0:5555
penelope -i eth0 -p 5555 # الاستماع للشلات العكسية على eth0:5555
penelope -a # الاستماع للشلات العكسية على 0.0.0.0:4444 وعرض أمثلة لشلات عكسية
penelope -c target -p 3333 # الاتصال بشل مرتبط على target:3333
penelope ssh user@target # الحصول على شل عكسي من target على المنفذ المحلي 4444
penelope -p 5555 ssh user@target # الحصول على شل عكسي من target على المنفذ المحلي 5555
penelope -i eth0 -p 5555 -- ssh -l user -p 2222 target # الحصول على شل عكسي من target على eth0، منفذ محلي 5555 (استخدم -- إذا كان ssh يحتاج مفاتيح)

-s)يمكن استخدام Penelope أيضًا كخادم ملفات HTTP سريع.
penelope -s file.txt # تقديم ملف واحد على 0.0.0.0:8000
penelope -s /path/to/dir # تقديم مجلد كامل
penelope -s a.sh b.elf notes.txt # تقديم عدة عناصر مرة واحدة
penelope -s . -p 80 # تقديم الدليل الحالي على المنفذ 80
penelope -s secret.txt -prefix xk9 # الإخفاء وراء بادئة URL: /xk9/secret.txt
penelope -s -u # وضع الرفع: قبول PUT/POST في دليل العمل الحالي
penelope -s -u -ud /tmp/loot # وضع الرفع، تخزين الملفات المستقبلة في /tmp/loot
عند البدء، يطبع Penelope رابطًا جاهزًا للاستخدام لكل واجهة (وتلميحة رفع عند تعيين -u)، بحيث يمكنك نسخها ولصقها مباشرة في شل الهدف.
كما هو موضح في الفيديو أدناه، في غضون ثوانٍ قليلة فقط يمكننا:
https://github.com/brightio/penelope/assets/65655412/7295da32-28e2-4c92-971f-09423eeff178
ملاحظات:
F12 لفصل شل PTY والذهاب إلى القائمة الرئيسية. إذا تعذرت الترقية وانتهى بك الأمر بشل أساسي، يمكنك فصله بـ Ctrl+C. هذا يمنع أيضًا القتل العرضي للشل.interact 1 يمكنك فقط كتابة i 1.
positional arguments:
args الوسائط لأوضاع -s/--serve و SSH reverse shell
options:
-p, --ports المنافذ (مفصولة بفواصل) للاستماع/الاتصال/التقديم حسب خيارات -i/-c/-s
(الافتراضي: 4444/5555/8000)
Reverse or Bind shell?:
-i, --interface الواجهة المحلية/IP للاستماع. (الافتراضي: 0.0.0.0)
-c, --connect مضيف الشل المرتبط
-j, --jump نقاط نهاية القفز للشل العكسي
Hints:
-a, --payloads عرض أمثلة لشلات عكسية للمستمعين النشطين
-l, --interfaces سرد واجهات الشبكة المتاحة
-h, --help عرض رسالة المساعدة هذه والخروج
Session Logging:
-L, --no-log تعطيل ملفات سجل الجلسة
-T, --no-timestamps تعطيل الطوابع الزمنية في السجلات
-CT, --no-colored-timestamps تعطيل الطوابع الزمنية الملونة في السجلات