
Lepus è uno strumento per l'enumerazione di sottodomini, la verifica di takeover di sottodomini e l'esecuzione di scansioni delle porte – ed è molto veloce!
lepus.py yahoo.com
Le modalità di enumerazione sono diversi modi che lepus utilizza per identificare sottodomini per un dato dominio. Queste modalità sono:
Inoltre:
La modalità Collectors raccoglie sottodomini dai seguenti servizi:
Puoi aggiungere le tue chiavi API nel file config.ini.
Il modulo Collectors verrà eseguito di default su lepus. Se non vuoi usare i collectors durante un'esecuzione di lepus (per non esaurire i limiti delle tue chiavi API), puoi usare l'argomento -nc o --no-collectors.
La modalità dizionario può essere usata quando vuoi fornire a lepus una lista di sottodomini. Puoi usare l'argomento -w o --wordlist seguito dal file. Con lepus viene inclusa una lista personalizzata situata in lists/subdomains.txt. Un esempio di esecuzione sarebbe:
lepus.py -w lists/subdomains.txt yahoo.com
La modalità Permutazioni esegue modifiche sulla lista di sottodomini che sono stati identificati. Per ogni sottodominio, verrà effettuato un numero di permutazioni basate sul file lists/words.txt. Puoi anche fornire una wordlist personalizzata per le permutazioni con l'argomento -pw o --permutation-wordlist, seguito dal nome del file. Un esempio di esecuzione sarebbe:
lepus.py --permutate yahoo.com
oppure
lepus.py --permutate -pw customsubdomains.txt yahoo.com
La modalità ReverseDNS raccoglierà tutti gli indirizzi IP risolti ed eseguirà un reverse DNS su ciascuno di essi per rilevare ulteriori sottodomini. Ad esempio, se www.example.com risolve in 1.2.3.4, lepus eseguirà un reverse DNS per 1.2.3.4 e raccoglierà qualsiasi altro sottodominio appartenente a example.com, ad esempio www2, internal o oldsite.
Per eseguire il modulo ReverseDNS usa l'argomento --reverse. Inoltre, --ripe (o -ripe) può essere usato per istruire il modulo a interrogare il database RIPE usando il dominio di secondo livello per potenziali intervalli di rete. Inoltre, lepus supporta l'argomento --ranges (o -r). Puoi usarlo per effettuare risoluzioni reverse DNS contro CIDR che appartengono al dominio di destinazione.
Per impostazione predefinita, questo modulo terrà conto di tutti gli IP precedentemente identificati, poi degli intervalli definiti, poi degli intervalli identificati tramite il database RIPE. Nel caso in cui si voglia eseguire il modulo solo contro intervalli specifici o identificati da RIPE, e non contro tutti gli IP già identificati, puoi usare l'argomento --only-ranges (-or).
Un esempio di esecuzione sarebbe:
lepus.py --reverse yahoo.com
oppure
lepus.py --reverse -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
oppure solo contro gli intervalli definiti o identificati da RIPE
lepus.py --reverse -or -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
Suggerimento: lepus identificherà ASN e Reti durante l'enumerazione, quindi puoi anche usare questi intervalli per identificare più sottodomini con un'esecuzione successiva.
Con questo modulo, Lepus utilizzerà le catene di Markov per addestrarsi e poi generare sottodomini basati su quelli già noti. Più ampia è la superficie generale, migliore sarà la capacità dello strumento di addestrarsi e, di conseguenza, migliori saranno i risultati.
Il modulo può essere attivato con l'argomento --markovify. I parametri includono anche la dimensione dello stato di Markov, la lunghezza massima dell'aggiunta del candidato generato e la quantità di candidati generati. I valori predefiniti sono rispettivamente 3, 5 e 5. Questi argomenti possono essere modificati con -ms (--markov-state), -ml (--markov-length) e -mq (--markov-quantity) per soddisfare le tue esigenze. Tieni presente che più grandi sono questi valori, più tempo Lepus impiegherà per generare i candidati.
Va notato che esecuzioni diverse di questo modulo potrebbero generare candidati diversi, quindi sentiti libero di eseguirlo alcune volte consecutivamente. Tieni presente che più alti sono i valori di -ms, -ml e -mq, più tempo sarà necessario per la generazione dei candidati.
lepus.py --markovify yahoo.com
oppure
lepus.py --markovify -ms 5 -ml 10 -mq 10
Lepus ha una lista di firme per identificare se un dominio può essere preso in consegna (takeover). Puoi usarlo fornendo l'argomento --takeover. Questo modulo supporta anche notifiche Slack, una volta identificato un potenziale takeover, aggiungendo un token Slack nel file config.ini. I controlli vengono effettuati sui seguenti servizi:
Il modulo di scansione delle porte verificherà le porte aperte su un target e le registrerà nei risultati. Puoi usare l'argomento --portscan che per impostazione predefinita scansionerà le porte 80, 443, 8000, 8080, 8443. Puoi anche usare porte personalizzate o scegliere un insieme predefinito di porte.
| Insieme di porte | Porte |
|---|---|
| small | 80, 443 |
| medium (default) | 80, 443, 8000, 8080, 8443 |
Un esempio di esecuzione sarebbe:
lepus.py --portscan yahoo.com
oppure
lepus.py --portscan -p huge yahoo.com
oppure
lepus.py --portscan -p 80,443,8082,65123 yahoo.com
Installazione normale:
$ python3.7 -m pip install -r requirements.txt
Preferibilmente installare in un virtualenv:
$ pyenv virtualenv 3.7.4 lepus
$ pyenv activate lepus
$ pip install -r requirements.txt
Installare l'ultima versione di Python su Debian:
$ 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 dominio da cercare
optional arguments:
-h, --help mostra questo messaggio di aiuto ed esce
-w WORDLIST, --wordlist WORDLIST
wordlist con sottodomini
-hw, --hide-wildcards
nascondi risoluzioni wildcard
-t THREADS, --threads THREADS
numero di thread [default è 100]
-nc, --no-collectors salta l'enumerazione passiva dei sottodomini
-zt, --zone-transfer tenta il trasferimento di zona dai name server identificati
--permutate esegue permutazioni sui domini risolti
-pw PERMUTATION_WORDLIST, --permutation-wordlist PERMUTATION_WORDLIST
wordlist per eseguire permutazioni [default è
lists/words.txt]
--reverse esegue ricerche DNS inverse sugli indirizzi IP pubblici risolti
-ripe, --ripe interroga il database RIPE con il dominio di secondo livello
per reti da utilizzare per le ricerche inverse
-r RANGES, --ranges RANGES
intervalli IP separati da virgole su cui eseguire ricerche
DNS inverse
-or, --only-ranges usa solo gli intervalli forniti con -r o -ripe e non tutti
gli IP precedentemente identificati
--portscan scansiona gli indirizzi IP pubblici risolti per porte aperte
-p PORTS, --ports PORTS
insieme di porte da utilizzare nel modulo di scansione
[default è medium]
--takeover controlla gli host identificati per potenziali takeover di
sottodomini
--markovify usa catene di Markov per identificare più sottodomini
-ms MARKOV_STATE, --markov-state MARKOV_STATE
dimensione dello stato di Markov [default è 3]
-ml MARKOV_LENGTH, --markov-length MARKOV_LENGTH
lunghezza massima delle sostituzioni di Markov [default è 5]
-mq MARKOV_QUANTITY, --markov-quantity MARKOV_QUANTITY
quantità massima di risultati di Markov per lunghezza del
candidato [default è 5]
-f, --flush cancella tutti i record del dominio specificato dal database
-v, --version mostra il numero di versione del programma ed esce
Quello che segue è un esempio di esecuzione con tutti gli argomenti attivi disponibili:
./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
Il comando seguente elimina tutte le voci del database per un dominio specifico:
./lepus.py python.org --flush
| Servizio | API richiesta |
|---|
| 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 |