
Ferramenta de consulta passiva de hostnames, domínios e IPs para não robôs.
Ferramenta passiva de consulta de hostname, domínio e IP para não-robôs


wtfis é uma ferramenta de linha de comando que reúne informações sobre um domínio, FQDN ou endereço IP usando vários serviços de OSINT. Diferente de outras ferramentas do tipo, ela é construída especificamente para consumo humano, fornecendo resultados bonitos (os resultados podem variar) e fáceis de ler e entender.
Esta ferramenta pressupõe que você está usando contas de nível gratuito / comunitário e, por isso, faz o menor número possível de chamadas de API para minimizar o risco de atingir cotas e limites de taxa.
O nome do projeto é um trocadilho com "whois".
| Serviço | Usado na consulta | Obrigatório | Plano Gratuito |
|---|---|---|---|
| Virustotal | Todos | Não | Sim |
| AbuseIPDB | Endereço IP | Não | Sim |
| Greynoise | Endereço IP | Não | Sim |
| IP2Location | Endereço IP | Não | Sim |
| IP2Whois | Domínio/FQDN | Não | Sim |
| IPinfo | Endereço IP | Não | Sim (sem cadastro) |
| IPWhois | Endereço IP | Não | Sim (sem cadastro) |
| Shodan | Endereço IP | Não | Não |
| URLhaus | Todos | Não | Sim |
A principal fonte de informações. Obtém:
O AbuseIPDB é um banco de dados colaborativo de endereços IP maliciosos denunciados. Por meio de sua API, o wtfis mostra:
Fonte alternativa de consulta de geolocalização e ASN para endereços IP (o padrão é IPWhois). Obtém:
IP2Whois e IP2Location são recursos diferentes do mesmo serviço, então você só precisa se cadastrar uma vez. A chave de API pode então ser usada para ambas as consultas.
Usado opcionalmente se as credenciais forem fornecidas. Obtém:
O IP2Whois é recomendado em vez do Virustotal para dados whois por alguns motivos:
Outra fonte alternativa de consulta de geolocalização e ASN para endereços IP. Obtém:
Fonte padrão de consulta de geolocalização e ASN para endereços IP. Obtém:
O IPWhois não deve ser confundido com o IP2Whois, que fornece dados Whois de domínio.
Por meio da API comunitária do Greynoise, o wtfis mostrará se um IP está em um dos conjuntos de dados do Greynoise:
Mais informações sobre os conjuntos de dados aqui.
Além disso, a API também retorna a classificação do Greynoise para um IP (se disponível). Os valores possíveis são benigno, malicioso e desconhecido.
Obtém dados do endpoint /shodan/host/{ip} (veja a documentação). Para cada IP, obtém:
O URLhaus é um banco de dados colaborativo de URLs maliciosas denunciadas. Esse enriquecimento fornece informações sobre se o hostname ou IP consultado está sendo ou foi usado para distribuição de malware via HTTP ou HTTPS. Os dados fornecidos incluem:
$ pip install wtfis
Para instalar via conda (a partir do conda-forge), veja wtfis-feedstock.
Para instalar via brew:
brew install wtfis
O wtfis usa estas variáveis de ambiente (todas opcionais):
VT_API_KEY - Chave de API do VirustotalABUSEIPDB_API_KEY - Chave de API do AbuseIPDBIP2LOCATION_API_KEY - Chave de API do IP2LocationIP2WHOIS_API_KEY - Chave de API do IP2WhoisGREYNOISE_API_KEY - Chave de API do GreynoiseSHODAN_API_KEY - Chave de API do ShodanURLHAUS_API_KEY - Chave de API do URLhausWTFIS_DEFAULTS - Argumentos booleanos padrãoGEOLOCATION_SERVICE - Serviço de consulta de geolocalização / ASN a ser usadoDefina essas variáveis usando o método de sua preferência.
Alternativamente, crie um arquivo no seu diretório pessoal ~/.env.wtfis com as opções acima. Veja .env.wtfis.example para um modelo. NOTA: Não se esqueça de aplicar chmod 400 ao arquivo!
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)
Basicamente:
$ wtfis FQDN_OR_DOMAIN_OR_IP
e você obterá resultados organizados em painéis, semelhantes à imagem acima.
Entradas defanged são aceitas (ex.: api[.]google[.]com).
Se o terminal suportar, determinados campos e títulos são hiperlinks clicáveis que apontam para os sites dos respectivos serviços.
Em vez de especificar cada flag de enriquecimento individualmente, você pode usar a flag -A / --all para ativar todos eles, quando possível. Essa flag é mutuamente exclusiva com as flags --use-*.
Use a flag -a ou --use-abuseipdb para ativar o enriquecimento do AbuseIPDB para hostnames, domínios e IPs.

O nome do campo AbuseIPDB é um hiperlink (se o terminal suportar) que leva você à página específica do banco de dados do AbuseIPDB para a sua consulta.
Para ativar o Greynoise, invoque com a flag -g ou --use-greynoise. Como a cota da API é bastante baixa (50 requisições por semana em março de 2023), essa consulta fica desativada por padrão.

O nome do campo GreyNoise também é um hiperlink (se o terminal suportar) que aponta para a entrada do IP na interface web do Greynoise, onde mais contexto é exibido.
A Shodan pode ser usada para mostrar as portas ou serviços abertos de um IP e o SO em alguns resultados. Invoque com a flag -s ou --use-shodan.

Se o terminal suportar, o campo Services é um hiperlink clicável que leva você à interface web da Shodan.
Use a flag -u ou --use-urlhaus para ativar o enriquecimento do URLhaus para hostnames, domínios e IPs.

O nome do campo Malware URLs é um hiperlink (se o terminal suportar) que leva você à página específica do banco de dados do URLhaus para a sua consulta.
Para consultas de FQDN e domínio, você pode aumentar ou diminuir o número máximo de resoluções de IP exibidas com -m NUMBER ou --max-resolutions=NUMBER. O limite superior é 10. Se você não precisar de nenhuma resolução, defina o número como 0.
Para exibir todos os painéis em uma coluna, use a flag -1 ou --one-column.

Os painéis podem ser exibidos sem cores com -n ou --no-color.

Argumentos padrão podem ser definidos configurando a variável de ambiente WTFIS_DEFAULTS. Por exemplo, para usar o Shodan e exibir os resultados em uma coluna por padrão:
WTFIS_DEFAULTS=-s -1
Se um argumento estiver em WTFIS_DEFAULTS, especificar o mesmo argumento durante a invocação do comando anula esse argumento. Então, no exemplo acima, se você executar:
$ wtfis example.com -s
o Shodan NÃO será usado.
Observe que o número máximo de resoluções (-m N, --max-resolutions N) não pode ser definido nos padrões no momento.
A forma recomendada de alterar isso é definindo a variável GEOLOCATION_SERVICE. Por exemplo, para usar o IPinfo:
GEOLOCATION_SERVICE=ipinfo
Alternativamente, defina --geolocation-service na invocação do comando:
$ wtfis --geolocation-service=ipinfo 1.1.1.1
Se ambos os métodos acima estiverem definidos, a flag de linha de comando tem precedência.
O wtfis pode ser executado a partir de uma imagem Docker. Primeiro, construa a imagem (usando o Dockerfile incluído) executando:
$ make docker-image
A imagem terá a versão tagueada mais recente (não necessariamente do commit mais recente) do wtfis. Isso garante que você esteja obtendo uma versão estável.
Há duas maneiras de executar a imagem:
Garanta que o .env.wtfis esteja no seu diretório pessoal e configurado com as variáveis de ambiente necessárias. Então simplesmente execute:
$ make docker-run
Isso é um alias para
$ docker run --env-file=${HOME}/.env.wtfis -it wtfis
Observe que cada definição NÃO deve ter espaços antes e depois do sinal de igual (FOO=bar, não FOO = bar).
Alternativamente, você pode definir as variáveis de ambiente você mesmo e então executar, por exemplo:
$ docker run -e VT_API_KEY -e SHODAN_API_KEY -it wtfis