Shodanとは何か

Shodanは「インターネット接続デバイスの検索エンジン」です。GoogleがWebページのコンテンツをインデックスするように、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

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

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アクセス有料無料枠あり

実務では「IoT・SCADA・特定製品の調査はShodan、証明書ベースのサブドメイン探索やアタックサーフェス調査はCensys」というように使い分けるのが効果的です。

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”

証明書透明性ログの活用

証明書透明性(CT)ログには、発行されたすべてのTLS証明書が記録されます。crt.sh を使えば、特定ドメインのサブドメインを網羅的に発見できます。ペネトレーションテストや自組織のシャドーIT発見(知られていないサービスの棚卸し)に非常に有効な手法です。


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

Shodanを使った自組織の露出確認は、攻撃者視点での自己評価として定期的に実施すべき作業です。「攻撃者が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証明書証明書の更新・自動更新設定(Let’s Encryptのauto-renewなど)
デフォルト認証情報パスワード変更・多要素認証の設定
Shodanで発見したリスクへの対応

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


理解度チェック

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