
सिंगल-थ्रेडेड कमांड लाइन एप्लिकेशन को CIDR और ग्लोब सपोर्ट के साथ आसानी से तेज़, मल्टी-थ्रेडेड एप्लिकेशन में बदलें।
एकल-थ्रेडेड कमांड लाइन एप्लिकेशन को CIDR और ग्लोब समर्थन के साथ तेज़, मल्टी-थ्रेडेड एप्लिकेशन में आसानी से बदलें।
इस प्रकार स्थापित करें:
$ python3 setup.py install
निर्भरताएँ फिर स्थापित हो जाएँगी और इंटरलेस को आपके पथ में interlace के रूप में जोड़ा जाएगा।
| उदाहरण | नोटेशन प्रकार |
|---|---|
| 80 | एकल पोर्ट |
| 1-80 | डैश नोटेशन, 1-80 तक प्रत्येक पोर्ट के लिए एक कमांड निष्पादित करें |
| 80,443 | पोर्ट 80 और पोर्ट 443 दोनों के लिए एक कमांड निष्पादित करें |
-t और -tL दोनों को समान रूप से संसाधित किया जाएगा। आप लक्ष्यों को उसी तरह पास कर सकते हैं जैसे आप nmap का उपयोग करते समय करेंगे। यह CIDR नोटेशन, डैश नोटेशन, या लक्ष्यों की कॉमा-डिलीमिटेड सूची का उपयोग करके किया जा सकता है। एक एकल लक्ष्य सूची फ़ाइल प्रति पंक्ति विभिन्न नोटेशन प्रकारों का भी उपयोग कर सकती है।
वैकल्पिक रूप से, आप STDIN के माध्यम से लक्ष्य पास कर सकते हैं और -t या -tL की आवश्यकता नहीं होगी।
रनटाइम पर कमांड में निम्नलिखित चर बदल दिए जाएँगे:
इंटरलेस कमांड फ़ाइल के भीतर निष्पादन प्रवाह को नियंत्रित करने के लिए दो अतिरिक्त सुविधाओं का भी उपयोग करता है: _blocker_ और _block:<name>_। ब्लॉकर्स उनके बाद सूचीबद्ध कमांड के निष्पादन को तब तक रोकते हैं जब तक उनसे पहले के सभी कमांड पूरे नहीं हो जाते, और ब्लॉक्स का उपयोग किसी लक्ष्य के लिए एक ब्लॉक के भीतर सूचीबद्ध कमांड के अनुक्रमिक निष्पादन को मजबूर करने के लिए किया जा सकता है।
ये प्रति-लक्ष्य स्तर पर चलाए जाते हैं। यदि थ्रेड उपलब्ध हैं और वर्तमान लक्ष्य के लिए कोई ब्लॉकर रास्ते में है, तो इंटरलेस दक्षता को अधिकतम करने के लिए लक्ष्य सूची में अगले लक्ष्य से कमांड शुरू करेगा।
इन सुविधाओं का उपयोग करने से आप व्यक्तिगत लक्ष्यों के लिए निष्पादन प्रवाह को अधिक सीधे नियंत्रित कर सकेंगे ताकि कमांड क्रम से बाहर चलने से रोका जा सके।
ब्लॉकर्स उनके नीचे किसी भी चीज़ को तब तक निष्पादित होने से रोकते हैं जब तक उनके ऊपर के सभी कमांड पूरे नहीं हो जाते (वर्तमान में सक्रिय होस्ट के लिए)। उदाहरण के लिए, निम्नलिखित में:
mkdir -p _output_/_target_/scans/
_blocker_
nmap _target_ -oA _output_/_target_/scans/_target_-nmap
यहाँ ब्लॉकर का उपयोग nmap को किसी लक्ष्य पर चलने से रोकता है जब तक कि आधार फ़ोल्डर संरचना नहीं बन जाती, जिससे nmap को अपवाद फेंकने से रोका जा सके।
ब्लॉक्स उनके अंदर की हर चीज़ को क्रमिक रूप से चलाने के लिए मजबूर करते हैं। आप प्रति कमांड फ़ाइल में कई ब्लॉक्स का भी उपयोग कर सकते हैं। उदाहरण के लिए, निम्नलिखित में:
_block:nmap_
mkdir -p _target_/output/scans/
nmap _target_ -oN _target_/output/scans/_target_-nmap
_block:nmap_
nikto --host _target_
इस उदाहरण में, ब्लॉक पहले की तरह ही चलेगा, लेकिन यह मानते हुए कि थ्रेड गणना पर्याप्त है, nikto तुरंत चलना शुरू कर देगा, और परिणाम टर्मिनल पर वापस भेजेगा (जबकि nmap और फ़ाइल निर्माण पृष्ठभूमि में होगा)।
मान लें कि आपके पास एक फ़ाइल targets.txt है जिसमें निम्नलिखित सामग्री है:
bugcrowd.com
hackerone.com
आप इस फ़ाइल के भीतर किसी भी संख्या में लक्ष्यों पर चलाने के लिए इंटरलेस का उपयोग कर सकते हैं: bash
➜ /tmp interlace -tL ./targets.txt -threads 5 -c "nikto --host _target_ > ./_target_-nikto.txt" -v
=========================================================================
Interlace v1.0 by Michael Skelton (@codingo_) & Sajeeb Lohani (@sml555_)
=========================================================================
[14:33:23] [THREAD] [nikto --host hackerone.com > ./hackerone.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host bugcrowd.com > ./bugcrowd.com-nikto.txt] Added to Queue
यह प्रत्येक होस्ट पर Nikto चलाएगा और प्रत्येक लक्ष्य के लिए एक फ़ाइल में सहेजेगा। ध्यान दें कि उपरोक्त उदाहरण में चूँकि हम > ऑपरेटर का उपयोग कर रहे हैं, परिणाम टर्मिनल पर वापस नहीं भेजे जाएँगे; हालांकि यह वांछित कार्यक्षमता है अन्यथा हम यह विशेषता नहीं कर पाएंगे कि Nikto परिणाम किस लक्ष्य के लिए लौटा रहा है।
उन अनुप्रयोगों के लिए जहाँ आप प्रतिक्रिया चाहते हैं, बस कमांड को सामान्य रूप से पास करें (या tee का उपयोग करें)।
उपरोक्त उदाहरण का उपयोग करते हुए, मान लें कि आप समान लक्ष्यों के लिए पोर्ट 80 और 443 दोनों के लिए स्वतंत्र स्कैन चलाना चाहते हैं। तब आप निम्नलिखित का उपयोग करेंगे:
➜ /tmp interlace -tL ./targets.txt -threads 5 -c "nikto --host _target_:_port_ > ./_target_-_port_-nikto.txt" -p 80,443 -v
=========================================================================
Interlace v1.0 by Michael Skelton (@codingo_) & Sajeeb Lohani (@sml555_)
=========================================================================
[14:33:23] [THREAD] [nikto --host hackerone.com:80 > ./hackerone.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host bugcrowd.com:80 > ./hackerone.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host bugcrowd.com:443 > ./bugcrowd.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host hackerone.com:443 > ./hackerone.com-nikto.txt] Added to Queue
अक्सर पैठ परीक्षणों में, कमांड की एक सूची होती है जिसे आप लगभग हर काम पर चलाना चाहते हैं। यह मानते हुए कि उस सूची में testssl.sh, nikto, और sslscan शामिल हैं, आप निम्नलिखित सामग्री के साथ commands.txt नामक फ़ाइल में एक कमांड सूची सहेज सकते हैं:
nikto --host _target_:_port_ > _output_/_target_-nikto.txt
sslscan _target_:_port_ > _output_/_target_-sslscan.txt
testssl.sh _target_:_port_ > _output_/_target_-testssl.txt
यदि आपको तब एक लक्ष्य example.com दिया जाता है, तो आप निम्नलिखित का उपयोग करके प्रत्येक कमांड को इस लक्ष्य के विरुद्ध चला सकते हैं:
interlace -t example.com -o ~/Engagements/example/ -cL ./commands.txt -p 80,443
यह तब example.com के विरुद्ध पोर्ट 80 और 443 दोनों के लिए nikto, sslscan, और testssl.sh चलाएगा और फ़ाइलों को आपके engagements फ़ोल्डर में सहेजेगा।
इंटरलेस थ्रेड शुरू करते समय स्वचालित रूप से CIDR नोटेशन का विस्तार करता है (जब तक कि --no-cidr फ़्लैग पास न किया गया हो)। यह आपको विभिन्न अनुप्रयोगों में CIDR नोटेशन पास करने की अनुमति देता है:
192.168.12.0/24 के भीतर प्रत्येक लक्ष्य के विरुद्ध एक वर्चुअल होस्ट स्कैन चलाने के लिए, आप सीधे कमांड का उपयोग कर सकते हैं:
interlace -t 192.168.12.0/24 -c "vhostscan _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
यह इस तथ्य के बावजूद है कि VHostScan में कोई अंतर्निहित CIDR नोटेशन समर्थन नहीं है। चूँकि इंटरलेस थ्रेड्स की कतार बनाने से पहले नोटेशन का विस्तार करता है, VHostScan सभी इरादों और उद्देश्यों के लिए केवल सीधे IP पतों की एक सूची प्राप्त करता है।
इंटरलेस थ्रेड शुरू करते समय स्वचालित रूप से ग्लोब रेंज का विस्तार करता है। यह आपको विभिन्न अनुप्रयोगों में ग्लोब रेंज पास करने की अनुमति देता है:
192.168.12.* के भीतर प्रत्येक लक्ष्य के विरुद्ध एक वर्चुअल होस्ट स्कैन चलाने के लिए, आप सीधे कमांड का उपयोग कर सकते हैं:
interlace -t 192.168.12.* -c "vhostscan _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
फिर से, VHostScan में कोई अंतर्निहित ग्लोब रेंज प्रारूप समर्थन नहीं है।
इंटरलेस थ्रेड शुरू करते समय स्वचालित रूप से डैश रेंज का विस्तार करता है। यह आपको विभिन्न अनुप्रयोगों में ग्लोब रेंज पास करने की अनुमति देता है:
192.168.12.1-15 के भीतर प्रत्येक लक्ष्य के विरुद्ध एक वर्चुअल होस्ट स्कैन चलाने के लिए, आप सीधे कमांड का उपयोग कर सकते हैं:
interlace -t 192.168.12.1-15 -c "vhostscan _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
फिर से, VHostScan में कोई अंतर्निहित डैश रेंज प्रारूप समर्थन नहीं है।
एक फ़ाइल (target-list.txt) में प्रत्येक होस्ट के विरुद्ध एक वर्चुअल होस्ट स्कैन चलाएँ, साथ ही किसी भी समय स्कैन को अधिकतम 50 थ्रेड तक सीमित रखें।
यह सीधे कमांड का उपयोग करके किया जा सकता है:
interlace -tL ./target-list.txt -c "vhostscan -t _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
या, वैकल्पिक रूप से, उसी कमांड को चलाने के लिए, लेकिन कमांड फ़ाइल का उपयोग करके:
interlace -cL ./vhosts-commands.txt -tL ./target-list.txt -threads 50 -o ~/scans
यह मानता है कि कमांड फ़ाइल की सामग्री है:
vhostscan -t $target -oN _output_/_target_-vhosts.txt
यह निर्दिष्ट आउटपुट फ़ोल्डर में प्रत्येक लक्ष्य के लिए एक फ़ाइल आउटपुट करेगा। आप उन्हें कमांड फ़ाइल में जोड़कर एकाधिक कमांड भी चला सकते हैं।
इंटरलेस स्वचालित रूप से -e या -eL तर्कों के माध्यम से प्रदान किए गए किसी भी होस्ट को बाहर करता है। ये तर्क ऊपर उल्लिखित रेंज नोटेशन (CIDR, ग्लोब, और डैश) के साथ भी संगत हैं।
CIDR रेंज 192.168.12.0/24 में प्रत्येक लक्ष्य के विरुद्ध एक वर्चुअल होस्ट स्कैन चलाने के लिए, लेकिन रेंज 192.168.12.0/26 में लक्ष्यों के लिए नहीं, एक सीधे कमांड का उपयोग करके, आप इसका उपयोग कर सकते हैं:
interlace -t 192.168.12.0/24 -e 192.168.12.0/26 -c "vhostscan _target_ -oN _output_/_target_-vhosts.txt" -o ~/scans/ -threads 50
उपरोक्त उदाहरण का उपयोग करते हुए, मान लें कि आप समान लक्ष्यों के लिए विभिन्न प्रॉक्सी के माध्यम से स्वतंत्र स्कैन चलाना चाहते हैं। तब आप निम्नलिखित का उपयोग करेंगे:
➜ /tmp interlace -tL ./targets.txt -pL ./proxies.txt -threads 5 -c "nikto --host _target_:_port_ -useproxy _proxy_ > ./_target_-_port_-nikto.txt" -p 80,443 -v
मूल रूप से माइकल स्केल्टन (codingo) और सजीब लोहानी (sml555) द्वारा लिखा गया, जिसमें थ्रेडिंग रिफैक्टरिंग और समग्र दृष्टिकोण के लिए चेरेल कॉलेट (@Charcol0x89) और परीक्षण और दृष्टिकोण के लिए ल्यूक स्टीफंस (hakluke) की मदद ली गई।
इस परियोजना में योगदान का स्वागत है। यदि आप ओपन सोर्स में नए हैं और ऐसा करने में कुछ सहायता चाहते हैं, तो बेझिझक हमसे ट्विटर पर संपर्क करें (@codingo_) / (@sml555_) और हम जहां भी संभव हो, सहायता करेंगे।
| तर्क | विवरण |
|---|
| (stdin) | किसी अन्य एप्लिकेशन से लक्ष्य सूचियों को कॉमा-डिलीमिटेड प्रारूप, CIDR नोटेशन, या एक व्यक्तिगत होस्ट के रूप में पाइप करें |
| -t | एक लक्ष्य या डोमेन नाम कॉमा-डिलीमिटेड प्रारूप, CIDR नोटेशन, या एक व्यक्तिगत होस्ट के रूप में निर्दिष्ट करें |
| -tL | लक्ष्यों या डोमेन नामों की एक सूची निर्दिष्ट करें |
| -e | बहिष्कृत करने के लिए लक्ष्यों की एक सूची कॉमा-डिलीमिटेड प्रारूप, CIDR नोटेशन, या एक व्यक्तिगत होस्ट के रूप में निर्दिष्ट करें |
| -eL | बहिष्कृत करने के लिए लक्ष्यों की एक सूची निर्दिष्ट करें |
| -threads | किसी भी समय चलने वाले थ्रेड्स की अधिकतम संख्या निर्दिष्ट करें (डिफ़ॉल्ट:5) |
| -timeout | किसी एकल थ्रेड के लिए सेकंड में टाइमआउट मान निर्दिष्ट करें (डिफ़ॉल्ट:600) |
| -c | प्रत्येक लक्ष्य या डोमेन पर निष्पादित करने के लिए एक एकल कमांड निर्दिष्ट करें |
| -cL | प्रत्येक लक्ष्य या डोमेन पर निष्पादित करने के लिए कमांड की एक सूची निर्दिष्ट करें |
| -o | एक आउटपुट फ़ोल्डर चर निर्दिष्ट करें जिसका उपयोग कमांड में _output_ के रूप में किया जा सकता है |
| -p | पोर्ट चर की एक सूची निर्दिष्ट करें जिसका उपयोग कमांड में _port_ के रूप में किया जा सकता है। यह एक एकल पोर्ट, कॉमा-डिलीमिटेड सूची, या डैश नोटेशन का उपयोग करके एक श्रेणी हो सकती है |
| -pL | प्रॉक्सी की एक सूची निर्दिष्ट करें |
| --proto | प्रोटोकॉल निर्दिष्ट करें जिनका उपयोग कमांड में _proto_ के रूप में किया जा सकता है |
| -rp | एक वास्तविक पोर्ट चर निर्दिष्ट करें जिसका उपयोग कमांड में _realport_ के रूप में किया जा सकता है |
| -random | फ़ाइलों की एक निर्देशिका निर्दिष्ट करें जिसका उपयोग यादृच्छिक रूप से कमांड में _random_ के रूप में किया जा सकता है |
| --no-bar / --sober | यदि सेट किया जाता है तो प्रगति पट्टी हटा दी जाएगी |
| --no-cidr | यदि सेट किया जाता है तो लक्ष्य फ़ाइल में CIDR नोटेशन स्वचालित रूप से व्यक्तिगत होस्ट में विस्तारित नहीं किया जाएगा |
| --no-color | यदि सेट किया जाता है तो कोई भी अग्रभूमि या पृष्ठभूमि रंग हटा दिए जाएँगे |
| --silent | यदि सेट किया जाता है तो केवल महत्वपूर्ण जानकारी प्रदर्शित की जाएगी और बैनर और अन्य जानकारी छिपा दी जाएगी |
| -v | यदि सेट किया जाता है तो टर्मिनल में विस्तृत आउटपुट प्रदर्शित किया जाएगा |
| चर | प्रतिस्थापन |
|---|
| _target_ | विस्तारित लक्ष्य सूची से बदला जाता है जिसके विरुद्ध वर्तमान थ्रेड चल रहा है |
| _cleantarget_ | http:// या https:// से साफ़ किए गए लक्ष्य से बदला जाता है |
| _safe-target_ | कमांड के लिए स्वचालित रूप से उद्धरण करके लक्ष्य से बदला जाता है, जिससे उपकमांड चलने से रोका जाता है |
| _host_ | _target_ के समान काम करता है, और एक दूसरे के स्थान पर उपयोग किया जा सकता है |
| _output_ | Interlace के आउटपुट फ़ोल्डर चर से बदला जाता है |
| _port_ | Interlace के विस्तारित पोर्ट चर से बदला जाता है |
| _realport_ | Interlace के वास्तविक पोर्ट चर से बदला जाता है |
| _proxy_ | Interlace की प्रॉक्सी सूची से बदला जाता है |
| _random_ | Interlace से यादृच्छिक रूप से चुनी गई फ़ाइल से बदला जाता है |