SocialKraken Blog

Shodan für OSINT & Forensik: CLI-Befehle, Suchfilter und Query-Rezepte

2026-08-09

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

BefehlFunktion
shodan init <key>API-Schlüssel hinterlegen
shodan infoKonto-Infos, u. a. verbleibende Credits
shodan myipeigene externe IP ausgeben
shodan versionVersion des Tools

Nachschlagen

BefehlFunktion
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

BefehlFunktion
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

BefehlFunktion
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

BefehlFunktion
shodan alert create <name> <netz>ein Netz dauerhaft überwachen
shodan alert domain <domain>Alert auf Basis einer Domain
shodan alert list / info / remove / clearAlerts anzeigen und verwalten
shodan alert triggers / enable / disableBenachrichtigungs-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 / protocolsScans verfolgen; scanbare Protokolle
shodan honeyscore <ip>Honeypot-Wahrscheinlichkeit (0-1)

Doku-Stolperstein zum Merken: Der Hilfetext von shodan alert import beginnt im Quellcode versehentlich mit „Export…" (übernommen aus alert export). Die Funktion importiert jedoch eine zuvor exportierte Überwachungs-Konfiguration.

Streaming und mehr

BefehlFunktion
shodan streamDaten in Echtzeit mitlesen (passendes Abo nötig)
shodan radarEchtzeit-Karte neuer Funde im Terminal
shodan trends <query>die historische Shodan-Datenbank durchsuchen
shodan data / shodan orgBulk-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

FilterTrifft auf
ip, netIP-Adresse bzw. CIDR-Netzbereich
hostname, domainHostname im Banner bzw. Domain
portPortnummer des Dienstes
org, isp, asnOrganisation, Provider, AS-Nummer
product, version, cpeerkannte Software, Version, CPE-Kennung
os, device, linkBetriebssystem, Gerätetyp, Netzwerk-Link-Typ
hashHash der data-Eigenschaft (identische Banner)
has_screenshot, has_ssl, has_ipv6, has_vulnJa/Nein-Merkmale
tagautomatische 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

FilterTrifft auf
country, state, region, city, postalLand / Bundesland / Region / Stadt / PLZ
geoBreitengrad, Längengrad, optional Radius in km

HTTP

FilterTrifft auf
http.title, http.htmlSeitentitel bzw. HTML-Body
http.statusHTTP-Statuscode
http.component, http.component_categoryerkannte Web-Technologie / Kategorie
http.favicon.hashFavicon-Hash (Fingerabdruck)
http.waferkannte Web Application Firewall
http.securitytxtInhalt der security.txt
http.html_hash, http.title_hash, http.dom_hash, http.headers_hash, http.server_hash, http.robots_hashHashes einzelner HTTP-Bestandteile (Pivoting/Dedup)

SSL/TLS

FilterTrifft auf
ssl, ssl.version, ssl.alpnZertifikatstext, TLS-Version(en), ALPN-Protokolle
ssl.jarm, ssl.ja3sTLS-Stack-Fingerabdrücke (JARM, JA3S)
ssl.cert.subject.cn, ssl.cert.issuer.cnCommon Name von Inhaber bzw. Aussteller
ssl.cert.serial, ssl.cert.fingerprintSeriennummer, Fingerabdruck (exaktes Zertifikat)
ssl.cert.expired, ssl.cert.alg, ssl.cert.extensionabgelaufen?, Signatur-Algorithmus, Extensions
ssl.cert.pubkey.bits, ssl.cert.pubkey.typePublic-Key-Länge und -Typ
ssl.cipher.name, ssl.cipher.bits, ssl.cipher.versionausgehandelte Cipher-Suite
ssl.chain_countLänge der Zertifikatskette

Screenshots und Cloud

FilterTrifft auf
screenshot.hash, screenshot.labelScreenshot-Hash bzw. ML-Label (z. B. ics, login)
cloud.provider, cloud.region, cloud.serviceCloud-Anbieter / -Region / -Dienst

Tracking-Pixel und Web-Marker - stark für Attribution: verschiedene Sites über dieselbe ID verknüpfen.

FilterTrifft auf
google_analytics, google_tag_manager, google_adsGoogle-Tracking-IDs im Seitenquelltext
meta_pixel, tiktok_pixel, x_pixelMeta-, TikTok- und X-Pixel-IDs

Protokoll-spezifisch

FilterTrifft auf
ssh.hassh, ssh.typeSSH-HASSH-Fingerabdruck, Host-Key-Typ
snmp.name, snmp.location, snmp.contactSNMP-Systemfelder
ntp.ip, ntp.port, ntp.more, ntp.ip_countNTP-Monlist-Daten
telnet.option, telnet.do/dont/will/wontausgehandelte Telnet-Optionen
bitcoin.ip, bitcoin.port, bitcoin.version, bitcoin.ip_countBitcoin-Node-Merkmale

Schwachstellen, Kategorie und Zeit

FilterTrifft auf
vuln, has_vulnCVE bzw. „hat Schwachstelle" (höheres Abo)
categoryCrawl-Kategorie, z. B. ics, malware
before, afterZeitfenster 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:

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

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.