Shodanとは何か

Shodanは「インターネット接続デバイスの検索エンジン」です。Googleがウェブページのコンテンツをインデックスするように、ShodanはIPアドレスに対してポートスキャンを行い、バナー情報・サービス・証明書などを収集してインデックスします。

2009年にJohn Matherly氏が開発し、現在はセキュリティ研究者・ペネトレーションテスター・ネットワーク管理者に広く使われています。

Shodanでわかること

  • インターネットに公開されているサーバー・デバイスの一覧
  • 動作しているサービスとバージョン情報(Apache 2.4.x、OpenSSH 8.x など)
  • TLS証明書の詳細(発行先・期限・SANなど)
  • デフォルトパスワードのまま公開されているIoT機器
  • 組織のIPレンジに紐付く資産情報
倫理的使用の徹底

Shodanは公開情報のインデックスであり、閲覧自体は合法です。しかし、Shodanで見つけた脆弱なシステムに対して無断でアクセスすることは、不正アクセス禁止法(日本)や CFAA(米国)に違反します。本記事の内容は自組織のシステム調査および教育目的に限定してください。


Shodanの検索演算子

基本的な検索構文

Shodanの検索ボックス(またはAPIクエリ)では、フリーテキスト検索とフィルター演算子を組み合わせます。

【ネットワーク・IPアドレス系】

net:192.0.2.0/24 # CIDR範囲内のホストを検索 ip:203.0.113.10 # 特定IPのホスト情報 asn:AS13335 # 特定のAS番号(例: Cloudflare)

【組織・地理情報系】

org:“Example Corp” # 組織名でフィルタリング country:JP # 国コード(日本) city:“Tokyo” # 都市名 isp:“NTT Communications” # ISP名

【サービス・ポート系】

port:22 # 特定ポートが開いているホスト port:3389 # RDP(リモートデスクトップ)公開ホスト port:5900 # VNC公開ホスト

【製品・バージョン系】

product:“Apache httpd” # 製品名 version:“2.4.49” # バージョン指定 os:“Windows Server 2016” # OS情報

【証明書・SSL系】

ssl.cert.subject.cn:“*.example.com” # 証明書のCommon Name ssl.cert.expired:true # 有効期限切れの証明書

【その他便利フィルター】

http.title:“Dashboard” # HTTPタイトルで検索 http.status:200 # HTTPステータスコードでフィルタ has_screenshot:true # スクリーンショットがあるホスト vuln:CVE-2021-44228 # 特定CVEが存在するホスト(有料機能)

実際の検索例と結果の読み方

日本国内で公開されているRDPサーバー

country:JP port:3389

特定バージョンのApacheが動作するサーバー(脆弱性調査用)

product:“Apache httpd” version:“2.4.49”

デフォルトページが表示されているルーター(設定ミス調査)

http.title:“RouterOS” country:JP

Javaの管理コンソール(公開されていると危険)

http.title:“JBoss Management”

Elasticsearchが認証なしで公開

product:“Elastic” port:9200

工場・制御系(ICS/SCADA)

product:“Siemens” port:102

特定組織のASNに紐付く全公開ホスト

org:“Target Organization”

Shodanの有料機能

無料アカウントでは検索結果が制限されます。有料プラン(Shodan Membership: $69/年〜)では完全な検索結果、APIアクセス、過去データ、SSL証明書検索などが使えます。セキュリティ担当者は予算申請の価値があります。


Shodan CLI(コマンドラインツール)の活用

ShodanはPython製のCLIツールを提供しており、ターミナルから直接検索・調査が可能です。

インストール(pip)

pip install shodan

APIキーを設定(shodan.io でアカウント作成後に取得)

shodan init YOUR_API_KEY

基本的な検索

shodan search —limit 10 “apache country:JP”

自分のIPアドレスを確認

shodan myip

特定IPの情報を取得

shodan host 8.8.8.8

ドメインに関連するホスト情報

shodan domain example.com

検索結果をJSONで出力(解析用)

shodan search —fields ip_str,port,org,product —separator , “country:JP port:22” > results.csv

自組織のASNで公開ホスト一覧を取得

shodan search —limit 100 “org:“Your Organization""

検索結果の見方

$ shodan host 93.184.216.34 # example.com のIP

93.184.216.34 City: Los Angeles Country: United States Organization: EDGECAST Updated: 2024-01-15T10:23:11.123456 Number of open ports: 3

Ports: 80/tcp 443/tcp │ ├─ SSL Certificate │ Common Name: www.example.com │ Issuer: DigiCert Inc │ Expires: 2025-03-15 │ ├─ HTTP/1.1 200 OK │ Server: ECAcc (dca/24B4) │ Content-Type: text/html │ Title: Example Domain │ 8080/tcp (管理ポートが開いていた場合の例)


Censysとの違いと使い分け

CensysはMichigan大学の研究プロジェクトから生まれたインターネットスキャンサービスです。ShodanとCensysはよく比較されますが、それぞれ特徴があります。

比較項目ShodanCensys
設立2009年2015年
スキャン頻度継続的定期的(より高頻度)
証明書データあり特に充実(CT Logs連携)
IoT/SCADA検索得意比較的少ない
検索構文Shodan独自SQL-like構文(Censys Search Language)
無料枠検索結果制限あり検索クエリ数制限あり
APIアクセス有料無料枠あり

Censys特有の強み: 証明書データ

Censysは証明書透明性ログ(Certificate Transparency Logs)と統合されており、TLS証明書の調査に特に強いです。

Censys API を使ってドメインの証明書を検索

API_ID と API_SECRET は https://search.censys.io/account で取得

curl -s —user “API_ID:API_SECRET”
https://search.censys.io/api/v2/certificates/search?q=parsed.names%3Aexample.com&per_page=10” |
jq ‘.result.hits[].parsed.names[]‘

Censys Search Language(CSL)の例

(Censys.io のWeb UIで使用)

same_service(port=443 and transport_protocol=“TCP”)

and ip.reverse_dns.reverse_dns:“example.com”

証明書透明性ログの活用

自組織のアタックサーフェス確認

Shodanを使った自組織の露出確認は、攻撃者視点での自己評価として重要です。

調査チェックリスト

1. 組織名で検索(スペルバリエーションも試す)

shodan search “org:“Your Company Name""

2. 自組織のIPレンジで検索(CIDR)

shodan search “net:203.0.113.0/24”

3. 自組織のドメインに紐付く証明書を確認

shodan search “ssl.cert.subject.cn:“*.yourcompany.com""

4. 危険なポートが公開されていないか確認

shodan search “org:“Your Company” port:3389” # RDP shodan search “org:“Your Company” port:22” # SSH shodan search “org:“Your Company” port:23” # Telnet(要注意) shodan search “org:“Your Company” port:5900” # VNC

5. デフォルトページ・管理画面の公開

shodan search “org:“Your Company” http.title:“Administration"" shodan search “org:“Your Company” http.title:“Login""

発見したリスクへの対処

発見推奨対処
不要なポートの公開ファイアウォールルールで即時閉鎖
管理画面のインターネット公開VPN経由のみアクセス可能に変更
バージョン情報の露出Server/バナーヘッダーの非表示化
期限切れTLS証明書証明書の更新・自動更新設定
デフォルト認証情報パスワード変更・多要素認証の設定
Shodanで発見したリスクへの対応

自組織のシステムでShodanに危険な情報が掲載されていても、Shodanへの掲載削除(opt-out)は根本解決にはなりません。Shodanはインデックスを提供するだけで、実際のリスクはインターネットに公開されたシステムそのものにあります。正しい対処はシステム側の設定変更(ポートの閉鎖・認証の強化)です。


理解度チェック

Shodanの検索演算子 `vuln:CVE-2021-44228` を使った場合、何が検索されますか?