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 をご利用になっていない場合でもこのガイドは役立ちます。

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

目次

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

意味不明な内容によるハッキングでは、キーワードが埋め込まれた意味不明なページがサイト内に大量に自動生成されます。正規のページではありませんが、ユーザーが間違ってクリックしそうな URL が設定されています。このハッキングの目的は、ハッキングしたページを Google 検索結果に表示し、訪れた人を無関係なページ(たとえばアダルトサイト)にリダイレクトすることです。無関係なページへのアクセスが発生するとハッカーが収益を得るという仕組みです。次に、意味不明な内容によるハッキングの影響を受けたサイト上のファイルの例を示します。

  • www.example.com/cheap-hair-styles-cool.html
  • www.example.com/free-pictures-fun.html
  • www.example.com/nice-song-download-file.php

ランダムな文字で構成されたフォルダに入っていたり、他の言語が使われていたりすることもあります。

  • www.example.com/jfwoea/cheap-hair-styles-cool.html
  • www.example.com/jfwoea/free-pictures-fun.html
  • www.example.com/jfwoea/www-ki-motn-dudh-photo.php
  • www.example.com/jfwoea/foto-cewe-zaman-sekarang.php

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

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

通常、ハッキングされたページへのリンクをクリックすると、別のサイトにリダイレクトされるか、意味不明な内容のページが表示されます。ページが存在しないことを示すメッセージ(404 エラーなど)が表示されることもありますが、これは偽装です。ハッカーは、ページのハッキングが解決していない場合でも、そのページがなくなったか修正されたかのように思わせているのです。このハッキングは、コンテンツのクローキングによるものです。クローキングを確認するには、Fetch as Google ツールにサイトの URL を入力します。Fetch as Google ツールを使うことで、下に隠れているコンテンツを確認できます。

この問題が確認された場合は、高い確率でサイトはこのタイプのハッキングの影響を受けています。

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

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

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

意味不明な内容によるハッキングでは、.htaccess ファイルを使ってユーザーをサイトからリダイレクトさせます。

ステップ 1

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

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

ステップ 2

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

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

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

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

ステップ 1

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

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

ステップ 2

次に、悪意のあるファイルや不正使用されているファイルが残っていないかどうかを確認する必要があります。これは、プロセスのなかでも非常に難しく時間がかかる作業ですが、この作業が終われば、ほぼ完了です。

一般に、このハッキング行為で残されるファイル形式は .txt ファイルと .php ファイルです。.txt ファイルはテンプレート ファイルの役目を果たし、.php ファイルはサイトに読み込む意味不明なコンテンツのタイプを決定します。まず、.txt ファイルを探します。サイトへの接続方法に応じて、何らかの種類のファイルの検索機能があります。「.txt」を検索すると、拡張子が .txt のすべてのファイルが見つかります。その大半は、ライセンス契約、readme ファイルなどの正当なテキスト ファイルです。探しているのは、スパム行為のあるテンプレートの作成に使われた HTML コードが含まれている一連の .txt ファイルです。次に、この悪意のある .txt ファイルに含まれている各種コードのスニペットを示します。

ハッカーはキーワード置換を使ってスパム行為のあるページを作成します。ハッキングされたファイル内では、高い確率で、置換可能な一般的なタイプの単語が見つかります。

  <title>{keyword}</title>
  <meta name="description" content="{keyword}" />
  <meta name="keywords" content="{keyword}" />
  <meta property="og:title" content="{keyword}" />

さらに、こうしたファイルのほとんどに、表示されるページの外にスパム行為のあるリンクやテキストを配置するコードも含まれています。

  <div style="position: absolute; top: -1000px; left: -1000px;">
  Cheap prescription drugs
  </div>

こうした .txt ファイルを削除します。ファイルがすべて同じフォルダ内にある場合は、フォルダ全体を削除することもできます。

ステップ 3

悪意のある PHP ファイルを特定することは少し難しい作業です。サイト上に悪意のある PHP ファイルが 1 つの場合もあれば、複数の場合もあります。すべて同じサブディレクトリにあることもあれば、サイト上に分散されていることもあります。

すべての 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("hMXZpRXaslmYhJXZuxWd2BSZ0l2cgknbhByZul2czVmckRWYgknYgM3ajFGd0FGIlJXd0VnZgk
nbhBSbvJnZgUGdpNHIyV3b5BSZyV3YlNHIvRHI0V2Zy9mZgQ3Ju9GRg4SZ0l2cgIXdvlHI4lmZg4WYjBSdvlHIsU2chVmcnBydv
JGblBiZvBCdpJGIhBCZuFGIl1Wa0BCa0l2dgQXdCBiLkJXYoBSZiBibhNGIlR2bjBycphGdgcmbpRXYjNXdmJ2blRGI5xWZ0Fmb
1RncvZmbVBiLn5WauVGcwFGagM3J0FGa3BCZuFGdzJXZk5Wdg8GdgU3b5BicvZGI0xWdjlmZmlGZgQXagU2ah1GIvRHIzlGa0B
SZrlGbgUGZvNGIlRWaoByb0BSZrlGbgMnclt2YhhEIuUGZvNGIlxmYhRWYlJnb1BychByZulGZhJXZ1F3ch1GIlR2bjBCZlRXY
jNXdmJ2bgMXdvl2YpxWYtBiZvBSZjVWawBSYgMXagMXaoRFIskGS"));

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

ステップ 5

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

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

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

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

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

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

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

その他のリソース

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

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

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

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

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