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 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はよく比較されますが、それぞれ特徴があります。
| 比較項目 | Shodan | Censys |
|---|---|---|
| 設立 | 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”
証明書透明性(CT)ログには、発行されたすべてのTLS証明書が記録されます。crt.sh(https://crt.sh)を使えば、特定ドメインのサブドメインを網羅的に発見できます。これはペネトレーションテストや自組織のシャドーITの発見に非常に有効です。
自組織のアタックサーフェス確認
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への掲載削除(opt-out)は根本解決にはなりません。Shodanはインデックスを提供するだけで、実際のリスクはインターネットに公開されたシステムそのものにあります。正しい対処はシステム側の設定変更(ポートの閉鎖・認証の強化)です。
Shodanの検索演算子 `vuln:CVE-2021-44228` を使った場合、何が検索されますか?