「インターネットに接続されたすべてのデバイスを検索できる」——そんな検索エンジンが存在することをご存知ですか?それが Shodan(ショーダン) です。WebサイトをインデックスするGoogle と異なり、Shodanはサーバー・ルーター・Webカメラ・産業用制御システムなど、インターネットに接続された あらゆるデバイス のバナー情報を収集・検索できます。本記事では、Shodanの基本概念から実用的な検索クエリ、自社インフラの診断への活用方法まで、豊富な表とともに体系的に解説します。
⚠️ 免責事項
本記事で紹介する検索クエリおよび手法は、自分が管理・所有するシステムのセキュリティ診断、またはセキュリティ学習を目的としたものです。許可なく他者のシステムや機器にアクセスする行為は、不正アクセス禁止法などに抵触し刑事罰の対象となります。本記事の内容の悪用に関して、筆者および当サイトは一切の責任を負いません。
1. Shodanとは何か?Googleとの違いを理解する
1-1. Shodanの概要
Shodanは2009年に John Matherly 氏が開発したインターネット接続デバイス専用の検索エンジンです。Shodanのクローラーは常時インターネット上のIPアドレスをスキャンし、各ポートへの接続時に返ってくる バナー情報(サービスの自己紹介文のようなデータ)を収集・インデックス化しています。
バナー情報にはソフトウェアの種類・バージョン・設定情報・場合によってはデフォルトのログイン情報までが含まれることがあります。これが、Shodanが「世界で最も危険な検索エンジン」と呼ばれる理由です。
1-2. GoogleとShodanの比較
| 比較項目 | Shodan | |
|---|---|---|
| 収集対象 | Webサイトのコンテンツ(HTML) | ネットワークサービスのバナー情報 |
| 主な用途 | Webページの検索 | 接続デバイス・サービスの発見 |
| 収集方法 | HTTPクロール | 全ポートへのスキャン+バナー取得 |
| 対象プロトコル | 主にHTTP/HTTPS | HTTP・SSH・FTP・Telnet・RDP・MQTT・ModBusなど多数 |
| 活用用途 | 情報収集・SEO | セキュリティ診断・脅威インテリジェンス・IoT調査 |
1-3. Shodanのアカウントプランと機能差
| プラン | 料金 | 主な機能 | 向いている用途 |
|---|---|---|---|
| 無料 | $0 | 基本検索・結果の一部表示(1ページ) | Shodanの入門・軽い確認 |
| Membership | $49(買い切り) | フィルター全開放・結果100件/ページ・API基本利用 | 個人の学習・小規模診断 |
| Small Business | $299/月〜 | APIフル利用・アラート機能・スキャン実行 | 企業のセキュリティ監視 |
| Corporate | 要問合せ | 無制限スキャン・SIEM連携・専任サポート | 大企業のSOC運用 |
💡 Tip:学習用には Membership($49買い切り)が最もコスパ良好
フィルターが全開放され、検索結果の件数も大幅に増えます。セキュリティ学習目的であればまずこのプランから始めるのがおすすめです。
2. Shodanの基本フィルター構文をマスターする
Shodanの検索は フィルター名:値 の形式で記述します。複数のフィルターをスペースで区切って組み合わせることで、絞り込みの精度を高められます。
2-1. 基本フィルター一覧
| フィルター | 意味 | 使用例 | 備考 |
|---|---|---|---|
country: | 国コードで絞り込む | country:JP | ISO 3166-1 alpha-2コードを使用 |
city: | 都市名で絞り込む | city:"Tokyo" | 英語表記が基本 |
org: | 組織名(AS登録名)で絞り込む | org:"NTT" | ISPや企業名で検索できる |
net: | CIDRネットワーク範囲で絞り込む | net:203.0.113.0/24 | 自社IPレンジの診断に最適 |
ip: | 特定IPアドレスで絞り込む | ip:203.0.113.1 | 単一ホストの調査 |
port: | ポート番号で絞り込む | port:22 | 開放ポートの調査に使用 |
hostname: | ホスト名(FQDN)で絞り込む | hostname:example.com | サブドメイン検索にも有効 |
os: | OSの種類で絞り込む | os:"Windows Server 2012" | EOSのOSを探すときに活用 |
product: | ソフトウェア製品名で絞り込む | product:"Apache httpd" | Shodanが識別したプロダクト名 |
version: | ソフトウェアバージョンで絞り込む | version:"2.4.49" | 脆弱なバージョンの特定に使用 |
ssl: | SSL/TLS証明書の内容で絞り込む | ssl:"example.com" | 証明書のCNやSANを検索 |
before: / after: | スキャン日時で絞り込む | before:2024-01-01 | 形式はYYYY-MM-DD |
vuln: | CVE番号で脆弱なホストを検索 | vuln:CVE-2021-44228 | 有料プランが必要 |
2-2. クエリ構築のコツ
フィルターを組み合わせる際の基本ルールを覚えておきましょう。スペースで区切ると AND検索、複数の値をスペースで並べると絞り込みが深まります。値にスペースが含まれる場合は "ダブルクォーテーション" で囲みます。
# 日本国内のApache 2.4系でポート80が開いているホスト
country:JP product:"Apache httpd" port:80
# 特定の組織の範囲内でSSHが開いているホスト
org:"自社組織名" port:22
# 特定のIPレンジ内で80・443・8080いずれかが開いているホスト
net:203.0.113.0/24 port:80 OR port:443 OR port:8080
3. 用途別・実用的な検索クエリ集
3-1. 【自社診断】インフラ露出状況の確認クエリ
自社のIPアドレスやドメインに対してShodanが何を把握しているかを確認する、最もベーシックかつ重要なユースケースです。
| 目的 | クエリ例 | 確認できること | リスク度 |
|---|---|---|---|
| 自社IPレンジ全体の把握 | net:自社CIDR | 全公開ポート・サービス一覧 | 高 |
| 自社ドメインに紐づくホスト | hostname:自社ドメイン | サブドメインと開放サービス | 高 |
| SSL証明書によるホスト特定 | ssl.cert.subject.cn:自社ドメイン | 証明書が設定された全ホスト | 中 |
| 特定バージョンのApache | net:自社CIDR product:"Apache httpd" version:"2.4.49" | 脆弱バージョンの稼働有無 | 高 |
| EOLのWindowsサーバー | net:自社CIDR os:"Windows Server 2012" | サポート切れOSの稼働確認 | 高 |
| デフォルトTelnet開放 | net:自社CIDR port:23 | 平文通信ポートの残存確認 | 高 |
3-2. 【ポート別】よく狙われるサービスの調査クエリ
| ポート | サービス | 代表的なクエリ | セキュリティ上のリスク |
|---|---|---|---|
22 | SSH | port:22 country:JP "OpenSSH" | バージョンによっては脆弱性あり。パスワード認証が有効なら総当たり攻撃の標的に |
23 | Telnet | port:23 country:JP | 通信が平文。現代のシステムでは原則使用禁止 |
3389 | RDP(リモートデスクトップ) | port:3389 country:JP "Windows" | BlueKeep等の重大脆弱性歴あり。直接インターネット公開は極めて危険 |
5900 | VNC | port:5900 country:JP "VNC" | 認証なしで公開されているケースが多数報告されている |
27017 | MongoDB | port:27017 country:JP "MongoDB" | 認証なしで公開されているDBが大量に存在し、過去に大規模流出事案あり |
6379 | Redis | port:6379 country:JP | デフォルトで認証なし。外部公開は即座にデータ窃取・ランサムウェア感染の温床に |
9200 | Elasticsearch | port:9200 country:JP "elasticsearch" | 認証なしで数千万件のデータが公開されている事例が多数確認されている |
1433 | MS SQL Server | port:1433 country:JP product:"Microsoft SQL Server" | 直接公開は原則NG。デフォルトのsaアカウントが有効な場合は即危険 |
3306 | MySQL | port:3306 country:JP product:"MySQL" | インターネット直接公開は禁忌。ほぼすべてのケースで設定ミス |
8080 | 代替HTTP | port:8080 country:JP "Apache Tomcat" | 開発ツール・管理コンソールが露出しているケースが多い |
3-3. 【IoT・産業機器】特定デバイスの調査クエリ
ShodanはWebカメラ・NAS・ルーターから産業用制御システム(ICS/SCADA)まで幅広いデバイスを収集しています。以下は 自社環境での診断確認 に使えるクエリの例です。
| デバイス種別 | クエリ例 | 用途・確認ポイント |
|---|---|---|
| Webカメラ(一般) | product:"webcam" country:JP port:80 | 管理画面がデフォルト認証のまま公開されていないか |
| Axis製ネットワークカメラ | "Server: AXIS" country:JP | 製造ラインや入退室管理カメラの露出確認 |
| 家庭用ルーター | product:"Cisco IOS" port:80 country:JP | 管理画面の公開・デフォルトパスワードの有無 |
| 産業用制御(Modbus) | port:502 | Modbusプロトコルが公開されている工場・インフラ機器の確認 |
| SCADA(DNP3) | port:20000 "DNP3" | 電力・水道などの重要インフラへの経路確認 |
| NAS(Synology) | product:"Synology DiskStation" | ファイルサーバーの直接公開有無の確認 |
| Kubernetes API | port:6443 "Kubernetes" | コンテナ基盤管理APIの露出確認(極めて危険) |
| Dockerデーモン | port:2375 "Docker" | 認証なしのDocker APIが公開されていないか |
3-4. 【脆弱性スキャン】CVEベースの調査クエリ
Shodanの有料プランでは vuln: フィルターを使い、特定のCVEに脆弱なホストを直接検索できます。自社資産に対して以下を確認することで、パッチ適用の優先順位付けができます。
| CVE番号 | 脆弱性の通称 | 対象 | クエリ例 |
|---|---|---|---|
| CVE-2021-44228 | Log4Shell | Apache Log4j 2.x | vuln:CVE-2021-44228 country:JP |
| CVE-2021-26855 | ProxyLogon | Microsoft Exchange Server | vuln:CVE-2021-26855 country:JP |
| CVE-2019-0708 | BlueKeep | Windows RDP | vuln:CVE-2019-0708 country:JP |
| CVE-2022-22965 | Spring4Shell | Spring Framework | vuln:CVE-2022-22965 country:JP |
| CVE-2023-23397 | Outlookゼロクリック | Microsoft Outlook | vuln:CVE-2023-23397 country:JP |
⚠️ vuln: フィルターの精度についてvuln: フィルターはバナー情報のバージョンに基づく推定であり、実際にパッチが当たっているかどうかを保証するものではありません。あくまで「可能性があるホスト」の絞り込みに使用し、詳細な検証は別途実施してください。
4. Shodanダッシュボードとアラート機能の活用
4-1. Monitor(モニタリング)機能で自社を継続監視する
Shodanの有料プランには、指定したIPレンジやネットワークを継続的に監視し、新しいデバイスが検出されたり変化があったりした場合にアラートを送る Monitor機能 があります。手順は次の通りです。
- Shodanにログインし、上部メニューの「My Shodan → Monitor」に移動する
- 「Add Network」をクリックし、監視したいIPレンジ(CIDR形式)を入力する
- 通知方法(メール・Slack・Webhook)を設定する
- 「Save」をクリックして完了
これにより、知らないうちに新しいポートが開いていたり、脆弱なサービスが追加されたりした場合に即座に検知できます。
4-2. Shodan CLI(コマンドラインツール)の基本操作
ShodanにはPython製のCLIツールが用意されており、PowerShellやBashから自動化スクリプトに組み込めます。
# インストール
pip install shodan
# APIキーの設定
shodan init YOUR_API_KEY
# 基本検索(結果をJSONで保存)
shodan search --fields ip_str,port,org,product "country:JP port:3389" > rdp_japan.json
# 特定IPの詳細情報を取得
shodan host 203.0.113.1
# 自社ネットワークのスキャン結果を取得
shodan search --limit 1000 "net:203.0.113.0/24" > mynetwork.json
# 検索件数だけを確認する(クエリの規模感把握に便利)
shodan count "country:JP port:6379"
4-3. ShodanのAPIをPythonスクリプトから使う
import shodan
import json
API_KEY = "YOUR_API_KEY"
api = shodan.Shodan(API_KEY)
# 自社IPレンジのホスト情報を取得してCSVに出力
results = api.search("net:203.0.113.0/24")
with open("shodan_mynetwork.csv", "w", encoding="utf-8") as f:
f.write("IP,Port,Product,Version,Org,OS\n")
for result in results["matches"]:
ip = result.get("ip_str", "")
port = result.get("port", "")
product = result.get("product", "")
version = result.get("version", "")
org = result.get("org", "")
os_info = result.get("os", "")
f.write(f"{ip},{port},{product},{version},{org},{os_info}\n")
print(f"取得件数: {results['total']} 件")
5. 発見した問題への対処法と優先度の考え方
5-1. リスクレベルと対処の優先順位
| リスクレベル | 発見内容の例 | 推奨アクション | 対応期限目安 |
|---|---|---|---|
| 緊急 | 認証なしのDB公開(MongoDB・Redis・Elasticsearch) | 即座にファイアウォールでブロック→認証設定→公開範囲見直し | 発見後24時間以内 |
| 高 | RDP・Telnet・VNCが直接公開されている | VPN経由のみのアクセスに変更・IPホワイトリスト設定 | 発見後72時間以内 |
| 高 | 既知CVEに脆弱なバージョンのソフトウェア稼働 | パッチ適用またはWAF・ファイアウォールでの緩和策 | 発見後1週間以内 |
| 中 | EOLのOSが稼働している | バージョンアップ計画の策定・隔離ネットワークへの移行 | 発見後1ヶ月以内 |
| 中 | 管理画面がインターネット公開されている | IPアドレス制限または認証強化(MFA導入) | 発見後1ヶ月以内 |
| 低 | バージョン情報がバナーに含まれている | バナー情報の最小化(Server: ヘッダーの隠匿など) | 次回メンテナンス時 |
5-2. Shodanからの露出を減らすための基本設定
- 不要なポートを閉じる:ファイアウォールのデフォルト拒否ルールを設定し、必要なポートだけを開放する「ホワイトリスト型」のルール設計にする。
- サービスのバナー情報を最小化する:WebサーバーのServer:ヘッダー、SSHのバナー文字列など、バージョン情報が含まれる情報を可能な限り削除・隠匿する。
- 内部サービスはプライベートネットワークに閉じる:データベース・キャッシュ・管理コンソールなどは原則としてインターネットから直接到達できないセグメントに配置する。
- 定期的にShodanで自社を確認する習慣をつける:新しいシステムの構築時・設定変更後は必ず
net:自社CIDRで確認する。Monitor機能による継続監視と合わせて使うのが理想。
6. 関連ツールとShodanエコシステム
| ツール名 | 種別 | 特徴・Shodanとの違い | URL/入手先 |
|---|---|---|---|
| Censys | 類似検索エンジン | SSL/TLS証明書の検索に特化。学術寄りで無料枠が広い | censys.io |
| ZoomEye | 類似検索エンジン | 中国Knownsecが運営。中国・アジア圏のデバイスに強い | zoomeye.org |
| FOFA | 類似検索エンジン | 中国発。構文がShodanに近く比較検証に使われる | fofa.info |
| Shodan CLI | コマンドラインツール | pipでインストール。APIキーで自動化スクリプトに組み込める | cli.shodan.io |
| Shodan Maps | 可視化ツール | 検索結果を地図上にプロット。地理的分布の把握に便利 | maps.shodan.io |
| Shodan Trends | トレンド分析 | 特定のサービスや脆弱性の普及状況を時系列で確認できる | trends.shodan.io |
まとめ:Shodanを「攻撃者の目線で自社を見る」ツールとして使う
Shodanは攻撃者にとっては「どこに脆弱な入り口があるか」を調べるツールですが、防御側にとっては「攻撃者からどう見えているか」を把握するための最強の自己診断ツールです。本記事の内容を振り返ります。
- Shodanの本質:バナー情報を収集するデバイス向け検索エンジン。Googleとは目的も仕組みも根本的に異なる
- 基本フィルター:
country:・net:・port:・product:・version:・vuln:の組み合わせで高精度な絞り込みが可能 - 自社診断での活用:まず
net:自社CIDRで全体像を把握し、リスクの高いポート・サービス・バージョンを優先的に確認する - Monitor機能とCLI:継続監視と自動化により、人手に頼らないリアルタイムの露出管理が実現する
- 発見した問題への対応:緊急度に応じた優先順位をつけ、認証なしのDB公開や危険なポート開放から即対処する
まず今すぐ、net:自社のIPアドレス をShodanで検索してみてください。想定外のポートやサービスが表示されたら、それがセキュリティ改善の第一歩です。
📌 次のステップ
Shodanでの自社診断に慣れたら、次はCensysでの証明書ベースの調査、Shodan Monitor による継続監視の自動化、そしてSIEM(SplunkやElastic)へのアラート連携へとステップアップしてみましょう。Google Dork × Shodan の組み合わせにより、OSINTによる資産管理の精度が大幅に向上します。
参考リソース
- Shodan 公式サイト:shodan.io
- Shodan 公式ドキュメント(フィルター一覧):developer.shodan.io
- Google Hacking Database(GHDB):exploit-db.com/google-hacking-database
- Censys(比較検証用):censys.io
- IPA「重要なセキュリティ情報」:ipa.go.jp
- MITRE ATT&CK(T1595 Active Scanning):attack.mitre.org


コメント