
SSH-Snake एक स्व-प्रचारित, स्व-प्रतिकृति, फ़ाइल-रहित स्क्रिप्ट है जो SSH निजी कुंजी और होस्ट खोज के पोस्ट-एक्सप्लॉइटेशन कार्य को स्वचालित करती है।
🐍 SSH-Snake एक शक्तिशाली उपकरण है जो सिस्टम पर खोजी गई SSH निजी कुंजियों का उपयोग करके स्वचालित नेटवर्क ट्रैवर्सल करने के लिए डिज़ाइन किया गया है, जिसका उद्देश्य एक नेटवर्क और उसकी निर्भरताओं का व्यापक मानचित्र तैयार करना है, यह पहचानना कि एक विशेष सिस्टम से शुरू करके SSH और SSH निजी कुंजियों का उपयोग करके नेटवर्क को किस हद तक समझौता किया जा सकता है।
SSH-Snake स्वचालित रूप से उन सिस्टमों के बीच संबंध प्रकट कर सकता है जो SSH के माध्यम से जुड़े हुए हैं, जिसे मैन्युअल रूप से करने में सामान्यतः अत्यधिक समय और प्रयास लगेगा।
दूसरे शब्दों में, SSH-Snake निम्नलिखित कार्यों को स्वचालित और पुनरावर्ती रूप से करता है:
user@host) खोजें जहां निजी कुंजियाँ स्वीकार की जा सकती हैं,यह पूरी तरह से स्व-प्रतिकृति और स्व-प्रसार है — और पूरी तरह से फ़ाइलरहित है। कई मायनों में, SSH-Snake वास्तव में एक वर्म है: यह स्वयं की प्रतिकृति बनाता है और जहाँ तक संभव हो, एक सिस्टम से दूसरे में फैलता है।
मैन्युअल रूप से SSH कुंजियों के साथ सिस्टमों के बीच कूदने के बजाय जैसे कि यह सुपर मारियो गेम हो, SSH-Snake को अपने लिए काम करने दें।
हालाँकि यह उपकरण हैकिंग उद्देश्यों के लिए है, सिस्टम प्रशासक भी इसका उपयोग अपने बुनियादी ढाँचे और नेटवर्क को बेहतर ढंग से समझने के लिए कर सकते हैं। यदि आप खोजी गई निजी कुंजियों की छपाई अक्षम करना चाहते हैं, तो कोड की इस पंक्ति को टिप्पणी करें।
इस स्क्रिप्ट के वास्तविक कार्य, तकनीकी विवरण, दिलचस्प खोजों, डिज़ाइन निर्णयों, बेंचमार्किंग और सीखे गए सबकों की गहराई से जानकारी के लिए, इस ब्लॉग पोस्ट को देखें। यह सॉफ्टवेयर Joshua Rogers द्वारा लिखा गया था।
एक बहुत छोटे नेटवर्क में SSH-Snake के आउटपुट का एक छोटा स्क्रीनशॉट। |
|---|
नीले नोड इंगित करते हैं कि गंतव्य स्वयं से कनेक्ट हो सकता है (user@host<-->user@host)। लाल किनारे इंगित करते हैं कि कनेक्शन द्वि-दिशात्मक है (user1@host1<-->user2@host2)। |
|---|
SSH-Snake को डाउनलोड किया जा सकता है या bash में पाइप किया जा सकता है:
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh
या
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash
SSH-Snake निर्बाध रूप से अनुकरण करता है कि एक मानव प्रतिद्वंद्वी SSH निजी कुंजियों और गंतव्यों को खोजने के लिए क्या करेगा जहाँ उनका उपयोग कनेक्ट करने के लिए किया जा सकता है। पूरी तरह से Bash में लिखा गया, यह मुख्य Linux (और MacOS) सिस्टम पर सामान्यतः उपलब्ध न्यूनतम निर्भरताओं के सेट के साथ संचालित होता है: bash, ssh, coreutils, awk, uniq, sort, grep, tr, find, और cat। getent या dscacheutil आवश्यक है। sed केवल पहले सिस्टम के लिए आवश्यक है। इसी प्रकार, sudo, hostname, , , , , , और का भी उपयोग किया जा सकता है, लेकिन वे आवश्यक नहीं हैं (और स्क्रिप्ट उन मामलों को शालीनता से संभालती है जहाँ वे मौजूद नहीं हैं)। यदि कोई सिस्टम आवश्यक पैकेजों के बिना पाया जाता है, तो यह शालीनता से विफल हो जाता है, उपयोगकर्ता को सूचित करता है कि स्कैन उस विशेष सिस्टम पर जारी नहीं रह सकता (और पीछे हट जाता है, पिछले सिस्टम से जारी रखता है।)
SSH-Snake पूरी तरह से फ़ाइलरहित है: उपयोगकर्ता द्वारा स्क्रिप्ट चलाने के बाद, इसे stdin और bash तर्कों (SSH के माध्यम से) के माध्यम से गंतव्यों के bash में भेजा जाता है। स्कैन किए गए किसी भी सिस्टम पर स्क्रिप्ट का कोई भौतिक साक्ष्य मौजूद नहीं होता है: स्क्रिप्ट चलने का एकमात्र सबूत प्रक्रिया ट्री और अमान्य SSH प्रयासों की पर्याप्त मात्रा है जो अनिवार्य रूप से होंगे।
SSH-Snake खोज के लिए गहराई-प्रथम दृष्टिकोण अपनाता है: एक बार जब यह एक सिस्टम से कनेक्ट हो जाता है, तो यह पीछे हटने से पहले उस सिस्टम से आगे कनेक्ट करने का प्रयास करता है।
SSH-Snake नाम इस तथ्य से आता है कि स्क्रिप्ट का आउटपुट नेटवर्क में ऊपर-नीचे रेंगते हुए साँप जैसा दिखता है। हालाँकि स्नेक गेम के विपरीत, SSH-Snake अपनी ही पूँछ काटने पर (किसी ऐसे सिस्टम से कनेक्ट होता है जिसे यह पहले ही स्कैन कर चुका है या वर्तमान में स्कैन कर रहा है) मरेगा नहीं: यह सामान्य रूप से प्रिंट करेगा कि वहाँ कैसे कनेक्ट हुआ, लेकिन वापस आ जाएगा और गंतव्य को पुनः स्कैन नहीं करेगा (अनंत पुनरावृत्ति से बचने के लिए)।
SSH-Snake का Linux के विभिन्न संस्करणों और MacOS (Homebrew Bash स्थापित के साथ) पर परीक्षण किया गया है। यदि आपको कोई Linux-आधारित OS मिलता है जिसके साथ यह संगत नहीं है, तो कृपया एक रिपोर्ट सबमिट करें।
.bash_history प्रविष्टियों से SSH निजी कुंजी फ़ाइलें खोजना,SSH-Snake कुछ सामान्य सेटिंग्स के साथ आता है जिन्हें कॉन्फ़िगर किया जा सकता है। ये सेटिंग्स SETTINGS.md#general-settings में प्रलेखित हैं।
SSH-Snake विभिन्न कॉन्फ़िगर करने योग्य/प्लग-एंड-प्ले रणनीतियों (फ़ंक्शंस) के साथ भी आता है जिनका उपयोग सिस्टम पर SSH निजी कुंजियाँ खोजने और कनेक्ट करने का प्रयास करने के लिए होस्ट और गंतव्य खोजने के लिए किया जा सकता है। उचित डिफ़ॉल्ट प्रदान किए गए हैं, हालाँकि यदि आप यथासंभव गहन स्कैन करना चाहते हैं, तो अधिक खोज तकनीकों को सक्षम करना मदद कर सकता है। यदि स्कैन में लंबा समय लग रहा है, तो कुछ खोज तकनीकों को अक्षम करना मदद कर सकता है। एक रणनीति (find_ssh_keys) के अपवाद के साथ, प्रत्येक रणनीति को बंद/चालू किया जा सकता है। ये SETTINGS.md#configurable-discovery-strategies में प्रलेखित हैं।
SSH-Snake के कच्चे आउटपुट में खोजी गई निजी कुंजियों, गंतव्यों और त्रुटि संदेशों के बारे में जानकारी का मिश्रण होता है।
SSH-Snake के पूर्ण आउटपुट पर विस्तृत व्याख्या OUTPUT.md में पाई जा सकती है।
आउटपुट का एक उदाहरण example-output.log में पाया जा सकता है।
SSH-Snake के आउटपुट का उपयोग उस नेटवर्क के ग्राफ़/विज़ुअलाइज़ेशन बनाने के लिए किया जा सकता है जिसे स्क्रिप्ट पार करती है।
SSH-Snake के आउटपुट से चित्र/विज़ुअलाइज़ेशन बनाने और उनकी व्याख्या करने के तरीके पर विस्तृत व्याख्या GRAPHICS.md में पाई जा सकती है।
SSH-Snake द्वारा पार किए गए नेटवर्क के विज़ुअलाइज़ेशन बनाने की क्षमता के अलावा, तीन अन्य उपकरण प्रदान किए गए हैं। अर्थात्:
forward-lookup-host.py: एक स्रोत होस्ट या गंतव्य दिया गया, उन सभी सिस्टमों का निर्धारण करें जिन्हें प्रत्यक्ष या अप्रत्यक्ष रूप से (अर्थात तृतीयक सिस्टम के माध्यम से) एक्सेस किया जा सकता है।reverse-lookup-host.py: एक गंतव्य होस्ट या गंतव्य दिया गया, उन सभी सिस्टमों का निर्धारण करें जो प्रत्यक्ष या अप्रत्यक्ष रूप से इसे एक्सेस कर सकते हैं।shortest-path-create-chain.py: होस्ट या गंतव्य A और B दिया गया, दोनों को जोड़ने वाला सबसे छोटा पथ निर्धारित करें।तीसरा उपकरण एक कमांड भी उत्पन्न करता है जिसका उपयोग गंतव्य A से गंतव्य B तक कनेक्ट करने के लिए किया जा सकता है। उदाहरण के लिए:
$ python3 tools/shortest-path-create-chain.py --file output.log --src '[email protected]' --dest '[email protected]'
Shortest path from [email protected] to [email protected]: [email protected]>[email protected]>[email protected]>[email protected]
[..]
ssh -i "/home/jrogers/.ssh/key" [email protected] 'sudo ssh -i "/root/.ssh/id_rsa" [email protected] 'ssh -i "/tmp/key" [email protected]''
चूँकि स्क्रिप्ट काफी बड़ी है, स्क्रिप्ट को here-document में लोड करना (जो यह स्वचालित रूप से करता है क्योंकि स्क्रिप्ट वास्तव में एक Quine) bash को एक अस्थायी फ़ाइल में लिखने का कारण बनता है (क्योंकि यह 65535-बाइट्स से अधिक है)।
आकार को कम करने के लिए ताकि यह 100% फ़ाइलरहित रहे, Snake.nocomments.sh में सभी टिप्पणियाँ, अनावश्यक सफेद स्थान और खाली पंक्तियाँ हटाकर एक संस्करण है। इससे फ़ाइल का आकार इतना कम हो जाता है कि bash द्वारा अस्थायी फ़ाइल नहीं बनाई जाती।
यदि आपको स्क्रिप्ट से संबंधित कोई बग या समस्या मिलती है, तो कृपया उन्हें GitHub मुद्दे के रूप में रिपोर्ट करें। कृपया अपनी कॉन्फ़िगरेशन सेटिंग्स शामिल करें।
मुझे विशेष रूप से त्रुटियों से जुड़े किसी भी दिलचस्प [line] आउटपुट में रुचि है जो स्क्रिप्ट द्वारा पकड़े नहीं गए हैं।
iptimeoutarpifconfigipconfigxargs