
Penelope Shell Handler
Penelope पैठ परीक्षकों और CTF खिलाड़ियों के लिए एक आधुनिक शेल हैंडलर है। यह बुनियादी netcat लिसनरों की तुलना में अधिक सक्षम विकल्प प्रदान करता है, जिसमें स्वचालित PTY अपग्रेड, सत्र प्रबंधन, लॉगिंग, फ़ाइल स्थानांतरण और सहायक मॉड्यूल शामिल हैं।
Penelope यूनिक्स-जैसे सिस्टम (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
(*) upgrade कमांड से मैन्युअल रूप से PTY में अपग्रेड किया जा सकता है
⚠️ विंडोज समर्थन प्रायोगिक है और सक्रिय विकास के अधीन है।
set DisablePayloadHandler True के साथ डिफ़ॉल्ट हैंडलर को अक्षम करके Metasploit एक्सप्लॉइट्स के साथ मिलकर काम कर सकता है--mcp स्विच के साथ लाइव सत्रों को MCP क्लाइंट (जैसे Claude Code) के लिए उजागर करें (स्थानीय 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 # स्थानीय पोर्ट 4444 पर लक्ष्य से रिवर्स शेल प्राप्त करें
penelope -p 5555 ssh user@target # स्थानीय पोर्ट 5555 पर लक्ष्य से रिवर्स शेल प्राप्त करें
penelope -i eth0 -p 5555 -- ssh -l user -p 2222 target # eth0 पर, स्थानीय पोर्ट 5555 पर लक्ष्य से रिवर्स शेल प्राप्त करें (यदि ssh को स्विच की आवश्यकता हो तो -- का उपयोग करें)
penelope -s <File/Folder> # HTTP के माध्यम से एक फ़ाइल या फ़ोल्डर साझा करें

-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 # अपलोड मोड: CWD में 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 दबाने की आवश्यकता है। यदि अपग्रेड संभव नहीं था और आप एक बुनियादी शेल के साथ समाप्त हुए हैं, तो आप इसे Ctrl+C से अलग कर सकते हैं। यह शेल की आकस्मिक हत्या को भी रोकता है।interact 1 के बजाय आप केवल i 1 टाइप कर सकते हैं।
positional arguments:
args -s/--serve और SSH रिवर्स शेल मोड के लिए तर्क
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 स्थानीय HTTP पर MCP सर्वर सक्षम करें
--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 स्विच का उपयोग करें।
यह उपयोग में शेल अपग्रेड के प्रकार पर निर्भर करता है:
F12 दबाएंCtrl-D) भेजेंCtrl-C) भेजेंकिसी भी स्थिति में, जब आप किसी सत्र से अटैच होते हैं तो सही कुंजी हमेशा प्रदर्शित होती है। उदाहरण के लिए:

देखें peneloperc
इसका आमतौर पर मतलब है कि आपने एक नया इंटरैक्टिव शेल खोला है, संभवतः किसी भिन्न उपयोगकर्ता के अंतर्गत। Penelope एजेंट केवल प्रारंभिक शेल की निर्देशिका को ट्रैक करता है और उस पहले शेल के उपयोगकर्ता की अनुमतियों को बनाए रखता है। सबसे अच्छा काम यह है कि एक नया शेल खोलने से पहले cd /tmp करें, या यदि आपने उपयोगकर्ता बदल दिया है, तो नए उपयोगकर्ता के रूप में एक नया रिवर्स शेल स्पॉन करें।
आपका योगदान अमूल्य है! यदि आप मदद करना चाहते हैं, तो कृपया बग, अप्रत्याशित व्यवहार की रिपोर्ट करें, या नए विचार साझा करें। आप पुल रिक्वेस्ट भी सबमिट कर सकते हैं लेकिन IDEs से कमिट करने से बचें जो PEP8 लागू करते हैं और अनजाने में पूरे कोडबेस को पुनर्गठित कर सकते हैं।
Penelope ओडीसियस की पत्नी थी और उसके लौटने की प्रतीक्षा करते समय अपनी वफादारी और धैर्य के लिए जानी जाती है। उपकरण का नाम उसके नाम पर रखा गया है क्योंकि इसे बुनियादी लिसनर से परे कार्यप्रवाह के लिए एक वफादार और स्थिर शेल हैंडलर बनाया गया था।
| विशेषता | यूनिक्स-जैसा लक्ष्य | विंडोज लक्ष्य |
|---|
| ऑटो-अपग्रेड शेल | PTY | readline(*) |
| रीयल-टाइम टर्मिनल आकार परिवर्तन | ✅ | ❌ |
| शेल गतिविधि लॉगिंग | ✅ | ✅ |
| दूरस्थ फ़ाइलें/फ़ोल्डर डाउनलोड करें | ✅ | ✅ |
| स्थानीय/HTTP फ़ाइलें/फ़ोल्डर अपलोड करें | ✅ | ✅ |
| रीयल-टाइम आउटपुट डाउनलोड के साथ इन-मेमोरी स्थानीय/HTTP स्क्रिप्ट निष्पादन | ✅ | ❌ |
| स्थानीय पोर्ट फ़ॉरवर्डिंग | ✅ | ❌ |
| एकाधिक टैब और/या होस्ट पर शेल स्पॉन करें | ✅ | ❌ |
| प्रति होस्ट N सक्रिय शेल को स्वचालित रूप से बनाए रखें (मृत्यु पर पुनः स्पॉन) | ✅ | ❌ |