
पेंटेस्टर्स के लिए मल्टी-हॉप प्रॉक्सी टूल जो कई नोड्स के माध्यम से ट्रैफिक रूटिंग, SOCKS5/SSH टनलिंग, पोर्ट फॉरवर्डिंग, रिमोट शेल और एन्क्रिप्टेड नोड संचार को सक्षम करता है।

Stowaway एक गो भाषा में लिखा गया टूल है, जिसे विशेष रूप से पेनिट्रेशन टेस्टिंग करने वालों के लिए बनाया गया मल्टी-लेवल प्रॉक्सी टूल है।
उपयोगकर्ता इस प्रोग्राम के माध्यम से बाहरी ट्रैफ़िक को कई नोड्स के ज़रिए आंतरिक नेटवर्क में प्रॉक्सी कर सकते हैं, आंतरिक नेटवर्क तक पहुँच की सीमाओं को तोड़ सकते हैं, ट्री-आकार का नोड नेटवर्क बना सकते हैं, और आसानी से प्रबंधन कार्यों को पूरा कर सकते हैं।
आप सभी को धन्यवाद जिन्होंने स्टार दिया, और साथ ही स्वागत है कि आप उपयोग के बाद प्रश्न और बग पोस्ट करें 😘
कृपया उपयोग करने से पहले उपयोग विधि और अंत में दिए गए सावधानियों को ध्यान से पढ़ें
यह परियोजना केवल नेटवर्क सुरक्षा अनुसंधान और शिक्षण उद्देश्यों के लिए है। किसी भी अवैध उपयोग के लिए सख्त वर्जित है। कृपया सुनिश्चित करें कि इस टूल का उपयोग करने से पहले आपके पास लक्षित सिस्टम से स्पष्ट प्राधिकरण है और आप अपने देश/क्षेत्र के प्रासंगिक कानूनों और विनियमों का पालन करते हैं। इस टूल के उपयोग से होने वाले किसी भी प्रत्यक्ष या अप्रत्यक्ष परिणाम (जिसमें शामिल हैं लेकिन सीमित नहीं: डेटा हानि, सिस्टम क्षति, कानूनी देयता आदि) का वहन उपयोगकर्ता स्वयं करेगा। इस परियोजना के लेखक किसी भी दुरुपयोग या इससे उत्पन्न कानूनी देयता के लिए जिम्मेदार नहीं होंगे। इस टूल का उपयोग करने का अर्थ है कि आपने इस अस्वीकरण की सभी सामग्री को पढ़, समझ और सहमति दे दी है।
make का उपयोग करके सीधे मल्टी-प्लेटफ़ॉर्म पूर्ण प्रोग्राम संकलित करें, या विशिष्ट प्रोग्राम संकलित करने के लिए Makefile देखेंStowaway में दो भूमिकाएँ हैं:
admin - पेनिट्रेशन टेस्टर द्वारा उपयोग किया जाने वाला मुख्य नियंत्रणagent - पेनिट्रेशन टेस्टर द्वारा तैनात किया जाने वाला नियंत्रितनिम्नलिखित कमांड Stowaway का सबसे सरल उदाहरण तुरंत शुरू कर सकते हैं
./stowaway_admin -l 9999./stowaway_agent -c <stowaway_admin का IP>:9999पैरामीटर:
-l निष्क्रिय मोड में सुनने का पता [ip]:<port>
-s नोड संचार एन्क्रिप्शन कुंजी, सभी नोड्स (admin&&agent) समान होनी चाहिए
-c सक्रिय मोड में लक्ष्य नोड का पता
--socks5-proxy socks5 प्रॉक्सी सर्वर पता
--socks5-proxyu socks5 प्रॉक्सी सर्वर उपयोगकर्ता नाम (वैकल्पिक)
--socks5-proxyp socks5 प्रॉक्सी सर्वर पासवर्ड (वैकल्पिक)
--http-proxy http प्रॉक्सी सर्वर पता
--down निचली धारा प्रोटोकॉल प्रकार, डिफ़ॉल्ट नंगा TCP ट्रैफ़िक, वैकल्पिक HTTP/WS
--tls-enable नोड संचार के लिए TLS सक्षम करें, TLS सक्षम होने पर AES एन्क्रिप्शन अक्षम हो जाएगा
--domain TLS SNI/WebSocket डोमेन निर्दिष्ट करें, यदि खाली है तो डिफ़ॉल्ट लक्ष्य नोड पता
--heartbeat हार्टबीट पैकेट सक्षम करें
पैरामीटर:
-l निष्क्रिय मोड में सुनने का पता [ip]:<port>
-s नोड संचार एन्क्रिप्शन कुंजी
-c सक्रिय मोड में लक्ष्य नोड का पता
--socks5-proxy socks5 प्रॉक्सी सर्वर पता
--socks5-proxyu socks5 प्रॉक्सी सर्वर उपयोगकर्ता नाम (वैकल्पिक)
--socks5-proxyp socks5 प्रॉक्सी सर्वर पासवर्ड (वैकल्पिक)
--http-proxy http प्रॉक्सी सर्वर पता
--reconnect पुनः कनेक्शन समय अंतराल
--rehost पोर्ट रीयूज़ करते समय पुनः उपयोग किया जाने वाला IP पता
--report पोर्ट रीयूज़ करते समय पुनः उपयोग किया जाने वाला पोर्ट
--up ऊपरी धारा प्रोटोकॉल प्रकार, डिफ़ॉल्ट नंगा TCP ट्रैफ़िक, वैकल्पिक HTTP/WS
--down निचली धारा प्रोटोकॉल प्रकार, डिफ़ॉल्ट नंगा TCP ट्रैफ़िक, वैकल्पिक HTTP/WS
--cs चलने वाले प्लेटफ़ॉर्म का शेल एन्कोडिंग प्रकार, डिफ़ॉल्ट utf-8, वैकल्पिक gbk
--tls-enable नोड संचार के लिए TLS सक्षम करें, TLS सक्षम होने पर AES एन्क्रिप्शन अक्षम हो जाएगा
--domain TLS SNI/WebSocket डोमेन निर्दिष्ट करें, यदि खाली है तो डिफ़ॉल्ट लक्ष्य नोड पता
यह पैरामीटर admin&&agent के लिए समान है, केवल निष्क्रिय मोड में उपयोग होता है
यदि IP पता निर्दिष्ट नहीं किया जाता है, तो डिफ़ॉल्ट रूप से 0.0.0.0 पर सुनता है
admin: ./stowaway_admin -l 9999 or ./stowaway_admin -l 127.0.0.1:9999
agent: ./stowaway_agent -l 9999 or ./stowaway_agent -l 127.0.0.1:9999
यह पैरामीटर admin&&agent के लिए समान है, सक्रिय और निष्क्रिय दोनों मोड में उपयोग हो सकता है
वैकल्पिक, यदि खाली है तो संचार एन्क्रिप्टेड नहीं होगा, अन्यथा संचार उपयोगकर्ता द्वारा दी गई कुंजी से एन्क्रिप्टेड होगा
admin: ./stowaway_admin -l 9999 -s 123
agent: ./stowaway_agent -l 9999 -s 123
यह पैरामीटर admin&&agent के लिए समान है, केवल सक्रिय मोड में उपयोग होता है
उस नोड के पते को दर्शाता है जिससे कनेक्ट होना है
admin: ./stowaway_admin -c 127.0.0.1:9999
agent: ./stowaway_agent -c 127.0.0.1:9999
ये चार पैरामीटर admin&&agent के लिए समान हैं, केवल सक्रिय मोड में उपयोग होते हैं
--socks5-proxy socks5 प्रॉक्सी सर्वर पते को दर्शाता है, --socks5-proxyu और --socks5-proxyp वैकल्पिक हैं
--http-proxy http प्रॉक्सी सर्वर पते को दर्शाता है, उपयोग socks5 के समान है
बिना उपयोगकर्ता नाम/पासवर्ड:
admin: ./stowaway_admin -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx
agent: ./stowaway_agent -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx
उपयोगकर्ता नाम/पासवर्ड के साथ:
admin: ./stowaway_admin -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx --socks5-proxyu xxx --socks5-proxyp xxx
agent: ./stowaway_agent -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx --socks5-proxyu xxx --socks5-proxyp xxx
ये दो पैरामीटर admin&&agent के लिए समान हैं, सक्रिय और निष्क्रिय दोनों मोड में उपयोग हो सकते हैं
लेकिन ध्यान दें कि admin पर --up पैरामीटर नहीं है
ये पैरामीटर वैकल्पिक हैं, यदि खाली हैं तो ऊपरी/निचली धारा ट्रैफ़िक नंगा TCP है
यदि ऊपरी/निचली धारा ट्रैफ़िक HTTP/WS होना चाहता है, तो इन पैरामीटर को http या ws पर सेट करें
admin: ./stowaway_admin -c 127.0.0.1:9999 --down ws
agent: ./stowaway_agent -c 127.0.0.1:9999 --up ws or ./stowaway_agent -c 127.0.0.1:9999 --up ws --down ws
इसके अलावा, दो बातों पर ध्यान दें:
पहली, जब आप किसी नोड की ऊपरी/निचली धारा को TCP/HTTP/WS पर सेट करते हैं, तो उससे जुड़े मूल/बाल नोड की निचली/ऊपरी धारा भी समान होनी चाहिए, जैसे नीचे
admin: ./stowaway_admin -c 127.0.0.1:9999 --down ws
agent: ./stowaway_agent -l 9999 --up ws
उपरोक्त स्थिति में, agent को --up को ws पर सेट करना होगा, अन्यथा नेटवर्क त्रुटि होगी
agent के बीच भी ऐसा ही है
मान लें agent-1 127.0.0.1:10000 पोर्ट पर बाल नोड के कनेक्शन की प्रतीक्षा कर रहा है और --down ws सेट किया है
तो agent-2 को भी --up को ws पर सेट करना होगा, अन्यथा नेटवर्क त्रुटि होगी
./stowaway_agent -c 127.0.0.1:10000 --up wsदूसरी, क्योंकि HTTP एक हाफ-डुप्लेक्स प्रोटोकॉल है, यह Stowaway के फुल-डुप्लेक्स संचार के लिए उपयुक्त नहीं है, इसलिए यहाँ HTTP प्रोटोकॉल केवल HTTP संदेश प्रारूप को लागू करता है, पूर्ण-कार्यक्षमता वाली HTTP वर्कफ़्लो नहीं। इसलिए आप अभी भी इस प्रोटोकॉल का उपयोग कर सकते हैं, लेकिन Stowaway के बीच ट्रैफ़िक HTTP संदेश प्रारूप में चुनने पर nginx के माध्यम से फ़ॉरवर्ड नहीं किया जा सकता। यह कोड और कार्यक्षमता एक ओर कुछ विशेष परिस्थितियों में HTTP प्रोटोकॉल के उपयोग के लिए रखी गई है, और दूसरी ओर एक कस्टम ट्रैफ़िक टेम्पलेट प्रदान करने के लिए, ताकि उपयोगकर्ता कस्टम प्रोटोकॉल के लिए संदर्भ ले सकें
यदि nginx आदि रिवर्स प्रॉक्सी के माध्यम से जाना है, तो कृपया ws प्रोटोकॉल का उपयोग करें और TLS के साथ संचार करें
यह पैरामीटर केवल agent पर और केवल सक्रिय मोड में उपयोग होता है
पैरामीटर वैकल्पिक है, यदि सेट नहीं किया गया है तो नोड नेटवर्क डिस्कनेक्ट होने पर पुनः कनेक्ट नहीं होगा; यदि सेट किया गया है तो नोड हर x (आपके द्वारा सेट किए गए सेकंड) सेकंड में मूल नोड से पुनः कनेक्ट करने का प्रयास करेगा
admin: ./stowaway_admin -l 9999
agent: ./stowaway_agent -c 127.0.0.1:9999 --reconnect 10
उपरोक्त स्थिति में, यह दर्शाता है कि यदि agent और admin के बीच कनेक्शन टूट जाता है, तो agent हर दस सेकंड में admin से पुनः कनेक्ट करने का प्रयास करेगा
agent के बीच भी उपरोक्त स्थिति समान है
और --reconnect पैरामीटर --socks5-proxy/--socks5-proxyu/--socks5-proxyp/--http-proxy के साथ उपयोग किया जा सकता है, agent प्रारंभ समय की सेटिंग के अनुसार प्रॉक्सी के माध्यम से पुनः कनेक्ट करने का प्रयास करेगा
ये दो पैरामीटर विशेष हैं, केवल agent पक्ष पर उपयोग होते हैं, विस्तृत जानकारी के लिए कृपया नीचे पोर्ट रीयूज़ तंत्र देखें
यह पैरामीटर केवल agent पर, सक्रिय और निष्क्रिय दोनों मोड में उपयोग हो सकता है
मुख्य रूप से 'shell' फ़ंक्शन में एन्कोडिंग समस्या को हल करने के लिए है। जब उपयोगकर्ता agent को gbk एन्कोडिंग वाले प्लेटफ़ॉर्म (जैसे सामान्यतः Windows) पर चलाता है और साथ ही admin utf-8 एन्कोडिंग वाले प्लेटफ़ॉर्म पर चलता है, तो कृपया इस पैरामीटर को 'gbk' पर सेट करें
./stowaway_agent -c 127.0.0.1:9999 -s 123 --cs gbkये पैरामीटर admin&&agent के लिए समान हैं, सक्रिय और निष्क्रिय दोनों मोड में उपयोग हो सकते हैं
इस विकल्प को सेट करके, नोड्स के बीच ट्रैफ़िक को TLS से एन्क्रिप्ट किया जा सकता है
उदाहरण नीचे
./stowaway_admin -l 10000 --tls-enable -s 123./stowaway_agent -c localhost:10000 --tls-enable -s 123ध्यान दें, जब यह पैरामीटर सक्षम होता है, तो AES एन्क्रिप्शन डिफ़ॉल्ट रूप से अक्षम हो जाता है, -s पैरामीटर केवल नोड्स के बीच आपसी प्रमाणीकरण और पोर्ट रीयूज़ फ़ंक्शन के लिए उपयोग होगा
इसके अलावा, जब यह पैरामीटर सक्षम होता है, तो कृपया सुनिश्चित करें कि नेटवर्क का प्रत्येक नोड (admin सहित) इस पैरामीटर को सक्षम करता है
ये पैरामीटर admin&&agent के लिए समान हैं, केवल सक्रिय मोड में उपयोग हो सकते हैं
इस विकल्प को सेट करके, इस नोड के TLS नेगोशिएशन के दौरान SNI विकल्प या WebSocket का लक्ष्य Host सेट किया जा सकता है
उदाहरण नीचे
./stowaway_admin -l 10000 --tls-enable -s 123./stowaway_agent -c xxx.xxx.xxx.xxx:10000 --tls-enable -s 123 --domain xxx.comयह पैरामीटर केवल admin पक्ष पर, सक्रिय और निष्क्रिय दोनों मोड में उपयोग होता है
इस विकल्प को सेट करके, admin पहले नोड को लगातार हार्टबीट पैकेट भेज सकता है, ताकि बीच में रिवर्स प्रॉक्सी होने पर भी लंबा कनेक्शन बना रहे
मान लें admin और agent के बीच nginx जैसा रिवर्स प्रॉक्सी उपकरण है जो 8080 पोर्ट को 8000 पोर्ट पर प्रॉक्सी करता है, उदाहरण नीचे
./stowaway_admin -l 8000 --tls-enable -s 123 --down ws --heartbeat./stowaway_agent -c xxx.xxx.xxx.xxx:8080 --tls-enable -s 123 --domain xxx.com --up wsवर्तमान Stowaway SO_REUSEPORT और SO_REUSEADDR विशेषताओं पर आधारित पोर्ट रीयूज़ फ़ंक्शन और IPTABLES पर आधारित पोर्ट रीयूज़ फ़ंक्शन प्रदान करता है
Linux पर अधिकांश कार्यात्मक पोर्ट को रीयूज़ किया जा सकता है
Windows पर IIS, RDP पोर्ट को रीयूज़ नहीं किया जा सकता, MySQL, Apache सेवा के पोर्ट को रीयूज़ किया जा सकता है
SO_REUSEPORT और SO_REUSEADDR मोड
मान लें agent पक्ष पोर्ट रीयूज़ तंत्र का उपयोग करके 80 पोर्ट को रीयूज़ करता है
तब agent पक्ष को --rehost && --report && -s पैरामीटर सेट करना होगा
--rehost: रीयूज़ किए जाने वाले IP पते को दर्शाता है, 0.0.0.0 नहीं हो सकता, सामान्यतः नेटवर्क कार्ड का बाहरी पता
--report: रीयूज़ किए जाने वाले पोर्ट को दर्शाता है
-s: संचार कुंजी दर्शाता है
मुख्य रूप से Windows, Mac वातावरण में रीयूज़ समर्थन करता है, Linux पर भी संभव है लेकिन अधिक प्रतिबंध हैं
./stowaway_admin -c 192.168.0.105:80 -s 123./stowaway_agent --report 80 --rehost 192.168.0.105 -s 123IPTABLES मोड
मान लें agent पक्ष पोर्ट रीयूज़ तंत्र का उपयोग करके 22 पोर्ट को रीयूज़ करता है
तब agent पक्ष को -l && --report && -s पैरामीटर सेट करना होगा
उपरोक्त स्थितियाँ केवल admin और agent के बीच कनेक्शन का उदाहरण हैं, agent और agent के बीच कनेक्शन भी समान है, कोई अंतर नहीं
यदि agent को ctrl-c या kill कमांड से मार दिया जाता है, तो प्रोग्राम स्वचालित रूप से iptables नियमों को साफ करेगा, लेकिन यदि kill -9 से मारा जाता है, तो स्वचालित रूप से साफ नहीं किया जा सकता
इसलिए, agent के असामान्य रूप से बाहर निकलने पर iptables नियम साफ न होने और रीयूज़ की गई सेवा तक पहुँच न होने से बचने के लिए
जब बंद करना आवश्यक हो, तो चलाएँ: python reuse.py --stop --rhost xxx.xxx.xxx.xxx --rport xxx
इससे फ़ॉरवर्डिंग नियम बंद हो जाएगा, जिससे मूल सेवा सामान्य रूप से एक्सेस की जा सकेगी
यदि IPTABLES मोड के तहत पोर्ट रीयूज़ का उपयोग करते हैं, तो अनिवार्य रूप से 0.0.0.0 पर सुनना होगा, -l पैरामीटर द्वारा IP निर्दिष्ट नहीं किया जा सकता
उपरोक्त उदाहरणों में केवल admin और एक agent दिखाया गया है
जबकि मल्टी-लेवल नेटवर्क मुख्य है
Stowaway में मल्टी-लेवल नेटवर्क बनाने के लिए admin में listen, connect, sshtunnel कमांड का उपयोग करना होता है
एक सरल उदाहरण लें
./stowaway_admin -l 9999 -s 123इस समय agent-1 admin से जुड़ चुका है
./stowaway_agent -c 127.0.0.1:9999 -s 123अब उपयोगकर्ता agent-2 से भी जुड़ना चाहता है, जैसे नीचे
./stowaway_agent -l 10000 -s 123तब, उपयोगकर्ता admin के माध्यम से use 0 -> connect agent-2 का IP:10000 दर्ज करके इसे नेटवर्क में जोड़ सकता है, और यह agent-1 का एक बाल नोड बन जाएगा
मान लें अब उपयोगकर्ता एक और नोड agent-3 जोड़ना चाहता है, लेकिन agent-1 के माध्यम से agent-3 तक नहीं पहुँचा जा सकता
तब, उपयोगकर्ता admin के माध्यम से, use 0 -> listen -> 1.Normal Passive चुनें -> 10001 दर्ज करें, जिससे agent-1 10001 पोर्ट पर सुनना शुरू करेगा और बाल नोड के कनेक्शन की प्रतीक्षा करेगा
admin के कार्य पूर्ण होने के बाद, agent-3 निम्नानुसार शुरू करें
./stowaway_agent -c 127.0.0.1:10001 -s 123इससे agent-3 को agent-1 के एक और बाल नोड के रूप में नेटवर्क में जोड़ा जा सकता है
listen और sshtunnel के विस्तृत परिचय के लिए, कृपया नीचे कमांड विश्लेषण देखें
Stowaway वर्तमान में कई तरीकों से पुनः कनेक्शन का समर्थन करता है, नीचे संक्षेप में बताया गया है
सबसे पहले, जब मूल नोड डिस्कनेक्ट होता है, तो केवल एक प्रकार का नोड स्वचालित रूप से बाहर निकलेगा, वह है जो शुरू करते समय सक्रिय मोड में था और पुनः कनेक्शन सेट नहीं किया गया था
यदि पुनः कनेक्शन सेट किया गया है, तो नोड निर्दिष्ट समय अंतराल में पुनः कनेक्ट करने का प्रयास करेगा
इसके अलावा, निष्क्रिय मोड में शुरू किए गए सभी नोड स्वचालित रूप से बाहर नहीं निकलेंगे, बल्कि प्रारंभिक पैरामीटर के आधार पर निर्दिष्ट पोर्ट पर पुनः सुनेंगे, इस समय उपयोगकर्ता अभी भी connect, sshtunnel के माध्यम से इन नोड्स को नेटवर्क में वापस जोड़ सकता है
यदि नेटवर्क उतार-चढ़ाव या मध्य नोड के डिस्कनेक्ट होने के कारण कोई शाखा टूट जाती है, तो सक्रिय पुनः कनेक्शन करते समय कृपया लापता श्रृंखला के सिर वाले नोड से कनेक्ट करें। उदाहरण के लिए, admin के बाद node1, node1 के बाद दो शाखाएँ: एक node1->node2->node3->node4, और दूसरी node1->node5->node6। यदि node2 डिस्कनेक्ट हो जाता है, तो node3 और node4 डिस्कनेक्ट नहीं होंगे, बल्कि जीवित रहेंगे। इस समय उपयोगकर्ता यदि node3 और node4 को पुनः नेटवर्क में जोड़ना चाहता है, तो दो विकल्प हैं: एक, यदि node1 सीधे node3 तक पहुँच सकता है, तो उपयोगकर्ता कभी भी node1 पर node3 को connect या sshtunnel कमांड के माध्यम से पुनः नेटवर्क में जोड़ सकता है (ध्यान रखें, भले ही node1 नोड4 तक भी पहुँच सकता हो, कृपया सीधे node4 से कनेक्ट न करें, बल्कि पूरी लापता श्रृंखला (node3->node4) के सिर वाले नोड node3 से कनेक्ट करें), इस प्रकार node3 और node4 को पुनः नेटवर्क में जोड़ा जा सकता है; दूसरा विकल्प, जब node1 सीधे node3 तक नहीं पहुँच सकता (अर्थात node2 के माध्यम से जाना आवश्यक है), तो पहले node2 को पुनः प्रारंभ करें और नेटवर्क में जोड़ें, फिर node2 पर connect या sshtunnel कमांड का उपयोग करके node3 से कनेक्ट करें, जिससे node3 और node4 नेटवर्क में शामिल हो जाएँ
जब कोई नोड डिस्कनेक्ट होता है, तो उस नोड और उसके बाल नोड्स से संबंधित सभी socks, backward, forward सेवाएँ बलपूर्वक रोक दी जाएँगी
admin कंसोल में, उपयोगकर्ता Tab से कमांड को पूरा कर सकता है, और तीर कुंजियों से इतिहास/कर्सर खोज सकता है
admin कंसोल दो स्तरों में विभाजित है, पहला मुख्य पैनल है, इसमें निम्नलिखित कमांड शामिल हैं
help: मुख्य पैनल की सहायता जानकारी दिखाएँ(admin) >> help
help सहायता जानकारी दिखाएँ
detail जुड़े नोड्स का विवरण दिखाएँ
topo नोड्स की टोपोलॉजी दिखाएँ
use <id> उपयोग करने के लिए लक्ष्य नोड चुनें
exit Stowaway से बाहर निकलें
detail: ऑनलाइन नोड्स का विस्तृत विवरण दिखाएँ(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000 Hostname: ph4ntoms-MBP.lan User: ph4ntom
Memo:
topo: ऑनलाइन नोड्स के माता-पिता-बच्चे संबंध दिखाएँ(admin) >> topo
Node[0]'s children ->
Node[1]
Node[1]'s children ->
use: किसी agent का उपयोग करें(admin) >> use 0
(node 0) >>
exit: Stowaway से बाहर निकलें(admin) >> exit
[*] क्या आप वास्तव में Stowaway से बाहर निकलना चाहते हैं?(y/n): y
[*] अलविदा!
जब उपयोगकर्ता use कमांड से एक agent चुनता है, तो दूसरे स्तर के node पैनल में प्रवेश करता है, जिसमें निम्नलिखित कमांड शामिल हैं
help: node पैनल की सहायता जानकारी दिखाएँ(node 0) >> help
help सहायता जानकारी दिखाएँ
status नोड स्थिति दिखाएँ, जिसमें socks/forward/backward शामिल हैं
listen वर्तमान नोड पर पोर्ट सुनना शुरू करें
addmemo <string> वर्तमान नोड के लिए मेमो जोड़ें
delmemo वर्तमान नोड का मेमो हटाएँ
ssh <ip:port> वर्तमान नोड के माध्यम से SSH शुरू करें
shell वर्तमान नोड पर इंटरैक्टिव शेल शुरू करें
socks <lport> [username] [pass] एक socks5 सर्वर शुरू करें
stopsocks socks सेवाएँ बंद करें
connect <ip:port> एक नए नोड से कनेक्ट करें
sshtunnel <ip:sshport> <agent port> नोड को टोपोलॉजी में जोड़ने के लिए sshtunnel का उपयोग करें
upload <local filename> <remote filename> वर्तमान नोड पर फ़ाइल अपलोड करें
download <remote filename> <local filename> वर्तमान नोड से फ़ाइल डाउनलोड करें
forward <lport> <ip:port> स्थानीय पोर्ट को विशिष्ट रिमोट ip:port पर फ़ॉरवर्ड करें
stopforward फ़ॉरवर्ड सेवाएँ बंद करें
backward <rport> <lport> रिमोट पोर्ट (agent) को स्थानीय पोर्ट (admin) पर बैकवर्ड करें
stopbackward बैकवर्ड सेवाएँ बंद करें
shutdown वर्तमान नोड को समाप्त करें
back मूल पैनल पर वापस जाएँ
exit Stowaway से बाहर निकलें
status: वर्तमान नोड की socks/forward/backward स्थिति दिखाएँ(node 0) >> status
Socks status:
ListenAddr: 0.0.0.0:10000 Username: Password:
-------------------------------------------------------------------------------------------
Forward status:
[1] Listening Addr: [::]:20000 , Remote Addr: 192.168.1.1:22 , Active Connections: 0
[2] Listening Addr: [::]:30000 , Remote Addr: 192.168.1.1:22 , Active Connections: 0
-------------------------------------------------------------------------------------------
Backward status:
[1] Remote Port: 40000 , Local Port: 50000 , Active Connections: 0
listen: agent को किसी पोर्ट पर सुनने और बाल नोड के कनेक्शन की प्रतीक्षा करने का आदेश दें(node 0) >> listen
[*] ध्यान दें! यदि आप IPTables Reuse या SOReuse चुनते हैं, तो आपको यह सुनिश्चित करना होगा कि नोड शुरू में संबंधित तरीके से शुरू किया गया था!
[*] जब आप IPTables Reuse या SOReuse चुनते हैं, तो नोड पोर्ट को रीयूज़ करने के लिए प्रारंभिक कॉन्फ़िग (जब नोड शुरू हुआ था) का उपयोग करेगा!
[*] कृपया मोड चुनें (1.Normal passive / 2.IPTables Reuse / 3.SOReuse): 1
[*] कृपया [ip:]<port> दर्ज करें: 10001
[*] प्रतिक्रिया की प्रतीक्षा कर रहे हैं......
[*] नोड 10001 पर सुन रहा है
ध्यान दें, listen एक विशेष कमांड है। जैसा कि देखा जा सकता है, listen कमांड के तीन मोड हैं
Normal passive: इस विकल्प का अर्थ है कि agent सामान्य तरीके से लक्ष्य पोर्ट पर सुनेगा और बाल नोड के कनेक्शन की प्रतीक्षा करेगाIPTables Reuse: इस विकल्प का अर्थ है कि agent IPTables Reuse के माध्यम से पोर्ट को रीयूज़ करेगा और बाल नोड के कनेक्शन की प्रतीक्षा करेगाSOReuse: इस विकल्प का अर्थ है कि agent SOReuse के माध्यम से पोर्ट को रीयूज़ करेगा और बाल नोड के कनेक्शन की प्रतीक्षा करेगापहला मोड सबसे सामान्य है। यदि मूल नोड इस प्रकार सुन रहा है, तो बाल नोड को केवल -c मूल नोड IP:port से कनेक्ट करना होगा
दूसरा और तीसरा मोड विशेष हैं। यदि उपयोगकर्ता दूसरा या तीसरा मोड चुनता है, तो उपयोगकर्ता को सुनिश्चित करना होगा कि वर्तमान नोड स्वयं पोर्ट रीयूज़ मोड में शुरू किया गया है, अन्यथा ये मोड उपयोग नहीं किए जा सकते
दूसरे और तीसरे मोड में उपयोगकर्ता को कोई जानकारी दर्ज करने की आवश्यकता नहीं होगी, नोड स्वचालित रूप से अपने शुरुआती पैरामीटर का उपयोग करके पोर्ट को रीयूज़ करेगा और बाल नोड के कनेक्शन के लिए तैयार होगा
इसके अलावा, listen एक बार में केवल एक बाल नोड के कनेक्शन को स्वीकार कर सकता है। यदि कई बाल नोड्स को कनेक्ट करने की आवश्यकता है, तो उचित संख्या में listen कमांड निष्पादित करें
addmemo: वर्तमान नोड के लिए मेमो जोड़ें(node 0) >> addmemo test
[*] मेमो जोड़ा गया!
(node 0) >> exit
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000 Hostname: ph4ntoms-MBP.lan User: ph4ntom
Memo: test
delmemo: वर्तमान नोड का मेमो हटाएँ(node 0) >> delmemo
[*] मेमो हटा दिया गया!
(node 0) >> exit
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000 Hostname: ph4ntoms-MBP.lan User: ph4ntom
Memo:
ssh: नोड को SSH के माध्यम से लक्ष्य मशीन से कनेक्ट करने का आदेश दें(node 0) >> ssh 127.0.0.1:22
[*] कृपया प्रमाणीकरण विधि चुनें (1.username&&password / 2.certificate): 1
[*] कृपया उपयोगकर्ता नाम दर्ज करें: ph4ntom
[*] कृपया पासवर्ड दर्ज करें: *****
[*] प्रतिक्रिया की प्रतीक्षा कर रहे हैं.....
[*] SSH के माध्यम से लक्ष्य होस्ट से सफलतापूर्वक कनेक्ट!
# ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:03:56]
$ whoami
ph4ntom
# ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:04:16]
$
इस मोड में, Tab कुंजी अक्षम होगी
shell: वर्तमान नोड का शेल प्राप्त करें(node 0) >> shell
[*] प्रतिक्रिया की प्रतीक्षा कर रहे हैं.....
[*] शेल सफलतापूर्वक शुरू किया गया!
bash: no job control in this shell
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ whoami
ph4ntom
bash-3.2$
इस मोड में, Tab कुंजी अक्षम होगी
socks: वर्तमान नोड पर socks5 सेवा शुरू करें(node 0) >> socks 7777
[*] 0.0.0.0:7777 पर सुनने का प्रयास कर रहे हैं......
[*] प्रतिक्रिया की प्रतीक्षा कर रहे हैं......
[*] Socks सफलतापूर्वक शुरू हुआ!
(node 0) >>
एक बात ध्यान दें, यहाँ 7777 पोर्ट agent पर नहीं, बल्कि admin पर खोला गया है
यदि उपयोगकर्ता नाम और पासवर्ड सेट करना आवश्यक है, तो उपरोक्त कमांड को socks 7777 <आपका उपयोगकर्ता नाम> <आपका पासवर्ड> में बदलें
यदि सुनने के लिए इंटरफ़ेस निर्दिष्ट करना आवश्यक है, तो उपरोक्त कमांड को socks xxx.xxx.xxx.xxx:7777 में बदलें
stopsocks: वर्तमान नोड पर socks5 सेवा बंद करें(node 0) >> stopsocks
Socks Info ---> ListenAddr: 0.0.0.0:7777 Username: <null> Password: <null>
[*] क्या आप वास्तव में socks बंद करना चाहते हैं?(yes/no): yes
[*] बंद किया जा रहा है......
[*] Socks सेवा सफलतापूर्वक बंद कर दी गई!
(node 0) >>
connect: वर्तमान नोड को दूसरे बाल नोड से कनेक्ट करने का आदेश देंagent-1: ./stowaway_agent -l 10002
(node 0) >> connect 127.0.0.1:10002
[*] प्रतिक्रिया की प्रतीक्षा कर रहे हैं......
[*] नया नोड ऑनलाइन! Node id is 1
(node 0) >>
sshtunnel: वर्तमान नोड को SSH टनल के माध्यम से दूसरे बाल नोड से कनेक्ट करने का आदेश देंagent-2: ./stowaway_agent -l 10003
(node 0) >> sshtunnel 127.0.0.1:22 10003
[*] कृपया प्रमाणीकरण विधि चुनें(1.username&&password / 2.certificate): 1
[*] कृपया उपयोगकर्ता नाम दर्ज करें: ph4ntom
[*] कृपया पासवर्ड दर्ज करें: ******
[*] प्रतिक्रिया की प्रतीक्षा कर रहे हैं.....
[*] नया नोड ऑनलाइन! Node id is 2
(node 0) >>
सख्ती से प्रतिबंधित नेटवर्क वातावरण में, SSH टनल का उपयोग करके Stowaway के ट्रैफ़िक को SSH ट्रैफ़िक के रूप में छिपाया जा सकता है, जिससे फ़ायरवॉल की सीमाओं से बचा जा सकता है
upload: वर्तमान नोड पर फ़ाइल अपलोड करें(node 0) >> upload test.7z test.xxx
[*] फ़ाइल स्थानांतरित की जा रही है, कृपया प्रतीक्षा करें...
136.07 KiB / 136.07 KiB [-----------------------------------------------------------------------------------] 100.00% ? p/s 0s
download: वर्तमान नोड से फ़ाइल डाउनलोड करें(node 0) >> download test.xxx test.xxxx
[*] फ़ाइल स्थानांतरित की जा रही है, कृपया प्रतीक्षा करें...
136.07 KiB / 136.07 KiB [-----------------------------------------------------------------------------------] 100.00% ? p/s 0s
forward: admin पर पोर्ट को रिमोट पोर्ट पर मैप करें(node 0) >> forward 9000 127.0.0.1:22
[*] 0.0.0.0:9000 पर सुनने का प्रयास कर रहे हैं......
[*] प्रतिक्रिया की प्रतीक्षा कर रहे हैं......
[*] फ़ॉरवर्ड सफलतापूर्वक शुरू हुआ!
(node 0) >>
$ ssh 127.0.0.1 -p 9000
Password:
# ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:19:51]
$
stopforward: वर्तमान नोड का रिमोट मैपिंग बंद करें(node 0) >> stopforward
[0] All
[1] Listening Addr : [::]:9000 , Remote Addr : 127.0.0.1:22 , Active Connections : 1
[*] क्या आप वास्तव में फ़ॉरवर्ड बंद करना चाहते हैं?(yes/no): yes
[*] कृपया बंद करने के लिए एक चुनें: 1
[*] बंद किया जा रहा है......
[*] फ़ॉरवर्ड सेवा सफलतापूर्वक बंद कर दी गई!
backward: वर्तमान agent के पोर्ट को admin के स्थानीय पोर्ट पर रिवर्स मैप करें(node 0) >> backward 9001 22
[*] नोड से 0.0.0.0:9001 पर सुनने के लिए कहने का प्रयास कर रहे हैं......
[*] प्रतिक्रिया की प्रतीक्षा कर रहे हैं......
[*] बैकवर्ड सफलतापूर्वक शुरू हुआ!
(node 0) >>
$ ssh 127.0.0.1 -p 9001
Password:
# ph4ntom @ ph4ntoms-MBP in ~ 🌈 [17:22:14]
$
stopbackward: वर्तमान नोड का रिवर्स मैपिंग बंद करें(node 0) >> stopbackward
[0] All
[1] Remote Port : 9001 , Local Port : 22 , Active Connections : 1
[*] क्या आप वास्तव में बैकवर्ड बंद करना चाहते हैं?(yes/no): yes
[*] कृपया बंद करने के लिए एक चुनें: 1
[*] बंद किया जा रहा है......
[*] बैकवर्ड सेवा सफलतापूर्वक बंद कर दी गई!
shutdown: वर्तमान नोड को ऑफ़लाइन करने का आदेश दें(node 1) >> shutdown
(node 1) >>
[*] Node 1 is offline!
back: मुख्य पैनल पर वापस जाएँ(node 1) >> back
(admin) >>
exit: Stowaway से बाहर निकलें(node 1) >> exit
[*] क्या आप वास्तव में Stowaway से बाहर निकलना चाहते हैं?(y/n): y
[*] अलविदा!
ansicon.exe -i चलाएँ, अन्यथा admin पक्ष पर एन्कोडिंग समस्या होगीUDP ASSOCIATE का समर्थन करता है। कृपया Socks5 UDP प्रॉक्सी का उपयोग करते समय अपने प्रोग्राम (जैसे स्कैनर) पर ध्यान दें, पैकेट निर्माण विधि मानक RFC1928 का पालन करनी चाहिए, और पैकेट हानि की स्थिति को स्वयं संभालना होगा।
Stowaway अब 404 स्टारलिंक परियोजना में शामिल हो गया है
Stowaway के विकास के दौरान निम्नलिखित गुरुओं और परियोजनाओं की सहायता के लिए धन्यवाद
-l: उस पोर्ट को दर्शाता है जिसे सामान्य रूप से एक्सेस नहीं किया जा सकता, अर्थात वह पोर्ट जिस पर आप वास्तव में agent को सुनने और कनेक्शन स्वीकार करने देना चाहते हैं
--report: रीयूज़ किए जाने वाले पोर्ट को दर्शाता है
-s: संचार कुंजी दर्शाता है
केवल Linux वातावरण में रीयूज़ समर्थन करता है, agent स्वचालित रूप से IPTABLES को संशोधित करेगा, root अनुमति आवश्यक है
agent पक्ष: ./stowaway_agent --report 22 -l 10000 -s 123
agent शुरू होने के बाद, कृपया script निर्देशिका के अंतर्गत reuse.py का उपयोग करें
पहले SECRET का मान सेट करें (SECRET का मान वह संचार कुंजी है जो प्रत्येक नोड शुरू करते समय सेट की गई थी)
फिर निष्पादित करें: python reuse.py --start --rhost xxx.xxx.xxx.xxx --rport xxx
--rhost: agent का पता
--rport: रीयूज़ किया गया पोर्ट, इस उदाहरण में 22 होना चाहिए
तब admin पक्ष कनेक्ट कर सकता है: ./stowaway_admin -c 192.168.0.105:22 -s 123