このガイドは、キーワードを大量に含む意味不明なページをサイトに追加するタイプのハック(Google では「隠しキーワードとリンクのハック」と呼んでいます)を対象としています。このガイドは、主に一般的なコンテンツ マネジメント システム(CMS)のユーザーを対象としています。ただし、CMS を使用していない場合でも、このガイドは役に立つ場合があります。
ハックを特定する
キーワードとリンクのクローキングによるハッキングでは、意味不明なテキスト、リンク、画像を含む大量のページが自動的に生成されます。これらのページには元のサイトのテンプレート要素が使用されていることがあるため、一目見ただけではサイトと区別がつきにくく、コンテンツをよく読むまで気付かないこともあります。
ハッキングされたページは、Google のランキング要因を操作するために作成されています。ハッカーは、ハッキングしたページのリンクを別の第三者に販売することで、収益化を図ろうとすることがあります。ハッキングされたページは、ハッカーが収益を得ることができる無関係なページにユーザーをリダイレクトすることもよくあります。
まず、Search Console のセキュリティの問題ツールで、サイトにハッキングされたページが検出されていないか確認します。Google 検索を開き、site:_your site url_
とサイトのルートレベルの URL を入力して、ページを表示することもできます。この検索結果には、ハッキングされたページを含む、Google がサイトに対してインデックス登録したページが表示されます。検索結果のいくつかのページを見て、異常な URL がないか確認します。
Google 検索にハッキングされたコンテンツが表示されない場合は、別の検索エンジンで同じ検索語句を使用してください。例を次に示します。
![このハッキングによって生成された検索結果。](https://web.dev/static/articles/fix-the-cloaked-keywords-hack/image/search-results-generated.png?authuser=8&hl=ja)
通常、ハッキングされたページへのリンクをクリックすると、別のサイトにリダイレクトされるか、意味不明なコンテンツがいっぱいのページが表示されます。ただし、ページが存在しないことを示すメッセージ(404 エラーなど)が表示されることもあります。騙されてはいけません。ハッカーは、ページがまだハッキングされているにもかかわらず、ページが削除されたか修正されたとユーザーに誤解させようとします。コンテンツをクロウキングすることで、この操作を行います。
URL 検査ツールにサイトの URL を入力して、クロールをチェックします。Fetch as Google ツールを使用すると、基盤となる隠しコンテンツを確認できます。
![このハックで作成されたページの例。](https://web.dev/static/articles/fix-the-cloaked-keywords-hack/image/example-hacked-page.png?authuser=8&hl=ja)
ハックを修正する
開始する前に、サイト全体をオフラインでバックアップします。これにより、必要に応じて後でファイルを復元できます。サーバーのすべてのファイルをサーバー外の場所に保存します。
WordPress や Drupal などのコンテンツ マネジメント システム(CMS)を使用している場合は、バックアップ プラグインを使用してサイトを保存できる場合があります。データベースもバックアップしてください。方法については、CMS のドキュメントをご覧ください。
.htaccess
ファイルを確認する(3 ステップ)
キーワードとリンクのクローキングによるハッキングでは、.htaccess
ファイルを使用して、サイトにクローキング ページが自動的に作成されます。Apache の公式サイトで .htaccess
の基本を理解しておくと、ハックがサイトにどのように影響しているかを把握しやすくなりますが、必須ではありません。
ステップ 1
サイトで .htaccess
ファイルを探します。WordPress、Joomla、Drupal などの CMS を使用している場合、ファイルの場所がわからない場合は、検索エンジンで CMS の名前とともに「.htaccess ファイルの場所」を検索してください。サイトによっては、複数の .htaccess
ファイルが表示されることがあります。すべての .htaccess
ファイルの場所のリストを作成します。
ステップ 2
.htaccess
ファイルを開いて、ファイルの内容を確認します。次のようなコード行を探します。
RewriteRule (.*cj2fa.*|^tobeornottobe$) /injected_file.php?q=$1 [L]
この行の変数は変更可能です。cj2fa
と tobeornottobe
は、文字や単語を任意に組み合わせることができます。重要なのは、この行で参照されている .php
を特定することです。
.htaccess
ファイルに記載されている .php
ファイルをメモします。この例では、.php
ファイルの名前は injected_file.php
ですが、実際にはファイル名はそれほどわかりやすくありません。通常は、horsekeys.php
や potatolake.php
などの無害な単語がランダムに設定されます。これは悪意のある .php
ファイルである可能性があり、後で追跡して削除する必要があります。
ステップ 3
すべての .htaccess
ファイルを、クリーンなバージョンまたはデフォルト バージョンの .htaccess
ファイルに置き換えます。通常、.htaccess
ファイルのデフォルト バージョンは、「デフォルトの .htaccess
ファイル」と CMS の名前で検索すると見つかります。複数の .htaccess
ファイルがあるサイトの場合は、各ファイルのクリーンなバージョンを見つけて置き換えます。
デフォルトの .htaccess
が存在せず、サイトで .htaccess
ファイルを構成したことがない場合は、サイトで見つかった .htaccess
ファイルは悪意のあるものである可能性があります。念のため、.htaccess
ファイルのコピーをオフラインとサイトに保存します。
その他の悪意のあるファイルを探して削除する(5 ステップ)
悪意のあるファイルを特定するのは難しく、時間もかかります。ファイルの確認には時間をかけてください。まだバックアップしていない場合は、この機会にサイトのファイルをバックアップしてください。サイトのバックアップ方法については、ご利用の CMS のドキュメントをご覧ください。
ステップ 1
CMS を使用している場合は、CMS のデフォルト ディストリビューションに含まれるコア(デフォルト)ファイルと、追加したファイル(テーマ、モジュール、プラグインなど)をすべて再インストールします。これにより、これらのファイルにハッキングされたコンテンツがないことを確認できます。「再インストール」と CMS 名を検索すると、再インストール手順を確認できます。プラグイン、モジュール、拡張機能、テーマがある場合は、それらも再インストールしてください。
ステップ 2
まず、先ほど .htaccess
ファイルで特定した .php
ファイルを探します。サーバー上のファイルにアクセスする方法に応じて、なんらかの検索機能が必要です。悪意のあるファイル名を検索します。見つかった場合は、復元が必要になった場合に備えて、まずバックアップ コピーを作成して別の場所に保存してから、サイトから削除します。
ステップ 3
残っている悪意のあるファイルや不正使用されたファイルがないか確認します。前述の 2 つの手順で悪意のあるファイルがすべて削除されている可能性がありますが、サイトに侵害されたファイルが他にないことを確認することが重要です。
すべての PHP ファイルを開いて確認しなければならないと思うと、圧倒されるかもしれません。代わりに、調査する不審な PHP ファイルのリストを作成します。不審な PHP ファイルを特定する方法はいくつかあります。
- CMS ファイルをすでに再読み込みしている場合は、デフォルトの CMS ファイルまたはフォルダに含まれていないファイルのみを確認します。これにより、多くの PHP ファイルが除外され、確認するファイルがいくつか残ります。
- 最終更新日を基準にサイト上のファイルを並べ替えます。サイトがハッキングされたことを最初に確認してから数か月以内に変更されたファイルを探します。
- ファイルのサイズを基準にサイト上のファイルを並べ替えます。著しく大きいファイルを探します。
ステップ 4
不審な PHP ファイルのリストが作成されたら、それらが悪意のあるものかどうかを確認します。PHP に慣れていない場合は、このプロセスに時間がかかるため、PHP のドキュメントを参照することをおすすめします。コーディングを初めて行う場合は、ヘルプを受けることをおすすめします。一方、悪意のあるファイルを特定するために確認できる基本的なパターンがいくつかあります。
CMS を使用しており、これらのファイルを直接編集していない場合は、サーバーのファイルを CMS にパッケージ化されたデフォルト ファイルのリスト、およびプラグインやテーマと比較します。該当しないファイルや、デフォルト バージョンよりも大きいファイルを探します。
まず、すでに特定した不審なファイルをスキャンして、文字と数字が混在していると思われる大きなテキスト ブロックを探します。通常、大きなテキスト ブロックの前に、base64_decode
、rot13
、eval
、strrev
、gzinflate
などの PHP 関数の組み合わせが付いています。
コードのブロックの例を次に示します。これらのコードがすべて 1 つの長い行に詰め込まれている場合、実際よりも小さく見えることがあります。
// Hackers try to confuse webmasters by encoding malicious code into
// blocks of text. Be wary of unfamiliar code blocks like this.
base64_decode(strrev("hMXZpRXaslmYhJXZuxWd2BSZ0l2cgknbhByZul2czVmckRWYgknYgM3ajFGd0FGIlJXd0Vn
ZgknbhBSbvJnZgUGdpNHIyV3b5BSZyV3YlNHIvRHI0V2Zy9mZgQ3Ju9GRg4SZ0l2cgIXdvlHI4lmZg4WYjBSdvlHIsU2c
hVmcnBydvJGblBiZvBCdpJGIhBCZuFGIl1Wa0BCa0l2dgQXdCBiLkJXYoBSZiBibhNGIlR2bjBycphGdgcmbpRXYjNXdmJ2b
lRGI5xWZ0Fmb1RncvZmbVBiLn5WauVGcwFGagM3J0FGa3BCZuFGdzJXZk5Wdg8GdgU3b5BicvZGI0xWdjlmZmlGZgQXagU2ah
1GIvRHIzlGa0BSZrlGbgUGZvNGIlRWaoByb0BSZrlGbgMnclt2YhhEIuUGZvNGIlxmYhRWYlJnb1BychByZulGZhJXZ1F3ch
1GIlR2bjBCZlRXYjNXdmJ2bgMXdvl2YpxWYtBiZvBSZjVWawBSYgMXagMXaoRFIskGS"));
コードが混乱していない場合や、通常のスクリプトのように見える場合もあります。コードに問題があるかどうか不明な場合は、Google 検索セントラル ヘルプ コミュニティにアクセスしてください。経験豊富なウェブマスターがファイルの確認をお手伝いします。
ステップ 5
不審なファイルが特定できたら、念のため、パソコンに保存してバックアップまたはローカルコピーを作成します。悪意のあるファイルが含まれていないことを確認したら、不審なファイルをサイトから削除します。
サイトがクリーンかどうかを確認する
ハッキングされたファイルをすべて削除したら、作業が報われたかどうかを確認します。先ほど特定した意味不明なページを覚えていますか?再度 Fetch as Google ツールを使用して、ページがまだ存在するかどうかを確認します。Google として取得で「検出されませんでした」と返された場合は、サイトの脆弱性の修正に進むことができます。
二度とハッキングされないようにするには
今後のハッキングを防ぐための最後のステップは、サイトの脆弱性を修正することです。ある調査によると、ハッキングされたサイトの 20% が 1 日以内に再びハッキングされています。サイトがどのようにハッキングされたかを正しく把握することが大切です。スパマーがウェブサイトのハッキングでよく利用する手段を読んで、調査を開始します。
サイトがハッキングされた原因を特定できない場合は、次のチェックリストに沿ってサイトの脆弱性を軽減してください。
- パソコンを定期的にスキャンする: 一般的なウイルス スキャナを使用して、ウイルスや脆弱性をチェックします。
- パスワードを定期的に変更する: ホスティング プロバイダ、FTP、CMS など、すべてのウェブサイト アカウントのパスワードを定期的に変更することで、サイトへの不正アクセスを防ぐことができます。アカウントごとに、安全で固有のパスワードを作成することが重要です。
- 2 要素認証(2FA)を使用するか、パスキーを設定する: 2FA とパスキーを使用すると、パスワードが盗まれたとしても、ハッカーがログインすることは非常に難しくなります。
- CMS、プラグイン、拡張機能、モジュールを定期的に更新する: 多くのサイトが、古いソフトウェアを実行しているためにハッキングされています。一部の CMS は自動更新をサポートしています。
- セキュリティ サービスに登録してサイトをモニタリングすることを検討する: サイトのモニタリングに役立つ優れたサービスが、低料金で数多く提供されています。サイトの安全を保つため、登録することをご検討ください。
参考情報
サイトの修正に問題が解決しない場合は、以下のリソースもご利用ください。
これらのツールはサイトをスキャンし、問題のあるコンテンツを見つける場合があります。ただし、Google がサポートしている(Google 上で利用できる)ツールは VirusTotal のみです。
これらのスキャナは、問題のあるすべての種類のコンテンツを検出できる保証はありません。サイトのセキュリティを定期的に確認してください。
以下のリソースもご利用ください。