
Ein schnelles und umfassendes Werkzeug zur Netzwerkscanning in Organisationen
Funktionen • Verwendung • Installation • Verwendung • Mitwirken • Zusätzliche Anmerkungen
Domainim ist ein schnelles Domain-Erkennungstool für das Netzwerkscanning von Organisationen. Das Tool soll einen kurzen Überblick über die Struktur einer Organisation bieten, indem Techniken wie OSINT, Brute-Force, DNS-Auflösung usw. eingesetzt werden.
Aktuelle Funktionen (v1.0.1)-

Virtuelle Hostname-Enumeration
Reverse-DNS-Abfrage
Erkennt Wildcard-Subdomains (für Brute-Force)
Einfaches TCP-Port-Scanning
Subdomains werden als Eingabe akzeptiert
Ergebnisse in JSON-Datei exportieren
Einige Funktionen sind in Arbeit. Siehe Geplante Funktionen für weitere Details.
Das Projekt ist von Sublist3r inspiriert. Das Port-Scanner-Modul basiert stark auf NimScan.
Sie können dieses Repository aus dem Quellcode erstellen:
git clone [email protected]:pptx704/domainim
nimble build
./domainim <domain> [--ports=<ports>]
Oder Sie können die Binärdatei einfach von der Release-Seite herunterladen. Beachten Sie, dass die Binärdatei nur auf Debian-basierten Systemen getestet wurde.
./domainim <domain> [--ports=<ports> | -p:<ports>] [--wordlist=<filename> | l:<filename> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<filename> | -o:<filename>]
<domain> ist die zu enumerierende Domain. Es kann auch eine Subdomain sein.--ports | -p ist eine Zeichenfolgenspezifikation der zu scannenden Ports. Es kann eines der folgenden sein-
all - Alle Ports scannen (1-65535)none - Port-Scanning überspringen (Standard)t<n> - Scannt die Top-n-Ports (wie nmap). z.B. t100 scannt die Top-100-Ports. Maximalwert ist 5000. Wenn n größer als 5000 ist, wird es auf 5000 gesetzt.80 scannt Port 8080-100 scannt Ports 80 bis 10080,443,8080 scannt Ports 80, 443 und 808080,443,8080-8090,t500 scannt Ports 80, 443, 8080 bis 8090 und die Top-500-Ports--dns | -d ist die Adresse des DNS-Servers. Dies sollte eine gültige IPv4-Adresse sein und kann optional die Portnummer enthalten-
Beispiele
./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.1Das Hilfemenü kann mit ./domainim --help oder ./domainim -h aufgerufen werden.
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 Show this screen.
-p, --ports Ports to scan. [default: `none`]
Can be `all`, `none`, `t<n>`, single value, range value, combination
-l, --wordlist Wordlist for subdomain bruteforcing. Bruteforcing is skipped for invalid file.
-d, --dns IP and Port for DNS Resolver. Should be a valid IPv4 with an optional port [default: system default]
-r, --rps DNS queries to be made per second [default: 1024 req/s]
-o, --out JSON file where the output will be saved. Filename must end with `.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
Das JSON-Schema für die Ergebnisse lautet wie folgt-
[
{
"subdomain": string,
"data": [
"ipv4": string,
"vhosts": [string],
"reverse_dns": string,
"ports": [int]
]
}
]
Ein Beispiel-JSON für nmap.org finden Sie hier.
Beiträge sind willkommen. Sie können gerne einen Pull-Request oder ein Issue eröffnen.
Dieses Projekt befindet sich noch in der Anfangsphase. Es gibt mehrere Einschränkungen, die mir bewusst sind.
Die beiden Engines, die ich verwende (ich nenne sie Engines, weil Sublist3r das auch tut), haben derzeit eine Art Antwortlimit. dnsdumpster kann bis zu 100 Subdomains abrufen. crt.sh randomisiert die Ergebnisse ebenfalls bei zu vielen Ergebnissen. Ein weiteres Problem mit crt.sh ist, dass es manchmal einen SQL-Fehler zurückgibt. Daher können die Ergebnisse für manche Domains je nach Durchlauf unterschiedlich sein. Ich plane, in Zukunft weitere Engines hinzuzufügen (mindestens eine Brute-Force-Engine).
Der Port-Scanner hat nur ein Timeout von Ping-Antwortzeit + 750ms. Dies kann zu falschen Negativen führen. Da domainim nicht für das Port-Scannen gedacht ist, sondern einen schnellen Überblick bieten soll, sind solche Fälle akzeptabel. Ich plane jedoch, ein Flag hinzuzufügen, um das Timeout zu erhöhen. Aus demselben Grund werden gefilterte Ports nicht angezeigt. Für umfassenderes Port-Scannen empfehle ich Nmap. Domainim umgeht auch keine Ratenbegrenzung (falls vorhanden).
Es mag scheinen, dass die Art, wie VHost-Namen gedruckt werden, nur Wiederholungen mit sich bringt.

Printing as the following might've been better-
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.
Aber bei früheren Tests habe ich Fälle gefunden, in denen nicht alle IPs von denselben VHost-Namen geteilt werden. Deshalb habe ich beschlossen, es so zu belassen.

Der DNS-Server könnte eine Ratenbegrenzung haben. Deshalb habe ich zufällige Verzögerungen (zwischen 0-300ms) für die IPv4-Auflösung pro Abfrage hinzugefügt. Dadurch erhält der DNS-Server nicht alle Abfragen auf einmal, sondern auf eine natürlichere Weise. Für die Brute-Force-Methode liegt der Wert standardmäßig zwischen 0-1000ms, kann aber mit dem Flag --rps | -t geändert werden.
Eine besondere Einschränkung, die mich stört, ist, dass der DNS-Auflöser nicht alle IPs einer Domain zurückgibt. Daher ist es notwendig, mehrere Abfragen durchzuführen, um alle (oder die meisten) IPs zu erhalten. Aber es ist nicht möglich zu wissen, wie viele IPs eine Domain hat. Ich muss mir noch eine Lösung dafür einfallen lassen. Außerdem unterstützt nim-ndns keine CNAME-Einträge. Wenn also eine Domain einen CNAME-Eintrag hat, wird er nicht aufgelöst. Ich warte auf eine Antwort des Autors dazu.
Derzeit wird Brute-Force übersprungen, wenn eine mögliche Wildcard-Subdomain gefunden wird. Der Grund dafür ist, dass bei einer Domain mit einer Wildcard-Subdomain durch Brute-Force IPv4 für alle möglichen Subdomains aufgelöst würde. Dies überspringt jedoch auch gültige Subdomains (z.B. wird scanme.nmap.org übersprungen, obwohl es kein Wildcard-Wert ist). Ich werde später ein --force-brute | -fb Flag hinzufügen, um Brute-Force zu erzwingen.
Ähnliches gilt für die VHost-Enumeration bei Subdomain-Eingaben. Da URLs, die mit den angegebenen Subdomains enden, zurückgegeben werden, werden Subdomains ähnlicher Domains nicht berücksichtigt. Beispielsweise wird scannme.nmap.org nicht für ack.nmap.org ausgegeben, wohl aber something.ack.nmap.org. Ich könnte nach allen Subdomains von nmap.org suchen, aber das würde den Zweck einer Subdomain als Eingabe zunichte machen.
MIT-Lizenz. Siehe LICENSE für den vollständigen Text.
a.b.c.d - DNS-Server unter a.b.c.d auf Port 53 verwendena.b.c.d#n - DNS-Server unter a.b.c.d auf Port e verwenden--wordlist | -l - Pfad zur Wortlistendatei. Diese wird für Brute-Force von Subdomains verwendet. Wenn die Datei ungültig ist, wird Brute-Force übersprungen. Sie können eine Wortliste von SecLists erhalten. Eine Wortliste wird auch auf der Release-Seite bereitgestellt.--rps | -r - Anzahl der Anfragen pro Sekunde während des Brute-Force. Der Standardwert ist 1024 req/s. Es ist zu beachten, dass DNS-Abfragen in Batches durchgeführt werden und der nächste Batch erst nach Abschluss des vorherigen gestartet wird. Da Abfragen ratenbegrenzt sein können, führt eine Erhöhung des Werts nicht immer zu schnelleren Ergebnissen.--out | -o - Pfad zur Ausgabedatei. Die Ausgabe wird im JSON-Format gespeichert. Der Dateiname muss auf .json enden.