Google検索に表示されるWordPressのSEOスパムを効果的に削除・駆除する方法
WordPressサイトでGoogle検索にスパム結果が表示されていませんか?その場合、SEOスパムマルウェアに感染している可能性があります。このマルウェアはサイト内にジャンクページを大量に生成し、訪問者を悪意のある外部ページへリダイレクトさせます。しかも多くの場合、サイト運営者は感染にまったく気づきません。この攻撃で最もよく見られるタイプは「韓国語SEOスパム」と「スパムリンク注入」です。本記事では、感染の発見方法から駆除・予防策まで詳しく解説します。
2021年時点で、WordPressはインターネット上の全サイトの41.7%を支えています。中小企業を中心にWordPressの採用は今なお拡大を続けていますが、その一方で、ハッカーたちにとっても格好の標的となっています。WordPress SEOスパムもそうした攻撃の一つであり、ハッカーはアクセス数が多く検索順位の高い、信頼性のあるWordPressサイトを狙います。そして乗っ取ったサイトの権威を利用して、自分たちの違法な商品やサービスを検索エンジンで上位表示させるのです。
WordPress SEOスパムのようなマルウェア攻撃は、いわゆる「WordPressファーマハック」と似た手法です。これらの攻撃は、あなたの評判の高いサイトを踏み台にし、訪問者をハッカーが管理するドメインへ誘導します。ブラックハットSEOスパムの除去は広く行われていますが、実際には非常に厄介な作業になりがちです。
このガイドでは、WordPress SEOスパムハックの予防・発見・修復の方法について解説していきます。それでは始めましょう!
WordPress SEOスパムハックの発見方法
自分のサイトがWordPress SEOスパムの被害を受けているかどうかを確認するには、以下の兆候をチェックしてください。
1. 「site:[サイトのURL]」で検索するとスパム結果が表示される
WordPressサイトがSEOスパムマルウェアに感染しているかを確認する最も簡単な方法は、Googleでシンプルな検索を行うことです。「site:」に続けて自分のドメイン名を入力して検索してみてください。検索結果の中に、ドメイン名の後ろに無意味な単語の組み合わせが付加されたページが見つかるかもしれません。これは、マルウェアがGoogleからの検索流入を自サイトから悪意のあるサイトへ逸脱させるように設計されているためです。
上記のような事例に心当たりがある場合、あなたのサイトは感染している可能性が高いでしょう。このスクリーンショットは、悪名高い日本語SEOスパムに感染したサイトの例です。
以下のような症状がWordPressサイトで確認できれば、WordPress SEOスパムハックに感染している可能性が非常に高いといえます。
2. サイト内に見覚えのない新規ファイルが出現している
このマルウェアに感染していたすべてのサイトに共通していたのが、「不審な新規ファイル」の存在でした。攻撃者は通常、wp-content/plugins/api-keyというディレクトリを作成し、以下のようなファイルを配置します。
- apikey.php
- header.php
- login.php
- newsleter.php
- wp-layouts.php
- wp-nav-menus.php
これらのファイルには、多くの場合、悪意のあるコードが含まれています。
また、WordPressのルートディレクトリに悪意あるコードとともに作成されやすいファイルとしては、以下が挙げられます。
- wp-domain.php
- wp-main.php
- wp-uti.php
- wp.php
もう一つの例として、/wp-admin ディレクトリ内に ms-menu.php という名前のファイルが生成されるケースもあります。
3. マルウェアが他のマルウェアを検出・排除している
WordPress SEOスパムマルウェアは、ホストとなるサイトが正常に動作することにほぼ完全に依存しています。ページが読み込まれる、または更新されるたびに自身を実行し、WordPressの機能が常に稼働していることを確認します。万が一WordPressサイトが破損・クラッシュした場合、悪意のあるコードは実行されません。さらに、攻撃者が必要に応じてリモートからサイトを更新・修正できる仕組みも備えており、更新が中断された場合に備えたバックアップファイルも作成します。
このマルウェアのもう一つの特徴は、サイト管理者の疑いを避けるために、ホストのWordPressサイト上に存在する他の初歩的なマルウェアを検出して削除する機能を持っている点です。以下は、WordPressスパムマルウェアが「競合」を排除する様子を示すコードスニペットの例です。
if (is_file("$level" . "index.php")) {
$ind = file_get_contents("$level" . "index.php");
if (filesoze("$level" . "$index.pho"). 'hacked')
OR stripos(file_get_contents("$level" . "index.php"). 'hacked')
OR stripos($ind, 'WARNING: This file is protected by copyright law. To reverse engineer or decode this file is strictly prohibited')
OR stripos($ind, 'form action="" method="post"></form')
OR stripos($ind, 'eval(gzuncompress(')
OR stripos($ind, 'WARN1NG_RC')) {
chmod("$level" . "index.php", 0777);
unlink("$level" . "index.php");
}
}
4. Google広告(AdWords)が停止されている
現在インターネット上で広告が広く利用されていることから、広告はハッカーにとってユーザーを侵害済み・悪意あるサイトへ誘導する手軽な手段となっています。そのため、Google AdWordsをはじめとする広告ネットワークは、ハッキングされたサイトを通じたマルウェア拡散を防ぐため、厳格なポリシー強化を実施しています。Google AdWordsは定期的にウェブサイトをスキャンし、ハッキングされたコンテンツが見つかったサイトの広告配信を停止します。
分かりやすい症状として、Googleから広告アカウント停止に関する警告が表示されます。以下のような通知が届いた場合は、感染の影響を受けている可能性があります。
- 「悪意のあるソフトウェアまたは不要なソフトウェア」——Google自身の説明はこちらをご覧ください。
- 「当社のシステムは定期的にウェブサイトをランダムにスキャンし、Googleポリシーへの準拠状況を確認しています。最近実施されたスキャンの結果、この広告主の申告されたメインのランディングページが安全でないドメイン [domain.com] の影響を受けていることが検出されました。」
不承認となったGoogle AdWordsの詳細な対処法については、専用の解説記事をご参照ください。
サイトからスパムリンクを除去するには、ファイルとデータベースの徹底的な分析が必要です。以下の手順で進めましょう。
5. ファイル内のスパムリンクをスキャンする
テーマのヘッダー、フッター、functions.phpなど、テーマ関連ファイル内をスパムリンクがないか検索してください。通常、リンクはハイパーテキストとして容易に視認できますが、稀に難読化されている場合もあります。不明な・悪意のあるリンクを見つけ出しましょう。
たとえば、悪意のあるリンクは次のような形で挿入されています:
<?phpNorebroLayout::get_footer_buffer_content( true );echo "<a href=\"https://www.authenticjetshockeyshop.com/mark-scheifele-jersey_c-422.html\"> </a> "; wp_footer();?>
スパムリンクが挿入されているかどうかの判別が難しいこともあります。そのような場合は、SEO Spam Scannerなどのツールでサイト全体をスキャンすることをおすすめします。
6. データベースをスキャンする
スパムリンクのもう一つの注入先はデータベースです。そのため、データベースについてもスパムリンクがないか確認する必要があります。スパムリンクはしばしば固定ページや投稿記事に埋め込まれますが、すべてのページを目視で確認するのは非現実的な作業です。そこで、以下の手順を活用してください。
- PHPMyAdminを使ってデータベースにアクセスします。PHPMyAdminなら複数のページを一度に確認できます。
- 固定ページと投稿記事を精査します。
- 悪意のあるリンクが見つかった場合は、該当ページ・投稿をローカルにダウンロードしてクリーンアップします。
- その後、SQL管理ツールを使ってクリーンな状態で再アップロードします。この作業には多少のSQLの知識が必要になる場合があります。
WordPress SEOスパムハックの駆除方法
以下の手順に従うことで、ホストサイトからWordPress SEOスパムマルウェアを除去できます。
- 前述のセクションで紹介した、マルウェアによって作成された悪意のある新規ファイルを削除する。
- Google Search Console(旧ウェブマスターツール)アカウントに異常がないか確認し、詳細ガイドに従って問題を解決する。
- サイト全体をスキャンし、マルウェアやその他の感染がないか調べる。
- Google Search Consoleのパネルから、どのサイトが自分のサイトへ外部リンクを張っているかを確認する。
WordPress SEOスパムがサイトのトラフィックとSEOに与える影響
ハッキングはサイトに深刻な打撃をもたらします。適切に駆除を行った後でも、目に見えない影響は長く残ることがあります。こうした後遺症からの回復には多大な労力を要します。具体的には、サイトトラフィックの減少、Google検索順位の下落、ブランドイメージの低下、顧客流入の減少などが挙げられます。
こうしたハッキングがサイトにどれほど深刻な影響を与えるのかを測定するため、私たちは調査を実施しました。感染サイトをクリーンアップした後も数日間にわたって監視し、パフォーマンスの変化を追跡しました。
その結果がこちらです。
以下のアナリティクスは1年間のサイトトラフィックを示しています。後半の数ヶ月でトラフィックが急落していることに注目してください。
こちらは感染前の8月のデータです。合計クリック数は20.3k、表示回数254k、平均CTRは8%、平均掲載順位は15でした。
これをハッキングされた月のデータと比較してみましょう。下の画像のように明確な落ち込みが見られます。合計クリック数は11.8kに減少し、表示回数は207kまで縮小、平均CTRは5.7%に低下し、掲載順位も16.6まで押し下げられました。
さらに、ハッキングされていた期間だけに絞って分析すると、次のような結果が得られました。わずか数日で平均CTRは元の8%から4.4%まで急落しました。同様に、サイトの他の指標にも軒並み低下が見られました。
SEOスパムによる被害がいかに甚大であるかは明白です。特にサイトのトラフィックとSEOへの打撃は大きく、ハッキングからの完全な回復には長期間にわたる継続的な努力が必要となります。
もちろん、誰もこんな状況に陥りたいとは思わないはずです。少し注意を払うだけで、こうした恐ろしい事態は十分に回避できます。次のセクションでは、その具体的な方法をご紹介します。
WordPress SEOスパムハックへの対策方法
すでに感染したサイトをクリーンアップしても、再感染を完全に防げるわけではありません。だからこそ、予防策を講じることが常に重要です。
WordPress SEOスパムからサイトを守るために実施できる予防策をいくつかご紹介します。
1. ファイアウォールを導入する
WordPress SEOスパムマルウェアの感染を防ぐ最も手軽な方法は、AstraのようなWebアプリケーションファイアウォール(WAF)を利用することです。ファイアウォールはサイトへの incoming トラフィックを監視し、脅威や悪意のあるエンティティを自動的にブロックします。
Astra Web Protectionは、悪意のあるリクエストがそもそもサイトに到達しないようブロックすることで、サイトを自動的に保護し、ソフトウェアの仮想パッチ適用も実現します。
2. WordPressログインページのセキュリティを強化する
WordPress SEOスパムからサイトを守るためのもう一つのセキュリティ対策として、ログインページの保護があります。これはWordPress管理画面への不正アクセス防止にも役立ちます。
具体的には以下のような対策が有効です。
- WP-Hardeningのようなログインページセキュリティプラグインを導入する
- WordPress管理ページのデフォルトURLを変更する
- 固有の強力なユーザー名とパスワードを使用する
- 連続ログイン試行回数を制限する
- WordPressサイト上のログイン活動を監視する
Astra Firewallを利用すれば、WordPressのログイン保護機能を有効化できるだけでなく、いつ・誰(またはボット)がサイトへのログインを試みたかを、タイムスタンプなどの詳細情報とともに確認できます。
3. 適切なファイル・フォルダ権限を設定する
ファイルやフォルダに正しいアクセス権限を設定することは、WordPressサイトでの実行エラーを防ぐだけでなく、WordPress SEOスパムマルウェアの感染といったセキュリティリスクの低減にもつながります。
WordPressのファイルおよびフォルダには、以下の権限を適用することをおすすめします。
- wp-config.php = 400 / 440
- すべての.phpファイル = 644
- index.php = 644 / 444
- wp-contentフォルダ = 755
- wp-includesフォルダ = 755
- wp-content/uploadsフォルダ = 755
- 一般のすべてのファイル = 644
- 一般のすべてのフォルダ = 755
詳細については、弊社ブログ「WordPressのファイル・フォルダ権限の修正方法 – ステップバイステップ手順」をご覧ください。
-
Chromeからアドウェアを削除する方法|内蔵マルウェア除去ツールの使い方
ウイルスやマルウェアはインターネット経由でパソコンに侵入します。そしてインターネットにアクセスする際には必ずブラウザを使用します。つまり、悪意のあるソフトウェアの多くはブラウザを通じてパソコンに入り込むと言えます。Googleはこの点を早くから考慮し、自社のブラウザ「Chrome」にクリーンアップツール(Clean-up Tool)を組み込みました。 Google Chromeのマルウェア除去ツールとは? Chromeの「パソコンをクリーンアップ」機能は、マルウェアのスキャン・除去だけでなく、変更されてしまった設定をデフォルト状態に復元できる多目的ツールです。この機能により、通信エラーに悩まさ
-
Googleドライブの重複ファイルを削除してストレージ容量を解放する方法
Googleドライブの空き容量が少なくなって、「Googleドライブの容量を増やすにはどうすればいいのか」とお悩みではありませんか?実は、Googleドライブに保存された複数の重複ファイルが、気づかないうちに大量のストレージを消費しているケースが very 多くあります。重複ファイルを削除すれば大幅に容量を解放できますが、手作業で一つずつ探して削除するのは非常に手間がかかります。この記事では、最小限の手間で重複ファイルを削除し、Googleドライブの空き容量を確保する方法を詳しく解説します。 Googleドライブから重複ファイルを削除すべき理由 Googleドライブの無料プランで利用できるスト