#NoHacked ブログ パート 5 :スパム ページがサイトに挿入されるタイプのハッキング被害の解決方法

本日は #nohacked キャンペーンの一環として、先週ご紹介した、スパム ページがサイトに挿入されるという、最近よく見られるハッキングの問題を解決する方法についてお話しいたします。たとえサイトがこの種のハッキングの被害を受けていなくても、ここで紹介する手順の多くは、他の種類のハッキングの問題を解決する際にも役立つと思われますので、ぜひお読みください。(本キャンペーンは、TwitterGoogle+ でも展開していますので、ぜひフォローしてみてください。ハッシュタグは #NoHacked です。パート 1パート 2パート 3パート 4 のブログ記事もご覧ください)。



サイトを一時的にオフラインにする

まずは、サイトを一時的にオフラインにすることで、サイトの訪問者がハッキングされたページにアクセスすることを防ぐとともに、サイトを適切に修正するための時間を確保できます。サイトをオンラインのままにしておくと、問題の修正中に再び攻撃を受ける恐れがあります。

サイトの問題を修正する

次に、サイトに対して技術的な変更を加えます。そのような変更を加えることに慣れていない場合は、そうした変更の経験がある人に相談または依頼することをおすすめします。ただし、これらの手順を知っておくこと自体は、実際に作業をしなくとも、役に立つでしょう。

サイトの問題の修正を始める前に、サイトをバックアップしておくことをおすすめします(このバックアップ ファイルは、ハッキングされたコンテンツが含まれたままの状態です。そのため、すべてのファイルを復元するなどせず、重要なファイルを誤って削除してしまった場合にそのファイルだけ復元する、といった形でのみ利用してください)。サイトをバックアップする方法が不明な場合は、利用しているホスティング プロバイダに協力を要請するか、お使いのコンテンツ管理システム(CMS)のヘルプ ページなどをご覧ください。作業の途中でファイルを削除する際は、必ず、そのファイルのバックアップを残しておくようにしましょう。

.htaccess ファイルを確認する

この種のハッキングでは、サイトを操作するために .htaccess ファイルを作成するか、その内容を改ざんします。.htaccess ファイルの場所が不明な場合は、お使いのサーバーまたは CMS のヘルプ ページをご覧ください。.htaccess ファイルをチェックして、不審な内容が含まれていないか確認します。.htaccess ファイルの内容の意味がわからない場合は、Apache.org のドキュメント(英語)を参照するか、ウェブマスター ヘルプ フォーラムに質問を投稿するか、詳しい人に相談してみてください。以下に、この種のハッキングによって改ざんされた .htaccess の例を示します。

  • <IfModule mod_rewrite.c> 
  •   RewriteEngine On  
  •   #Google 検索経由でサイトを訪れたユーザーはリダイレクトされる 
  •   RewriteCond %{HTTP_REFERER} google.com 
  •   #ユーザーは happypuppy.php という悪意のある PHP ファイルにリダイレクトされる 
  •   RewriteRule (.*pf.*) /happypuppy.php?q=$1 [L] 
  • </IfModule>

見つかった不審な部分をすべて削除します。.htaccess ファイルに悪意のある内容だけが含まれている場合は、.htaccess ファイル全体を削除してしまっても問題ありません。また、.htaccess ファイルに悪意のある PHP ファイル(ここでは happypuppy.php というファイル名ですが、多くの場合 2 つの単語をランダムに組み合わせた名前です)が記述されていることにも気付かれたかと思います。これは次の手順において重要となります。次の手順では悪意のあるファイルを特定する方法を説明します。

その他の悪意のあるファイルを特定する

この種のハッキングで改ざんまたは不正に挿入されることの多いファイルの種類は JavaScript ファイルと PHP ファイルです。通常、ハッカーは次の 2 つのアプローチを用います。1 つ目は、サーバーに新しい JavaScript ファイルまたは PHP ファイルを不正に挿入するというアプローチです。挿入されるファイルには、サイト上の正当なファイルに極めてよく似た名前(正当なファイル wp_cache.php に対して wp-cache.php など)が付けられていることがあります。2 つ目は、サーバー上の正当なファイルに変更を加えて、それらのファイルに悪意のあるコンテンツを挿入するというアプローチです。たとえば、サイト上にテンプレートやプラグインの JavaScript ファイルがある場合、ハッカーによってそのファイルに悪意のある JavaScript が挿入されることがあります。

たとえば、www.example.com において happypuppy.php という名前の悪意のあるファイル(先ほど .htaccess ファイル内で特定されたもの)がサイト上のフォルダに挿入されたとします。ハッカーはそれに加えて、json2.js という名前の正当な JavaScript ファイルの改ざんも行って、このファイルに悪意のあるコードを追加することがあります。改ざんされた json2.js ファイルの例を以下に示します。怪しいコードはこの json2.js.file の下部に追加されています(赤色でハイライトされている部分):




悪意のあるファイルを効率的に特定するには、サイト上の正規の JavaScript ファイルおよび PHP ファイルの機能を理解する必要があります。そのためには、お使いの CMS のドキュメントを確認することが必要となる場合があります。それぞれのファイルでどのような処理が行われるかがわかれば、サイトの機能に関係のない悪意のあるファイルを簡単に特定できます。

また、サイト上で最近変更されたファイルがないかどうかも確認します。特に、最近変更されたテンプレート ファイルは徹底的に調査する必要があります。PHP ファイルの中身を特定しにくいように難読化している場合もありますが、そのような難読化された PHP ファイルの解釈に役立つツールを補足情報に記載しましたのでそちらもご覧ください。

悪意のあるコンテンツを削除する

先ほどご説明したように、ファイルを削除または変更する前にサイトのコンテンツを適宜バックアップしておきましょう。定期的にサイトをバックアップしている場合は、クリーンなバックアップ ファイルを復元するだけで簡単に悪意のあるコンテンツをサイト上からなくすことができるでしょう。サイトのバックアップを定期的に行っていない場合には、代わりにいくつかの手順を行います。まず、サイトに挿入された悪意のあるファイルをすべて削除します。たとえば、上記の www.example.com の場合であれば happypuppy.php ファイルを削除します。json2.js のような改ざんされた PHP ファイルや JavaScript ファイルについては、それらのファイルのクリーンなバージョンをサイトにアップロードする必要があります。CMS をお使いの場合は、主要な CMS ファイルおよびプラグイン ファイルのコピーをインストールし直すことを検討しましょう。

脆弱性を特定して修正する

悪意のあるファイルを削除したら、サイトへの攻撃を許した脆弱性を特定して修正する必要があります。そうしないとサイトが再びハッキングされる恐れがあります。パスワードの流出や古いウェブ ソフトウェアまであらゆるものが、この脆弱性となる可能性があります。ウェブマスター向けのハッキングに関するヘルプで脆弱性を特定して修正する方法について確認してください。サイトがどのような方法で攻撃されたかを解明できない場合は、すべてのログイン認証用のパスワードを変更し、すべてのウェブ ソフトウェアを更新した上で、利用しているサーバーやホスティングの提供元などからより専門的なサポートを得ることも検討しましょう。

次のステップ

サイトの問題の修正が完了したら、Fetch as Google ツールを使用して、ハッキングされたページがまだ Google には表示されているかどうかを確認します。Fetch as Google ツールでチェックするには、サイトをオンラインにする必要がありますのでご注意ください。トップ ページについても、ハッキングされたコンテンツが含まれていないかを必ず確認します。ハッキングされたコンテンツが見つからなければ、サイトの問題は正常に修正されたことになります。Fetch as Google ツールで、ページ上に悪意のあるコンテンツがまだ検出される場合は、引き続き修正作業を行う必要があります。悪意のある PHP ファイルや JavaScript ファイルを見落としていないか、再度確認します。

サイトの問題が解消されて脆弱性が修正されたことが確認できたら、サイトを通常運営に戻し、ユーザーにも復旧をアナウンスしましょう。サイトに手動による対策が適用された場合は、Search Console で再審査リクエストを送信します。

また、今後生じる攻撃からサイトを保護する方法を検討しておきましょう。今後生じる攻撃からサイトを保護する方法について詳しくは、ハッキングされたサイトに関するウェブマスター ヘルプをご覧ください。

このブログ記事を読んで、スパム ページがサイトに挿入されるというハッキングの問題を修正する方法を少しでもご理解いただけることを願っています。ソーシャル メディアで #nohacked キャンペーンをフォローし、サイトを保護するためのアイデアやコツをハッシュタグ #nohacked で共有してください。

ご不明な点がありましたら、ウェブマスター ヘルプ フォーラムに投稿してください。

補足情報

問題の特定と修正に役立つ可能性のあるツールを紹介します。なお、これらのツールは Google が提供およびサポートしているツールではありません。

PHP DecoderUnPHP: ハッカーは通常、読み取りが困難になるよう PHP ファイルを難読化します。これらのツールを使うと、PHP ファイルの実行内容を把握しやすくなります。