【初心者〜中級者向け】Shodan完全活用ガイド|実用的な検索クエリと表で学ぶIoTセキュリティ診断

解析

「インターネットに接続されたすべてのデバイスを検索できる」——そんな検索エンジンが存在することをご存知ですか?それが Shodan(ショーダン) です。WebサイトをインデックスするGoogle と異なり、Shodanはサーバー・ルーター・Webカメラ・産業用制御システムなど、インターネットに接続された あらゆるデバイス のバナー情報を収集・検索できます。本記事では、Shodanの基本概念から実用的な検索クエリ、自社インフラの診断への活用方法まで、豊富な表とともに体系的に解説します。

⚠️ 免責事項
本記事で紹介する検索クエリおよび手法は、自分が管理・所有するシステムのセキュリティ診断、またはセキュリティ学習を目的としたものです。許可なく他者のシステムや機器にアクセスする行為は、不正アクセス禁止法などに抵触し刑事罰の対象となります。本記事の内容の悪用に関して、筆者および当サイトは一切の責任を負いません。


1. Shodanとは何か?Googleとの違いを理解する

1-1. Shodanの概要

Shodanは2009年に John Matherly 氏が開発したインターネット接続デバイス専用の検索エンジンです。Shodanのクローラーは常時インターネット上のIPアドレスをスキャンし、各ポートへの接続時に返ってくる バナー情報(サービスの自己紹介文のようなデータ)を収集・インデックス化しています。

バナー情報にはソフトウェアの種類・バージョン・設定情報・場合によってはデフォルトのログイン情報までが含まれることがあります。これが、Shodanが「世界で最も危険な検索エンジン」と呼ばれる理由です。

1-2. GoogleとShodanの比較

比較項目GoogleShodan
収集対象Webサイトのコンテンツ(HTML)ネットワークサービスのバナー情報
主な用途Webページの検索接続デバイス・サービスの発見
収集方法HTTPクロール全ポートへのスキャン+バナー取得
対象プロトコル主にHTTP/HTTPSHTTP・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:JPISO 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:自社ドメイン証明書が設定された全ホスト
特定バージョンのApachenet:自社CIDR product:"Apache httpd" version:"2.4.49"脆弱バージョンの稼働有無
EOLのWindowsサーバーnet:自社CIDR os:"Windows Server 2012"サポート切れOSの稼働確認
デフォルトTelnet開放net:自社CIDR port:23平文通信ポートの残存確認

3-2. 【ポート別】よく狙われるサービスの調査クエリ

ポートサービス代表的なクエリセキュリティ上のリスク
22SSHport:22 country:JP "OpenSSH"バージョンによっては脆弱性あり。パスワード認証が有効なら総当たり攻撃の標的に
23Telnetport:23 country:JP通信が平文。現代のシステムでは原則使用禁止
3389RDP(リモートデスクトップ)port:3389 country:JP "Windows"BlueKeep等の重大脆弱性歴あり。直接インターネット公開は極めて危険
5900VNCport:5900 country:JP "VNC"認証なしで公開されているケースが多数報告されている
27017MongoDBport:27017 country:JP "MongoDB"認証なしで公開されているDBが大量に存在し、過去に大規模流出事案あり
6379Redisport:6379 country:JPデフォルトで認証なし。外部公開は即座にデータ窃取・ランサムウェア感染の温床に
9200Elasticsearchport:9200 country:JP "elasticsearch"認証なしで数千万件のデータが公開されている事例が多数確認されている
1433MS SQL Serverport:1433 country:JP product:"Microsoft SQL Server"直接公開は原則NG。デフォルトのsaアカウントが有効な場合は即危険
3306MySQLport:3306 country:JP product:"MySQL"インターネット直接公開は禁忌。ほぼすべてのケースで設定ミス
8080代替HTTPport: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:502Modbusプロトコルが公開されている工場・インフラ機器の確認
SCADA(DNP3)port:20000 "DNP3"電力・水道などの重要インフラへの経路確認
NAS(Synology)product:"Synology DiskStation"ファイルサーバーの直接公開有無の確認
Kubernetes APIport:6443 "Kubernetes"コンテナ基盤管理APIの露出確認(極めて危険)
Dockerデーモンport:2375 "Docker"認証なしのDocker APIが公開されていないか

3-4. 【脆弱性スキャン】CVEベースの調査クエリ

Shodanの有料プランでは vuln: フィルターを使い、特定のCVEに脆弱なホストを直接検索できます。自社資産に対して以下を確認することで、パッチ適用の優先順位付けができます。

CVE番号脆弱性の通称対象クエリ例
CVE-2021-44228Log4ShellApache Log4j 2.xvuln:CVE-2021-44228 country:JP
CVE-2021-26855ProxyLogonMicrosoft Exchange Servervuln:CVE-2021-26855 country:JP
CVE-2019-0708BlueKeepWindows RDPvuln:CVE-2019-0708 country:JP
CVE-2022-22965Spring4ShellSpring Frameworkvuln:CVE-2022-22965 country:JP
CVE-2023-23397OutlookゼロクリックMicrosoft Outlookvuln:CVE-2023-23397 country:JP

⚠️ vuln: フィルターの精度について
vuln: フィルターはバナー情報のバージョンに基づく推定であり、実際にパッチが当たっているかどうかを保証するものではありません。あくまで「可能性があるホスト」の絞り込みに使用し、詳細な検証は別途実施してください。


4. Shodanダッシュボードとアラート機能の活用

4-1. Monitor(モニタリング)機能で自社を継続監視する

Shodanの有料プランには、指定したIPレンジやネットワークを継続的に監視し、新しいデバイスが検出されたり変化があったりした場合にアラートを送る Monitor機能 があります。手順は次の通りです。

  1. Shodanにログインし、上部メニューの「My Shodan → Monitor」に移動する
  2. Add Network」をクリックし、監視したいIPレンジ(CIDR形式)を入力する
  3. 通知方法(メール・Slack・Webhook)を設定する
  4. 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

コメント