wtfis es una herramienta de línea de comandos que recopila información sobre un dominio, FQDN o dirección IP usando varios servicios OSINT. A diferencia de otras herramientas similares, está diseñada específicamente para el consumo humano, proporcionando resultados fáciles de leer y comprender. Esta herramienta asume que usas cuentas gratuitas/de nivel comunitario, por lo que realiza la menor cantidad posible de llamadas a la API para minimizar el impacto en las cuotas y los límites de velocidad. El nombre del proyecto es un juego de palabras con “whois”.
Fuentes de datos
Servicio | Usado en la búsqueda | Requerido | Nivel gratuito |
---|---|---|---|
Virustotal | Todos | Sí | Sí |
Passivetotal | Todos | No | Sí |
IP2Whois | Dominio/FQDN | No | Sí |
IPWhois | Dirección IP | No | Sí |
Shodan | Dirección IP | No | No |
Greynoise | Dirección IP | No | Sí |
URLhaus | Todos | No | Sí |
AbuseIPDB | Dirección IP | No | Sí |
Instalación
pip install wtfis
Para instalar a través de conda (desde conda-forge), consulta wtfis-feedstock.
Para instalar a través de brew:
brew install wtfis
Configuración
wtfis utiliza estas variables de entorno:
VT_API_KEY
(requerido) – Clave de API de VirustotalPT_API_KEY
(opcional) – Clave de API de PassivetotalPT_API_USER
(opcional) – Usuario de API de PassivetotalIP2WHOIS_API_KEY
(opcional) – Clave de API de IP2WHOISSHODAN_API_KEY
(opcional) – Clave de API de ShodanGREYNOISE_API_KEY
(opcional) – Clave de API de GreynoiseABUSEIPDB_API_KEY
(opcional) – Clave de API de AbuseIPDBWTFIS_DEFAULTS
(opcional) – Argumentos predeterminados
Configura estas variables usando tu propio método o crea un archivo en tu directorio de inicio ~/.env.wtfis
con las declaraciones anteriores. Consulta .env.wtfis.example
para obtener una plantilla. ¡No olvides ejecutar chmod 400
en el archivo!
Uso
usage: wtfis [-h] [-m N] [-s] [-g] [-a] [-u] [-n] [-1] [-V] entity
positional arguments:
entity Hostname, domain or IP
optional arguments:
-h, --help show this help message and exit
-m N, --max-resolutions N
Maximum number of resolutions to show (default: 3)
-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
-n, --no-color Show output without colors
-1, --one-column Display results in one column
-V, --version Print version number
Básicamente:
wtfis FQDN_OR_DOMAIN_OR_IP
y obtendrás resultados organizados por panel, similares a la imagen anterior. Se acepta la entrada “defanged” (por ejemplo, api[.]google[.]com).
- Shodan: Shodan se puede usar para mostrar los puertos o servicios abiertos de una IP y el sistema operativo en algunos resultados. Invoca con la bandera
-s
o--use-shodan
. - Greynoise: Para habilitar Greynoise, invocalo con la bandera
-g
o--use-greynoise
. Debido a que la cuota de la API es bastante baja (50 solicitudes por semana a partir de marzo de 2023), esta búsqueda está desactivada de forma predeterminada. - URLhaus: Usa la bandera
-u
o--use-urlhaus
para habilitar el enriquecimiento de URLhaus para nombres de host, dominios e IPs. - AbuseIPDB: Usa la bandera
-a
o--use-abuseipdb
para habilitar el enriquecimiento de AbuseIPDB para nombres de host, dominios e IPs.
Opciones de visualización:
Para las búsquedas de FQDN y dominio, puedes aumentar o disminuir el número máximo de resoluciones de IP mostradas con -m NUMBER
o --max-resolutions=NUMBER
. El límite superior es 10. Si no necesitas resoluciones, establece el número en 0. Para mostrar todos los paneles en una sola columna, usa la bandera -1
o --one-column
. Los paneles se pueden mostrar sin color con -n
o --no-color
.
Valores predeterminados:
Los argumentos predeterminados se pueden definir estableciendo la variable de entorno WTFIS_DEFAULTS
. Por ejemplo, para usar shodan y mostrar los resultados en una sola columna de forma predeterminada:
WTFIS_DEFAULTS=-s -1
Si un argumento está en WTFIS_DEFAULTS
, especificar el mismo argumento durante la invocación del comando niega ese argumento. Ten en cuenta que las resoluciones máximas (-m N
, --max-resolutions N
) no se pueden definir en los valores predeterminados por el momento.