Home
3758 words
19 minutes
【OSINT】Google Dorkingの体系的記述と演算子の網羅的解説:情報収集の高度化とセキュリティ監査への応用

最終更新:2025-12-31

注意: この記事はAIによって自動生成されたものです。内容は情報収集方法の教育および防衛的なセキュリティ監査を目的としています。


⚠️ 重要:法的および倫理的な警告#

本記事で解説する技術(Google Dorking)の使用にあたっては、以下の事項を厳守してください。

  1. 自己責任の原則: 本記事の情報を利用して行われた一切の行為およびその結果について、著者は責任を負いません。すべての操作は実施者自身の責任において行ってください。
  2. 不正アクセス禁止法: 許可なく他者のサーバーやシステムにある非公開情報にアクセスを試みる行為、あるいは脆弱性を突いて侵入する行為は、「不正アクセス行為の禁止等に関する法律(不正アクセス禁止法)」に抵触する可能性があります。
  3. 無許可の診断の禁止: 自身が管理権限を持たない、あるいは明確な許可を得ていないウェブサイトに対して、脆弱性診断やスキャンを行うことは違法行為とみなされる場合があります。
  4. OSINTの倫理: 公開情報の収集(OSINT)であっても、プライバシーの侵害や業務妨害につながらないよう、倫理的な配慮が求められます。

本技術は、自身の管理下にあるシステムのセキュリティチェック、または正規の契約に基づくペネトレーションテスト、および学術研究の情報収集の範囲内でのみ使用してください。


序論:Google DorkingとOSINT#

Google Dorking(別名:Google Hacking)とは、Google検索エンジンの高度な検索演算子(Advanced Operators)を組み合わせることで、通常の検索では表示されにくい情報や、意図せず公開されている機密情報、サーバーの脆弱性などを特定する技術の総称である。

この手法は、サイバーセキュリティの分野において OSINT (Open Source Intelligence) の一環として位置づけられる。攻撃者が標的の情報を収集する「偵察(Reconnaissance)」フェーズで悪用される一方で、セキュリティ専門家やシステム管理者が自組織の意図しない情報漏洩(Information Disclosure)を早期に発見するための監査手法としても不可欠である。

本稿では、Google検索エンジンが解釈可能な演算子を体系的に分類し、それぞれの機能と組み合わせによる検索クエリ(Dork)の構築方法をハンズオン形式で解説する。


1. 検索演算子の基礎理論と論理演算#

Google検索のクエリ処理系は、ブール論理に基づいた演算子を受け付ける。これらはDorkingの基礎となる。

1.1 論理演算子 (Logical Operators)#

演算子記述例機能と解説
ANDsecurity AND audit論理積。両方のキーワードを含むページを検索する。Googleのデフォルト挙動はAND検索であるため、通常は省略される(スペースで区切るとAND扱いとなる)。明示的に記述する場合は大文字で記述する。
ORsite:jp OR site:com論理和。いずれかのキーワード、または両方を含むページを検索する。同義語や複数のドメインを横断して検索する場合に有効である。パイプ記号 `
--site:example.com否定(NOT)。特定のキーワードや演算子の結果を除外する。ノイズとなる情報をフィルタリングし、検索精度を高めるために極めて重要である。
()(ipad OR iphone) appleグループ化。演算の優先順位を制御する。複雑な論理条件を構築する際に使用する。
"""confidential information"完全一致(フレーズ検索)。指定した語順どおりにキーワードが含まれるページのみを抽出する。特定の定型文やエラーメッセージの検索に必須である。
*cannot * configワイルドカード。単語の一部ではなく、1つ以上の「単語」を代用するプレースホルダーとして機能する。正確なフレーズが不明な場合に補完的に作用する。

2. 基本的な検索ディレクティブ (Basic Directives)#

検索対象のスコープやファイル形式を限定するための基本的な記述子である。これらは単独で使用されることよりも、他の演算子と組み合わせてフィルタとして機能することが多い。

2.1 site: (ドメイン・ホストの限定)#

特定のドメインやサブドメインに検索範囲を限定する。

site:example.com

解説: example.com およびそのサブドメイン(例: dev.example.com, mail.example.com)内のページのみを表示する。

応用: サブドメインの列挙(Subdomain Enumeration)。

site:example.com -www

www.example.com を除外することで、開発用サーバーや管理画面などの非公開サブドメインを発見する端緒となる。

2.2 filetype: / ext: (ファイル形式の限定)#

特定の拡張子を持つファイルのみを検索対象とする。filetype: と ext: は実質的に同義である。

filetype:pdf 
ext:xlsx

解説: PDFファイルやExcelファイルなどをピンポイントで検索する。

応用: 公開すべきでない内部文書の発見。

site:example.com filetype:pdf
site:example.com ext:log

ログファイル(.log)、設定ファイル(.conf, .ini)、データベースダンプ(.sql)などの意図しない公開を検知するために使用される。

3. 構造的検索ディレクティブ (Structural Directives)#

HTMLの構造(URL、タイトル、本文、アンカーテキスト)のどの部分にキーワードが含まれているかを指定する演算子である。これらを駆使することで、ページの「性質」や「機能」に基づいた検索が可能となる。

3.1 intitle: / allintitle: (ページタイトルの検索)#

HTMLの

タグ内にキーワードが含まれるページを検索する。

intitle:: 直後のキーワードのみをタイトル内で検索し、以降のキーワードはページ全体から検索する。

intitle:login password

(タイトルに “login” があり、本文等のどこかに “password” があるページ)

allintitle:: 指定したすべてのキーワードがタイトル内に含まれるページを検索する。

allintitle:index of /

応用: ディレクトリリスティング(Directory Listing)の発見。Webサーバーの設定不備により、ファイル一覧が丸見えになっているディレクトリは、通常タイトルが “Index of /” となる。

3.2 inurl: / allinurl: (URL内の検索)#

URL文字列の中にキーワードが含まれるページを検索する。

inurl:: 直後のキーワードのみをURL内で検索する。

inurl:admin

allinurl:: すべてのキーワードがURL内に含まれる必要がある。

allinurl:wp-content/uploads

応用: 管理画面や特定の脆弱性を持つスクリプトの発見。多くのCMSやWebアプリケーションは、特定のURL構造を持つため、それを指紋(Fingerprint)として利用する。

3.3 intext: / allintext: (本文の検索)#

HTMLの 内のテキスト(可視テキスト)にキーワードが含まれるページを検索する。

intext:: 直後のキーワードのみを本文内で検索する。

intext:"Index of /"

allintext:: すべてのキーワードが本文内に含まれる必要がある。

応用: エラーメッセージや特定の機密情報の文字列(例: “password”, “username”, “confidential”)を本文中に含むページを抽出する。

3.4 inanchor: (アンカーテキストの検索)#

他のページからそのページへのリンク(アンカーテキスト)にキーワードが含まれているページを検索する。

inanchor:"click here"

解説: リンク元の文脈を検索するため、SEO分析や関連性の高いリソースの発見に使用される。

4. 高度および補助的検索ディレクティブ (Advanced/Auxiliary Directives)#

情報の鮮度や関係性、キャッシュ状況を確認するための演算子である。

指定したドメインと内容が類似しているウェブサイトを表示する。

related:example.com

解説: 競合調査や、類似の技術スタックを使用しているサイトの発見に使用される。

指定したURLにリンクしているページを検索する。

link:example.com

注記: 以前に比べて精度や網羅性は低下していると言われているが、被リンク調査の基礎として知っておくべきである。

4.3 期間指定 (daterange, after, before)#

情報のインデックス時期を指定する。

after:YYYY-MM-DD: 指定日以降にインデックスされたページ。

before:YYYY-MM-DD: 指定日以前にインデックスされたページ。

site:example.com after:2024-01-01

5. ハンズオン:具体的シナリオに基づくDork構築#

ここからは、実際のセキュリティ監査や情報収集において使用される具体的なDorkのパターンを、目的別に分類して提示する。

5.1 シナリオA:ディレクトリリスティングの検出#

Webサーバーの設定ミスにより、ディレクトリ内のファイル一覧が表示されている状態(Directory Listing)を探し出す。これにより、バックアップファイルやソースコードが流出するリスクがある。

基本クエリ:

intitle:"index of"

応用クエリ(重要ファイルの特定):

intitle:"index of" "parent directory" password
intitle:"index of" "backup"
intitle:"index of" "database.sql"
intitle:"index of" .env

解説: “index of” と “parent directory” は、ApacheやNginxなどのWebサーバーが生成するデフォルトのディレクトリ一覧ページに共通して含まれる文字列である。これに password や .env などの機密性を示唆するキーワードをAND検索することで、危険な露出を特定する。

5.2 シナリオB:設定ファイルとログファイルの露出#

開発環境の設定ファイルや、サーバーの動作ログが公開領域に残置されているケースを検出する。

ログファイルの検索:

filetype:log intext:"error" site:example.com
filetype:log intext:"password"

環境設定ファイルの検索:

filetype:env intext:"DB_PASSWORD"
ext:xml intext:"root" intext:"password"
ext:ini intext:"password"
ext:conf intext:"DocumentRoot"

解説: .env ファイルにはデータベースの接続情報やAPIキーが含まれることが多く、最も警戒すべき流出の一つである。ext: を用いて拡張子を絞り込み、ファイル内部の変数を intext: で狙い撃ちにする。

5.3 シナリオC:SQLダンプとデータベース情報の流出#

データベースのバックアップファイル(SQLダンプ)がWebサーバー上に公開されている状況を検出する。

SQLファイルの検索:

filetype:sql "insert into" "values"
filetype:sql "create table" "users"
ext:sql intext:"password" intext:"insert into"

解説: SQLダンプファイルには INSERT INTO や CREATE TABLE といった定型句が含まれる。これらをフレーズ検索で指定することで、誤検知を減らしつつデータベースの中身を発見する。

5.4 シナリオE:ログインポータルと管理画面の特定#

システムの管理者用ログインページや、VPNの入り口、ウェブメールのログイン画面を探し出す。

管理画面:

inurl:admin intitle:login
inurl:wp-login.php
intitle:"login" "admin" site:example.com

特定サービスのポータル:

intitle:"Outlook Web App" inurl:"owa"
intitle:"Citrix Gateway" inurl:"vpn"

5.5 シナリオF:機密文書・スプレッドシートの検索#

組織内部の連絡網、予算案、顧客リストなどが含まれる可能性のあるOfficeファイルを検索する。

Excelファイル:

filetype:xls OR filetype:xlsx intext:"email" intext:"phone" site:example.com
filetype:xlsx intext:"budget" "confidential"

PDFファイル:

filetype:pdf "not for public release"
filetype:pdf "internal use only"

5.6 シナリオG:エラーメッセージからの情報収集#

アプリケーションのエラー画面がそのままインデックスされている場合、使用しているフレームワークのバージョンや、ファイルパス、SQLの構造などのヒントが得られる(Information Leakage)。

SQLエラー:

intext:"syntax error in SQL statement"
intext:"Unclosed quotation mark before the character string"

PHPエラー:

intext:"Warning: mysql_connect()"
intext:"Fatal error: Call to undefined function"

6. 防衛策と対抗措置 (Defense Strategies)#

Google Dorkingによる情報収集を防ぐためには、検索エンジンに対する制御と、サーバー設定の堅牢化が必要である。

6.1 robots.txt の適切な設定#

robots.txt は、クローラーに対してアクセスしてほしくないパスを指定するファイルである。

User-agent: *
Disallow: /admin/
Disallow: /backup/
Disallow: /*.pdf$

注意: robots.txt は「紳士協定」であり、強制的なアクセス制御ではない。また、Disallow に記述したパスは「ここに隠したいものがある」と攻撃者に教えることになるため、機密性の高いディレクトリは記述するのではなく、アクセス制御自体を行うべきである。

6.2 HTTPヘッダーによる制御 (X-Robots-Tag)#

HTTPレスポンスヘッダーやHTMLのメタタグを使用して、インデックスを拒否する。

HTMLメタタグ:

<meta name="robots" content="noindex, nofollow">

HTTPヘッダー (X-Robots-Tag):

X-Robots-Tag: noindex

解説: PDFや画像など、HTML以外のファイルに対するインデックス制御には X-Robots-Tag が有効である。

6.3 Google Search Console の利用#

Google Search Console を利用して、自サイトのインデックス状況を監視する。意図しないファイルがインデックスされている場合は、「削除ツール」を使用して検索結果から速やかに削除を申請する。

6.4 認証とアクセス制御の徹底#

最も根本的な対策は、公開すべきでない情報には必ず認証(Basic認証、OAuth、IP制限など)をかけることである。Googlebotは通常、認証を突破してクロールすることはない。

6.5 ディレクトリリスティングの無効化#

Webサーバーの設定で、インデックス表示を無効にする。

Apache (.htaccess または httpd.conf):

Options -Indexes

Nginx (nginx.conf):

autoindex off;

6.6 定期的なセルフDorkingの実施#

攻撃者が行うのと同じ手法を用いて、自組織のドメインに対して定期的にGoogle Dorkingを実施する(Self-Dorking)。これにより、開発者が誤ってアップロードしたファイルや、設定ミスによる情報漏洩を攻撃者より先に発見し、対処することが可能となる。

結論#

Google Dorkingは、検索エンジンの強力なインデックス能力を逆手に取った、シンプルかつ破壊的な情報収集手法である。特別なツールを必要とせず、ブラウザ一つで実行できるため、OSINTの初期段階において極めて重要な役割を果たす。

セキュリティ専門家にとって、これらの演算子を習熟することは、攻撃者の視点を理解し、組織の「アタックサーフェス(攻撃対象領域)」を最小化するために不可欠である。情報は一度公開されインデックスされると、キャッシュやアーカイブサイトを通じて永続的に残る可能性がある。したがって、「公開設定」のミスを防ぐプロアクティブな対策と、Dorkingによる継続的なモニタリングが現代のセキュリティ運用には求められる。

⚠️ 最終警告:利用上の注意と自己責任#

本記事の最後に改めて警告します。

Google Dorkingを用いて発見された情報の取り扱いには細心の注意を払ってください。

悪用厳禁: 発見された脆弱性を悪用してシステムに侵入したり、データを窃取したりする行為は犯罪です。

通知の倫理: もし管理下にないサイトの重大な情報漏洩を発見した場合は、適切な窓口(セキュリティ担当者やIPAの届出制度など)を通じて報告することを検討してください。決してSNS等で公開したり、脅迫に利用したりしてはいけません。

自己責任: 本記事の情報を利用した結果生じた、いかなる損害や法的トラブルについても、著者は一切の責任を負いません。すべての操作は、法令を遵守し、自己責任の下で行ってください。

参考文献#

【OSINT】Google Dorkingの体系的記述と演算子の網羅的解説:情報収集の高度化とセキュリティ監査への応用
https://ss0832.github.io/posts/20251231_google_dorking/
Author
ss0832
Published at
2025-12-31