Skip to main content

shodan

Query Shodan for reconnaissance, target enrichment, and exposed service discovery. Builds queries, parses results, and highlights interesting findings. Requires SHODAN_API_KEY environment variable.

インストールへ移動

ソース情報

リポジトリ
SpecterOps/skills
ソースの最終更新活動
2026年8月14日 01:16
検出された SKILL.md の言語
英語
スター
625
フォーク
68

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
4 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
shodan
description
Query Shodan for reconnaissance, target enrichment, and exposed service discovery. Builds queries, parses results, and highlights interesting findings. Requires SHODAN_API_KEY environment variable.
metadata
{"author":"GhostWorks"}
# Shodan Reconnaissance Skill Query Shodan for exposed services, target enrichment, and attack surface discovery. Parse the user's input to determine the action: - `$shodan search "org:Acme port:443"` → run a Shodan search query - `$shodan target 203.0.113.1` → enrich a specific IP - `$shodan target example.com` → enrich a domain (DNS + per-IP lookup) - `$shodan dorking "Acme Corp"` → build advanced Shodan dorks for a target - `$shodan monitor "Acme Corp"` → exposure report for an organization - `$shodan cve CVE-2024-3400` → find hosts vulnerable to a specific CVE - `$shodan cve CVE-2024-3400 "Acme Corp"` → CVE search scoped to an org ## Prerequisites - **API key**: Set `SHODAN_API_KEY` environment variable - Free tier: limited searches, good for IP lookups - Membership ($49 one-time): unlocks search filters, bulk lookups - Small Business+: monitor, alerts, on-demand scanning - **CLI**: Install with `pip install shodan` or `uv add shodan` - **Verify access**: `shodan info` (shows query/scan credits remaining) If the API key is not set, inform the user and show how to set it: ```bash export SHODAN_API_KEY="your-key-here" # Or add to ~/.zshrc for persistence echo 'export SHODAN_API_KEY="your-key-here"' >> ~/.zshrc ``` ## Actions ### search — Run a Shodan query 1. Build the query from the user's input 2. Execute: `shodan search --fields ip_str,port,org,hostnames,product,version,os "<query>" --limit 100` 3. Parse and format results into a table: ``` IP Port Service Version Org Hostnames ───────────────────────────────────────────────────────────────────────────── 203.0.113.1 443 nginx 1.25.3 Target Corp www.target.com 203.0.113.2 22 OpenSSH 8.9p1 Target Corp ssh.target.com ``` 4. Highlight interesting findings: - **Critical**: Known vulnerable versions, default credentials services, exposed admin panels - **Interesting**: Uncommon ports, development/staging services, database ports, ICS/SCADA - **Note**: Self-signed certs, expired certs, outdated software 5. Group results by service type when there are many results ### target — Enrich a specific IP or domain 1. For IPs: `shodan host <ip>` 2. For domains: `shodan domain <domain>` then lookup each IP found 3. Collect and present: **Host Summary:** - IP, ASN, organization, ISP, country/city - Open ports and services (with versions) - Hostnames and reverse DNS - Last scan date - Known vulnerabilities (CVEs) Shodan has flagged - SSL/TLS certificate details (issuer, expiry, SANs) - Technologies detected **Domain Summary** (if domain provided): - DNS records (A, AAAA, MX, NS, TXT, CNAME) - Subdomains discovered - Per-IP breakdown of services 4. Flag anything juicy: - Ports that shouldn't be public (3389, 5900, 27017, 6379, 9200, 5432, 3306, 445) - Services with known CVEs - Expired or self-signed SSL certs - Development/staging environments exposed - Default pages or install wizards ### dorking — Build advanced Shodan queries Based on what the user describes, build targeted Shodan dorks. **Query building reference:** ``` # Organization targeting org:"Target Corp" org:"Target Corp" port:443 # Network range net:203.0.113.0/24 net:203.0.113.0/24 port:22 # Service-specific product:"Apache httpd" version:"2.4.49" # Path traversal CVE-2021-41773 product:"Microsoft Exchange" port:443 # Exchange servers product:"OpenSSH" version:"7.6" # Older SSH "Server: Apache/2.4.49" # Raw banner match # Exposed services (shouldn't be public) org:"Target" port:3389 # RDP org:"Target" port:445 # SMB org:"Target" port:27017 # MongoDB org:"Target" port:6379 # Redis org:"Target" port:9200 # Elasticsearch org:"Target" port:5432 # PostgreSQL org:"Target" port:3306 # MySQL org:"Target" port:11211 # Memcached org:"Target" "port:2379" # etcd # Web technologies org:"Target" http.title:"Dashboard" org:"Target" http.title:"Login" org:"Target" http.title:"Index of /" # Directory listing org:"Target" http.component:"WordPress" org:"Target" http.component:"Jira" org:"Target" http.component:"Jenkins" org:"Target" http.component:"Grafana" org:"Target" http.favicon.hash: # Favicon hash matching # SSL/TLS org:"Target" ssl.cert.expired:true org:"Target" ssl.cert.issuer.cn:"Let's Encrypt" ssl.cert.subject.cn:"target.com" # Find all IPs for a cert # Vulnerable services vuln:CVE-2021-44228 # Log4Shell vuln:CVE-2023-22515 # Confluence vuln:CVE-2024-3400 # PAN-OS # ICS/SCADA (if in scope) org:"Target" tag:ics org:"Target" port:502 # Modbus org:"Target" port:44818 # EtherNet/IP # Cloud metadata org:"Amazon" http.title:"Target" "X-Powered-By" org:"Target" # Country/city filtering org:"Target" country:"US" city:"New York" # Screenshot available org:"Target" has_screenshot:true # Honeypot detection org:"Target" tag:honeypot ``` Present 5-10 relevant queries for the scenario with explanations of what each finds and why it matters. ### monitor — Check exposure for an organization 1. Run multiple targeted queries for the org: ```bash shodan search 'org:"<org_name>"' --fields ip_str,port,product,version --limit 500 ``` 2. Build an exposure report: **Attack Surface Summary:** - Total IPs discovered - Total open ports - Unique services and versions **Exposed Services by Risk:** | Risk | Service | Count | Details | |---|---|---|---| | Critical | RDP (3389) | 3 | Direct RDP exposure to internet | | Critical | MongoDB (27017) | 1 | No auth likely | | High | SSH (22) | 15 | Check for password auth | | High | Expired SSL | 4 | Trust issues, possible neglect | | Info | HTTPS (443) | 42 | Normal | **Version Intelligence:** - Outdated software detected (with CVE references) - End-of-life products **Recommendations:** - Prioritized list of what to investigate or report 3. If the user asks, save the full report as markdown ### cve — Find hosts vulnerable to a specific CVE 1. Search: `shodan search "vuln:<cve_id>"` (or if targeting an org: `shodan search "vuln:<cve_id> org:\"<org>\""`) 2. If Shodan doesn't index that CVE, fall back to service/version matching: - Look up affected product/versions for the CVE - Build a query matching those versions 3. Present results with: - Affected hosts and their details - CVE description and severity - Whether exploitation requires authentication or special conditions - Suggested next steps (verify, exploit, report) ## Python API Fallback If the Shodan CLI isn't available or for complex queries, use the Python API: ```python import shodan import os api = shodan.Shodan(os.environ["SHODAN_API_KEY"]) # Search results = api.search("org:\"Target Corp\" port:443") for result in results["matches"]: print(f"{result['ip_str']}:{result['port']} - {result.get('product', 'unknown')}") # Host lookup host = api.host("203.0.113.1") print(f"Ports: {host['ports']}") print(f"Vulns: {host.get('vulns', [])}") # DNS lookup dns = api.dns.domain_info("target.com") ``` ## Output Formatting - Default: Rich tables to terminal with color-coded severity - With `--output <file>`: Markdown report file with full details - Always include the Shodan query used so the user can repeat or modify it - Note the scan date — Shodan data can be days/weeks old
GitHubで見る