ターゲットはWebサーバに置かれた情報
Googleハッキングとは、Googleの強力なインターネット検索機能を利用して、情報発信者が意図しない情報や、不正アクセスなどの手がかりになる情報を探し当てる行為を指す。検索の方法を工夫するだけで、クレジットカード番号、銀行口座の番号、ログイン・パスワードなどの個人情報や、業務の情報、システムに関する設定情報などが検索結果として表示されてしまうおそれがあるのだ。
例えば、「名簿」という単語を含み、拡張子が「xls」のファイルという条件で検索を行った場合、うっかりWebサーバ上に置かれた個人情報を含むExcelファイルや、そのキャッシュ・データなどがひっかかってくる、といった具合だ。
現在では、グーグル側で表示しないように制限をかけているが、かつてはクレジットカードで使用される特定の範囲の16けたの数字を条件に検索することで、Webサーバ上の公開ディレクトリに置かれたクレジットカード番号を含んだファイルが発見されることがあった。また、クラッカーがセキュリティ・ホールが残っているWebサーバやCGIプログラムなどを探すのにもGoogleがよく利用される。
Googleハッキングで得られる情報は、企業・組織、ユーザーの意図にかかわらず、すでにインターネットに公開されており、だれにでもアクセスできる状態となっているものである。つまり、その情報にアクセスしただけでは、不正を働いたことにならない。そのため罪の意識を持つこともなく、気軽に行われる可能性が高いのだ。
高性能検索エンジンゆえの「危険性」
あらためて紹介するまでもないが、Googleは、すぐれた検索性能と操作性のよさから世界中で支持を得ている代表的なインターネット検索エンジンである。Googleの最も単純な利用方法は、知りたい情報に関するキーワードを検索ボックスに入力するというものだが、このような単純なキーワード検索のほか、条件検索や特定の形式のファイルだけを検索するなど、クエリを用いた柔軟な検索が可能である。Googleハッキングは、このようなGoogleが持つ高度な検索機能をフルに活用することで可能になる手法である。実際には、図1に示したようなクエリや検索語を組み合わせて公開情報などのハッキングを行う。
Googleを使ったハッキング・テクニックは、『Google Hacking For Penetration Testers』(ジョニー・ロング著)で紹介されているほか、同氏のサイトでも最新の情報が公開されている。
さて、Googleハッキングに大きく、ターゲットのWebサーバから直接、情報自体やディレクトリ情報、設定ファイルなどを取得するための手法と、身元を隠してアクセスを行うための手法という2通りの使われ方がある。以下で、その手口の詳細を説明する。
直接、情報を取得する手法
Googleハッキングの最も基本的なパターンは、管理者やユーザーがインターネット上に公開していることを意識していない情報を検索によって発見し、直接、取得することである。
企業の情報自体の取得
まず、Googleを用いて企業の情報自体を取得する手口について見ていこう。最も単純な方法は、目的とする情報を示す直接的な語をキーワードとして検索を行うことである。例えば、UNIXでパスワード定義ファイルとして使用される「passwd」、あるいは「クレジットカード番号」などのキーワードで検索すると、管理のずさんな企業・組織の、間違って公開ディレクトリに置かれたファイルがひっかかる場合がある。
このような単純な検索で重要ファイルが発見されるケースはさすがに減っているが、図1で紹介したクエリの組み合わせ対象を絞り込んでいくことで、重要な情報にたどりつくことも少なくない。例えば、次のようなクエリで、UNIXのpasswdファイルが見つかる場合がある(画面1)。
|
●パスワード・ファイルを検索するクエリの例 |
ディレクトリ情報の取得
一般的なWebサイトは、公開されているURLのページやリンクでたどれるページ以外は、外部から見られないことを前提に作られている。ところが、実際にはWebサーバでデフォルト表示ページやディレクトリ表示の設定が適切に行われてなく、サーバの公開ディレクトリの構造や、その中にあるファイルがすべて外部から見えるようになってしまっているサイトを時折見かける。そもそもWebサーバを設置するということは外部からのアクセスを前提にしているはずなので、この状態が即ち危険であるとは言えない。しかし、ファイルのURLを知らせなければ外部からはアクセスされないだろうと考え、社内関係者などにしか見せないつもりのファイルを秘密(のつもりの)のディレクトリに置いている場合などに、Googleの検索でディレクトリ名やファイル名が明らかになり、情報漏洩のきっかけとなってしまうことがあるのだ。作業中のファイルに自宅からもアクセスできるように、外部から見えるWebサーバ上のディレクトリに制限をかけないでファイルを置いた場合、この手法でファイルの存在が知られてしまうので危険である。
Webサーバのディレクトリ一覧ページを検索するには、次のようなクエリを使用する。これはディレクトリ一覧ページのタイトルに「Index of」という語が常に使用されることを利用したテクニックである(画面2)。
|
●ディレクトリの一覧を検索するクエリ |
ネットワーク機器の管理画面の取得
近年、プリンタやコピー機、Webカメラなど、ネットワークに接続して利用する機器の多くが、Webベースの管理インタフェースを採用している。これらの機器の操作や設定は、PCにインストールされたWebブラウザを利用して行うことができる。このようなWebベースの管理コンソールに表示される特定のキーワードに目を付け、企業内の各種ネットワーク機器の情報をハッキングするという手口がある。さらに、場合によってはネットワーク機器の遠隔操作を行うことも可能だ。上述の隠しファイルの例と同じく、管理者の多くはこういった機器などの存在やURLを外部には公開していないので安全だと思いがちである。だが、Googleを使えば、実際にはこのようなネットワーク機器の管理画面へのアクセスも可能であり、いったん、アクセスされた情報は検索結果の画面に表示されることになる(画面3)。
このようなWebベースの管理画面を検索するには、対象の機器やサービスのそれぞれについて次のようなクエリを指定する。
|
●A社のWebカメラ(型番:WCAM-2005)の管理画面を検索する例 ●コピー機の管理画面を検索する例 ●B社のデジタル複合機(シリーズ名:Digital Copy&Fax)の管理画面を検索する例 |
設定ファイルの取得
サーバやソフトウェアの設定ファイルが誤ってWebサーバの公開ディレクトリに置かれていたり、設定ファイルを含むディレクトリが誤って公開されていたりすると、設定ファイルに含まれる特定の文字列を検索することでその設定ファイルが公開された状態になっているサーバを探し出すことができてしまう。システムの設定情報を悪意ある攻撃者が入手した場合、設定上の弱点を突いたさらなる攻撃につながる恐れがある。
このような設定ファイルの検索は、対象となる設定ファイル特有のキーワードなどを含む、次のようなクエリを指定することで行われる。
|
●MySQLデータベースの設定ファイル ●Sambaの設定ファイル ●「WS_FTP」のパスワード・ファイル ●「FrontPage」のパスワード・ファイル |
脆弱なサーバ・ソフト/プログラムの検索
ネットワークを通じた侵入など多くの攻撃は、サーバ・ソフトなどのセキュリティ・ホールを突いて行われる。そこで各サーバ・プログラムのセキュリティ・ホールが発見されると、それをふさぐためのパッチや対策が施された新しいバージョンがリリースされることになる。しかし、クラッカーは既知の攻撃手法を適用できる古いバージョンのサーバ・ソフトをGoogleを使って探し出し、そこに攻撃を仕掛けてくる。
特定バージョンのWebサーバ・ソフトの検索
Webサーバ・ソフトの多くは、インストール後の動作確認のためのテスト・ページをデフォルトで表示するようになっており、そのようなページにはそのソフトのバージョンや、特有のキーワードが記されていることが多い(画面4)。このようなバージョンごとの違いに着目し、特有のキーワードを用いて検索することで、セキュリティ・ホールが存在するバージョンのWebサーバを探し出すことが可能になってしまう。
特定のバージョンのWebサーバを使用しているサイトを検索するには、次のようなクエリを指定する。
|
●Apache 1.3.11-1.3.31の検索 ●IIS 4.0の検索 |
CGIプログラム/Webアプリケーションの検索
Webサーバと同様、CGIスクリプト・プログラムやWebアプリケーションにも注意が必要だ。CGIプログラムやWebアプリケーションにセキュリティ・ホールが発見されると、クラッカーはすかさずそれを狙った検索をかけてくる。こういったプログラム/アプリケーションの多くは、URL内に固有の文字列を含む場合が多いことから、容易に検索が可能である。例えば、次のようなクエリで、不正利用を働きやすいCGIプログラムを探し出すことが可能になる。
|
●fingerサーバCGIの検索 |
身元を隠してWebサーバにアクセスする手口
ここでは、Googleハッキングのもう1つの使われ方である身元を隠したアクセスについて述べたい。一般に、Webサーバへの侵入などを試みる場合、クラッカーは侵入対象となる組織やシステムに関し、なるべく多くの情報を得ようとする。その際には、侵入の意図を事前に察知されたり、侵入後に身元を追跡されたりすることを恐れ、このような調査活動を秘密裏に行おうとする。こういった場合にもクラッカーは、Googleの機能や特性を利用し、身元(IPアドレスなど)を伏せて、サーバや情報などにアクセスする。
例えば、検索エンジンのキャッシュ・データの利用がそうである。Googleは検索対象となる情報の大半をキャッシュとして、サーバ内に膨大に蓄えている。つまり世界中にあるWebサーバ上にある大部分の情報のコピーを保有しているのである。クラッカーは、このようなキャッシュ・データから、悪事に必要なさまざまな情報を収集しようとするのだ。
また、GoogleのWeb翻訳機能を利用してGoogleをWebプロキシとして使用するという手口もある。GoogleのWeb翻訳機能は、例えば、英語から日本語への翻訳を行うといった指定をプルダウンメニューで行うことで利用できる。しかし、アドレスバーに表示されるクエリ文字列を日本語から日本語というように同一言語に翻訳するように書き換えることによって、GoogleをWebプロキシとして使用し、アクセス元である自マシンのIPアドレスを知られることなく目的のサーバにアクセスすることが可能である。
Googleハッキングから企業の情報を守るには
以上で紹介したGoogleハッキングの手法はどれもごく初歩的なものであり、実際の攻撃や侵入テストなどでは、対象や環境に応じてさらに複雑なクエリが使用される。では、このようなGoogleハッキングを用いた情報漏洩事故や被害を防ぐには、どのような対策を行わなければならないのだろうか。
最も効果的なGoogleハッキング対策は、当たり前の話になるが漏洩すれば問題となるような情報を公開Webサーバ上に置かないことである。どうしても重要な情報を公開Webサーバ上に置く必要がある場合には、適切な認証メカニズムによるアクセス制限を設けなければならない。また、自社Webサーバに対し定期的にGoogleハッキングを試み、機密情報が公開されていないかを確認するのも有効だろう。
その他の対策としては、検索エンジンの自動巡回ロボット(クローラ)が行う、Webコンテンツ情報の収集を自社のWebサーバでは禁止するという手がある。やり方は簡単で、サーバの公開ディレクトリの最上位に、次のような内容を記述したrobots.txtのという名称のファイルを設置すればよい。
|
User-Agent: * |
上記の1行目の「User-Agent:」は制限したい検索エンジンを指定するコマンドである。この場合の「*」はあらゆる検索エンジンを対象にするという意味である。Googleのみを制限の対象としたい場合には、「Googlebot」と記載する。
2行目の「Disallow:」は、どのディレクトリへのアクセスを制限するかを指定するコマンドである。上記の例では「/」が指すルート・ディレクトリ以下のすべてへのディレクトリやファイルに関する情報収集を禁止していることになる。なおDisallowは、複数行記述することができる。特定のディレクトリやファイルを検索対象から外したい場合には、Disallowの右側に対象外としたいディレクトリやファイルを記述すればいい。
また、Webコンテンツの情報を検索ポータルのキャッシュに残されたくない場合には、以下の記述を当該HTMLファイル内に記述する。
|
<META NAME="ROBOTS" |
上記のように、検索エンジンの情報収集を禁止するような設定が存在するのは、いわば、検索サービスの提供者とインターネット利用者との紳士協定のようなものであり、この指示に従うかどうかは検索サービス提供者の善意にゆだねられている。GoogleやYahoo!などの主要な検索エンジンは、この紳士協定を守っているが、すべての検索エンジンがそうとは限らない。つまり、企業・組織側で禁止する設定を施しているからといって、安心できるわけではない。
* * *
以上、本稿では、Googleハッキングの手口とセキュリティ・リスク、その対策について紹介した。Googleは便利な検索機能を提供している反面、クラッカーなど悪意を持った者に対しても、その強力な検索機能を利用可能としている。Googleの機能と歩幅を合わせるかのようにGoogleハッキングの手法も日々進化しており、企業・組織にとって、その脅威は、今後さらに増大するおそれもある。
また、困ったことにGoogleハッキングによって、何らかの情報漏洩事故に至ったとしても、その行為を行った者を法的に訴えることは難しい。なぜなら、その漏洩した情報自体を公開していたのは、他ならぬ、その企業・組織のWeb管理者であるため、むしろ企業側の情報に対する管理責任を問われる可能性が高いのだ。
Googleハッキングによって取得されてしまう情報は、作業ミスやセキュリティ・リスクの認識不足などにより、意図せず公開されているものである。このように不適切に公開されてしまっている機密情報を生み出さないように、企業・組織では、リスクの認識とエンドユーザーへの啓蒙・教育、テストや確認作業などを継続して行わなければならない。
Reference
*書籍
●ジョニー・ロング著『Google Hacking For Penetration Testers』(シングレス・メディア)
http://www.syngress.com/catalog/?pid=3150 *Webサイト
●「Google Hacking Database」
http://johnny.ihackstuff.com/index.php?module=prodreviews
●Robots Exclusion Standard
http://www.robotstxt.org/