
Strumento di ricerca passiva di hostname, domini e IP per non-robot
Passive hostname, domain and IP lookup tool for non-robots


wtfis è uno strumento a riga di comando che raccoglie informazioni su un dominio, un FQDN o un indirizzo IP utilizzando vari servizi OSINT. A differenza di altri strumenti del suo genere, è costruito specificamente per il consumo umano, fornendo risultati gradevoli (il risultato può variare) e facili da leggere e comprendere.
Questo strumento presuppone che tu stia usando account di livello gratuito / community, e quindi effettua il minor numero possibile di chiamate API per ridurre al minimo il superamento di quote e limiti di frequenza.
Il nome del progetto è un gioco di parole su "whois".
| Servizio | Utilizzato per | Obbligatorio | Piano gratuito |
|---|---|---|---|
| Virustotal | Tutte | No | Sì |
| AbuseIPDB | Indirizzo IP | No | Sì |
| Greynoise | Indirizzo IP | No | Sì |
| IP2Location | Indirizzo IP | No | Sì |
| IP2Whois | Dominio/FQDN | No | Sì |
| IPinfo | Indirizzo IP | No | Sì (senza registrazione) |
| IPWhois | Indirizzo IP | No | Sì (senza registrazione) |
| Shodan | Indirizzo IP | No | No |
| URLhaus | Tutte | No | Sì |
La fonte primaria di informazioni. Recupera:
AbuseIPDB è un database collaborativo di indirizzi IP malevoli segnalati. Tramite la sua API wtfis mostra:
Fonte alternativa per la geolocalizzazione e la ricerca ASN per gli indirizzi IP (il predefinito è IPWhois). Recupera:
IP2Whois e IP2Location sono funzionalità diverse dello stesso servizio, quindi devi registrarti una sola volta. La chiave API può poi essere utilizzata per entrambe le ricerche.
Utilizzato opzionalmente se vengono fornite le credenziali. Recupera:
IP2Whois è consigliato rispetto a Virustotal per i dati whois per un paio di motivi:
Un'altra fonte alternativa per la geolocalizzazione e la ricerca ASN per gli indirizzi IP. Recupera:
Fonte predefinita per la geolocalizzazione e la ricerca ASN per gli indirizzi IP. Recupera:
IPWhois non va confuso con IP2Whois, che fornisce dati whois per i domini.
Utilizzando la community API di Greynoise, wtfis mostrerà se un IP è presente in uno dei dataset di Greynoise:
Maggiori informazioni sui dataset qui.
Inoltre, l'API restituisce anche la classificazione di Greynoise per un IP (se disponibile). I valori possibili sono benign, malicious e unknown.
Recupera dati dall'endpoint /shodan/host/{ip} (vedi documentazione). Per ogni IP, recupera:
URLhaus è un database collaborativo di URL malevoli segnalati. Questo arricchimento fornisce informazioni sul fatto che l'hostname o l'IP interrogato sia o sia stato utilizzato per la distribuzione di malware tramite HTTP o HTTPS. I dati forniti includono:
$ pip install wtfis
Per installare tramite conda (da conda-forge), vedi wtfis-feedstock.
Per installare tramite brew:
brew install wtfis
wtfis utilizza queste variabili d'ambiente (tutte opzionali):
VT_API_KEY - chiave API di VirustotalABUSEIPDB_API_KEY - chiave API di AbuseIPDBIP2LOCATION_API_KEY - chiave API di IP2LocationIP2WHOIS_API_KEY - chiave API di IP2WhoisGREYNOISE_API_KEY - chiave API di GreynoiseSHODAN_API_KEY - chiave API di ShodanURLHAUS_API_KEY - chiave API di URLhausWTFIS_DEFAULTS - argomenti booleani predefinitiGEOLOCATION_SERVICE - servizio di geolocalizzazione / ricerca ASN da utilizzareImpostale usando il tuo metodo preferito.
In alternativa, crea un file nella tua home directory ~/.env.wtfis con le opzioni sopra indicate. Vedi .env.wtfis.example per un modello. NOTA: non dimenticare di eseguire chmod 400 sul file!
usage: wtfis [-h] [-A] [-s] [-g] [-a] [-u] [-m N] [-n] [-1] [-V] [--geolocation-service {ip2location,ipinfo,ipwhois}] entity
positional arguments:
entity Hostname, domain or IP
options:
-h, --help show this help message and exit
-A, --all Enable all possible enrichments
-s, --use-shodan Use Shodan to enrich IPs
-g, --use-greynoise Enable Greynoise for IPs
-a, --use-abuseipdb Enable AbuseIPDB for IPs
-u, --use-urlhaus Enable URLhaus for IPs and domains
-m N, --max-resolutions N
Maximum number of resolutions to show (default: 3)
-n, --no-color Show output without colors
-1, --one-column Display results in one column
-V, --version Print version number
--geolocation-service {ip2location,ipinfo,ipwhois}
Geolocation service to use (default: ipwhois)
In pratica:
$ wtfis FQDN_OR_DOMAIN_OR_IP
e otterrai risultati organizzati a pannelli, simili all'immagine sopra.
È accettato input defanged (es. api[.]google[.]com).
Se il terminale lo supporta, alcuni campi e intestazioni sono collegamenti ipertestuali cliccabili che puntano ai siti web dei rispettivi servizi.
Invece di specificare singolarmente ogni flag di arricchimento, puoi usare il flag -A / --all per abilitarli tutti, dove possibile. Questo flag è mutuamente esclusivo con i flag --use-*.
Usa il flag -a o --use-abuseipdb per abilitare l'arricchimento AbuseIPDB per hostname, domini e IP.

Il nome del campo AbuseIPDB è un collegamento ipertestuale (se supportato dal terminale) che ti porta alla pagina del database AbuseIPDB specifica per la tua ricerca.
Per abilitare Greynoise, invoca con il flag -g o --use-greynoise. Poiché la quota API è piuttosto bassa (50 richieste a settimana a partire da marzo 2023), questa ricerca è disattivata per impostazione predefinita.

Anche il nome del campo GreyNoise è un collegamento ipertestuale (se supportato dal terminale) che punta alla voce IP nell'interfaccia web di Greynoise, dove viene mostrato più contesto.
Shodan può essere usato per mostrare le porte aperte o i servizi di un IP e, in alcuni risultati, il sistema operativo. Invoca con il flag -s o --use-shodan.

Se supportato dal terminale, il campo Services è un collegamento ipertestuale cliccabile che ti porta all'interfaccia web di Shodan.
Usa il flag -u o --use-urlhaus per abilitare l'arricchimento URLhaus per hostname, domini e IP.

Il nome del campo Malware URLs è un collegamento ipertestuale (se supportato dal terminale) che ti porta alla pagina del database URLhaus specifica per la tua ricerca.
Per le ricerche di FQDN e domini, puoi aumentare o diminuire il numero massimo di risoluzioni IP visualizzate con -m NUMBER o --max-resolutions=NUMBER. Il limite massimo è 10. Se non ti servono affatto le risoluzioni, imposta il numero a 0.
Per mostrare tutti i pannelli in una colonna, usa il flag -1 o --one-column.

I pannelli possono essere visualizzati senza colori con -n o --no-color.

Gli argomenti predefiniti possono essere definiti impostando la variabile d'ambiente WTFIS_DEFAULTS. Ad esempio, per usare Shodan e visualizzare i risultati in una colonna per impostazione predefinita:
WTFIS_DEFAULTS=-s -1
Se un argomento è in WTFIS_DEFAULTS, specificare lo stesso argomento durante l'invocazione del comando nega tale argomento. Quindi nell'esempio sopra, se poi esegui:
$ wtfis example.com -s
allora Shodan NON verrà utilizzato.
Nota che le risoluzioni massime (-m N, --max-resolutions N) non possono essere definite nei valori predefiniti al momento.
Il metodo consigliato per cambiarlo è impostare la variabile GEOLOCATION_SERVICE. Ad esempio, per usare IPinfo:
GEOLOCATION_SERVICE=ipinfo
In alternativa, imposta --geolocation-service all'invocazione del comando:
$ wtfis --geolocation-service=ipinfo 1.1.1.1
Se entrambi sono impostati, il flag da riga di comando ha precedenza.
wtfis può essere eseguito da un'immagine Docker. Per prima cosa, crea l'immagine (usando il Dockerfile incluso) eseguendo:
$ make docker-image
L'immagine avrà l'ultima versione taggata (non necessariamente dall'ultimo commit) di wtfis. Questo garantisce di ottenere una versione stabile.
Due modi per eseguire l'immagine:
Assicurati che .env.wtfis sia nella tua home directory e sia impostato con le variabili d'ambiente necessarie. Poi esegui semplicemente:
$ make docker-run
Questo è un alias di
$ docker run --env-file=${HOME}/.env.wtfis -it wtfis
Nota che ogni definizione NON deve avere spazi prima e dopo il segno di uguale (FOO=bar, non FOO = bar).
In alternativa, puoi impostare tu stesso le variabili d'ambiente e poi eseguire, ad esempio:
$ docker run -e VT_API_KEY -e SHODAN_API_KEY -it wtfis