SHODAN活用ガイド


SHODANの検索エンジンをプロのように使いこなすための、SHODANの検索フィルターやSHODANのドークを含む、個人的なSHODANチートシートを共有しています。これを使えば、簡単に目的の検索結果を得ることができます。

GoogleやBing、Yahooなどのコンテンツ検索エンジンとは大きく異なります。GoogleやBing、Yahooのようなコンテンツ検索エンジンは、ウェブページのデータをクロールして検索用のインデックスを作成するのに対し、Shodanはポートを照会して結果のバナーを取得し、検索用のインデックスを作成します。

あなたがサイバーセキュリティの分野にいるならば、Shodan検索エンジンについてよく知られているはずです。Shodanは、インターネット上の特定の種類のコンピューター(ルーター、ウェブカメラ、サーバーなど)を、さまざまなフィルターを使って見つけることができるIoT検索エンジンです。Shodanは、ターゲットの受動的な偵察や、測定ツールとして最適なリソースです。

https://shodan.io/ を開いて、このSHODANチートシートのコマンドを打ち込むだけです。

Server

特定のサーバーヘッダーフラグを持つデバイスやサーバーを探すことができます。脆弱なサーバーを調査することができます。

server: "apache 2.2.3"

または、直接フラグを入れても検索できます。

apache 2.2.3


hostname

世界中の特定のホスト名を持つデバイスを検索します。ホスト名とは、ネットワークに接続されている機器に付けられたラベルのことで、WWWなどの各種通信で機器を見分けるために使用されます。SHODANチートシートに含まれる複数のフィルターを使用して、検索結果を絞り込むことができます。

server: "apache" hostname:"google"


net

IPアドレスまたは/x CIDRに基づいて、デバイスやマシンを検索します。このフィルターは、IPレンジや特定のIPアドレスとサブネットマスクの検索にも使用できます。

net:34.98.0.0/16


os

オペレーティングシステムに基づいてデバイスを検索します。特定のOSを搭載しているデバイスをすべて見つけることができます。これは、侵入テスト担当者が、特定のオペレーティングシステムのフィルタを持つ脆弱なマシンを見つけるのに役立ちます。

os:"windows xp"


port

開いているポートに基づいてデバイスを検索します。"port "フィルターは、特定のオープンポートを持つマシンを検索対象にすることができます。

proftpd port:21


city

特定の都市のデバイスを検索します。例えば、ムンバイの都市のみに絞って検索したい場合は、以下のようになります。

city:"Mumbai"


country

特定の国のデバイスを検索します。例えば、インドだけに絞って検索したい場合

country:"IN"


geo

一定の半径内にある特定の経度と緯度による地理的座標を与えてデバイスを見つける。

geo:"48.1667,-100.1667"


before/after

「after」と「before」のフィルターを使うと、特定の日付の後や前にデバイスを表示することができます。

使用できるフォーマットはdd/mm/yyyyです。

nginx before:13/04/2020 after:13/04/2018


has_screenshot

このフィルターは、スクリーンショットが利用可能な結果のみを返します。

has_screenshot:true city:"George Town"


Wifi Passwords

Shodanでは、無線LANの平文のパスワードを見つけることができます。

html:"def_wirelesspassword"


Surveillance Cams

ユーザー名:admin、パスワード:passwordで監視カメラのデータを取得する

NETSurveillance uc-httpd


また、以下のコマンドを使用することもできます。

Android Webcam Server


Citrix

Citrix Gatewayの検索を行います。

title:"citrix gateway"


Windows RDP Password

ただし、セカンダリウィンドウズ認証を含む場合があります。

"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"


Misconfigured WordPress Sites

wp-config.phpにアクセスすると、データベースの認証情報が表示されます。

http.html:"* The wp-config.php creation script uses this file"

ワードプレスのメイン設定ファイルにアクセスし、設定ミスのサイトの認証情報やAUTH_KEYなどの機密情報を取得することができます。


Mongo DB servers

mongo DBサーバの情報を提供するフィルタです。

"MongoDB Server Information" port:27017 -authentication


FTP servers allowing anonymous access

完全なアノニマス・アクセスのためのデータを取得します。

"220" "230 Login successful." port:21


Jenkins

すべてのJenkinsのための検索 制限のないダッシュボード

x-jenkins 200


Telnet Access

telnetアクセスにパスワードが必要な機器を検索します。

port:23 console gateway


Etherium Miners

ETHを実行しているマイナーを表示しています。

"ETH - Total speed"


screenshot.label

セキュリティ設定がザルなWebカメラのスクリーンショットを表示

screenshot.label:ics country:"JP"


ssl

サーバの証明書情報に指定したドメインが含まれているサーバを列挙

ssl:expedia.com

自組織のドメイン名が世界的にも珍しく、他企業との重複がない場合は TLD 部分(.com / .jp など)を省略すると、海外ドメインや派生ドメインも一気に検索できます。

例えば私が根に持っている某 OTA の expedia.com であれば、以下のように ssl:expedia とすることで、関連ホストを一括で洗い出すことができます。

また、複数ドメインやホスト名をまとめて調査したい場合は、以下のように カンマ区切りで検索対象を追加できます。

ssl:expedia.com,hafh.com,united.com

🔎 追加:企業名や証明書のサブジェクト名で検索する方法


SSL 証明書には “組織名(Organization)” や “Common Name(CN)” が含まれています。
これを利用すると、企業名ベースの横断検索が可能です。

例えば「Coca-Cola Company」の証明書を持つホストを調べたい場合:

ssl:"Coca-Cola Company"

ヒット件数が多すぎたり、ステータスコードで絞り込みたいときは 200 系のみに限定することもできます。

ssl:"Coca-Cola Company" 200



🎯 追加:CN(Common Name)を直接指定する高度な検索

特定ドメインの証明書 “CN” を直接検索したい場合は、
以下のように ssl.cert.subject.CN: を使うのがより正確です。

ssl.cert.subject.CN:"coca-cola.com"

この検索は “メインのサブドメイン / ルートドメインの CN を持つ証明書” を対象にするため、誤検知を避けながら効率よく関連ホストを抽出できます。


org

IPアドレスの所有者情報に含まれる組織名をもとにサーバを列挙。

org:expedia



org検索を行うための組織名が不明な場合や他企業との重複が多い場合は、Facet検索を行い絞り込みを行う。

以下URLにアクセスし、左側の検索ボックスにssl:自社ドメイン または hostname:自社ドメインを検索すると、そのサーバがどのIPアドレス所有者のもとで稼働しているかが一覧で表示されます。

https://www.shodan.io/search/facet?query=ssl%3Aexpedia.com&facet=org

一覧中に、自組織名があれば、その文字列をコピーして org:を付加して検索。

自組織が所有権を持つIPアドレスが付与された資産を列挙することができます。


Shodan Dorking のためのリソース集

1. GitHub:Awesome-Dorks リポジトリ

GitHub にある Awesome-Dorks リポジトリは、一般的な Dorks 集のような雑多な内容ではなく、Bug Bounty で実際に使われる実用的な検索式がまとまっている点が大きな魅力です。



例:Jenkins を探す検索式

html:"Dashboard Jenkins" http.component:"jenkins"

HTML 内の特定文字列と HTTP コンポーネントの組み合わせで誤設定をピンポイントで検知できます。

GitHub には多数の Dorks リストがありますが、
実用度は玉石混交であり、最初に見るべきは Awesome-Dorks です。


2. Shodan の Favicon ハッシュ検索

次に活用頻度が高いのが favicon ハッシュによる製品特定です。


Shodan は各ホストの favicon をハッシュとして保持しており、
製品によっては 環境が違ってもほぼ同じ favicon を使うため、ハッシュ検索が非常に効果的です。

例:

  • Jenkins → 共通ハッシュ

  • Atlassian → 固有ハッシュ(複数の場合もあり)

検索例:

http.favicon.hash:81586312

favicon から製品を逆引きできるため、世界中の公開 Jenkins / Atlassian 環境を一気にスキャンして把握することができます。

誤設定 UI や管理画面が露出している場合、この方法は最も高速に “候補をザクザク集める” のに役立ちます。


3. Twitter(X)で最新の Shodan Dorks を収集する

アイデア源として非常に価値が高いのが Twitter(X)で流れてくる Shodan Dorks です。

ただし、Twitter(X) 内検索は精度が低いため、Google 経由で Twitter(X) を検索するのが正攻法です。

例:

site:twitter.com "shodan dorks"

Bug Bounty ハンターが共有した “実際に使える Dorks” が大量に出てくる


Twitter(X)は更新が圧倒的に速く、最新の誤設定・脆弱構成の発見方法はまずTwitter(X) に投稿されるという傾向があります。

そのため、「新しい Dork を探す」ではなく、“新しい攻撃ベクトルを知る” ために Twitter(X) をチェックするというイメージで活用すると効果が大きいです。