
Console di enumerazione dei sottodomini e ricognizione per attività di red team. Raccolta passiva + attiva, correlazione approfondita, scoperta di bucket, shell interattiva in stile msfconsole.
Uno strumento di enumerazione di sottodomini e recon per attività di red team. Nessuna API key richiesta per le funzionalità principali; funziona sia come CLI one-shot sia come console interattiva persistente in stile msfconsole.
Eseguilo solo contro domini che sei autorizzato a testare. Vedi "Legal" di seguito per i dettagli.
setcap), con
fallback automatico al semplice TCP connect e un passaggio di retry per le porte
che non hanno risposto la prima volta.set, show options, run, setup) e una
CLI one-shot basata su flag, entrambe costruite sullo stesso engine.git clone https://github.com/Rebellionxkid/NoWRecon
cd NoWRecon
pip install -r requirements.txt
Per una vera scansione SYN (senza di essa, lo strumento ripiega sul TCP connect):
sudo setcap cap_net_raw+ep $(readlink -f $(which python3))
Console (consigliata per iniziare):
python -m subscout.cli
Mostra il banner, ti guida attraverso una configurazione guidata (scegli una modalità: passive / active / deep / custom), offre un preset predefinito o la configurazione manuale di ogni impostazione, quindi passa a un prompt:
nowrecon (example.com) > show options
nowrecon (example.com) > set MODE deep
nowrecon (example.com) > set EXPAND_ORG true
nowrecon (example.com) > run
...
nowrecon (example.com) > set DOMAIN other-target.com
nowrecon (other-target.com) > run
nowrecon (other-target.com) > exit
La console non termina dopo una singola scansione. Comandi:
set OPTION VALUE: modifica un'impostazione, ad esempio set MODE deep.unset OPTION: ripristina un'impostazione al valore predefinito.show options: tabella di tutte le impostazioni e del loro valore corrente.show banner / banner: ristampa il banner di avvio.setup: riesegue il flusso di configurazione guidata.run (o scan): avvia una scansione con le impostazioni correnti.help: elenca tutti i comandi.Durante una scansione, premendo Invio in qualsiasi momento si salta la fase corrente e si passa a quella successiva.
Flag, esecuzione one-shot:
python -m subscout.cli example.com --mode deep --buckets --expand-org
| Flag CLI | Opzione console | Descrizione |
|---|---|---|
--mode | MODE | passive / active / deep |
--out-dir | OUT_DIR | dove scrivere json/csv/txt |
--wordlist | WORDLIST | wordlist personalizzata per il brute-force |
--db | DB | percorso del database SQLite di cronologia/diff |
--ptr-prefix | PTR_PREFIX | raggio CIDR per le scansioni PTR in modalità deep |
--no-vhost | NO_VHOST | disabilita il probing vhost in modalità deep |
--dns-rate | DNS_RATE | numero massimo di query DNS al secondo per resolver |
--ip-rate | IP_RATE | numero massimo di richieste HTTP al secondo verso un singolo IP target |
--connect-timeout | CONNECT_TIMEOUT | timeout per tentativo nella scansione delle porte TCP-connect |
--expand-org | EXPAND_ORG | scansiona anche i domini organizzativi fratelli, non solo elencarli |
--expand-mode | EXPAND_MODE | modalità usata per le sotto-scansioni dei domini fratelli |
--buckets | BUCKETS | ipotizza i nomi dei bucket di storage cloud dal brand |
--deep-brute | DEEP_BRUTE | round aggiuntivo di mutazione dei pattern sui nomi già trovati |
--github-token | GITHUB_TOKEN | token per il recon tramite ricerca di codice su GitHub |
--nsec-walk | NSEC_WALK | tenta un walk completo della zona NSEC (solo NSEC semplice) |
--user-agent | USER_AGENT | User-Agent personalizzato per ogni richiesta |
--random-user-agent | RANDOM_USER_AGENT | User-Agent casuale di un browser reale per l'intera esecuzione |
-v / --verbose | VERBOSE | mostra le righe di log per ogni fase |
--debug | DEBUG | mostra quale fonte ha trovato ciascun nome |
Note:
DEAD, aumenta CONNECT_TIMEOUT
(predefinito 3 secondi). Senza root/setcap la scansione delle porte ricade
sul semplice TCP connect, e un target sotto carico, o questa macchina stessa
occupata con una scansione concorrente di grandi dimensioni, può far sì che
una porta realmente aperta perda una breve finestra. Ogni porta riceve già un
retry automatico; aumentare il timeout dà semplicemente più tempo a ogni tentativo.--debug aggiunge una riga precedente che mostra quale fonte
ha trovato il nome; disattivato per impostazione predefinita per mantenere l'output pulito.EXPAND_ORG elenca solo i domini fratelli candidati e non li scansiona
senza essere esplicitamente attivato: la prova di una proprietà comune
non equivale all'autorizzazione a scansionarli.deep evita di includere domini non correlatiQuesto è stato un vincolo di progettazione deliberato:
core/resolver.py: is_wildcard_answer), non solo alla radice: un
catch-all su *.dev.example.com viene intercettato anche se la zona radice
non ne ha nessuno./24 dell'IP scoperto
(Scope.ptr_scan_targets) e vengono saltate del tutto per gli IP su
ASN di CDN/cloud/hosting condiviso (Scope.is_shared_infra): scansionare
la /24 di Cloudflare restituirebbe migliaia di tenant non correlati.Scope.accept_ptr_result): il nome deve essere nello scope, e la
risoluzione forward deve ricadere nella stessa /24 da cui proviene la
ricerca inversa. Un record PTR non confermato da solo non prova nulla.