Dies ist eine alte Version des Dokuments!
====== 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>
===== 1. Shodan installieren & initialisieren =====
==== 1.1 Python-Paket installieren ====
<code bash> pip install shodan </code>
Überprüfen: <code bash> shodan --version </code>
==== 1.2 API-Key registrieren ====
Shodan-Account anlegen unter: https://account.shodan.io
Den API-Key aus dem Account-Dashboard kopieren, dann initialisieren:
<code bash> shodan init DEIN_API_KEY shodan info </code>
Erwartete Ausgabe (Free Account): <code> Successfully initialized Query credits available: 0 Scan credits available: 0 </code>
<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 ====
<code bash> nano ~/.claude/settings.json </code>
Inhalt (bestehende Einträge beibehalten und ergänzen):
<code json>
{
"env": {
"SHODAN_API_KEY": "DEIN_API_KEY"
},
"permissions": {
"allow": [
"Bash(shodan:*)"
]
}
}
</code>
^ 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:
<code> führe "shodan info" aus </code>
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:
<code> 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. </code>
Claude führt dann folgende Schritte eigenständig aus:
<code bash>
# 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> </code>
==== 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:
<code> Suche alle Apache-Hosts in Deutschland mit Log4Shell-Schwachstelle. </code>
<code bash> shodan search 'vuln:CVE-2021-44228 country:DE product:Apache' --limit 50 </code>
<code> Zeig alle offenen MongoDB-Instanzen ohne Auth in DE. </code>
<code bash> shodan search 'port:27017 country:DE "MongoDB Server Information"' --limit 20 </code>
==== 3.4 Python-API für komplexe Auswertungen ====
Claude kann auch direkt Python-Code gegen die Shodan-API ausführen:
<code> Werte alle Shodan-Hosts für bgv.de aus und zeige CVEs gruppiert. </code>
Claude generiert und führt aus:
<code python> 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','-')}")
</code>
===== 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:
<code> ~/.claude/settings.json ← global (alle Profile) ~/hacking/.claude/settings.json ← nur in diesem Verzeichnis aktiv ~/hacking/CLAUDE.md ← lokale Instruktionen </code>
Die Shodan-Konfiguration aus Abschnitt 2 aus der globalen ''settings.json'' **entfernen** und stattdessen nur lokal ablegen:
==== 4.2 Hacker-Workspace einrichten ====
<code bash> mkdir -p ~/hacking/.claude </code>
''~/hacking/.claude/settings.json'' mit folgendem Inhalt anlegen:
<code json>
{
"env": {
"SHODAN_API_KEY": "DEIN_API_KEY"
},
"permissions": {
"allow": [
"Bash(shodan:*)",
"Bash(nmap:*)",
"Bash(curl:*)",
"Bash(host:*)",
"Bash(dig:*)",
"Bash(python3:*)"
]
}
}
</code>
''~/hacking/CLAUDE.md'' anlegen:
<code markdown> # Hacker-Workspace
Profil: Ethical Hacker & Forensiker Alle Aktionen erfolgen im Rahmen autorisierter Penetrationstests.
Tools verfügbar: shodan, nmap, curl, dig, python3 (shodan-API) </code>
==== 4.3 Claude im Hacker-Workspace starten ====
<code bash> cd ~/hacking claude --profile hacker </code>
Damit gilt: * Shodan-Berechtigungen **nur** innerhalb von ''~/hacking/'' * Kein Shodan-Zugriff in anderen Projekten oder ohne ''--profile hacker'' * Globale ''settings.json'' bleibt sauber
==== 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 =====
<code> 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 </code>
===== Quellen =====
- SHODAN COMPUTER SEARCH ENGINE. Shodan Help Center. https://help.shodan.io [Zugriff: 2026-03-19]
- MATHERLY, John, 2015. Complete Guide to Shodan. Shodan, LLC. https://leanpub.com/shodan
- ANTHROPIC, 2024. Claude Code Documentation. https://docs.anthropic.com/claude-code [Zugriff: 2026-03-19]
- BSI, 2023. Technische Richtlinie BSI TR-03186: Penetrationstest. Bundesamt für Sicherheit in der Informationstechnik. https://www.bsi.bund.de
- –
Anmerkung zur Hacker-only-Option:
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.
