
Un outil rapide et complet pour le scan de réseaux organisationnels.
Fonctionnalités • Utilisation • Installation • Utilisation • Contribuer • Notes supplémentaires
Domainim est un outil de reconnaissance rapide de domaines pour le scan réseau d'une organisation. L'outil vise à fournir un aperçu rapide de la structure d'une organisation en utilisant des techniques comme l'OSINT, le bruteforcing, la résolution DNS, etc.
Fonctionnalités actuelles (v1.0.1)-

Énumération de noms d'hôtes virtuels
Recherche DNS inverse
Détection des sous-domaines wildcard (pour le bruteforcing)
Scan de ports TCP de base
Les sous-domaines sont acceptés comme entrée
Exportation des résultats vers un fichier JSON
Quelques fonctionnalités sont en cours de développement. Voir Fonctionnalités prévues pour plus de détails.
Le projet est inspiré par Sublist3r. Le module de scan de ports est largement basé sur NimScan.
Vous pouvez compiler ce dépôt à partir des sources-
git clone [email protected]:pptx704/domainim
nimble build
./domainim <domain> [--ports=<ports>]
Ou, vous pouvez simplement télécharger le binaire depuis la page des versions. Gardez à l'esprit que le binaire est testé uniquement sur les systèmes basés sur Debian.
./domainim <domain> [--ports=<ports> | -p:<ports>] [--wordlist=<filename> | l:<filename> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<filename> | -o:<filename>]
<domain> est le domaine à énumérer. Il peut aussi être un sous-domaine.--ports | -p est une spécification textuelle des ports à scanner. Il peut être l'un des suivants-
all - Scanner tous les ports (1-65535)none - Ignorer le scan de ports (par défaut)t<n> - Scanner les n premiers ports (comme nmap). Par exemple t100 scanne les 100 premiers ports. Valeur max 5000. Si n est supérieur à 5000, il sera fixé à 5000.80 scanne le port 8080-100 scanne les ports de 80 à 10080,443,8080 scanne les ports 80, 443 et 808080,443,8080-8090,t500 scanne les ports 80, 443, 8080 à 8090 et les 500 premiers ports--dns | -d est l'adresse du serveur DNS. Doit être une adresse IPv4 valide et peut éventuellement contenir le numéro de port-
a.b.c.d - Utiliser le serveur DNS à a.b.c.d sur le port 53a.b.c.d#n - Utiliser le serveur DNS à a.b.c.d sur le port e--wordlist | -l - Chemin vers le fichier de liste de mots. Utilisé pour le bruteforcing des sous-domaines. Si le fichier est invalide, le bruteforcing sera ignoré. Vous pouvez obtenir une liste de mots depuis SecLists. Une liste de mots est également fournie dans la page des versions.--rps | -r - Nombre de requêtes par seconde pendant le bruteforcing. La valeur par défaut est 1024 req/s. Il est à noter que les requêtes DNS sont effectuées par lots et que le lot suivant n'est effectué qu'une fois le précédent terminé. Étant donné que les requêtes peuvent être limitées en débit, augmenter la valeur ne garantit pas des résultats plus rapides.--out | -o - Chemin vers le fichier de sortie. La sortie sera sauvegardée au format JSON. Le nom du fichier doit se terminer par .json.Exemples
./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.1Le menu d'aide peut être consulté avec ./domainim --help ou ./domainim -h.
Usage:
domainim <domain> [--ports=<ports> | -p:<ports>] [--wordlist=<filename> | l:<filename> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<filename> | -o:<filename>]
domainim (-h | --help)
Options:
-h, --help Afficher cet écran.
-p, --ports Ports à scanner. [default: `none`]
Peut être `all`, `none`, `t<n>`, une valeur unique, une plage, une combinaison
-l, --wordlist Liste de mots pour le bruteforcing de sous-domaines. Ignoré si le fichier est invalide.
-d, --dns IP et port du résolveur DNS. Doit être une IPv4 valide avec un port optionnel [default: système par défaut]
-r, --rps Requêtes DNS par seconde [default: 1024 req/s]
-o, --out Fichier JSON où la sortie sera sauvegardée. Le nom doit se terminer par `.json`
Exemples:
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
Le schéma JSON pour les résultats est le suivant-
[
{
"subdomain": string,
"data": [
"ipv4": string,
"vhosts": [string],
"reverse_dns": string,
"ports": [int]
]
}
]
Un exemple de JSON pour nmap.org peut être trouvé ici.
Les contributions sont les bienvenues. N'hésitez pas à ouvrir une pull request ou un issue.
Ce projet en est encore à ses débuts. Plusieurs limitations sont connues.
Les deux moteurs que j'utilise (je les appelle moteurs car Sublist3r fait de même) ont actuellement une sorte de limite de réponse. dnsdumpster peut récupérer jusqu'à 100 sous-domaines. crt.sh randomise également les résultats en cas de trop grand nombre. Un autre problème avec crt.sh est qu'il renvoie parfois une erreur SQL. Donc pour certains domaines, les résultats peuvent être différents entre deux exécutions. Je prévois d'ajouter plus de moteurs à l'avenir (au moins un moteur de brute force).