
Uno strumento veloce e completo per la scansione delle reti organizzative
Funzionalità • Utilizzo • Installazione • Utilizzo • Contribuire • Note Aggiuntive
Domainim è un veloce strumento di ricognizione dei domini per la scansione delle reti aziendali. Lo strumento mira a fornire una breve panoramica della struttura di un'organizzazione utilizzando tecniche come OSINT, brute force, risoluzione DNS, ecc.
Funzionalità attuali (v1.0.1)-

Enumerazione dei nomi host virtuali
Reverse DNS lookup
Rilevamento dei sottodomini wildcard (per il brute force)
Scansione di base delle porte TCP
I sottodomini sono accettati come input
Esportazione dei risultati in file JSON
Alcune funzionalità sono in fase di sviluppo. Vedi Funzionalità pianificate per maggiori dettagli.
Il progetto è ispirato da Sublist3r. Il modulo di scansione delle porte è fortemente basato su NimScan.
Puoi compilare questo repository dal sorgente-
git clone [email protected]:pptx704/domainim
nimble build
./domainim <dominio> [--ports=<porte>]
Oppure puoi semplicemente scaricare il binario dalla pagina delle release. Tieni presente che il binario è testato solo su sistemi basati su Debian.
./domainim <dominio> [--ports=<porte> | -p:<porte>] [--wordlist=<file> | l:<file> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<file> | -o:<file>]
<dominio> è il dominio da enumerare. Può anche essere un sottodominio.--ports | -p è una specifica stringa delle porte da scansionare. Può essere uno dei seguenti:
all - Scansiona tutte le porte (1-65535)none - Salta la scansione delle porte (predefinito)t<n> - Scansiona le prime n porte (come nmap). Es. t100 scansiona le prime 100 porte. Il valore massimo è 5000. Se n è maggiore di 5000, verrà impostato a 5000.80 scansiona la porta 8080-100 scansiona le porte da 80 a 10080,443,8080 scansiona le porte 80, 443 e 808080,443,8080-8090,t500 scansiona le porte 80, 443, da 8080 a 8090 e le prime 500 porteEsempi
./domainim nmap.org --ports=all./domainim google.com --ports=none --dns=8.8.8.8#53./domainim pptx704.com --ports=t100 --wordlist=wordlist.txt --rps=1500./domainim pptx704.com --ports=t100 --wordlist=wordlist.txt --outfile=results.json./domainim mysite.com --ports=t50,5432,7000-9000 --dns=1.1.1.1Il menu di aiuto può essere accessibile con ./domainim --help o ./domainim -h.
Usage:
domainim <dominio> [--ports=<porte> | -p:<porte>] [--wordlist=<file> | l:<file> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<file> | -o:<file>]
domainim (-h | --help)
Options:
-h, --help Mostra questa schermata.
-p, --ports Porte da scansionare. [default: `none`]
Può essere `all`, `none`, `t<n>`, singolo valore, intervallo, combinazione
-l, --wordlist Wordlist per il brute force dei sottodomini. Il brute force viene saltato per file non validi.
-d, --dns IP e Porta per il risolutore DNS. Deve essere un IPv4 valido con porta opzionale [default: default di sistema]
-r, --rps Query DNS al secondo [default: 1024 req/s]
-o, --out File JSON in cui verrà salvato l'output. Il nome del file deve terminare con `.json`
Examples:
domainim domainim.com -p:t500 -l:wordlist.txt --dns:1.1.1.1#53 --out=results.json
domainim sub.domainim.com --ports=all --dns:8.8.8.8 -t:1500 -o:results.json
Lo schema JSON per i risultati è il seguente-
[
{
"subdomain": string,
"data": [
"ipv4": string,
"vhosts": [string],
"reverse_dns": string,
"ports": [int]
]
}
]
Un esempio JSON per nmap.org può essere trovato qui.
I contributi sono benvenuti. Sentiti libero di aprire una pull request o un issue.
Questo progetto è ancora nelle fasi iniziali. Ci sono diverse limitazioni di cui sono a conoscenza.
I due motori che sto utilizzando (li chiamo motori perché Sublist3r fa lo stesso) hanno attualmente una sorta di limite di risposta. dnsdumpster può recuperare fino a 100 sottodomini. crt.sh randomizza anche i risultati in caso di troppi risultati. Un altro problema con crt.sh è che a volte restituisce un errore SQL. Quindi per alcuni domini, i risultati possono variare tra esecuzioni diverse. Ho intenzione di aggiungere più motori in futuro (almeno un motore di brute force).
Lo scanner di porte ha solo un timeout di tempo di risposta ping + 750ms. Questo potrebbe portare a falsi negativi. Poiché domainim non è progettato per la scansione delle porte ma per fornire una rapida panoramica, tali casi sono accettabili. Tuttavia, ho intenzione di aggiungere un flag per aumentare il timeout. Per lo stesso motivo, le porte filtrate non vengono mostrate. Per scansioni di porte più complete, consiglio di usare Nmap. Domainim inoltre non bypassa la limitazione della velocità (se presente).
Potrebbe sembrare che il modo in cui vengono stampati i vhost causi ripetizione.

Stampare come segue potrebbe essere stato meglio-
ack.nmap.org, issues.nmap.org, nmap.org, research.nmap.org, scannme.nmap.org, svn.nmap.org, www.nmap.org
↳ 45.33.49.119
↳ Reverse DNS: ack.nmap.org.
Ma in precedenza durante i test, ho trovato casi in cui non tutti gli IP sono condivisi dallo stesso insieme di vhost. Ecco perché ho deciso di mantenere questo formato.

Il server DNS potrebbe avere una qualche limitazione di velocità. Ecco perché ho aggiunto ritardi casuali (tra 0-300ms) per la risoluzione IPv4 per ogni query. Questo per non far arrivare tutte le query al server DNS in una volta sola, ma in modo più naturale. Per il metodo di brute force, il valore è tra 0-1000ms per impostazione predefinita, ma può essere modificato con il flag --rps | -t.
Una limitazione particolare che mi infastidisce è che il risolutore DNS non restituisce tutti gli IP per un dominio. Quindi è necessario fare più query per ottenere tutti (o la maggior parte) degli IP. Ma d'altra parte, non è possibile sapere quanti IP ci siano per un dominio. Devo ancora trovare una soluzione per questo. Inoltre, nim-ndns non supporta i record CNAME. Quindi, se un dominio ha un record CNAME, non verrà risolto. Sto aspettando una risposta dall'autore per questo.
Per ora, il brute force viene saltato se viene trovato un possibile sottodominio wildcard. Questo perché, se un dominio ha un sottodominio wildcard, il brute force risolverà IPv4 per tutti i possibili sottodomini. Tuttavia, questo salterà anche i sottodomini validi (es. scanme.nmap.org verrà saltato anche se non è un valore wildcard). Aggiungerò in seguito un flag --force-brute | -fb per forzare il brute force.
Lo stesso vale per l'enumerazione dei VHost per input di sottodomini. Poiché vengono restituiti URL che terminano con i sottodomini forniti, i sottodomini di domini simili non vengono considerati. Ad esempio, scannme.nmap.org non verrà stampato per ack.nmap.org, ma something.ack.nmap.org potrebbe esserlo. Potrei cercare tutti i sottodomini di nmap.org, ma ciò vanifica lo scopo di avere un sottodominio come input.
Licenza MIT. Vedi LICENSE per il testo completo.
--dns | -d è l'indirizzo del server DNS. Deve essere un indirizzo IPv4 valido e può opzionalmente contenere il numero di porta-
a.b.c.d - Usa il server DNS a a.b.c.d sulla porta 53a.b.c.d#n - Usa il server DNS a a.b.c.d sulla porta e--wordlist | -l - Percorso del file wordlist. Questo viene utilizzato per il brute force dei sottodomini. Se il file non è valido, il brute force verrà saltato. Puoi ottenere una wordlist da SecLists. Una wordlist è anche fornita nella pagina delle release.--rps | -r - Numero di richieste al secondo durante il brute force. Il valore predefinito è 1024 req/s. Da notare che le query DNS vengono effettuate in batch e il batch successivo viene eseguito solo dopo il completamento del precedente. Poiché le query possono essere limitate, aumentare il valore non garantisce sempre risultati più veloci.--out | -o - Percorso del file di output. L'output verrà salvato in formato JSON. Il nome del file deve terminare con .json.