
Multi-Source-Subdomain-Enumerationstool mit über 50 Sammlungsmodulen, DNS-Brute-Force, passiver DNS-Analyse, Zertifikatstransparenz, Suchmaschinen-Scraping und Subdomain-Übernahmeerkennung für die Aufklärung.
👊OneForAll ist ein leistungsstarkes Tool zur Subdomain-Sammlung 📝Englische Dokumentation
📢 Bitte nehmen Sie sich die Zeit, dieses Dokument zu lesen – es hilft Ihnen, sich schnell mit OneForAll vertraut zu machen!
OneForAll basiert auf Python 3.6.0 und wurde damit entwickelt und getestet. OneForAll benötigt eine Python-Version höher als 3.6.0.
Eine Anleitung zur Installation der Python-Umgebung finden Sie im Python 3 Installationshandbuch. Überprüfen Sie Python- und pip3-Version mit folgenden Befehlen:
python -V
pip3 -V
Wenn Sie eine ähnliche Ausgabe wie die folgende sehen, ist die Python-Umgebung in Ordnung:
Python 3.6.0
pip 19.2.2 from C:\Users\shmilylty\AppData\Roaming\Python\Python36\site-packages\pip (python 3.6)
Da sich das Projekt in der Entwicklung befindet und ständig aktualisiert wird, verwenden Sie beim Herunterladen git clone, um das neueste Repository zu klonen. Dies erleichtert auch spätere Aktualisierungen. Downloads von Releases werden nicht empfohlen, da diese Versionen nur langsam aktualisiert werden und auch das Aktualisieren umständlich ist.
Dieses Projekt wurde auf Gitee gespiegelt. Für Nutzer in China wird das Klonen von Gitee empfohlen, da es schneller ist:
git clone https://gitee.com/shmilylty/OneForAll.git
oder:
git clone https://github.com/shmilylty/OneForAll.git
Sie können die Abhängigkeiten von OneForAll mit pip3 installieren. Das Folgende ist ein Beispiel für die Installation mit pip3 unter Windows: Hinweis: Wenn Ihr Python3 im Systemverzeichnis Program Files installiert ist, z. B. C:\Program Files\Python36, führen Sie die Eingabeaufforderung cmd als Administrator aus und führen Sie die folgenden Befehle aus!
cd OneForAll/
python3 -m pip install -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
python3 oneforall.py --help
Für andere Systemplattformen siehe Abhängigkeiten installieren. Wenn beim Installieren einer Abhängigkeit ein Kompilierungsfehler auftritt, finden Sie Lösungen in der . Falls das Problem weiterhin besteht, können Sie gerne in der Gruppe Feedback geben.
Laden Sie zunächst die Konfigurationsdatei herunter und bearbeiten Sie sie, fügen Sie Ihre eigene api und individuelle Einstellungen hinzu und behalten Sie die ursprüngliche Dateistruktur bei.
config
├── api.py
├── default.py
├── __init__.py
├── log.py
└── setting.py
Ziehen Sie das Image und führen Sie es aus. Ersetzen Sie ~/.config durch den Pfad zu Ihrem Konfigurationsordner.
docker pull shmilylty/oneforall
docker run -it --rm -v ~/results:/OneForAll/results -v ~/.config:/OneForAll/config shmilylty/oneforall --target example.com run
Parameter werden direkt am Ende des Befehls angehängt. Die Ergebnisse werden im lokalen Verzeichnis ~/results ausgegeben. Falls Sie sie an einem anderen Ort speichern möchten, können Sie dies selbst anpassen.
Wenn Sie die Abhängigkeiten mit pip3 installiert haben, führen Sie das folgende Beispiel aus:
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run
Nehmen wir den Befehl python3 oneforall.py --target example.com run als Beispiel. OneForAll erzeugt nach erfolgreicher Ausführung mit den Standardparametern die entsprechenden Ergebnisse im Verzeichnis results:

example.com.csv enthält die Ergebnisse der Subdomain-Sammlung für jede Hauptdomain.
all_subdomain_result_1583034493.csv ist eine Zusammenfassung aller Subdomains, die bei jeder Ausführung von OneForAll gesammelt wurden, und enthält example.com.csv. Dies ist nützlich, um in Batch-Sammlungsszenarien alle Ergebnisse zu erhalten.
result.sqlite3 ist eine SQLite3-Ergebnisdatenbank, die die bei jeder Ausführung gesammelten Subdomains speichert. Die Datenbankstruktur ist unten dargestellt:

Die Tabelle example_com_origin_result speichert die ursprünglichen Subdomain-Ergebnisse jedes Moduls.
Die Tabelle example_com_resolve_result speichert die Ergebnisse nach der Auflösung der Subdomains.
Die Befehlszeilenparameter bieten nur einige häufig verwendete Parameter. Ausführlichere Parameterkonfigurationen finden Sie in setting.py. Wenn Sie der Meinung sind, dass bestimmte Parameter häufig in der Befehlszeile verwendet werden sollten oder Parameter fehlen, freuen wir uns über Ihr Feedback. Aus bekannten Gründen konfigurieren Sie bitte zuerst einen Proxy in setting.py, wenn Sie blockierte Sammelschnittstellen verwenden möchten. Einige Sammelmodule erfordern eine API (die meisten können kostenlos durch Registrierung eines Kontos erworben werden). Wenn Sie diese verwenden möchten, konfigurieren Sie die API-Informationen in api.py. Andernfalls ignorieren Sie die entsprechenden Fehlermeldungen. (Ausführliche Module finden Sie im Sammelmodul-Handbuch)
Die OneForAll-Befehlszeilenschnittstelle basiert auf Fire. Weitere fortgeschrittene Verwendungsmöglichkeiten von Fire finden Sie in Using Fire CLI.
oneforall.py ist der Haupteinstiegspunkt. oneforall.py kann Module wie brute.py, takerover.py und dbexport.py aufrufen. Zur Vereinfachung der Subdomain-Brute-Force wurde brute.py eigenständig gemacht, zur Überprüfung auf Subdomain-Übernahme-Risiken takerover.py, und zum Export der Datenbank dbexport.py. Diese Module können alle einzeln ausgeführt werden und akzeptieren dabei etwas erweiterte Parameter. Wenn Sie diese Module separat verwenden möchten, lesen Sie bitte die .
Projektadresse: https://github.com/shmilylty/OneForAll
Die Bedeutung der Informationssammlung während eines Penetrationstests ist unbestreitbar. Die Subdomain-Sammlung ist ein wesentlicher und sehr wichtiger Teil der Informationssammlung. Derzeit sind viele Open-Source-Tools zur Subdomain-Sammlung verfügbar, aber sie weisen oft einige der folgenden Probleme auf:
Um diese Probleme zu lösen, wurde dieses Projekt ins Leben gerufen. Wie der Name vermuten lässt, soll OneForAll ein umfassendes, schnelles und leistungsstarkes Schweizer Taschenmesser für die Subdomain-Sammlung sein 🔨.
OneForAll befindet sich noch in der Entwicklung und weist sicherlich noch einige Mängel und Verbesserungsmöglichkeiten auf. Wir freuen uns über Issues und PRs von erfahrenen Entwicklern. Wenn Ihnen das Tool gefällt, geben Sie ihm bitte einen ⭐. Derzeit gibt es eine spezielle QQ-Gruppe 👨👨👦👦 für den Austausch und das Feedback zu OneForAll: 824414244 (Gruppenverifizierung: Informationssammlung).
censys_api, certspotter, crtsh, entrust, google, spyse_api)axfr, Überprüfung der Cross-Domain-Policy-Datei cdx, Überprüfung des HTTPS-Zertifikats cert, Überprüfung der Content Security Policy csp, Überprüfung der robots.txt robots, Überprüfung der sitemap.xml sitemap, DNS-NSEC-Record-Traversal dnssec; später werden NSEC3-Records hinzugefügt)Wenn Sie andere großartige Ideen haben, teilen Sie sie mir bitte mit! 😎
Weitere Informationen finden Sie im Handbuch zur Verzeichnisstruktur.
Im docs-Verzeichnis dieses Projekts finden Sie auch einige Hilfen und Erklärungen, z. B. zur Quelle der Subdomain-Wörterbücher und zum Ablauf der Wildcard-Erkennung.
Danke an diese großartigen Python-Bibliotheken!
Dieses Projekt verwendet SemVer für die Versionsverwaltung. Informationen zu historischen Änderungen finden Sie im Änderungsprotokoll.
Weitere Informationen finden Sie im Entwicklungsplan.
Wir begrüßen Beiträge von allen Entwicklern herzlich!
Eine Liste aller Mitwirkenden und ihrer Beiträge finden Sie im Mitwirkenden-Dokument. Vielen Dank, dass sie OneForAll leistungsstärker und benutzerfreundlicher gemacht haben.
Wenn Ihnen dieses Projekt geholfen hat, können Sie gerne einen Kaffee spendieren :)

Dieses Projekt ist unter der GPL-3.0-Lizenz lizenziert. Details finden Sie in der LICENSE.
Dank an alle Open-Source-Projekte zur Subdomain-Sammlung im Internet!
Vielen Dank an die Kollegen von A-Team für die herzliche und selbstlose Beantwortung von Fragen!
Dieses Tool darf nur im Rahmen einer ordnungsgemäß autorisierten Unternehmenssicherheitsmaßnahme verwendet werden. Bei der Nutzung dieses Tools müssen Sie sicherstellen, dass alle Ihre Handlungen den geltenden Gesetzen und Vorschriften entsprechen.
Wenn Sie dieses Tool auf irgendeine rechtswidrige Weise nutzen, sind Sie allein für alle Konsequenzen verantwortlich. Alle Entwickler und Mitwirkenden dieses Tools übernehmen keinerlei rechtliche oder sonstige Haftung.
Wenn Sie diese Bedingungen nicht vollständig gelesen, verstanden und akzeptiert haben, installieren und verwenden Sie dieses Tool bitte nicht.
Ihre Nutzung oder jede andere ausdrückliche oder stillschweigende Zustimmung zu diesen Bedingungen gilt als Ihre Zustimmung und Ihr Einverständnis mit diesen Bedingungen.
Führen Sie die folgenden Befehle aus, um das Projekt zu aktualisieren (Änderungen an /config/setting.py und /config/api.py bleiben erhalten):
git stash # lokale Änderungen zwischenspeichern
git fetch --all # Projekt-Updates abrufen
git pull # herunterladen und überschreiben
git stash pop # lokale Änderungen wiederherstellen
Die Tabelle example_com_last_result speichert die Ergebnisse der letzten Subdomain-Sammlung (wird erst nach mindestens zwei Sammlungen erzeugt).
Die Tabelle example_com_now_result speichert die aktuellen Subdomain-Ergebnisse. In der Regel reicht es, sich auf diese Tabelle zu konzentrieren.
Weitere Informationen finden Sie unter Feldbeschreibungen.
❗ Hinweis: Wenn Sie bei der Verwendung auf Probleme oder Fragen stoßen, suchen Sie bitte zunächst in den Issues mit der Suchfunktion nach Antworten. Sie können auch die häufigen Fragen und Antworten lesen.
Hilfe zu oneforall.py
Die folgende Hilfeinformation ist möglicherweise nicht die aktuellste. Verwenden Sie python oneforall.py --help, um die aktuellste Hilfe zu erhalten.
python oneforall.py --help
NAME
oneforall.py - OneForAll-Hilfe
SYNOPSIS
oneforall.py COMMAND | --target=TARGET <flags>
DESCRIPTION
OneForAll ist ein leistungsstarkes Werkzeug zur Subdomain-Sammlung
Beispiel:
python3 oneforall.py version
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./domains.txt run
python3 oneforall.py --target example.com --valid None run
python3 oneforall.py --target example.com --brute True run
python3 oneforall.py --target example.com --port small run
python3 oneforall.py --target example.com --fmt csv run
python3 oneforall.py --target example.com --dns False run
python3 oneforall.py --target example.com --req False run
python3 oneforall.py --target example.com --takeover False run
python3 oneforall.py --target example.com --show True run
Hinweis:
Der Parameter alive akzeptiert die Werte True, False und exportiert die aktiven bzw. alle Subdomain-Ergebnisse.
Der Parameter port hat die Optionen 'default', 'small', 'large', siehe config.py für Details.
Der Parameter fmt akzeptiert Formate 'csv', 'json'.
Der Parameter path ist standardmäßig None und verwendet das Ergebnisverzeichnis von OneForAll.
ARGUMENTS
TARGET
Einzelne Domain (einer der beiden erforderlichen Parameter)
TARGETS
Dateipfad mit einer Domain pro Zeile (einer der beiden erforderlichen Parameter)
FLAGS
--brute=BRUTE
Brute-Force-Subdomains (Standard: True)
--dns=DNS
DNS-Auflösung von Subdomains (Standard: True)
--req=REQ
HTTP-Anfragen an Subdomains (Standard: True)
--port=PORT
Portbereich für Anfragen zur Subdomain-Validierung (Standard nur Port 80)
--valid=VALID
Nur aktive Subdomain-Ergebnisse exportieren (Standard: False)
--fmt=FMT
Format der Ergebnisausgabe (Standard: csv)
--path=PATH
Pfad zur Ergebnisausgabe (Standard: None)
--takeover=TAKEOVER
Überprüfung auf Subdomain-Übernahme (Standard: False)
archivecrawl, commoncrawl; diese Module befinden sich noch in der Testphase und werden weiter ergänzt und verbessert)bevigil_api, binaryedge_api, bufferover, cebaidu, chinaz, chinaz_api, circl_api, cloudflare, dnsdb_api, dnsdumpster, hackertarget, ip138, ipv4info_api, netcraft, passivedns_api, ptrarchive, qianxun, rapiddns, riddler, robtex, securitytrails_api, sitedossier, threatcrowd, wzpc, ximcx)srv, sowie Abfrage von DNS-Records (MX, NS, SOA, TXT) zur Subdomain-Sammlung)alienvault, riskiq_api, threatbook_api, threatminer, virustotal, virustotal_api; diese Module werden noch ergänzt und verbessert)ask, baidu, bing, bing_api, duckduckgo, exalead, fofa_api, gitee, github, github_api, google, google_api, shodan_api, so, sogou, yahoo, yandex, zoomeye_api). Mit Ausnahme spezieller Suchmaschinen unterstützen alle gängigen Suchmaschinen automatische Ausschlusssuche, vollständige Suche und rekursive Suche.txt, csv, json.