
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
(*) يمكن ترقيتها يدويًا إلى 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 تعطيل الطوابع الزمنية الملونة في السجلات
Misc:
-M, --menu البدء في القائمة الرئيسية
-m, --maintain الاحتفاظ بـ N جلسة لكل هدف
-S, --single-session استيعاب الجلسة الأولى فقط المنشأة
-ms, --max-sessions الحد الأقصى للجلسات النشطة لكل مضيف (الافتراضي 5، 0 = رفض جميع الجديدة)
-C, --no-attach عدم الإرفاق التلقائي عند الجلسات الجديدة
-U, --no-upgrade تعطيل الترقية التلقائية للشل
-H, --keep-history الاحتفاظ بتاريخ شل الهدف (لا تضبط HISTFILE=/dev/null)
-O, --oscp-safe تمكين وضع الآمن OSCP
--no-disk الاحتفاظ بكل الحالة في RAM (tmpfs)؛ لا شيء يثبت على القرص
MCP:
--mcp تمكين خادم MCP عبر HTTP المحلي
--mcp-host المضيف/IP للربط (الافتراضي: 127.0.0.1)
--mcp-port المنفذ للربط (الافتراضي: منفذ محفوظ، وإلا منفذ عشوائي حر محفوظ إلى ~/.penelope/mcp.json)
--mcp-token رمز الحامل (الافتراضي: رمز محفوظ، وإلا يتم إنشاؤه تلقائيًا وحفظه)
File server:
-s, --serve تشغيل وضع خادم ملفات HTTP
-prefix, --url-prefix بادئة مسار URL
-u, --upload تمكين رفع الملفات (PUT/POST) إلى الخادم
-ud, --upload-dir الدليل لتخزين الرفوعات (الافتراضي: CWD)
Debug:
-N, --no-bins محاكاة فقدان الملفات الثنائية على الهدف (مفصولة بفواصل)
-v, --version طباعة الإصدار والخروج
-d, --debug تمكين مخرجات التصحيح
-dd, --dev-mode تمكين وضع المطور
-cu, --check-urls فحص صحة عناوين URL المضمنة والخروج
تم تصميم Penelope لتوفير تفاعل مباشر ومرن مع الشلات البعيدة. ضع ما يلي في الاعتبار عند استخدامه:
تسلسلات الهروب الطرفية: يقوم Penelope بتمرير مخرجات الطرفية من الأنظمة البعيدة مباشرة إلى محاكي الطرفية الخاص بك. قد تستخدم العمليات البعيدة الضارة تسلسلات هروب طرفية للتلاعب بالشاشة، أو إنشاء روابط مضللة، أو التفاعل مع ميزات مثل الحافظة. هذا التعرض متأصل في أي أداة تقوم بنقل شل بعيد إلى الطرفية المحلية (مثل SSH وtelnet وnetcat) وليس خاصًا بـ Penelope. استخدم طرفية بإعدادات أمان مناسبة عند الاتصال بأنظمة غير موثوقة.
سجلات الجلسة: قد تحتوي سجلات الجلسة على بيانات اعتماد ورموز وأوامر ومعلومات حساسة أخرى واردة من الهدف. قم بتخزينها بشكل آمن واستخدم --no-log عندما لا يكون التسجيل مطلوبًا.
اتصالات غير مشفرة: اتصالات الشل العكسي والمرتبط القياسية ليست مشفرة. تجنب استخدامها عبر شبكات غير موثوقة ما لم تكن الحركة محمية بنفق آمن أو VPN.
خادم MCP (--mcp): عند تمكينه، يمنح خادم MCP التحكم الكامل في كل جلسة نشطة (تنفيذ الأوامر، نقل الملفات) لأي عميل يحمل رمز الحامل، المخزن في ~/.penelope/mcp.json (0600). يتم ربطه بـ 127.0.0.1 وهو معتمد على الرمز. احتفظ بالرمز سريًا وتجنب تعريض الخادم على شبكات غير موثوقة.
⚖️ إخلاء مسؤولية: Penelope مخصص فقط لاختبار الأمان المصرح به وأغراض البحث والتعليم. لا تستخدمه ضد أنظمة دون إذن صريح.
cat قد يبدو تالفًا. من المخطط تصفية هذه التسلسلات لجعل مخرجات السجل أكثر سلاسة.ميزات التعامل الأساسية مع الشل في Penelope لا تقوم بالاستغلال التلقائي، مما يجعلها مناسبة لاستخدامات OSCP. ومع ذلك، يمكن أن تتغير قواعد الاختبار، لذا تحقق دائمًا من قواعد OffSec الحالية قبل استخدام أي أداة أثناء الامتحان.
بعض الوحدات تتطلب حذرًا إضافيًا:
إذا كنت تريد تجنب مخالفات قواعد غير مقصودة، استخدم المفتاح -O / --oscp-safe.
يعتمد ذلك على نوع ترقية الشل المستخدمة:
F12Ctrl-D)Ctrl-C)في جميع الأحوال، يتم دائمًا عرض المفتاح الصحيح عند الإرفاق بجلسة. على سبيل المثال:

انظر peneloperc
هذا يعني عادةً أنك فتحت شلًا تفاعليًا جديدًا، ربما تحت مستخدم مختلف. يتتبع وكيل Penelope فقط دليل الشل الأولي ويحتفظ بأذونات المستخدم من ذلك الشل الأول. أفضل حل بديل هو استخدام cd /tmp قبل فتح شل جديد، أو، إذا قمت بتبديل المستخدمين، قم بإطلاق شل عكسي جديد كمستخدم جديد.
مساهماتك لا تقدر بثمن! إذا كنت ترغب في المساعدة، يرجى الإبلاغ عن الأخطاء أو السلوكيات غير المتوقعة أو مشاركة أفكار جديدة. يمكنك أيضًا تقديم طلبات سحب ولكن تجنب عمل التزامات من IDEs التي تفرض PEP8 وتعيد هيكلة قاعدة الكود بأكملها عن غير قصد.
كانت بينيلوب زوجة أوديسيوس وتشتهر بولائها وصبرها أثناء انتظار عودته. سميت الأداة باسمها لأنها بنيت لتكون معالج شل مخلصًا ومستقرًا لسير العمل التي تتجاوز المستمع الأساسي.
| الميزة | الهدف الشبيه بـ Unix | الهدف Windows |
|---|
| الترقية التلقائية للشل | PTY | readline(*) |
| تغيير حجم الطرفية في الوقت الفعلي | ✅ | ❌ |
| تسجيل نشاط الشل | ✅ | ✅ |
| تنزيل الملفات/المجلدات البعيدة | ✅ | ✅ |
| رفع الملفات/المجلدات المحلية/عبر HTTP | ✅ | ✅ |
| تنفيذ النصوص المحلية/عبر HTTP في الذاكرة مع تنزيل النتائج في الوقت الفعلي | ✅ | ❌ |
| إعادة توجيه المنفذ المحلي | ✅ | ❌ |
| إطلاق شلات على علامات تبويب و/أو مضيفين متعددين | ✅ | ❌ |
| الحفاظ التلقائي على N من الشلات النشطة لكل مضيف (إعادة الإطلاق عند الموت) | ✅ | ❌ |