
Sudomy ist ein Tool zur Subdomain-Enumeration, das Subdomains sammelt und Domains analysiert, indem es automatisierte Erkundung (Recon) für Bug Hunting / Pentesting durchführt.
Sudomy ist ein Tool zur Subdomain-Enumeration, um Subdomains zu sammeln und Domains mittels automatisierter erweiterter Reconnaissance (Framework) zu analysieren. Dieses Tool kann auch für OSINT-Aktivitäten (Open-Source Intelligence) verwendet werden.
Aktive Methode
Passive Methode
Durch die Bewertung und Auswahl der guten Drittanbieter-Seiten/Ressourcen kann der Enumeration-Prozess optimiert werden. Mit weniger Zeitaufwand werden mehr Ergebnisse erzielt. Sudomy kann Daten von diesen 22 sorgfältig kuratierten Drittanbieter-Seiten sammeln:
https://censys.io
https://developer.shodan.io
https://dns.bufferover.run
https://index.commoncrawl.org
https://riddler.io
https://api.certspotter.com
https://api.hackertarget.com
https://api.threatminer.org
https://community.riskiq.com
https://crt.sh
https://dnsdumpster.com
https://docs.binaryedge.io
https://securitytrails.com
https://graph.facebook.com
https://otx.alienvault.com
https://rapiddns.io
https://spyse.com
https://urlscan.io
https://www.dnsdb.info
https://www.virustotal.com
https://threatcrowd.org
https://web.archive.org
Wie Sudomy funktioniert oder der Recon-Ablauf, wenn Sie die besten Argumente ausführen, um Subdomains zu sammeln und durch automatische Recon zu analysieren.
root@maland: ./sudomy -d bugcrowd.com -dP -eP -rS -cF -pS -tO -gW --httpx --dnsprobe -aI webanalyze -sS
Dieser Recon-Arbeitsablauf Sudomy v1.1.8#dev

Detailinformationen zu Dateien der Reconnaissance & interessanten Daten
------------------------------------------------------------------------------------------------------
- subdomain.txt -- Subdomain-Liste < $DOMAIN (Ziel)
- httprobe_subdomain.txt -- Subdomain validieren < subdomain.txt
- webanalyzes.txt -- Technologie-Scan identifizieren < httprobe_subdomain.txt
- httpx_status_title.txt -- Titel+Statuscode+Länge < httprobe_subdomain.txt
- dnsprobe_subdomain.txt -- Subdomain auflösen < subdomain.txt
- Subdomain_Resolver.txt -- Subdomain auflösen (alt) < subdomain.txt
- cf-ipresolv.txt -- Cloudflare-Scan < ip_resolver.txt
- Live_hosts_pingsweep.txt -- Live-Host prüfen < ip_resolver.txt
- ip_resolver.txt -- IP-Auflösungsliste < Subdomain_Resolver::dnsprobe
- ip_dbasn.txt -- ASN-Nummer prüfen < ip_resolver.txt
- vHost_subdomain.txt -- Virtueller Host (Gruppiert nach IP) < Subdomain_Resolver.txt
- nmap_top_ports.txt -- Aktiver Portscan < cf-ipresolv.txt
- ip_dbport.txt -- Passiver Portscan < cf-ipresolv.txt
------------------------------------------------------------------------------------------------------
- Passive_Collect_URL_Full.txt -- Alle vollständigen URL-Crawls (WebArchive, CommonCrawl, UrlScanIO)
------------------------------------------------------------------------------------------------------
- ./screenshots/report-0.html -- Screenshot-Bericht < httprobe_subdomain.txt
- ./screenshots/gowitness/gowitness.sqlite3 -- Screenshot-Datenbank < httprobe_subdomain.txt
------------------------------------------------------------------------------------------------------
- ./interest/interesturi-allpath.out -- Interessante Pfade(/api,/git,etc) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-doc.out -- Interessante Dokumente (doc,pdf,xls) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-otherfile.out -- Andere Dateien (.json,.env,etc) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-js.out -- Alle JavaScript-Dateien(*.js) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-nodemodule.out -- Dateien aus /node_modules/ < Passive_Collect_URL_Full.txt
- ./interest/interesturi-param-full.out -- Vollständige Parameterliste < Passive_Collect_URL_Full.txt
- ./interest/interesturi-paramsuniq.out -- Einzigartige Parameterliste < Passive_Collect_URL_Full.txt
- Hinweis : Sie können interessante/verdächtige URLs/Parameter mit urlprobe oder httpx validieren, um Fehlalarme zu vermeiden
------------------------------------------------------------------------------------------------------
- ./takeover/CNAME-resolv.txt -- CNAME-Resolver < subdomain.txt
- ./takeover/TakeOver-Lookup.txt -- DNSLookup < CNAME-resolv.txt
- ./takeover/TakeOver-nxdomain.txt -- Andere 3D-Serviceplattform < TakeOver-Lookup.txt
- ./takeover/TakeOver.txt -- Verwundbarkeit prüfen < CNAME-resolv.txt
------------------------------------------------------------------------------------------------------
- ./wordlist/wordlist-parameter.lst -- Parameter-Wortliste generieren < Passive_Collect_URL_Full.txt
- ./wordlist/wordlist-pathurl.lst -- Pfad-Wortliste generieren < Passive_Collect_URL_Full.txt
- Hinweis : Diese Wortliste basiert auf Domain- & Subdomain-Informationen (Pfad, Datei, Abfragezeichenfolgen & Parameter)
------------------------------------------------------------------------------------------------------
Sudomy minimiert mehr Ressourcen bei der Nutzung von Ressourcen (Drittanbieter-Seiten) durch Bewertung und Auswahl der guten Drittanbieter-Seiten/Ressourcen, sodass der Enumeration-Prozess optimiert werden kann. Die in diesem Vergleich verwendete Domain ist tiket.com.
Im Folgenden sind die Ergebnisse des passiven DNS-Enumerationstests von Sublist3r v1.1.0, Subfinder v2.4.5 und Sudomy v1.2.0 aufgeführt.
Hier wird Subfinder immer noch als sehr schnell beim Sammeln von Subdomains eingestuft, da es ziemlich viele Ressourcen nutzt. Besonders wenn die verwendeten Ressourcen optimiert wurden (?).
Kompilationsergebnisse und Videos finden Sie hier:
Wenn ich Freizeit habe. Vielleicht wird Sudomy in Zukunft auch Golang verwenden. Wenn Sie beitragen möchten, sind Pull-Requests offen.
Sudomy wird derzeit mit den folgenden Tools erweitert. Anleitungen zur Installation und Verwendung der Anwendung sind unten verlinkt.
# Dieses Repository klonen
git clone --recursive https://github.com/screetsec/Sudomy.git
$ python3 -m pip install -r requirements.txt
Sudomy benötigt jq und GNU grep zur Ausführung und Analyse. Informationen zum Herunterladen und Installieren von jq finden Sie hier
# Linux
apt-get update
apt-get install jq nmap phantomjs npm chromium parallel
npm i -g wappalyzer wscat
# Mac
brew cask install phantomjs
brew install jq nmap npm parallel grep
npm i -g wappalyzer wscat
# Hinweis
Sie benötigen eine Installation des neuesten Google Chrome oder Chromium
Setzen Sie den PATH in der rc-Datei für die Änderungen von GNU grep
# Ein Image von DockerHub pullen
docker pull screetsec/sudomy:v1.2.1-dev
# Ausgabeverzeichnis erstellen
mkdir output
# Ein Image ausführen; Sie können das Image in einem benutzerdefinierten Verzeichnis ausführen, müssen jedoch die Konfiguration sudomy.api in das aktuelle Verzeichnis kopieren/herunterladen
docker run -v "${PWD}/output:/usr/lib/sudomy/output" -v "${PWD}/sudomy.api:/usr/lib/sudomy/sudomy.api" -t --rm screetsec/sudomy:v1.1.9-dev [Argument]
# oder API-Variable beim Ausführen des Images definieren.
docker run -v "${PWD}/output:/usr/lib/sudomy/output" -e "SHODAN_API=xxxx" -e "VIRUSTOTAL=xxxx" -t --rm screetsec/sudomy:v1.1.9-dev [Argument]
Ein API-Schlüssel ist erforderlich, bevor Abfragen an Drittanbieter-Seiten wie Shodan, Censys, SecurityTrails, Virustotal und BinaryEdge durchgeführt werden können.
# Shodan
# URL : http://developer.shodan.io
# Beispiel :
# - SHODAN_API="VGhpc1M0bXBsZWwKVGhmcGxlbAo"
SHODAN_API=""
# Censys
# URL : https://search.censys.io/register
CENSYS_API=""
CENSYS_SECRET=""
# Virustotal
# URL : https://www.virustotal.com/gui/
VIRUSTOTAL=""
# Binaryedge
# URL : https://app.binaryedge.io/login
BINARYEDGE=""
# SecurityTrails
# URL : https://securitytrails.com/
SECURITY_TRAILS=""
YOUR_WEBHOOK_URL ist erforderlich, bevor die Slack-Benachrichtigungen verwendet werden können
# Konfiguration Slack-Benachrichtigung
# Für Konfiguration/Tutorial zum Abrufen der Webhook-URL folgen Sie dieser Seite
# - https://api.slack.com/messaging/webhooks
# Beispiel:
# - YOUR_WEBHOOK_URL="https://hooks.slack.com/services/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"
YOUR_WEBHOOK_URL="https://hooks.slack.com/services/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"
___ _ _ _
/ __|_ _ __| (_)(_)_ __ _ _
\__ \ || / _ / __ \ ' \ || |
|___/\_,_\__,_\____/_|_|_\_, |
|__/ v{1.2.1#dev} von @screetsec
Sud⍥my - Schnelle Subdomain-Enumeration und -Analyse
http://github.com/screetsec/sudomy
Verwendung: sud⍥my.sh [-h [--help]] [-s[--source]][-d[--domain=]]
Beispiel: sud⍥my.sh -d example.com
sud⍥my.sh -s Shodan,VirusTotal -d example.com
Bestes Argument:
sudomy -d domain.com -dP -eP -rS -cF -pS -tO -gW --httpx --dnsprobe -aI webanalyze --slack -sS
Optionale Argumente:
-a, --all Alle Enumerationen ausführen, kein nmap & gobuster
-b, --bruteforce Subdomain-Bruteforce mit Gobuster (Wortliste: ALLE Top-SecList-DNS)
-d, --domain Domain der zu scannenden Website
-h, --help Diese Hilfemeldung anzeigen
-o, --outfile Eine Ausgabedatei angeben, wenn abgeschlossen
-s, --source Quelle für die Subdomain-Enumeration verwenden
-aI, --apps-identifier Technologien auf der Website identifizieren (z.B. -aI webanalyze)
-dP, --db-port Ports von Drittanbietern sammeln (Standard=shodan)
-eP, --extract-params URL-Parameter von der Engine sammeln
-tO, --takeover Subdomain-Übernahme-Verwundbarkeitsscanner
-wS, --websocket WebSocket-Verbindungsprüfung
-cF, --cloudfare Prüfen, ob eine IP von Cloudflare gehört
-pS, --ping-sweep Live-Host mit Ping-Sweep-Methode prüfen
-rS, --resolver Domain-Listen in aufgelöste IP-Listen ohne Duplikate umwandeln
-sC, --status-code Statuscodes und Antwort von der Domain-Liste abrufen
-nT, --nmap-top Portscan mit Top-Ports mit nmap aus der Domain-Liste
-sS, --screenshot Screenshots einer Liste von Websites (Standard: gowitness)
-nP, --no-passive Keine passive Subdomain-Enumeration durchführen
-gW, --gwordlist Wortliste basierend auf gesammelten URL-Ressourcen generieren (Passiv)
--httpx Mehrere httpx-Prober mit retryablehttp durchführen
--dnsprobe Mehrere DNS-Abfragen durchführen (dnsprobe)
--no-probe Kein httprobe durchführen
--html Berichtsausgabe in HTML
--graph Netzwerkgraph-Visualisierung
Alle 22 Quellen nutzen und auf funktionierende http- oder https-Server prüfen (Validierungen):
$ sudomy -d hackerone.com
Eine oder mehrere Quellen nutzen:
$ sudomy -s shodan,dnsdumpster,webarchive -d hackerone.com
Alle Quellen ohne Validierungen nutzen:
$ sudomy -d hackerone.com --no-probe
Ein oder mehrere Plugins nutzen:
$ sudomy -pS -sC -sS -d hackerone.com
Alle Plugins nutzen: Host-Status, HTTP/HTTPS-Statuscode, Subdomain-Übernahme und Screenshots.
Nmap, Gobuster, wappalyzer und wscat nicht enthalten.
$ sudomy -d hackerone.com --all
Bericht im HTML-Format erstellen
$ sudomy -d hackerone.com --html --all
HTML-Berichtsbeispiel:
| Dashboard | Berichte |
|---|---|
![]() | ![]() |
Netzwerkgraph-Visualisierung von Subdomains und VirtualHosts generieren
$ sudomy -d hackerone.com -rS --graph
Graph-Visualisierung Beispiel:
| nGraph |
|---|
![]() |
Die besten Argumente verwenden, um Subdomains zu sammeln, durch automatische Recon zu analysieren und Benachrichtigungen an Slack zu senden
./sudomy -d ngesec.id -dP -eP -rS -cF -pS -tO -gW --httpx --dnsprobe --graph -aI webanalyze --slack -sS
Slack-Benachrichtigungsbeispiel:
| Slack |
|---|
![]() |
Alle wichtigen Änderungen an diesem Projekt werden in dieser Datei dokumentiert.