The #ChromeDevSummit site is live, happening Nov 12-13 in San Francisco, CA
Check it out for details and request an invite. We'll be diving deep into modern web tech & looking ahead to the platform's future.

キーワードとリンクのクローキングによるハッキングを解決する

このガイドでは、意味不明な文、リンク、画像を含むページをサイトに追加するハッキング行為について説明します。このタイプのハッキングを、キーワードとリンクのクローキングと呼びます。一般的なコンテンツ管理システム(CMS)のユーザーを対象としていますが、CMS をご利用になっていない場合でもこのガイドは役立ちます。

注: サイトがハッキングされているかどうかわからない場合は、まず、サイトがハッキングされているかどうかを確認する方法のガイドをご覧ください。

目次

このタイプのハッキングを特定する

キーワードやリンクのクローキングによるハッキングでは、意味不明な文、リンク、画像を含む大量のページが自動的に生成されます。これらのページには元のサイトのテンプレート要素が使用されていることがあるため、一目見ただけでは自分のサイトと区別がつきにくく、コンテンツをよく読むまで気付かないこともあります。

ページをハッキングする目的は、Google のランキング要素を操作することにあります。一般に、ハッカーはハッキングしたページ上のリンクを別の第三者に売ることで収益を得ようとします。また、ハッキングしたページからポルノサイトなどの無関係なページへ訪問者をリダイレクトすることでもハッカーは収益を得ることができます。

この問題を確認するには、まず Search Consoleセキュリティの問題のツールを使って、サイト上でこのハッキングの被害にあっているページが Google によって検出されているかどうかを確認します。また、Google 検索ウィンドウを開いて「site:[your site]」と入力してこのようなページを検出することもできます。この方法では、ハッキングされたページを含め、Google のインデックスに登録されているサイトのページが表示されます。検索結果のページをいくつか見て問題のある URL があるかどうかを確認します。Google 検索結果にハッキングされたコンテンツが表示されない場合は、別の検索エンジンで同じ検索キーワードを使用してください。他の検索エンジンで、Google がインデックスから削除したハッキングされたコンテンツが表示される可能性もあります。次に、この例を示します。

注: 上記の検索結果には、サイトの所有者が作成したものではないページが多く含まれています。2 番目と 3 番目の検索結果の説明をよく見ると、このハッキング行為によって作成された意味不明な内容のテキストが表示されています。

ハッキングされたページにアクセスすると、ページが存在しないことを示すメッセージ(404 エラーなど)が表示されることがありますが、これは偽装です。ハッカーは、ハッキングされたページがなくなったか修正されて、サイトが修正されたかのように思わせているのです。このハッキングは、コンテンツのクローキングという手法によるものです。クローキングを確認するには、Fetch as Google ツールにサイトの URL を入力します。Fetch as Google ツールを使うことで、下に隠れているコンテンツを確認できます。次に、ハッキングされたページの例を示します。

ハッキングの問題を解決する

まず、ファイルを削除する前に、後で復元が必要になったときに備えてファイルのオフライン コピーを作成しておきます。できれば、クリーンアップ プロセスを開始する前に、サイト全体をバックアップしておくことをおすすめします。バックアップを作成するには、サーバー上にあるすべてのファイルをサーバー外の場所に保存するか、お使いの CMS に最適なバックアップ方法を検索してください。

.htaccess ファイルを確認する(3 ステップ)

キーワードとリンクのクローキングによるハッキングでは、.htaccess ファイルを使って、サイト上にクローキングしたページが自動的に作成されます。必須ではありませんが、このハッキングがサイトに及ぼす影響について詳しく把握したいという方は、Apache の公式サイトにある .htaccess の基本事項をご覧ください。

ステップ 1

サイトで .htaccess ファイルを探します。ファイルの場所がわからず、WordPress、Joomla、Drupal などの CMS を使っている場合は、検索エンジンで「.htaccess ファイルの場所」と CMS 名を入力して検索してください。サイトによっては、.htaccess ファイルが複数あることもあります。.htaccess ファイルの場所がすべて収められたリストを作成します。

: 通常、.htaccess は「隠しファイル」になっています。このファイルを検索する場合は隠しファイルの表示を有効にしてください。

ステップ 2

.htaccess ファイルを開いてファイルの内容を確認します。このファイルには、次のようなコードが 1 行あります。

  RewriteRule (.*cj2fa.*|^tobeornottobe$) /injected_file.php?q=$1 [L]

この行の変数は変更可能です。「cj2fa」と「tobeornottobe」はどちらも、任意の文字や単語の組み合わせである可能性があります。ここで重要なのは、この行で参照されている .php を特定することです。

.htaccess ファイルに記述されている .php ファイルの名前を書き留めます。この例では、.php ファイルの名前は「injected_file.php」ですが、実際の .php ファイルはそれほどわかりやすい名前ではありません。通常は、「horsekeys.php」、「potatolake.php」など、無意味な単語をランダムに組み合わせた名前です。このファイルが悪意のある .php ファイルである可能性が非常に高いため、探し出して削除する必要があります。

.htaccess 内の RewriteRule と .php ファイルを含む行がすべて悪意があるわけではありません。コード行が何を行っているかわからない場合は、ウェブマスター ヘルプ フォーラムをご利用ください。経験豊富なウェブマスターがサポートいたします。

ステップ 3

すべての .htaccess ファイルを問題のないバージョンまたはデフォルト バージョンの .htaccess ファイルに置き換えます。通常、デフォルト バージョンの .htaccess ファイルを探すには、「デフォルト .htaccess ファイル」と CMS 名を入力して検索します。サイトに複数の .htaccess ファイルがある場合は、ファイルごとに問題のないバージョンを探して置換します。

デフォルト バージョンの .htaccess がなく、サイトに .htaccess ファイルを設定したことが一度もない場合、サイトで見つかった .htaccess ファイルはおそらく悪意があるファイルです。万一に備えて .htaccess ファイルのコピーをオフラインに保存して、サイトからその .htaccess ファイルを削除します。

その他の悪意のあるファイルを探して削除する(5 ステップ)

悪意のあるファイルを特定することは難しく、数時間がかかることもあります。ファイルの確認には時間をかけてください。まだサイトのファイルをバックアップしていない場合は、この機会にバックアップを作成することをおすすめします。サイトをバックアップする方法については、Google 検索で「バックアップ サイト」と CMS の名前を入力して検索してください。

ステップ 1

CMS を使用している場合は、CMS のデフォルトのディストリビューションに付属のコア(デフォルト)ファイルと、追加したファイル(テーマ、モジュール、プラグインなど)をすべて再インストールします。これで、ファイルからハッキングされたコンテンツを除去できます。再インストールの手順については、Google 検索で「再インストール」と CMS 名を入力して検索してください。プラグイン、モジュール、拡張機能、テーマがある場合は、これらも再インストールします。

コアファイルにカスタマイズを加えた場合は、再インストールするとその設定が失われる可能性があります。再インストールする前にデータベースとすべてのファイルのバックアップを作成しておいてください。

ステップ 2

まず、.htaccess ファイルで特定した前述の .php ファイルを探します。サーバー上のファイルへのアクセス方法に応じて、何らかの種類の検索機能があります。悪意のあるファイルの名前を検索します。見つかったら、まずバックアップ コピーを作成し、復元が必要になった場合に備えて別の場所に保存しておきます。その後、サイトからそのファイルを削除します。

ステップ 3

他に悪意のあるファイルや不正使用されているファイルが残っていないかどうかを確認します。前述の 2 つのステップで悪意のあるファイルはすべて削除されたと思われますが、サイト上に不正使用されているファイルが残っている場合に備えて、次のステップを行うことをおすすめします。

すべての PHP ファイルを 1 つずつ開いて確認する必要はありません。まず、調査を必要とする不審な PHP ファイルのリストを作成します。次のいずれかの方法で不審な PHP ファイルを判断することができます。

  • CMS ファイルの再読み込みをすでに完了している場合、確認するのは、デフォルトの CMS ファイルやフォルダ以外のファイルのみです。これで、多くの PHP ファイルが除外され、確認対象の数件のファイルが残ります。
  • 最終更新日を基準にサイト上のファイルを並べ替えます。サイトがハッキングされたことに初めて気づいてから数か月以内に変更されたファイルを探します。
  • ファイルのサイズを基準にサイト上のファイルを並べ替えます。著しく大きいファイルを探します。

ステップ 4

不審な PHP ファイルのリストを作成したところで、そのファイルが正常なファイルか悪意のあるファイルかを判断します。PHP をよくご存じないとこの確認作業は時間がかかる可能性があるため、PHP の資料を見直すことをご検討ください。なお、コーディングが初めてであっても、基本的なパターンに沿えば、悪意のあるファイルを探して特定することができます。

まず、特定した不審なファイルを調べ、文字や数字が乱雑に組み合わされたような大きいテキスト ブロックを探します。通常、この大きいテキスト ブロックの前には、base64_decode、rot13、eval、strrev、gzinflate などの PHP 関数の組み合わせが指定されています。次に、コードブロックの例を示します。このコードは長い 1 行のテキストに詰め込まれ、実際より短く見えることもあります。

<!--Hackers try to confuse webmasters by encoding malicious code into blocks of texts.
Be wary of unfamiliar code blocks like this.-->

base64_decode(strrev("hMXZpRXaslmYhJXZuxWd2BSZ0l2cgknbhByZul2czVmckRWYgknYgM3ajFGd0FGIlJXd0Vn
ZgknbhBSbvJnZgUGdpNHIyV3b5BSZyV3YlNHIvRHI0V2Zy9mZgQ3Ju9GRg4SZ0l2cgIXdvlHI4lmZg4WYjBSdvlHIsU2c
hVmcnBydvJGblBiZvBCdpJGIhBCZuFGIl1Wa0BCa0l2dgQXdCBiLkJXYoBSZiBibhNGIlR2bjBycphGdgcmbpRXYjNXdmJ2b
lRGI5xWZ0Fmb1RncvZmbVBiLn5WauVGcwFGagM3J0FGa3BCZuFGdzJXZk5Wdg8GdgU3b5BicvZGI0xWdjlmZmlGZgQXagU2ah
1GIvRHIzlGa0BSZrlGbgUGZvNGIlRWaoByb0BSZrlGbgMnclt2YhhEIuUGZvNGIlxmYhRWYlJnb1BychByZulGZhJXZ1F3ch
1GIlR2bjBCZlRXYjNXdmJ2bgMXdvl2YpxWYtBiZvBSZjVWawBSYgMXagMXaoRFIskGS"));

コードが乱雑ではなく、正常なスクリプトのように見えることもあります。不正なコードかどうかわからない場合は、ウェブマスター ヘルプ フォーラムをご利用ください。経験豊富なウェブマスターがファイルの確認をサポートいたします。

ステップ 5

不審なファイルを特定できたら、万が一それが悪意のあるファイルではなかった場合に備えてバックアップまたはローカルコピーをコンピュータに保存しておいた上で、その不審なファイルを削除します。

サイトに問題がないかどうかを確認する

ハッキングされたファイルを取り除き終えたら、問題が解決したかどうかを確認します。前に特定した意味不明な内容のページがまだ存在するかどうかを、Fetch as Google ツールをもう一度使って確認します。Fetch as Google の結果が「Not Found」であれば、おそらく問題はありません。

また、サイトがハッキングされた場合のトラブルシューティングの手順に沿って、サイト上にまだハッキングが解決していないコンテンツがあるかどうかを確認することもできます。

二度とハッキングされないようにするには

サイトの脆弱性を修正することは、サイトを修正するための重要な最後のステップです。最近の調査によると、ハッキングされたサイトの 20% が 1 日以内に再びハッキングされています。サイトがどのようにハッキングされたかを正しく把握することが大切です。調査を始めるにあたっては、スパマーがウェブサイトのハッキングでよく利用する手段のガイドをご覧ください。なお、サイトがどのようにハッキングされたかがわからない場合は、次のチェックリストでサイト上の脆弱性を削減する方法をご確認ください。

  • CMS、プラグイン、拡張機能、モジュールを定期的に更新する: このステップはすでに実施していることと思います。サイトで古いソフトウェアが実行されていることが原因で多くのサイトがハッキングされています。自動更新に対応している CMS もあります。
  • コンピュータを定期的にスキャンする: 信頼できるウィルス スキャナを使ってウィルスや脆弱性を調べます。
  • 定期的にパスワードを変更する: ホスティング プロバイダ、FTP、CMS などのすべてのウェブサイト アカウントのパスワードを定期的に変更することで、サイトへの不正アクセスを防ぐことができます。アカウントごとに、安全性の高い、一意のパスワードを作成することが重要です。
  • 2 段階認証プロセス(2FA)を使用する: ログインする必要があるすべてのサービスで 2FA を有効にすることをご検討ください。2FA を利用すれば、ハッカーはパスワードを盗んでもログインすることが難しくなります。
  • サイトのモニタリングを行うセキュリティ サービスへの登録を検討する: わずかな料金でサイトのモニタリングを行ってくれるサービスはたくさんあります。サイトの安全性を確保するため、こうしたサービスへの登録をご検討ください。

その他のリソース

上記の方法を行ってもサイトの問題が解決しない場合は、参考となるリソースがさらにいくつかあります。

次のツールを使ってサイトをスキャンし、問題のあるコンテンツを探し出すことができます。ただし、Google がサポートしている(Google 上で利用できる)ツールは VirusTotal のみです。

Virus TotalAw-snap.infoSucuri Site CheckQuttera: これは、サイトをスキャンして問題のあるコンテンツがあるかどうかを探すことができるツールの一部です。なお、いずれのツールも、問題のあるコンテンツをすべて特定することを保証しているわけではありません。

Google が提供するリソースは次のとおりです。

役立つと思われるツールが他にもありましたら、フィードバックでお知らせください。お待ちしております。