Shodan in Claude Code (Linux Shell) – Einrichtung & Nutzung

<note important> Voraussetzung: Claude Code ist bereits in der Linux-Shell eingerichtet und das Hacker-Profil (hacker.md) ist aktiv. Diese Anleitung baut auf dem bestehenden Setup auf. </note>


Shodan Claude-Script zur vollständigen Abfrage

Diese Anleitung gibt es hier: Shodan in Claude Code (Linux Shell) – Script

1. Shodan installieren & initialisieren

1.1 Python-Paket installieren

pip install shodan

Überprüfen:

shodan --version

1.2 API-Key registrieren

Shodan-Account anlegen unter: https://account.shodan.io

Den API-Key aus dem Account-Dashboard kopieren, dann initialisieren:

shodan init DEIN_API_KEY
shodan info

Erwartete Ausgabe (Free Account):

Successfully initialized
Query credits available: 0
Scan credits available: 0

<note warning> Sicherheitshinweis: Den API-Key niemals im Chat, in Git-Repositories oder in geteilten Dokumenten im Klartext angeben. Den Key bei Verdacht auf Kompromittierung sofort unter https://account.shodan.io regenerieren. </note>

2. Claude Code konfigurieren

Die Konfiguration erfolgt in ~/.claude/settings.json (globale Nutzereinstellungen).

2.1 settings.json bearbeiten

nano ~/.claude/settings.json

Inhalt (bestehende Einträge beibehalten und ergänzen):

{
  "env": {
    "SHODAN_API_KEY": "DEIN_API_KEY"
  },
  "permissions": {
    "allow": [
      "Bash(shodan:*)"
    ]
  }
}
Schlüssel Bedeutung
env.SHODAN_API_KEY API-Key wird in jeder Claude-Session als Umgebungsvariable gesetzt
permissions.allow shodan:* erlaubt alle Shodan-CLI-Befehle ohne Rückfrage

2.2 Konfiguration testen

Claude Code neu starten, dann direkt in der Claude-Session:

führe "shodan info" aus

Claude ruft den Befehl ohne Bestätigungsdialog auf und gibt die Account-Infos zurück.

3. Shodan über Claude nutzen

Ab jetzt kann Claude Shodan-Abfragen direkt ausführen, kombinieren und die Ergebnisse interpretieren. Spracheingaben wie die folgenden reichen aus:

3.1 Einfache Abfragen

Eingabe an Claude Ausgeführter Befehl
„Wie viele Shodan-Hosts gibt es für bgv.de?„ shodan count 'hostname:bgv.de'
„Zeig Infos zur IP 8.8.8.8“ shodan host 8.8.8.8
„Welche offenen RDP-Ports gibt es in DE?„ shodan count 'port:3389 country:DE'

3.2 Subdomains & IPs via crt.sh (ohne Credits)

Claude kombiniert Shodan mit externen Quellen automatisch:

Führe eine passive Recon auf bgv.de durch: crt.sh-Subdomains auflisten,
IPs per DNS auflösen und offene Ports per nmap prüfen.

Claude führt dann folgende Schritte eigenständig aus:

# Schritt 1: Subdomains via crt.sh
curl -s "https://crt.sh/?q=%.bgv.de&output=json" | python3 -c "
import sys, json
data = json.load(sys.stdin)
names = set()
for e in data:
    for n in e['name_value'].split('\n'):
        names.add(n.strip())
for n in sorted(names): print(n)
"
 
# Schritt 2: DNS-Auflösung
for sub in citrix vpn owa mail login portal exchange; do
  ip=$(host $sub.bgv.de 2>/dev/null | grep "has address" | awk '{print $4}')
  [ -n "$ip" ] && echo "$sub.bgv.de -> $ip"
done
 
# Schritt 3: Port-Scan auf externe IPs
nmap -sV -p 80,443,22,3389,8443 --open -T4 <gefundene_IPs>

3.3 Mit Membership: Search & Vulnerability-Scan

Ab dem bezahlten Plan (Membership ab $49/Jahr) stehen Query Credits und der vuln:-Filter zur Verfügung:

Suche alle Apache-Hosts in Deutschland mit Log4Shell-Schwachstelle.
shodan search 'vuln:CVE-2021-44228 country:DE product:Apache' --limit 50
Zeig alle offenen MongoDB-Instanzen ohne Auth in DE.
shodan search 'port:27017 country:DE "MongoDB Server Information"' --limit 20

3.4 Python-API für komplexe Auswertungen

Claude kann auch direkt Python-Code gegen die Shodan-API ausführen:

Werte alle Shodan-Hosts für bgv.de aus und zeige CVEs gruppiert.

Claude generiert und führt aus:

import shodan, os
 
api = shodan.Shodan(os.environ['SHODAN_API_KEY'])
results = api.search('hostname:bgv.de', limit=100)
 
print(f"Hosts gefunden: {results['total']}")
for r in results['matches']:
    print(f"\n{r['ip_str']}:{r['port']}  {r.get('product','')} {r.get('version','')}")
    if 'vulns' in r:
        for cve, info in r['vulns'].items():
            print(f"  ⚠ {cve}  CVSS:{info.get('cvss','-')}")

4. Shodan nur im Hacker-Profil verwenden (optional)

Ziel: Shodan-Berechtigungen nur aktiv, wenn Claude mit dem Hacker-Profil gestartet wird – nicht in anderen Kontexten (dev.md, architekt.md usw.).

4.1 Konzept: Projektverzeichnis als Hacker-Workspace

Claude Code liest Einstellungen hierarchisch:

~/.claude/settings.json          ← global (alle Profile)
~/hacking/.claude/settings.json  ← nur in diesem Verzeichnis aktiv
~/hacking/CLAUDE.md              ← lokale Instruktionen

Die Shodan-Konfiguration aus Abschnitt 2 aus der globalen settings.json entfernen und stattdessen nur lokal ablegen:

4.2 Hacker-Workspace einrichten

mkdir -p ~/hacking/.claude

~/hacking/.claude/settings.json mit folgendem Inhalt anlegen:

{
  "env": {
    "SHODAN_API_KEY": "DEIN_API_KEY"
  },
  "permissions": {
    "allow": [
      "Bash(shodan:*)",
      "Bash(nmap:*)",
      "Bash(curl:*)",
      "Bash(host:*)",
      "Bash(dig:*)",
      "Bash(python3:*)"
    ]
  }
}

~/hacking/CLAUDE.md anlegen:

# Hacker-Workspace
 
Profil: Ethical Hacker & Forensiker
Alle Aktionen erfolgen im Rahmen autorisierter Penetrationstests.
 
Tools verfügbar: shodan, nmap, curl, dig, python3 (shodan-API)

4.3 Claude im Hacker-Workspace starten

cd ~/hacking
claude --profile hacker

Damit gilt:

4.4 Einschränkung

<note> Claude Code unterstützt derzeit keine bedingten Berechtigungen pro Profil in einer einzigen settings.json. Die Trennung erfolgt ausschließlich über separate Verzeichnisse mit eigenen .claude/settings.json-Dateien. Das Profil (--profile hacker) steuert das Verhalten Claudes, aber nicht die Toolberechtigungen – diese kommen aus der Verzeichnishierarchie. </note>

5. Shodan-Plan-Übersicht

Feature Free Membership ($49/a) API ($59/mo)
shodan info
shodan count
shodan host <IP>
shodan search
shodan domain
vuln:-Filter
Query Credits/Monat 0 100 unbegrenzt
Scan Credits 0 0 100

6. Typischer Workflow mit Claude

1. cd ~/hacking && claude --profile hacker

2. "Führe passive Recon auf ziel.de durch"
   → Claude: crt.sh + DNS + nmap automatisch

3. "Zeig Shodan-Infos zur IP 1.2.3.4"
   → Claude: shodan host 1.2.3.4

4. "Welche CVEs sind für diese IP bekannt?"
   → Claude: shodan host 1.2.3.4 + vuln-Auswertung

5. "Erstelle einen Recon-Report als Markdown"
   → Claude fasst alle Ergebnisse strukturiert zusammen

Speziell dafür aufgesetzte legale Ziele um den Scanner zu testen

Offizielle Test-Domains / vulnerable-by-design:

┌──────────────────────────┬─────────────────────┬──────────────────────────────────────────────────────┐
│           Ziel           │      Betreiber      │                     Besonderheit                     │
├──────────────────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
│ scanme.nmap.org          │ Nmap-Projekt        │ Explizit für Nmap-Tests freigegeben, wenige Services │
├──────────────────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
│ testphp.vulnweb.com      │ Acunetix            │ PHP-App mit SQL-Injection, XSS, LFI etc.             │
├──────────────────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
│ testhtml5.vulnweb.com    │ Acunetix            │ HTML5-App, CORS-Fehler, XSS                          │
├──────────────────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
│ testaspnet.vulnweb.com   │ Acunetix            │ ASP.NET mit bekannten Schwachstellen                 │
├──────────────────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
│ hack.me                  │ Community           │ Viele verwundbare Web-Apps online                    │
├──────────────────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
│ demo.testfire.net        │ IBM (Altoro Mutual) │ Banking-Demo mit SQLi, XSS                           │
├──────────────────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
│ juice-shop.herokuapp.com │ OWASP               │ Node.js-App, OWASP Top 10 komplett abgedeckt         │
└──────────────────────────┴─────────────────────┴──────────────────────────────────────────────────────┘

Quellen


<note tip> Empfehlung: Das sauberste Verfahren ist das Workspace-Prinzip aus Abschnitt 4 – ein eigenes Verzeichnis ~/hacking/ mit lokaler .claude/settings.json. Eine native Profil-Bindung für Berechtigungen (also „Permission X nur wenn --profile hacker“) gibt es in Claude Code aktuell nicht, aber der Workaround mit dem Arbeitsverzeichnis ist in der Praxis genauso effektiv. </note>