
पोस्ट-एक्सप्लॉइटेशन प्लेटफॉर्म जो रिवर्स/बाइंड शेल के माध्यम से एनुमरेशन, प्रिविलेज एस्केलेशन, पर्सिस्टेंस और C2 ऑपरेशन को स्वचालित करता है, जिसमें लिनक्स और विंडोज के लिए क्रॉस-प्लेटफॉर्म सपोर्ट है।
pwncat एक पोस्ट-एक्सप्लॉइटेशन प्लेटफॉर्म है लिनक्स लक्ष्यों के लिए। इसकी शुरुआत बेसिक बाइंड और रिवर्स शेल के रैपर के रूप में हुई थी और तब से यह विकसित हुआ है। यह आपके अटैकर मशीन से कोड स्टेज करते हुए सामान्य रेड टीम ऑपरेशन को सुव्यवस्थित करता है, न कि लक्ष्य से।
pwncat पहले केवल लिनक्स को सपोर्ट करता था, लेकिन हाल ही में कई प्लेटफार्मों को सपोर्ट करने के लिए बहुत काम किया गया है। वर्तमान में, विंडोज लक्ष्यों के लिए अल्फा सपोर्ट है। कृपया विंडोज लक्ष्य के साथ pwncat का उपयोग करने के विवरण के लिए नवीनतम दस्तावेज़ीकरण देखें।
pwncat रिमोट शेल के साथ कच्चे संचार को इंटरसेप्ट करता है और उपयोगकर्ता को रिमोट होस्ट पर स्वचालित क्रियाएं करने की अनुमति देता है, जिसमें एनुमरेशन, इम्प्लांट इंस्टॉलेशन और यहां तक कि प्रिविलेज एस्केलेशन भी शामिल है।
कनेक्शन प्राप्त करने के बाद, pwncat रिमोट शेल के साथ काम करने के लिए कुछ सामान्य कॉन्फ़िगरेशन सेटअप करेगा।
which का उपयोग करके)pwncat कुछ अलग-अलग तरीकों से pty स्पॉन करना जानता है और पहले से एनुमरेटेड एक्सीक्यूटेबल्स के साथ विधियों को क्रॉस-रेफरेंस करेगा। pty स्पॉन करने के बाद, यह कंट्रोलिंग टर्मिनल को रॉ मोड में सेटअप करेगा, ताकि आप ssh के समान तरीके से इंटरैक्ट कर सकें।
pwncat रिमोट pty सेटिंग्स (जैसे पंक्तियाँ, कॉलम, TERM पर्यावरण चर) को आपकी स्थानीय सेटिंग्स के साथ सिंक्रोनाइज़ करेगा ताकि यह सुनिश्चित हो सके कि शेल इंटरैक्टिव एप्लिकेशन जैसे vim या nano के साथ सही व्यवहार करता है।
John Hammond और मैंने GRIMMCon में pwncat प्रस्तुत किया। हमारी प्रस्तुति, जो YouTube पर यहाँ पाई जा सकती है। यह वीडियो API और इंटरफ़ेस के एक प्रारंभिक संस्करण को प्रदर्शित करता है। कृपया अद्यतन उपयोग और API दस्तावेज़ीकरण के लिए दस्तावेज़ीकरण देखें!
pwncat दस्तावेज़ीकरण Read the Docs पर बनाया जा रहा है। नवीनतम उपयोग और विकास दस्तावेज़ीकरण के लिए वहाँ जाएँ!
pwncat के लिए लिनक्स पर Python 3.9+ आवश्यक है
pwncat केवल लिनक्स पर चलने वाले एक कार्यशील Python विकास वातावरण पर निर्भर करता है। pip के साथ आवश्यक कुछ पैकेज स्थापित करने के लिए, आपको संभवतः अपने वितरण के "Python विकास" पैकेज की आवश्यकता होगी। Debian-आधारित सिस्टम पर, यह python-dev है। Arch के लिए, विकास फ़ाइलें मुख्य Python रिपॉजिटरी के साथ भेजी जाती हैं। Enterprise Linux के लिए, पैकेज का नाम python-devel है।
pwncat को PyPI पर pwncat-cs नाम से प्रकाशित किया जाता है, और इसे pip के साथ इस प्रकार स्थापित किया जा सकता है:
pip install pwncat-cs
हालाँकि, pwncat को वर्चुअल एनवायरनमेंट से स्थापित करने की अनुशंसा की जाती है।
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs
विकास वातावरण के लिए, pwncat Python Poetry का उपयोग करता है। आप रिपॉजिटरी को स्थानीय रूप से क्लोन कर सकते हैं और विकास वातावरण सेट करने के लिए poetry का उपयोग कर सकते हैं।
# Setup pwncat inside a poetry-managed virtual environment
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install
# Enter the virtual environment
poetry shell
Cytopia के pwncat के साथ नामकरण टकराव के कारण, मैंने पैकेज का नाम बदलकर pwncat-cs करने का निर्णय लिया है। इसमें एंट्रीपॉइंट का नाम बदलना शामिल है ताकि Cytopia के प्रोजेक्ट के साथ कोई सीधा टकराव न हो। यदि आप v0.4.* से अपडेट कर रहे हैं, तो कमांड का नाम अब बदल गया होगा, और pcat और pc वेरिएंट हटा दिए गए हैं। अधिक विवरण के लिए नवीनतम रिलीज़ नोट्स देखें।
इस कदम का अतिरिक्त लाभ यह है कि परियोजना अब भविष्य में आसान स्थापना/अपडेट के लिए PyPI पर प्रकाशित हो गई है।
pwncat अब v0.4.0a1 से विंडोज लक्ष्यों से कनेक्शन का समर्थन करता है। विंडोज प्लेटफ़ॉर्म एक .Net-आधारित C2 लाइब्रेरी का उपयोग करता है जो स्वचालित रूप से लोड होती है। विंडोज लक्ष्यों को cmd.exe या powershell.exe शेल के साथ कनेक्ट होना चाहिए, और pwncat बाकी का ध्यान रखेगा।
C2 को लागू करने वाली लाइब्रेरी pwncat-windows-c2 पर लागू की गई हैं। C2 के DLL आपके लिए लक्षित रिलीज़ से स्वचालित रूप से डाउनलोड होंगे। यदि आपके पास अपने लक्ष्य मशीन पर इंटरनेट कनेक्टिविटी नहीं है, तो आप --download-plugins तर्क का उपयोग करके pwncat को DLL को पहले से स्टेज करने के लिए कह सकते हैं। यदि आप pwncat का रिलीज़ संस्करण चला रहे हैं, तो आप रिलीज़ पेज से सभी बिल्ट-इन प्लगइन्स का tarball भी डाउनलोड कर सकते हैं।
प्लगइन्स डिफ़ॉल्ट रूप से ~/.local/share/pwncat में संग्रहीत होते हैं, हालाँकि यह plugin_path कॉन्फ़िगरेशन के साथ कॉन्फ़िगर करने योग्य है। यदि आप रिलीज़ पेज से प्लगइन्स का पैकेज्ड सेट डाउनलोड करते हैं, तो आपको इसे plugin_path द्वारा इंगित पथ पर निकालना चाहिए।
मुख्य C2 DLL के अलावा, अन्य प्लगइन्स भी उपलब्ध हो सकते हैं। वर्तमान में, उपलब्ध एकमात्र डिफ़ॉल्ट प्लगइन्स C2 और BadPotato का कार्यान्वयन हैं। pwncat C2 के लिए प्लगइन के रूप में उपयोग करने के लिए .Net बाइनरी को रिफ्लेक्टिव रूप से लोड कर सकता है। विंडोज C2 प्लगइन्स पर अधिक जानकारी के लिए, कृपया दस्तावेज़ीकरण देखें।
हाल ही में, pwncat फ्रेमवर्क की आर्किटेक्चर को एक सामान्य "मॉड्यूल" संरचना को शामिल करने के लिए फिर से डिज़ाइन किया गया था। सभी कार्यक्षमता अब मॉड्यूल के रूप में लागू की गई है। इसमें एनुमरेशन, पर्सिस्टेंस और प्रिविलेज एस्केलेशन शामिल है। मॉड्यूल के साथ बातचीत अधिकांश अन्य पोस्ट-एक्सप्लॉइटेशन प्लेटफार्मों के समान है। आप परिचित run, search और info कमांड का उपयोग कर सकते हैं और use कमांड के साथ मॉड्यूल संदर्भों में प्रवेश कर सकते हैं। अधिक जानकारी के लिए दस्तावेज़ीकरण देखें।
BlackArch पर स्थापना उतनी ही सरल है:
pacman -Syu pwncat-caleb
pwncat के लिए कमांड लाइन पैरामीटर लचीला होने का प्रयास करते हैं और विभिन्न सामान्य कनेक्शन सिंटैक्स को स्वीकार करते हैं। विशेष रूप से, यह सामान्य netcat और ssh जैसे सिंटैक्स को स्वीकार करने का प्रयास करेगा। निम्नलिखित सभी मान्य हैं:
# Connect to a bind shell
pwncat-cs connect://10.10.10.10:4444
pwncat-cs 10.10.10.10:4444
pwncat-cs 10.10.10.10 4444
# Listen for reverse shell
pwncat-cs bind://0.0.0.0:4444
pwncat-cs 0.0.0.0:4444
pwncat-cs :4444
pwncat-cs -lp 4444
# Connect via ssh
pwncat-cs ssh://user:[email protected]
pwncat-cs [email protected]
pwncat-cs user:[email protected]
pwncat-cs -i id_rsa [email protected]
# SSH w/ non-standard port
pwncat-cs -p 2222 [email protected]
pwncat-cs [email protected]:2222
# Reconnect utilizing installed persistence
# If reconnection fails and no protocol is specified,
# SSH is used as a fallback.
pwncat-cs reconnect://[email protected]
pwncat-cs reconnect://user@c228fc49e515628a0c13bdc4759a12bf
pwncat-cs [email protected]
pwncat-cs c228fc49e515628a0c13bdc4759a12bf
pwncat-cs 10.10.10.10
डिफ़ॉल्ट रूप से, pwncat मानता है कि लक्ष्य प्लेटफ़ॉर्म लिनक्स है। विंडोज रिवर्स या बाइंड शेल से कनेक्ट करने के लिए, आपको --platform/-m तर्क पास करना होगा:
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444
सिंटैक्स और तर्क हैंडलिंग पर अधिक जानकारी के लिए, pwncat-cs --help के साथ सहायता जानकारी देखें या दस्तावेज़ीकरण पर जाएँ।
अनुशंसित स्थापना विधि एक Python वर्चुअल एनवायरनमेंट है। यह pwncat का सबसे आसान दैनिक उपयोग प्रदान करता है। हालाँकि, Docker छवि से pwncat का उपयोग करने में रुचि रही है, इसलिए मैंने एक Dockerfile प्रदान किया है जो एक कार्यशील pwncat स्थापना प्रदान करता है। छवि बनाने के लिए उपयोग करें:
docker build -t pwncat .
यह "pwncat" टैग के साथ pwncat docker छवि बनाएगा। कंटेनर के अंदर कार्यशील निर्देशिका /work है। कंटेनर का एंट्रीपॉइंट pwncat बाइनरी है। इसका उपयोग इस प्रकार किया जा सकता है:
# Connect to a bind shell at 10.0.0.1:4444
docker run -v "/some/directory":/work -t pwncat 10.0.0.1 4444
इस उदाहरण में, केवल /some/directory में फ़ाइलें कंटेनर को उजागर होती हैं। जाहिर है, अपलोड/डाउनलोड के लिए, कंटेनर केवल माउंटेड निर्देशिकाओं के माध्यम से उजागर फ़ाइलों को देख पाएगा।
pwncat दो मुख्य सुविधाएँ प्रदान करता है। इसके मूल में, इसका लक्ष्य स्वचालित रूप से एक रिमोट स्यूडोटर्मिनल (pty) सेटअप करना है जो पूर्ण SSH सत्र की तरह रिमोट होस्ट के साथ बातचीत की अनुमति देता है। pty में काम करते समय, आप अपने रिमोट शेल की सामान्य सुविधाओं जैसे इतिहास, लाइन एडिटिंग और ग्राफिकल टर्मिनल एप्लिकेशन का उपयोग कर सकते हैं।
pwncat का दूसरा भाग एक फ्रेमवर्क है जो स्वचालित एनुमरेशन, पर्सिस्टेंस और प्रिविलेज एस्केलेशन कार्यों को करने के लिए आपके रिमोट शेल का उपयोग करता है। स्थानीय pwncat प्रॉम्प्ट मानक पेनिट्रेशन टेस्ट के लिए कई उपयोगी सुविधाएँ प्रदान करता है, जिनमें शामिल हैं:
pwncat इन रिमोट "टैम्पर्स" को स्वचालित रूप से वापस करने की क्षमता भी प्रदान करता हैरिमोट होस्ट के साथ बातचीत के लिए अंतर्निहित फ्रेमवर्क का उद्देश्य अंतर्निहित शेल और कनेक्शन विधि को यथासंभव अमूर्त करना है, जिससे कमांड और प्लगइन्स रिमोट होस्ट के साथ सहजता से बातचीत कर सकें।
आप दस्तावेज़ीकरण में pwncat के साथ बातचीत और अंतर्निहित फ्रेमवर्क के बारे में अधिक जान सकते हैं। यदि आपके पास किसी नए प्रिविलेज एस्केलेशन विधि या पर्सिस्टेंस विधि के लिए कोई विचार है, तो कृपया विशेष रूप से API दस्तावेज़ीकरण देखें। पुल अनुरोधों का स्वागत है!
pwncat एक रेड टीम स्विस आर्मी चाकू बनना चाहेगा। उम्मीद है कि जल्द ही और सुविधाएँ जोड़ी जाएंगी।
क्योंकि pwncat न्यूनतम रिमोट सिस्टम निर्भरता के साथ किसी भी शेल के साथ अमूर्त रूप से बातचीत करने की कोशिश कर रहा है, कुछ एज केस हैं जो हमने पाए हैं। जहाँ हम उन्हें पाते हैं, हम उन्हें ध्यान में रखने और उपयोगकर्ता से छिपाने की पूरी कोशिश करते हैं। हालाँकि, कुछ दरारों से फिसल गए हैं और जंगली में देखे गए हैं। जब ऐसा होता है, pwncat आपके टर्मिनल को संरक्षित करने के लिए जो कुछ भी कर सकता है वह करेगा, लेकिन आपको कुछ विचित्र आउटपुट या कमांड विफलताओं का सामना करना पड़ सकता है।
जबकि BSD एक Unix-आधारित कर्नेल है, व्यवहार में इसके यूज़रलैंड टूल अपने Linux समकक्षों से काफी भिन्न हैं। इसके कारण, pwncat की कई स्वचालित सुविधाएँ BSD-आधारित लक्ष्य के खिलाफ काम नहीं करेंगी या पूरी तरह से विफल हो जाएँगी। मैंने सभी त्रुटियों या एज केस को पकड़ने की कोशिश की है, हालाँकि संभवतः कुछ हिचकियाँ हैं जिनका BSD पर पूरी तरह से परीक्षण नहीं किया गया है। किसी भी मामले में, स्थिर शेल को BSD वातावरण के भीतर काम करना चाहिए, लेकिन मैं कोई गारंटी नहीं देता।
यदि मुझे बाद में कुछ समय मिलता है, तो मैं BSD पर pwncat को स्थिर करने का प्रयास कर सकता हूँ, लेकिन अभी के लिए मेरा ध्यान Linux-आधारित वितरण पर है। यदि आप BSD पर pwncat को बेहतर व्यवहार करने में योगदान देना चाहते हैं, तो आपका स्वागत है कि आप संपर्क करें या बस रिपॉजिटरी को फोर्क करें। हमेशा की तरह, पुल अनुरोधों का स्वागत है!