突然、訪問者が怪しい海外サイトへ飛ばされる——
これはマルウェア感染のサインです。原因・確認・復旧・再発防止をまとめました。
リダイレクト系マルウェアは、症状が一定ではありません。以下のような「特定の条件下だけ発生する」ケースが多いため、管理者が気づきにくいのが特徴です。
PCでは正常に見えるのに、スマートフォンからアクセスすると別サイトへ飛ばされる。
GoogleやYahooから流入した訪問者だけが飛ばされ、直接URLを入力した場合は正常。
管理者(ログイン済み)には症状が出ず、一般訪問者だけが被害に遭う。
海外のIPアドレスからのみリダイレクトされ、国内からは正常に見える。
クッキーを使い、同じユーザーが2回目以降はリダイレクトしない手口。
夜間や特定の時間帯だけ動作するタイマー付きのコードが仕込まれるケースも。
不正リダイレクトは、大きく分けて「ファイルへの不正コード挿入」と「データベースの改ざん」の2種類があります。複数同時に仕込まれていることも珍しくありません。
functions.php や header.php など、全ページに読み込まれるテーマファイルに悪意あるJSコードを挿入する手口。難読化(obfuscate)されていることが多く、一見してわかりにくい。
WordPressの設定を管理するwp_optionsテーブルのsiteurl・home・widget設定などに不正なコードや外部URLを埋め込む。管理画面から見ても発見しにくい。
Apacheサーバーの設定ファイル(.htaccess)にリダイレクトルールを追記。モバイルUAや検索エンジン経由のみに絞った条件付きリダイレクトが仕込まれる。
脆弱なプラグインの脆弱性を突いて侵入後、バックドア機能を持つ偽プラグインを設置するケース。有効化されていなくても実行されることがある。
WordPressのコアファイル自体に不正コードを追記。感染範囲が広く、除去後も再感染するリスクが高い。
「もしかして感染している?」と思ったら、まずこれらを確認してください。ツールを使えば技術知識がなくても発見できます。
ブラウザのシークレット(プライベート)モードで、かつスマートフォンから自分のサイトにアクセス。リダイレクトが発生するか確認する。管理者ログイン状態ではマスクされている場合があるため、必ずログアウト後に。
Search Console →「セキュリティの問題」セクションを開く。Googleが検知した場合、ここに「不正なコンテンツ」「マルウェア」「フィッシング」などの警告が表示される。
https://sitecheck.sucuri.net/ にサイトURLを入力するだけでマルウェアの有無を確認できる無料ツール。ただし、難読化されたDBへの埋め込みは検出されないこともある。
FTPクライアントや管理パネルのファイルマネージャーで、WordPressルートの .htaccess、wp-config.php、index.php を開いて確認。身に覚えのないコードやeval()・base64_decode()が含まれていれば感染の疑いが強い。
管理画面からWordfenceをインストールし、フルスキャンを実行。コアファイルとの差分を検出して改ざん箇所をリストアップしてくれる。ただし感染が深刻な場合はプラグイン自体が機能しないこともある。
感染が確認された場合の復旧手順を解説します。ただし、感染が深刻な場合や途中で判断が難しい場合は、自力での対応を中断して専門業者へ依頼することを強く推奨します。
作業前に必ず現状のファイル・データベースをバックアップ。感染状態でも「復旧に失敗した際の戻し先」として必要。サーバーの自動バックアップとは別に手動でも取っておく。
WordPress公式サイトからCoreファイルをダウンロードし、wp-admin・wp-includes ディレクトリを上書きアップロード。wp-config.phpは上書きしないこと。
既存の .htaccess を削除し、管理画面「設定→パーマリンク」を保存して再生成。または最小構成の標準的な内容に置き換える。
使用中のテーマ・プラグインをすべて公式から再ダウンロードして上書き。カスタマイズがある場合は、改ざん部分を特定して差分で修正する。使用していないテーマ・プラグインは完全削除。
phpMyAdminでwp_options・wp_posts・wp_usersなど各テーブルを確認。不審なJavaScriptコード、外部URLの埋め込み、見知らぬ管理者ユーザーなどを削除。SQLで一括検索・置換を行う場合はバックアップ後に。
WordPress管理者パスワード・DBパスワード・FTPパスワード・サーバーパネルのパスワードをすべて変更。wp-config.phpの認証キー(SECRET_KEY)も公式ジェネレーターで再生成。
Googleにフラグを立てられている場合、復旧後に「セキュリティの問題」から再審査をリクエスト。承認まで数日〜1週間程度かかることがある。
復旧後に対策を取らないと、数日〜数週間で再感染するケースも少なくありません。以下を必ず実施してください。
WordPress本体・テーマ・プラグインは常に最新版を維持。更新前のバックアップも習慣に。
Cloudflare・さくらのWAF等で不審なアクセスをブロック。多くのレンタルサーバーにオプションあり。
WordPressログインに2FAを導入。パスワードが漏れても不正ログインを防げる。
デフォルトの /wp-admin/ /wp-login.php を変更。IPアドレス制限も効果的。
wp-config.php は 600、その他のPHPファイルは 644 に設定。書き込み権限を最小化。
UpdraftPlus等で毎日の自動バックアップをサーバー外(Google Drive等)に保存。
以下のような状況では、自力での対応リスクが高く、被害の拡大や不完全な復旧につながる可能性があります。
即日対応可。ファイル&DB両面の洗浄から、侵入経路の特定・封鎖、Search Console再審査まで
ワンストップで対応します。