
Passives Hostname-, Domain- und IP-Lookup-Tool für Nicht-Roboter
Passives Hostname-, Domain- und IP-Lookup-Tool für Nicht-Roboter


wtfis ist ein Kommandozeilen-Tool, das mithilfe verschiedener OSINT-Dienste Informationen über eine Domain, einen FQDN oder eine IP-Adresse sammelt. Anders als andere Tools dieser Art ist es speziell für den menschlichen Gebrauch konzipiert und liefert Ergebnisse, die hübsch (Geschmackssache) sowie leicht zu lesen und zu verstehen sind.
Dieses Tool geht davon aus, dass du kostenlose Konten bzw. Konten der Community-Stufe verwendest, und macht daher so wenige API-Aufrufe wie möglich, um Quoten- und Ratengrenzen nicht zu erreichen.
Der Projektname ist ein Wortspiel mit „whois“.
| Dienst | Verwendet bei der Suche | Erforderlich | Kostenlose Stufe |
|---|---|---|---|
| Virustotal | Alle | Nein | Ja |
| AbuseIPDB | IP-Adresse | Nein | Ja |
| Greynoise | IP-Adresse | Nein | Ja |
| IP2Location | IP-Adresse | Nein | Ja |
| IP2Whois | Domain/FQDN | Nein | Ja |
| IPinfo | IP-Adresse | Nein | Ja (ohne Anmeldung) |
| IPWhois | IP-Adresse | Nein | Ja (ohne Anmeldung) |
| Shodan | IP-Adresse | Nein | Nein |
| URLhaus | Alle | Nein | Ja |
Die primäre Informationsquelle. Ruft Folgendes ab:
AbuseIPDB ist eine Crowd-sourced-Datenbank gemeldeter bösartiger IP-Adressen. Über ihre API zeigt wtfis:
Alternative Quelle für Geolokalisierungs- und ASN-Lookups von IP-Adressen (Standard ist IPWhois). Ruft Folgendes ab:
IP2Whois und IP2Location sind verschiedene Funktionen desselben Dienstes, du musst dich also nur einmal anmelden. Der API-Schlüssel kann dann für beide Lookups verwendet werden.
Wird optional verwendet, wenn Zugangsdaten angegeben sind. Ruft Folgendes ab:
IP2Whois wird für Whois-Daten aus einigen Gründen gegenüber Virustotal empfohlen:
Eine weitere alternative Quelle für Geolokalisierungs- und ASN-Lookups von IP-Adressen. Ruft Folgendes ab:
Standardquelle für Geolokalisierungs- und ASN-Lookups von IP-Adressen. Ruft Folgendes ab:
IPWhois sollte nicht mit IP2Whois verwechselt werden, das Domain-Whisle-Daten liefert.
Mithilfe der Community-API von Greynoise zeigt wtfis, ob eine IP in einem der Greynoise-Datensätze enthalten ist:
Weitere Informationen zu den Datensätzen findest du hier.
Darüber hinaus liefert die API auch die Klassifizierung von Greynoise für eine IP (falls verfügbar). Mögliche Werte sind benign (gutartig), malicious (bösartig) und unknown (unbekannt).
Holt Daten vom Endpunkt /shodan/host/{ip} ab (siehe Doku). Für jede IP werden abgerufen:
URLhaus ist eine Crowd-sourced-Datenbank gemeldeter bösartiger URLs. Diese Anreicherung gibt Aufschluss darüber, ob der abgefragte Hostname oder die IP-Adresse derzeit oder zuvor für die Verteilung von Malware über HTTP oder HTTPS verwendet wurde bzw. wird. Zu den bereitgestellten Daten gehören:
$ pip install wtfis
Zur Installation über conda (von conda-forge) siehe wtfis-feedstock.
Zur Installation über brew:
brew install wtfis
wtfis verwendet diese Umgebungsvariablen (alle optional):
VT_API_KEY - Virustotal-API-SchlüsselABUSEIPDB_API_KEY - AbuseIPDB-API-SchlüsselIP2LOCATION_API_KEY - IP2Location-API-SchlüsselIP2WHOIS_API_KEY - IP2Whois-API-SchlüsselGREYNOISE_API_KEY - Greynoise-API-SchlüsselSHODAN_API_KEY - Shodan-API-SchlüsselURLHAUS_API_KEY - URLhaus-API-SchlüsselWTFIS_DEFAULTS - Standard-Boolesche ArgumenteGEOLOCATION_SERVICE - Zu verwendender Geolokalisierungs- / ASN-Lookup-DienstSetze diese mit deiner eigenen Methode.
Alternativ kannst du in deinem Home-Verzeichnis eine Datei ~/.env.wtfis mit den obigen Optionen erstellen. Eine Vorlage findest du in .env.wtfis.example. HINWEIS: Vergiss nicht, die Datei mit chmod 400 zu sichern!
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)
Im Grunde:
$ wtfis FQDN_OR_DOMAIN_OR_IP
und du erhältst Ergebnisse, die nach Paneelen organisiert sind, ähnlich wie im obigen Bild.
Entschärfte (defanged) Eingaben werden akzeptiert (z. B. api[.]google[.]com).
Falls das Terminal dies unterstützt, sind bestimmte Felder und Überschriften klickbare Hyperlinks, die auf die Websites der jeweiligen Dienste verweisen.
Anstatt jedes Anreicherungs-Flag einzeln anzugeben, kannst du das Flag -A / --all verwenden, um alle Anreicherungen zu aktivieren, wo dies möglich ist. Dieses Flag schließt sich gegenseitig mit den --use-*-Flags aus.
Verwende das Flag -a oder --use-abuseipdb, um die AbuseIPDB-Anreicherung für Hostnames, Domains und IPs zu aktivieren.

Der Feldname AbuseIPDB ist ein Hyperlink (sofern vom Terminal unterstützt), der dich zur spezifischen AbuseIPDB-Datenbankseite für deine Abfrage führt.
Um Greynoise zu aktivieren, rufe das Tool mit dem Flag -g oder --use-greynoise auf. Da das API-Kontingent recht niedrig ist (50 Anfragen pro Woche, Stand März 2023), ist dieser Lookup standardmäßig deaktiviert.

Der Feldname GreyNoise ist ebenfalls ein Hyperlink (sofern vom Terminal unterstützt), der auf den IP-Eintrag in der Greynoise-Weboberfläche verweist, wo mehr Kontext angezeigt wird.
Shodan kann verwendet werden, um die offenen Ports oder Dienste einer IP sowie in einigen Ergebnissen das Betriebssystem anzuzeigen. Rufe das Tool mit dem Flag -s oder --use-shodan auf.

Falls das Terminal dies unterstützt, ist das Feld Services ein klickbarer Hyperlink, der dich zur Shodan-Weboberfläche führt.
Verwende das Flag -u oder --use-urlhaus, um die URLhaus-Anreicherung für Hostnames, Domains und IPs zu aktivieren.

Der Feldname Malware URLs ist ein Hyperlink (sofern vom Terminal unterstützt), der dich zur spezifischen URLhaus-Datenbankseite für deine Abfrage führt.
Für FQDN- und Domain-Lookups kannst du die maximale Anzahl der angezeigten IP-Auflösungen mit -m NUMBER oder --max-resolutions=NUMBER erhöhen oder verringern. Die Obergrenze liegt bei 10. Wenn du keine Auflösungen benötigst, setze die Zahl auf 0.
Um alle Paneele in einer Spalte anzuzeigen, verwende das Flag -1 oder --one-column.

Paneele können mit -n oder --no-color ohne Farben angezeigt werden.

Standardargumente können durch Setzen der Umgebungsvariable WTFIS_DEFAULTS definiert werden. Zum Beispiel, um standardmäßig Shodan zu verwenden und Ergebnisse in einer Spalte anzuzeigen:
WTFIS_DEFAULTS=-s -1
Wenn ein Argument in WTFIS_DEFAULTS enthalten ist, dann hebt die Angabe desselben Arguments beim Befehlsaufruf dieses Argument auf. Wenn du im obigen Beispiel also Folgendes ausführst:
$ wtfis example.com -s
dann wird Shodan NICHT verwendet.
Beachte, dass die maximale Anzahl der Auflösungen (-m N, --max-resolutions N) derzeit nicht in den Standardwerten definiert werden kann.
Die empfohlene Methode zum Ändern ist das Setzen der Variable GEOLOCATION_SERVICE. Zum Beispiel, um IPinfo zu verwenden:
GEOLOCATION_SERVICE=ipinfo
Alternativ kannst du --geolocation-service beim Befehlsaufruf setzen:
$ wtfis --geolocation-service=ipinfo 1.1.1.1
Wenn beide oben genannten Optionen gesetzt sind, hat das Kommandozeilen-Flag Vorrang.
wtfis kann aus einem Docker-Image ausgeführt werden. Baue zunächst das Image (mithilfe des enthaltenen Dockerfile), indem du Folgendes ausführst:
$ make docker-image
Das Image enthält die neueste getaggte Version (nicht unbedingt vom neuesten Commit) von wtfis. Dadurch wird sichergestellt, dass du eine stabile Version erhältst.
Es gibt zwei Möglichkeiten, das Image auszuführen:
Stelle sicher, dass sich .env.wtfis in deinem Home-Verzeichnis befindet und die erforderlichen Umgebungsvariablen gesetzt sind. Führe dann einfach Folgendes aus:
$ make docker-run
Dies ist ein Alias für
$ docker run --env-file=${HOME}/.env.wtfis -it wtfis
Beachte, dass jede Definition KEINE Leerzeichen vor und nach dem Gleichheitszeichen haben darf (FOO=bar, nicht FOO = bar).
Alternativ kannst du die Umgebungsvariablen selbst setzen und dann z. B. Folgendes ausführen:
$ docker run -e VT_API_KEY -e SHODAN_API_KEY -it wtfis