Shodan für OSINT & Forensik: CLI-Befehle, Suchfilter und Query-Rezepte
Shodan ist die Suchmaschine für mit dem Internet verbundene Geräte - und eines der vielseitigsten Werkzeuge für OSINT und digitale Forensik. Dieser Leitfaden führt in drei Teilen durch die Praxis: die CLI-Befehle, die Suchfilter (Dorks) und einsatzfertige Query-Rezepte für echte Ermittlungsszenarien.
Kurz zur Syntax: Filter haben die Form filtername:wert, ohne Leerzeichen zwischen Filter
und Wert. Werte mit Leerzeichen brauchen Anführungszeichen, und auf der Kommandozeile umschließt man die
gesamte Query zusätzlich mit einfachen Anführungszeichen, z. B. 'ssl.cert.subject.cn:"example.com"'.
Filter werden schlicht nebeneinandergestellt, um sie zu kombinieren.
Verantwortungsvoll einsetzen. Shodan indexiert Banner, die Geräte öffentlich preisgeben - die Suche selbst ist passiv. Aktives Scannen (
shodan scan submit) und jede weitere Interaktion mit einem Host erfordern eine ordnungsgemäße Autorisierung. Alles Folgende ist ausschließlich für legitime Recherche, defensive Sicherheit und rechtmäßige Ermittlungen gedacht.
Teil 1 - Die Shodan-CLI
Das Kommandozeilen-Werkzeug shodan (Teil des Python-Pakets shodan) deckt
nahezu den vollen Funktionsumfang ab. Nach pip install shodan einmalig
shodan init <API-KEY> ausführen - danach stehen alle Befehle bereit.
Konto und Setup
| Befehl | Funktion |
|---|---|
shodan init <key> | API-Schlüssel hinterlegen |
shodan info | Konto-Infos, u. a. verbleibende Credits |
shodan myip | eigene externe IP ausgeben |
shodan version | Version des Tools |
Nachschlagen
| Befehl | Funktion |
|---|---|
shodan host <ip> | alle Informationen zu einer IP: offene Ports, Banner, Schwachstellen, zuletzt gesehener Zustand |
shodan domain <domain> | alle Informationen zu einer Domain: Subdomains und DNS-Einträge (passiv) |
shodan host 8.8.8.8
shodan domain example.com --details --save
Suchen, Zählen, Statistik
| Befehl | Funktion |
|---|---|
shodan search <query> | die Shodan-Datenbank durchsuchen |
shodan count <query> | nur die Trefferzahl - ohne Query-Credits zu verbrauchen |
shodan stats --facets <f> <query> | Facetten-Census: häufigste Werte je Eigenschaft |
shodan search --fields ip_str,port,org 'product:nginx country:DE'
shodan count 'ssl.version:tlsv1'
shodan stats --facets org,country port:445
Daten speichern und verarbeiten
| Befehl | Funktion |
|---|---|
shodan download <datei> <query> | Treffer als komprimiertes JSON sichern |
shodan parse <datei> | gespeichertes JSON offline auswerten |
shodan convert <datei> <format> | in ein anderes Format wandeln (z. B. CSV, KML, GeoJSON) |
shodan download berlin-nginx 'product:nginx city:"Berlin"'
shodan parse --fields ip_str,port berlin-nginx.json.gz
Überwachung (Alerts) und On-Demand-Scans
| Befehl | Funktion |
|---|---|
shodan alert create <name> <netz> | ein Netz dauerhaft überwachen |
shodan alert domain <domain> | Alert auf Basis einer Domain |
shodan alert list / info / remove / clear | Alerts anzeigen und verwalten |
shodan alert triggers / enable / disable | Benachrichtigungs-Trigger steuern |
shodan alert export / import | Überwachungs-Konfiguration sichern / einspielen |
shodan scan submit <ip/netz> | gezielt aktiv scannen lassen (Autorisierung nötig) |
shodan scan status / list / protocols | Scans verfolgen; scanbare Protokolle |
shodan honeyscore <ip> | Honeypot-Wahrscheinlichkeit (0-1) |
Doku-Stolperstein zum Merken: Der Hilfetext von
shodan alert importbeginnt im Quellcode versehentlich mit „Export…" (übernommen ausalert export). Die Funktion importiert jedoch eine zuvor exportierte Überwachungs-Konfiguration.
Streaming und mehr
| Befehl | Funktion |
|---|---|
shodan stream | Daten in Echtzeit mitlesen (passendes Abo nötig) |
shodan radar | Echtzeit-Karte neuer Funde im Terminal |
shodan trends <query> | die historische Shodan-Datenbank durchsuchen |
shodan data / shodan org | Bulk-Datensätze; Verwaltung der eigenen Organisation |
Teil 2 - Suchfilter (Dorks): die Referenz
Filter haben die Form filtername:wert (kein Leerzeichen); Werte mit Leerzeichen in
Anführungszeichen. Standardmäßig durchsucht Shodan nur die data-Eigenschaft des Banners -
alles Weitere erreicht man nur über die folgenden Filter.
Host und Netzwerk
| Filter | Trifft auf |
|---|---|
ip, net | IP-Adresse bzw. CIDR-Netzbereich |
hostname, domain | Hostname im Banner bzw. Domain |
port | Portnummer des Dienstes |
org, isp, asn | Organisation, Provider, AS-Nummer |
product, version, cpe | erkannte Software, Version, CPE-Kennung |
os, device, link | Betriebssystem, Gerätetyp, Netzwerk-Link-Typ |
hash | Hash der data-Eigenschaft (identische Banner) |
has_screenshot, has_ssl, has_ipv6, has_vuln | Ja/Nein-Merkmale |
tag | automatische Shodan-Tags (höheres Abo) |
Dazu einige Meta-Filter: all (durchsucht alle Felder), shodan.module (das
erhebende Crawler-Modul), scan (Scan-ID) und asset.
Standort
| Filter | Trifft auf |
|---|---|
country, state, region, city, postal | Land / Bundesland / Region / Stadt / PLZ |
geo | Breitengrad, Längengrad, optional Radius in km |
HTTP
| Filter | Trifft auf |
|---|---|
http.title, http.html | Seitentitel bzw. HTML-Body |
http.status | HTTP-Statuscode |
http.component, http.component_category | erkannte Web-Technologie / Kategorie |
http.favicon.hash | Favicon-Hash (Fingerabdruck) |
http.waf | erkannte Web Application Firewall |
http.securitytxt | Inhalt der security.txt |
http.html_hash, http.title_hash, http.dom_hash, http.headers_hash, http.server_hash, http.robots_hash | Hashes einzelner HTTP-Bestandteile (Pivoting/Dedup) |
SSL/TLS
| Filter | Trifft auf |
|---|---|
ssl, ssl.version, ssl.alpn | Zertifikatstext, TLS-Version(en), ALPN-Protokolle |
ssl.jarm, ssl.ja3s | TLS-Stack-Fingerabdrücke (JARM, JA3S) |
ssl.cert.subject.cn, ssl.cert.issuer.cn | Common Name von Inhaber bzw. Aussteller |
ssl.cert.serial, ssl.cert.fingerprint | Seriennummer, Fingerabdruck (exaktes Zertifikat) |
ssl.cert.expired, ssl.cert.alg, ssl.cert.extension | abgelaufen?, Signatur-Algorithmus, Extensions |
ssl.cert.pubkey.bits, ssl.cert.pubkey.type | Public-Key-Länge und -Typ |
ssl.cipher.name, ssl.cipher.bits, ssl.cipher.version | ausgehandelte Cipher-Suite |
ssl.chain_count | Länge der Zertifikatskette |
Screenshots und Cloud
| Filter | Trifft auf |
|---|---|
screenshot.hash, screenshot.label | Screenshot-Hash bzw. ML-Label (z. B. ics, login) |
cloud.provider, cloud.region, cloud.service | Cloud-Anbieter / -Region / -Dienst |
Tracking-Pixel und Web-Marker - stark für Attribution: verschiedene Sites über dieselbe ID verknüpfen.
| Filter | Trifft auf |
|---|---|
google_analytics, google_tag_manager, google_ads | Google-Tracking-IDs im Seitenquelltext |
meta_pixel, tiktok_pixel, x_pixel | Meta-, TikTok- und X-Pixel-IDs |
Protokoll-spezifisch
| Filter | Trifft auf |
|---|---|
ssh.hassh, ssh.type | SSH-HASSH-Fingerabdruck, Host-Key-Typ |
snmp.name, snmp.location, snmp.contact | SNMP-Systemfelder |
ntp.ip, ntp.port, ntp.more, ntp.ip_count | NTP-Monlist-Daten |
telnet.option, telnet.do/dont/will/wont | ausgehandelte Telnet-Optionen |
bitcoin.ip, bitcoin.port, bitcoin.version, bitcoin.ip_count | Bitcoin-Node-Merkmale |
Schwachstellen, Kategorie und Zeit
| Filter | Trifft auf |
|---|---|
vuln, has_vuln | CVE bzw. „hat Schwachstelle" (höheres Abo) |
category | Crawl-Kategorie, z. B. ics, malware |
before, after | Zeitfenster im Format dd/mm/yyyy |
Teil 3 - Query-Rezepte: Filter kombinieren
Die einzelnen Filter zu kennen ist das eine - sie zu präzisen, wiederholbaren Abfragen zu kombinieren, ist der eigentliche Ermittlungswert. Die folgenden Rezepte sind Ausgangspunkte für OSINT- und Forensik-Arbeit.
Infrastruktur-Pivoting
Der stärkste OSINT-Einsatz von Shodan ist das Pivoting: von einem Artefakt ausgehen und verwandte Infrastruktur finden.
Alle Hosts mit demselben Favicon finden. Ein Favicon-Hash ist ein kompakter Fingerabdruck, der oft eine ganze Flotte zusammengehöriger Server offenlegt - auch über verschiedene IPs und Domains hinweg.
http.favicon.hash:-1234567890
Über den Common Name eines TLS-Zertifikats pivotieren. Nützlich, um Infrastruktur abzubilden, die an eine Domain oder Organisation gebunden ist.
ssl.cert.subject.cn:"example.com"
Hosts nach JARM-Fingerabdruck gruppieren. JARM fasst Server mit identischem Verhalten des TLS-Stacks zusammen - praktisch, um übereinstimmende C2- oder Panel-Infrastruktur zu erkennen.
ssl.jarm:<jarm-hash>
Alles erfassen, was eine Organisation oder ein ASN exponiert.
org:"Zielorganisation"
asn:AS15169
Hosts über den Hostnamen finden. hostname greift auf den im Banner
hinterlegten Namen zu - nützlich, um Sub-Domains und vergessene Hosts einer Domain aufzuspüren.
hostname:example.com
Exakter über das Zertifikat pivotieren. Der Common Name kann mehrdeutig sein; Seriennummer und SHA-256-Fingerabdruck identifizieren ein konkretes Zertifikat - und über den Aussteller-CN findet man alles, was dieselbe (oft interne) CA ausgestellt hat.
ssl.cert.fingerprint:<sha256-fingerprint>
ssl.cert.serial:<seriennummer>
ssl.cert.issuer.cn:"Internal CA"
Identische Banner oder Screenshots gruppieren. hash ist der Hash der
data-Eigenschaft - Hosts mit exakt gleichem Banner teilen ihn; screenshot.hash
macht dasselbe für Bildschirmfotos.
hash:-1937681632
screenshot.hash:<image-hash>
Exponierte und fehlkonfigurierte Dienste
Aus dem Internet erreichbare Datenbanken.
product:MongoDB
product:Elasticsearch port:9200
product:"Redis" port:6379
Fernzugriffs-Oberflächen.
port:3389 has_screenshot:true
product:OpenSSH port:22
Web-Panels und Login-Seiten über den Titel.
http.title:"Login" country:DE
http.title:"Index of /"
Web-Technologie und Inhalts-Fingerprinting
Über die erkannten HTTP-Komponenten und den Seiteninhalt lassen sich Techniken, Kampagnen oder wiederverwendete Marker plattformübergreifend wiederfinden.
Nach eingesetzter Web-Technologie suchen. Shodan erkennt CMS, Frameworks und
Bibliotheken automatisch; verwandt ist http.component_category, das ganze Kategorien bündelt.
http.component:"WordPress"
http.component:"jQuery" country:DE
Seiten mit einem bestimmten Marker im HTML finden. http.html durchsucht
den HTML-Body - ideal, um eine Tracking-ID, ein Template-Fragment oder eine wiederverwendete Zeichenkette
über viele Hosts zu verfolgen. http.status grenzt zusätzlich auf den Antwortcode ein.
http.html:"ua-000000-1"
http.html:"Powered by AcmeCMS" http.status:200
Web Application Firewalls erkennen.
http.waf:Cloudflare
Zertifikate und TLS-Hygiene
Abgelaufene Zertifikate im eigenen Netz. Ein schneller Weg, um vernachlässigte Assets sichtbar zu machen.
ssl.cert.expired:true net:203.0.113.0/24
Veraltete, noch genutzte TLS-Versionen. Achtung: Shodans Wert für TLS 1.0 lautet
tlsv1 (nicht tlsv1.0); zulässige Werte sind
sslv2, sslv3, tlsv1, tlsv1.1, tlsv1.2, tlsv1.3.
ssl.version:tlsv1 country:DE
Für die Cipher-Ebene existiert zusätzlich ssl.cipher.name (exakter Cipher-Suite-Name) -
nützlich, um veraltete oder schwache Suiten aufzuspüren.
Geografisch und organisatorisch eingrenzen
Diese Filter verengen jede Query auf einen Raum, eine Organisation oder eine Plattform - meist in Kombination mit einem Dienst-Filter.
country:DE city:"Berlin"
geo:"52.52,13.40,50"
postal:"10115" product:nginx
org:"Deutsche Telekom AG" os:"Windows"
asn:AS3320 isp:"Vodafone"
geo nimmt Breitengrad, Längengrad und optional einen Radius in Kilometern;
os, isp und device grenzen weiter auf Plattform, Provider und
Gerätetyp ein.
Schwachstellen-orientierte Triage
Diese Filter setzen in der Regel ein zahlungspflichtiges oder akademisches Shodan-Konto voraus.
Hosts mit bekannten Schwachstellen.
has_vuln:true org:"Zielorganisation"
Ein bestimmtes CVE über eine Region.
vuln:CVE-2014-0160 country:DE
Shodan-Tags
Shodan versieht Banner automatisch mit Tags. Sie sind ein schneller Einstieg - und ein wirksamer Rausch-Filter.
tag:vpn country:DE
tag:database -tag:honeypot
tag:self-signed
tag:eol-os
tag:compromised
Besonders praktisch ist -tag:honeypot: Es schließt mutmaßliche Honeypots aus (das
honeypot-Tag schließt sich mit echten Geräte-Tags wie ics gegenseitig aus). Das
Tag-Vokabular ist datengetrieben - die aktuell belegten Werte listet
shodan stats --facets tag <query>. Gängige Werte: vpn, cloud,
self-signed, starttls, cdn, eol-os,
eol-product, scanner, database, iot,
compromised.
Industrielle Steuerungssysteme (ICS)
ICS-Exposition ist besonders folgenreich und ein eigenes Rezept-Set wert.
category:ics
product:Modbus
screenshot.label:ics country:DE
Ergebnisse zeitlich eingrenzen
Eine Query auf ein Zeitfenster verengen - hilfreich, wenn man mit einer Vorfalls-Zeitleiste
korreliert. Datumsangaben im Format dd/mm/yyyy.
product:nginx after:01/01/2025 before:01/07/2025
Alles zusammensetzen
Die Rezepte oben sind Ausgangspunkte. Erst das Verketten von Einschränkungen erzeugt ein kurzes, aussagekräftiges Ergebnis statt Rauschen:
product:nginx country:DE port:443 ssl.cert.expired:true
Zwei praktische Gewohnheiten:
- Zuerst
shodan count <query>ausführen - das liefert die Trefferzahl, ohne Query-Credits zu verbrauchen, sodass man vor dem Abruf noch verfeinern kann. - Große Ergebnismengen mit
shodan downloadsichern und danach offline mitshodan parseverarbeiten, um Credits nicht mehrfach für dieselbe Suche auszugeben.
Ein wichtiger Vorbehalt: Standardmäßig durchsucht Shodan nur die data-Eigenschaft des
Banners. Alles andere - Organisation, Standort, Port, Zertifikatsfelder - ist nur über die hier
gezeigten Filter erreichbar. Und weil Shodans Filtersatz vom Konto-Tier abhängt und sich über die Zeit
ändert, liefert der API-Endpunkt
https://api.shodan.io/shodan/host/search/filters?key=DEIN_API_KEY stets die verbindliche,
aktuelle Liste.
Quellen
- Shodan Help Center - Search Query Fundamentals: help.shodan.io/the-basics/search-query-fundamentals
- Shodan Developer - REST-API / Suchfilter: developer.shodan.io/api
- Shodan Help Center - Command-Line Interface: help.shodan.io/command-line-interface
- Shodan - Filter-Referenz (verbindliche Filterliste): shodan.io/search/filters
- Shodan Help Center - Generating Statistics (Facetten): help.shodan.io/command-line-interface/3-stats
- shodan-python - CLI-Quellcode (Referenz für die Befehle): github.com/achillean/shodan-python
- Shodan Developer-Dokumentation: developer.shodan.io
Faktenstand: 2026-08-09. CLI-Befehle gegen den shodan-python-Quellcode geprüft;
Filtersatz auf Basis der offiziellen Filter-Referenz. Die verbindliche, aktuelle Filterliste ist
tier-abhängig und über den API-Endpunkt shodan/host/search/filters abrufbar.