
Outil de recherche passive de noms d'hôte, de domaines et d'adresses IP pour non-robots
Outil passif de recherche de noms d'hôte, de domaines et d'adresses IP pour les non-robots


wtfis est un outil en ligne de commande qui recueille des informations sur un domaine, un FQDN ou une adresse IP à l'aide de divers services OSINT. Contrairement à d'autres outils de ce type, il est conçu spécifiquement pour une lecture humaine, fournissant des résultats plaisants (YMMV) et faciles à lire et à comprendre.
Cet outil suppose que vous utilisez des comptes de niveau gratuit / communautaire, et fait donc le moins d'appels API possible afin d'éviter au maximum les quotas et les limites de débit.
Le nom du projet est un jeu de mots avec « whois ».
| Service | Utilisé pour la recherche | Requis | Offre gratuite |
|---|---|---|---|
| Virustotal | Toutes | Non | Oui |
| AbuseIPDB | Adresse IP | Non | Oui |
| Greynoise | Adresse IP | Non | Oui |
| IP2Location | Adresse IP | Non | Oui |
| IP2Whois | Domaine/FQDN | Non | Oui |
| IPinfo | Adresse IP | Non | Oui (sans inscription) |
| IPWhois | Adresse IP | Non | Oui (sans inscription) |
| Shodan | Adresse IP | Non | Non |
| URLhaus | Toutes | Non | Oui |
La source principale d'informations. Récupère :
AbuseIPDB est une base de données participative d'adresses IP malveillantes signalées. Via son API, wtfis affiche :
Source alternative de géolocalisation et de recherche ASN pour les adresses IP (par défaut : IPWhois). Récupère :
IP2Whois et IP2Location sont des fonctionnalités différentes du même service, vous n'avez donc besoin de vous inscrire qu'une seule fois. La clé API peut ensuite être utilisée pour les deux types de recherche.
Utilisé en option si des identifiants sont fournis. Récupère :
IP2Whois est recommandé par rapport à Virustotal pour les données whois pour plusieurs raisons :
Une autre source alternative de géolocalisation et de recherche ASN pour les adresses IP. Récupère :
Source par défaut de géolocalisation et de recherche ASN pour les adresses IP. Récupère :
IPWhois ne doit pas être confondu avec IP2Whois, qui fournit les données Whois de domaine.
Grâce à l'API communautaire de Greynoise, wtfis indique si une IP figure dans l'un des jeux de données de Greynoise :
Plus d'informations sur les jeux de données ici.
De plus, l'API renvoie également la classification de l'IP par Greynoise (si disponible). Les valeurs possibles sont benign, malicious et unknown.
Récupère des données depuis l'endpoint /shodan/host/{ip} (voir doc). Pour chaque IP, il récupère :
URLhaus est une base de données participative d'URL malveillantes signalées. Cet enrichissement indique si le nom d'hôte ou l'IP interrogé est ou a été utilisé pour distribuer des logiciels malveillants via HTTP ou HTTPS. Les données fournies incluent :
$ pip install wtfis
Pour installer via conda (depuis conda-forge), voir wtfis-feedstock.
Pour installer via brew:
brew install wtfis
wtfis utilise ces variables d'environnement (toutes facultatives) :
VT_API_KEY - Clé API VirustotalABUSEIPDB_API_KEY - Clé API AbuseIPDBIP2LOCATION_API_KEY - Clé API IP2LocationIP2WHOIS_API_KEY - Clé API IP2WhoisGREYNOISE_API_KEY - Clé API GreynoiseSHODAN_API_KEY - Clé API ShodanURLHAUS_API_KEY - Clé API URLhausWTFIS_DEFAULTS - Arguments booléens par défautGEOLOCATION_SERVICE - Service de géolocalisation / recherche ASN à utiliserDéfinissez-les selon votre propre méthode.
Vous pouvez également créer un fichier ~/.env.wtfis dans votre répertoire personnel avec les options ci-dessus. Voir .env.wtfis.example pour un modèle. REMARQUE : n'oubliez pas d'exécuter chmod 400 sur le fichier !
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)
En bref :
$ wtfis FQDN_OR_DOMAIN_OR_IP
et vous obtiendrez des résultats organisés en panneaux, comme sur l'image ci-dessus.
Les entrées « defanged » sont acceptées (par ex. api[.]google[.]com).
Si le terminal le prend en charge, certains champs et titres sont des hyperliens cliquables qui pointent vers les sites web des services respectifs.
Plutôt que de spécifier chaque option d'enrichissement individuellement, vous pouvez utiliser l'option -A / --all pour toutes les activer, dans la mesure du possible. Cette option est mutuellement exclusive avec les options --use-*.
Utilisez l'option -a ou --use-abuseipdb pour activer l'enrichissement AbuseIPDB pour les noms d'hôte, les domaines et les IP.

Le nom de champ AbuseIPDB est un hyperlien (si le terminal le prend en charge) qui vous mène à la page de la base de données AbuseIPDB correspondant à votre requête.
Pour activer Greynoise, lancez la commande avec l'option -g ou --use-greynoise. Comme le quota de l'API est assez faible (50 requêtes par semaine en mars 2023), cet enrichissement est désactivé par défaut.

Le nom de champ GreyNoise est également un hyperlien (si le terminal le prend en charge) qui pointe vers l'entrée de l'IP dans l'interface web de Greynoise, où davantage de contexte est affiché.
Shodan peut être utilisé pour afficher les ports ou services ouverts d'une IP, ainsi que le système d'exploitation dans certains résultats. Lancez la commande avec l'option -s ou --use-shodan.

Si le terminal le prend en charge, le champ Services est un hyperlien cliquable qui vous mène à l'interface web de Shodan.
Utilisez l'option -u ou --use-urlhaus pour activer l'enrichissement URLhaus pour les noms d'hôte, les domaines et les IP.

Le nom de champ Malware URLs est un hyperlien (si le terminal le prend en charge) qui vous mène à la page de la base de données URLhaus correspondant à votre requête.
Pour les recherches de FQDN et de domaine, vous pouvez augmenter ou diminuer le nombre maximal de résolutions IP affichées avec -m NUMBER ou --max-resolutions=NUMBER. La limite supérieure est 10. Si vous n'avez pas besoin des résolutions du tout, définissez le nombre sur 0.
Pour afficher tous les panneaux sur une seule colonne, utilisez l'option -1 ou --one-column.

Les panneaux peuvent être affichés sans couleur avec -n ou --no-color.

Les arguments par défaut peuvent être définis via la variable d'environnement WTFIS_DEFAULTS. Par exemple, pour utiliser Shodan et afficher les résultats sur une seule colonne par défaut :
WTFIS_DEFAULTS=-s -1
Si un argument figure dans WTFIS_DEFAULTS, spécifier le même argument lors de l'invocation de la commande annule cet argument. Ainsi, dans l'exemple ci-dessus, si vous exécutez ensuite :
$ wtfis example.com -s
Shodan ne sera PAS utilisé.
Notez que le nombre maximal de résolutions (-m N, --max-resolutions N) ne peut pas être défini dans les valeurs par défaut pour le moment.
La méthode recommandée pour changer cela consiste à définir la variable GEOLOCATION_SERVICE. Par exemple, pour utiliser IPinfo :
GEOLOCATION_SERVICE=ipinfo
Vous pouvez également définir --geolocation-service lors de l'invocation de la commande :
$ wtfis --geolocation-service=ipinfo 1.1.1.1
Si les deux éléments ci-dessus sont définis, l'option en ligne de commande a priorité.
wtfis peut être exécuté depuis une image Docker. Commencez par construire l'image (à l'aide du Dockerfile inclus) en exécutant :
$ make docker-image
L'image contiendra la dernière version taguée (pas nécessairement celle du dernier commit) de wtfis. Cela garantit que vous obtenez une version stable.
Deux façons d'exécuter l'image :
Assurez-vous que .env.wtfis se trouve dans votre répertoire personnel et qu'il contient les variables d'environnement nécessaires. Exécutez ensuite simplement :
$ make docker-run
Il s'agit d'un alias pour :
$ docker run --env-file=${HOME}/.env.wtfis -it wtfis
Notez que chaque définition ne doit comporter AUCUN espace avant et après le signe égal (FOO=bar, pas FOO = bar).
Vous pouvez également définir vous-même les variables d'environnement, puis exécuter, par exemple :
$ docker run -e VT_API_KEY -e SHODAN_API_KEY -it wtfis