
Lepus उपडोमेन की गणना, उपडोमेन टेकओवर की जाँच और पोर्ट स्कैन करने का एक उपकरण है - और हाँ, यह बहुत तेज़ है!
lepus.py yahoo.com
गणना मोड विभिन्न तरीके हैं जिनका उपयोग lepus किसी दिए गए डोमेन के लिए उपडोमेन की पहचान करने के लिए करता है। ये मोड हैं:
इसके अलावा:
Collectors मोड निम्नलिखित सेवाओं से उपडोमेन एकत्र करता है:
आप अपनी API कुंजियाँ config.ini फ़ाइल में जोड़ सकते हैं।
Collectors मॉड्यूल डिफ़ॉल्ट रूप से lepus पर चलेगा। यदि आप lepus रन के दौरान कलेक्टरों का उपयोग नहीं करना चाहते हैं (ताकि आपकी API कुंजी सीमाएँ समाप्त न हों), तो आप -nc या --no-collectors तर्क का उपयोग कर सकते हैं।
डिक्शनरी मोड का उपयोग तब किया जा सकता है जब आप lepus को उपडोमेन की एक सूची प्रदान करना चाहते हैं। आप -w या --wordlist तर्क का उपयोग कर सकते हैं जिसके बाद फ़ाइल का नाम हो। lepus के साथ एक कस्टम सूची lists/subdomains.txt पर आती है। एक उदाहरण रन होगा:
lepus.py -w lists/subdomains.txt yahoo.com
Permutations मोड पहचाने गए उपडोमेन की सूची में परिवर्तन करता है। प्रत्येक उपडोमेन के लिए, lists/words.txt फ़ाइल के आधार पर अनेक क्रमपरिवर्तन होंगे। आप -pw या --permutation-wordlist तर्क के साथ क्रमपरिवर्तन के लिए एक कस्टम शब्द सूची भी प्रदान कर सकते हैं, जिसके बाद फ़ाइल का नाम हो। एक उदाहरण रन होगा:
lepus.py --permutate yahoo.com
या
lepus.py --permutate -pw customsubdomains.txt yahoo.com
ReverseDNS मोड उन सभी IP पतों को एकत्र करेगा जो हल किए गए थे और अधिक उपडोमेन का पता लगाने के लिए प्रत्येक पर रिवर्स DNS करेगा। उदाहरण के लिए, यदि www.example.com 1.2.3.4 पर हल होता है, तो lepus 1.2.3.4 के लिए रिवर्स DNS करेगा और example.com से संबंधित किसी भी अन्य उपडोमेन को एकत्र करेगा, जैसे www2, internal या oldsite।
ReverseDNS मॉड्यूल चलाने के लिए --reverse तर्क का उपयोग करें। इसके अतिरिक्त, --ripe (या -ripe) का उपयोग मॉड्यूल को संभावित नेटवर्क रेंज के लिए दूसरे स्तर के डोमेन का उपयोग करके RIPE डेटाबेस से क्वेरी करने का निर्देश देने के लिए किया जा सकता है। इसके अलावा, lepus --ranges (या -r) तर्क का समर्थन करता है। आप इसका उपयोग लक्ष्य डोमेन से संबंधित CIDR के विरुद्ध रिवर्स DNS रिज़ॉल्यूशन करने के लिए कर सकते हैं।
डिफ़ॉल्ट रूप से यह मॉड्यूल सभी पहले से पहचाने गए IP, फिर परिभाषित रेंज, फिर RIPE डेटाबेस के माध्यम से पहचानी गई रेंज को ध्यान में रखेगा। यदि आप केवल विशिष्ट या RIPE द्वारा पहचानी गई रेंज के विरुद्ध मॉड्यूल चलाना चाहते हैं, न कि सभी पहचाने गए IP के विरुद्ध, तो आप --only-ranges (-or) तर्क का उपयोग कर सकते हैं।
एक उदाहरण रन होगा:
lepus.py --reverse yahoo.com
या
lepus.py --reverse -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
या केवल परिभाषित या RIPE से पहचानी गई रेंज के विरुद्ध
lepus.py --reverse -or -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
संकेत: lepus गणना के दौरान ASNs और Networks की पहचान करेगा, इसलिए आप बाद के रन में अधिक उपडोमेन की पहचान करने के लिए इन रेंजों का भी उपयोग कर सकते हैं।
इस मॉड्यूल के साथ, Lepus स्वयं को प्रशिक्षित करने और फिर पहले से ज्ञात उपडोमेन के आधार पर उपडोमेन उत्पन्न करने के लिए Markov श्रृंखलाओं का उपयोग करेगा। सामान्य सतह जितनी बड़ी होगी, उपकरण उतना ही बेहतर प्रशिक्षित होगा और परिणाम उतने ही बेहतर होंगे।
मॉड्यूल को --markovify तर्क के साथ सक्रिय किया जा सकता है। पैरामीटर में Markov स्थिति आकार, उत्पन्न उम्मीदवार जोड़ की अधिकतम लंबाई और उत्पन्न उम्मीदवारों की मात्रा शामिल है। पूर्वनिर्धारित मान क्रमशः 3, 5 और 5 हैं। इन तर्कों को आपकी आवश्यकतानुसार -ms (--markov-state), -ml (--markov-length) और -mq (--markov-quantity) के साथ बदला जा सकता है। ध्यान रखें कि ये मान जितने बड़े होंगे, Lepus को उम्मीदवार उत्पन्न करने में उतना ही अधिक समय लगेगा।
यह ध्यान देने योग्य है कि इस मॉड्यूल के विभिन्न निष्पादन विभिन्न उम्मीदवार उत्पन्न कर सकते हैं, इसलिए इसे लगातार कुछ बार चलाने में संकोच न करें। ध्यान रखें कि -ms, -ml और -mq मान जितने अधिक होंगे, उम्मीदवार निर्माण के लिए उतना ही अधिक समय आवश्यक होगा।
lepus.py --markovify yahoo.com
या
lepus.py --markovify -ms 5 -ml 10 -mq 10
Lepus के पास यह पहचानने के लिए हस्ताक्षरों की एक सूची है कि क्या कोई डोमेन टेकओवर किया जा सकता है। आप --takeover तर्क प्रदान करके इसका उपयोग कर सकते हैं। यह मॉड्यूल संभावित टेकओवर की पहचान होने पर Slack सूचनाओं का भी समर्थन करता है, config.ini फ़ाइल में Slack टोकन जोड़कर। जाँच निम्नलिखित सेवाओं के विरुद्ध की जाती है:
पोर्ट स्कैन मॉड्यूल किसी लक्ष्य के विरुद्ध खुले पोर्ट की जाँच करेगा और उन्हें परिणामों में लॉग करेगा। आप --portscan तर्क का उपयोग कर सकते हैं जो डिफ़ॉल्ट रूप से पोर्ट 80, 443, 8000, 8080, 8443 को स्कैन करेगा। आप कस्टम पोर्ट का भी उपयोग कर सकते हैं या पोर्ट का एक पूर्वनिर्धारित सेट चुन सकते हैं।
| पोर्ट सेट | पोर्ट |
|---|---|
| small | 80, 443 |
| medium (डिफ़ॉल्ट) | 80, 443, 8000, 8080, 8443 |
एक उदाहरण रन होगा:
lepus.py --portscan yahoo.com
या
lepus.py --portscan -p huge yahoo.com
या
lepus.py --portscan -p 80,443,8082,65123 yahoo.com
सामान्य स्थापना:
$ python3.7 -m pip install -r requirements.txt
अधिमानतः virtualenv में स्थापित करें:
$ pyenv virtualenv 3.7.4 lepus
$ pyenv activate lepus
$ pip install -r requirements.txt
debian पर नवीनतम python स्थापित करना:
$ apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget
$ curl -O https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
$ tar -xf Python-3.7.4.tar.xz
$ cd Python-3.7.4
$ ./configure --enable-optimizations --enable-loadable-sqlite-extensions
$ make
$ make altinstall
usage: lepus.py [-h] [-w WORDLIST] [-hw] [-t THREADS] [-nc] [-zt]
[--permutate] [-pw PERMUTATION_WORDLIST] [--reverse]
[-r RANGES] [--portscan] [-p PORTS] [--takeover] [--markovify]
[-ms MARKOV_STATE] [-ml MARKOV_LENGTH] [-mq MARKOV_QUANTITY]
[-f] [-v]
domain
Infrastructure OSINT
positional arguments:
domain domain to search
optional arguments:
-h, --help show this help message and exit
-w WORDLIST, --wordlist WORDLIST
wordlist with subdomains
-hw, --hide-wildcards
hide wildcard resolutions
-t THREADS, --threads THREADS
number of threads [default is 100]
-nc, --no-collectors skip passive subdomain enumeration
-zt, --zone-transfer attempt to zone transfer from identified name servers
--permutate perform permutations on resolved domains
-pw PERMUTATION_WORDLIST, --permutation-wordlist PERMUTATION_WORDLIST
wordlist to perform permutations with [default is
lists/words.txt]
--reverse perform reverse dns lookups on resolved public IP
addresses
-ripe, --ripe query ripe database with the 2nd level domain
for networks to be used for reverse lookups
-r RANGES, --ranges RANGES
comma seperated ip ranges to perform reverse dns
lookups on
-or, --only-ranges use only ranges provided with -r or -ripe and not all
previously identified IPs
--portscan scan resolved public IP addresses for open ports
-p PORTS, --ports PORTS
set of ports to be used by the portscan module
[default is medium]
--takeover check identified hosts for potential subdomain take-
overs
--markovify use markov chains to identify more subdomains
-ms MARKOV_STATE, --markov-state MARKOV_STATE
markov state size [default is 3]
-ml MARKOV_LENGTH, --markov-length MARKOV_LENGTH
max length of markov substitutions [default is 5]
-mq MARKOV_QUANTITY, --markov-quantity MARKOV_QUANTITY
max quantity of markov results per candidate length
[default is 5]
-f, --flush purge all records of the specified domain from the
database
-v, --version show program's version number and exit
निम्नलिखित, सभी उपलब्ध सक्रिय तर्कों के साथ एक उदाहरण रन है:
./lepus.py python.org --wordlist lists/subdomains.txt --permutate -pw ~/mypermsword.lst --reverse -ripe -r 10.11.12.0/24 --portscan -p huge --takeover --markovify -ms 3 -ml 10 -mq 10
निम्नलिखित कमांड किसी विशिष्ट डोमेन के लिए सभी डेटाबेस प्रविष्टियों को हटा देता है:
./lepus.py python.org --flush
| सेवा | API आवश्यक |
|---|
| Censys | हाँ |
| CertSpotter | नहीं |
| CRT | नहीं |
| DNSTrails | हाँ |
| FOFA | हाँ |
| Google Transparency | नहीं |
| HackerTarget | नहीं |
| PassiveTotal | हाँ |
| Project Discovery Chaos | हाँ |
| Project Crobat | नहीं |
| Project Sonar | नहीं |
| Riddler | हाँ |
| Shodan | हाँ |
| Spyse | हाँ |
| ThreatCrowd | नहीं |
| ThreatMiner | नहीं |
| VirusTotal | हाँ |
| Wayback Machine | नहीं |
| ZoomEye | हाँ |
| large |
| 80, 81, 443, 591, 2082, 2087, 2095, 2096, 3000, 8000, 8001, 8008, 8080, 8083, 8443, 8834, 8888, 9000, 9090, 9443 |
| huge | 80, 81, 300, 443, 591, 593, 832, 981, 1010, 1311, 2082, 2087, 2095, 2096, 2480, 3000, 3128, 3333, 4243, 4567, 4711, 4712, 4993, 5000, 5104, 5108, 5800, 6543, 7000, 7396, 7474, 8000, 8001, 8008, 8014, 8042, 8069, 8080, 8081, 8088, 8090, 8091, 8118, 8123, 8172, 8222, 8243, 8280, 8281, 8333, 8443, 8500, 8834, 8880, 8888, 8983, 9000, 9043, 9060, 9080, 9090, 9091, 9200, 9443, 9800, 9943, 9980, 9981, 12443, 16080, 18091, 18092, 20720, 28017 |