
Strumento di enumerazione dei sottodomini multi-fonte con oltre 50 moduli di raccolta, brute-force DNS, analisi DNS passiva, trasparenza dei certificati, scraping dei motori di ricerca e rilevamento di takeover dei sottodomini per la ricognizione.
👊OneForAll è un potente strumento per la raccolta di sottodomini 📝Documento in inglese
📢 Ti preghiamo di dedicare un momento alla lettura di questo documento, ti aiuterà a familiarizzare rapidamente con OneForAll!
OneForAll è sviluppato e testato su Python 3.6.0. OneForAll richiede una versione di Python superiore alla 3.6.0 per funzionare. Per configurare l'ambiente Python, consulta la Guida all'installazione di Python 3. Esegui i seguenti comandi per verificare le versioni di Python e pip3:
python -V
pip3 -V
Se vedi un output simile al seguente, l'ambiente Python è configurato correttamente:
Python 3.6.0
pip 19.2.2 from C:\Users\shmilylty\AppData\Roaming\Python\Python36\site-packages\pip (python 3.6)
Poiché il progetto è in fase di sviluppo e subirà continui aggiornamenti, si prega di utilizzare git clone per clonare l'ultimo repository del codice, in modo da facilitare anche gli aggiornamenti futuri. Non è consigliato scaricare dalla sezione Releases, poiché le versioni rilasciate sono aggiornate lentamente e non è semplice aggiornarle.
Questo progetto è già stato rispecchiato su Gitee (un mirror cinese). In Cina si consiglia di usare Gitee per una clonazione più veloce:
git clone https://gitee.com/shmilylty/OneForAll.git
oppure:
git clone https://github.com/shmilylty/OneForAll.git
Puoi installare le dipendenze di OneForAll tramite pip3. Di seguito è riportato un esempio di installazione delle dipendenze utilizzando pip3 su sistema Windows: Nota: se il tuo Python3 è installato nella directory Program Files del sistema, ad esempio C:\Program Files\Python36, esegui il prompt dei comandi come amministratore prima di eseguire i comandi seguenti!
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
Per altre piattaforme, consulta Installazione delle dipendenze. Se durante l'installazione delle dipendenze riscontri errori di compilazione di qualche libreria, consulta le soluzioni nel documento . Se il problema persiste, sei il benvenuto nel gruppo di discussione per segnalarlo.
Prima scarica e modifica i file di configurazione, aggiungi le tue api e impostazioni personalizzate, mantenendo la struttura originale dei file
config
├── api.py
├── default.py
├── __init__.py
├── log.py
└── setting.py
Tira l'immagine ed esegui, sostituendo ~/.config con il percorso della cartella contenente i tuoi file di configurazione
docker pull shmilylty/oneforall
docker run -it --rm -v ~/results:/OneForAll/results -v ~/.config:/OneForAll/config shmilylty/oneforall --target example.com run
I parametri vengono aggiunti direttamente alla fine del comando. I risultati vengono salvati nella directory locale ~/results. Per salvarli in un'altra posizione, modificalo a piacere.
Se hai installato le dipendenze tramite pip3, utilizza il seguente comando per eseguire l'esempio:
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run
Prendiamo ad esempio il comando python3 oneforall.py --target example.com run. Dopo l'esecuzione corretta con i parametri predefiniti, OneForAll genererà i risultati corrispondenti nella directory results:

example.com.csv contiene i risultati della raccolta di sottodomini per ogni dominio principale.
all_subdomain_result_1583034493.csv è il riepilogo dei sottodomini raccolti in ogni esecuzione di OneForAll, che include example.com.csv, utile per ottenere tutti i risultati in scenari di raccolta batch.
result.sqlite3 è un database SQLite3 che memorizza i sottodomini raccolti in ogni esecuzione di OneForAll. La sua struttura del database è mostrata di seguito:

La tabella simile a example_com_origin_result memorizza i risultati iniziali della raccolta di sottodomini per ogni modulo.
La tabella simile a example_com_resolve_result memorizza i risultati dopo la risoluzione dei sottodomini.
I parametri della riga di comando forniscono solo alcuni parametri comuni. Per una configurazione più dettagliata, consulta setting.py. Se ritieni che alcuni parametri siano spesso utilizzati nell'interfaccia a riga di comando o che manchi qualcosa, non esitare a segnalarlo. Per ragioni note, se desideri utilizzare alcune interfacce di raccolta bloccate (i.e., soggette a censura), configura prima il proxy in setting.py. Alcuni moduli di raccolta richiedono API (molte delle quali possono essere ottenute gratuitamente registrandosi). Se necessario, configura le informazioni API in api.py. Altrimenti, ignora gli errori correlati. (Per i moduli dettagliati, consulta Spiegazione dei moduli di raccolta.)
L'interfaccia a riga di comando di OneForAll è basata su Fire. Per usi più avanzati di Fire, consulta Utilizzo della CLI di Fire.
oneforall.py è il punto di ingresso principale. oneforall.py può chiamare moduli come brute.py, takerover.py e dbexport.py. Per comodità, brute.py è stato separato per il brute-force dei sottodomini, takerover.py per il controllo del rischio di takeover dei sottodomini, e dbexport.py per l'esportazione del database. Questi moduli possono essere eseguiti indipendentemente e accettano parametri più ricchi. Per utilizzarli separatamente, consulta .
Indirizzo del progetto: https://github.com/shmilylty/OneForAll
L'importanza della raccolta di informazioni nei test di penetrazione è indiscutibile; la raccolta di sottodomini è una parte essenziale e molto importante. Attualmente esistono molti strumenti open source per la raccolta di sottodomini, ma presentano alcuni problemi:
Per risolvere questi problemi, è nato questo progetto. Come suggerisce il nome, spero che OneForAll sia uno strumento finale potente, completo e veloce per la raccolta di sottodomini che combina i punti di forza di molti strumenti🔨.
Attualmente OneForAll è in fase di sviluppo; ci saranno sicuramente molti problemi e aree di miglioramento. I contributori sono i benvenuti per inviare Issues e PR. Se ti piace, lascia una piccola stella✨. Attualmente esiste un gruppo QQ dedicato per discussioni e feedback su OneForAll👨👨👦👦: 824414244 (verifica del gruppo: raccolta informazioni).
censys_api, certspotter, crtsh, entrust, google, spyse_api)axfr, controllo del file di policy cross-origin cdx, controllo del certificato HTTPS cert, controllo della Content Security Policy csp, controllo del file robots robots, controllo del file sitemap sitemap, enumerazione dei record NSEC per attraversare il dominio DNS ; verranno aggiunti moduli per i record NSEC3 in futuro)Se hai altre ottime idee, non esitare a comunicarmele! 😎
Per maggiori informazioni, consulta Spiegazione della struttura delle directory.
Nella directory docs di questo progetto sono disponibili ulteriori guide e spiegazioni, come Origine dei dizionari di sottodomini, Processo di determinazione del wildcard.
Grazie a queste grandi e fantastiche librerie Python!
Questo progetto utilizza il formato di versionamento semantico SemVer per la gestione delle versioni. Puoi consultare le note sulle modifiche per conoscere la cronologia delle modifiche.
Per maggiori informazioni, consulta Piani di sviluppo futuri.
Siamo molto lieti che tutti i contributori possano contribuire a migliorare questo progetto!
Puoi visualizzare tutti i contributori e i loro contributi nel documento dei contributori. Grazie a loro, OneForAll è diventato più potente e facile da usare.
Se questo progetto ti è stato utile, puoi offrire un caffè come incoraggiamento :)

Questo progetto è concesso in licenza GPL-3.0. Per maggiori dettagli, consulta LICENSE.
Grazie a tutti i progetti open source di raccolta di sottodomini disponibili online!
Grazie ai ragazzi di A-Team per le risposte entusiaste e disinteressate ai problemi!
Questo strumento può essere utilizzato solo in contesti di sicurezza aziendale debitamente autorizzati. Durante l'utilizzo, assicurati che tutte le tue azioni siano conformi alle leggi e ai regolamenti locali. Se commetti atti illegali durante l'uso di questo strumento, ti assumerai tutte le conseguenze. Tutti gli sviluppatori e tutti i contributori di questo strumento non si assumono alcuna responsabilità legale o connessa. Se non hai letto completamente, compreso e accettato integralmente tutti i termini di questo accordo, non installare né utilizzare questo strumento. Il tuo atto di utilizzo o qualsiasi altra dichiarazione esplicita o implicita di accettazione di questo accordo costituirà il tuo consenso a essere vincolato da questo accordo.
Esegui i seguenti comandi per aggiornare il progetto (le modifiche a /config/setting.py e /config/api.py vengono preservate):
git stash # metti da parte le modifiche locali
git fetch --all # recupera gli aggiornamenti del progetto
git pull # scarica e sovrascrive
git stash pop # ripristina le modifiche locali
La tabella simile a example_com_last_result memorizza i risultati dell'ultima raccolta di sottodomini (viene generata solo dopo due o più raccolte).
La tabella simile a example_com_now_result memorizza i risultati della raccolta corrente di sottodomini. In generale, è sufficiente consultare questa tabella.
Per maggiori informazioni, consulta Spiegazione dei campi.
❗Nota: se incontri problemi o dubbi durante l'uso, cerca prima nelle Issues utilizzando la funzione di ricerca. Puoi anche consultare Domande frequenti e risposte.
Guida all'uso di oneforall.py
Le informazioni di aiuto seguenti potrebbero non essere aggiornate. Puoi ottenere l'ultima guida con python oneforall.py --help.
python oneforall.py --help
NAME
oneforall.py - Informazioni di aiuto di OneForAll
SYNOPSIS
oneforall.py COMMAND | --target=TARGET <flags>
DESCRIPTION
OneForAll è un potente strumento per la raccolta di sottodomini
Example:
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
Note:
Il parametro alive accetta i valori True, False per esportare rispettivamente i risultati dei sottodomini attivi o tutti.
Il parametro port accetta 'default', 'small', 'large'; consulta config.py per i dettagli.
Il parametro fmt accetta formati 'csv', 'json'.
Il parametro path, se None, utilizza la directory dei risultati predefinita di OneForAll.
ARGUMENTS
TARGET
Singolo dominio (parametro obbligatorio, alternativo a TARGETS)
TARGETS
Percorso del file con un dominio per riga (parametro obbligatorio, alternativo a TARGET)
FLAGS
--brute=BRUTE
s
--dns=DNS
Risoluzione DNS dei sottodomini (predefinito True)
--req=REQ
Richiesta HTTP ai sottodomini (predefinito True)
--port=PORT
Intervallo di porte per la verifica dei sottodomini (predefinito solo porta 80)
--valid=VALID
Esporta solo i risultati dei sottodomini attivi (predefinito False)
--fmt=FMT
Formato di salvataggio dei risultati (predefinito csv)
--path=PATH
Percorso di salvataggio dei risultati (predefinito None)
--takeover=TAKEOVER
Controlla takeover dei sottodomini (predefinito False)
dnssecarchivecrawl, commoncrawl; questi moduli sono ancora in fase di debug e da completare)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, e raccolta tramite interrogazione dei record DNS del dominio: MX, NS, SOA, TXT)alienvault, riskiq_api, threatbook_api, threatminer, virustotal, virustotal_api; questo modulo è ancora da completare)ask, baidu, bing, bing_api, duckduckgo, exalead, fofa_api, gitee, github, github_api, google, google_api, shodan_api, so, sogou, yahoo, yandex, zoomeye_api). Nei moduli di ricerca, tranne motori speciali, tutti i motori generici supportano esclusione automatica, ricerca completa e ricerca ricorsiva.txt, csv, json.