2026年5月20日

2026年5月20日

WordPressのマルウェアを検出・除去する方法

はじめに

WordPressサイトがマルウェアに感染すると、スパムの送信・他サイトへの攻撃・訪問者へのウイルス配布などが発生します。Googleにブラックリスト登録されると検索流入がゼロになります。感染の検出から除去・再発防止まで体系的に対処する手順を解説します。

症状・原因

  • Google Chromeで「このサイトは危険です」と表示される
  • Google Search Consoleにセキュリティ問題の警告が届いた
  • サイトにスパムリンクや見知らぬコンテンツが追加されている
  • サーバーから大量のメールが送信されている
  • 管理画面にログインできない

解決手順

ステップ1:感染を確認する

# サーバーサイドでのマルウェアスキャン
# ClamAVを使用(インストールが必要)
sudo apt install clamav
sudo freshclam  # ウイルス定義を更新
sudo clamscan -r /var/www/html --infected --log=/tmp/clamscan.log

# 最近変更されたPHPファイルを確認(過去7日間)
find /var/www/html -name "*.php" -newer /var/www/html/wp-config.php \
  -not -path "*/cache/*" | sort

# 不審なコードパターンを検索
grep -r "eval(base64_decode" /var/www/html --include="*.php" -l
grep -r "preg_replace.*\/e" /var/www/html --include="*.php" -l
grep -r "system\|exec\|shell_exec\|passthru" /var/www/html --include="*.php" -l

ステップ2:Wordfenceでスキャンする

Wordfence スキャン手順:
1. プラグイン → Wordfence Security インストール・有効化
2. Wordfence → スキャン → 「新しいスキャンを開始」
3. スキャン完了後の対応:
   - 「変更されたWordPressコアファイル」→ 「修復」でオリジナルに戻す
   - 「マルウェアシグネチャが見つかりました」→ 該当ファイルを確認・削除
   - 「不明なファイル」→ 不審なら削除

Wordfenceのスキャンレベルを最高に設定:
  Wordfence → スキャン → スキャンの種類 → 「高感度」

ステップ3:WordPressコアファイルを再インストールする

# WP-CLIでコアファイルを再インストール(設定・データは保持)
wp core download --force

# または手動で:
# 1. wordpress.org から最新版をダウンロード
# 2. wp-content/ と wp-config.php 以外を上書き
# 3. wp-content/plugins/ と wp-content/themes/ のコアファイルを確認

# データベースのWordPressテーブルを確認
wp db check

# wp_options テーブルの不審なオプションを確認
wp option list | grep -E "malware|inject|eval|base64"

ステップ4:バックドアを除去する

# よくあるバックドアパターンを検索・除去

# base64エンコードされたコード
grep -r "eval(base64_decode" /var/www/html --include="*.php" \
  -l | xargs grep -l "eval" > /tmp/suspicious.txt
cat /tmp/suspicious.txt

# ファイル名が不審なPHPファイル
find /var/www/html/wp-content/uploads -name "*.php"
find /var/www/html -name "*.php" -newer /var/www/html/index.php \
  -not -path "*/uploads/*" -not -path "*/cache/*"

# wp-includes に追加されたファイル(コアにないものは削除)
# WordPressの正規ファイルリストと比較
wp core verify-checksums
// functions.php: 不審な関数の実行をブロック(検知用)

// 本番環境での危険な関数の実行を記録
if (!defined('WP_DEBUG') || !WP_DEBUG) {
    // disable_functions を php.ini で設定することを推奨
    // disable_functions = exec,passthru,shell_exec,system,proc_open,popen
}

ステップ5:感染後の再発防止

# 全パスワードをリセット
wp user list --format=ids | xargs wp user update --user_pass="$(openssl rand -base64 20)"

# 全セッションを無効化(全ユーザー強制ログアウト)
wp session destroy --all

# セキュリティキーを再生成
wp config shuffle-salts

# ファイルパーミッションを修正
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
chmod 600 /var/www/html/wp-config.php

# 不要なプラグイン・テーマを削除
wp plugin list --status=inactive --format=ids | xargs wp plugin delete
wp theme list --status=inactive --format=ids | xargs wp theme delete

注意事項

  • マルウェア除去作業の前に必ずバックアップを取ってください。除去作業でサイトが壊れた場合の復元に必要です
  • Googleのブラックリストに登録された場合、マルウェア除去後にSearch Consoleから「セキュリティ問題の再審査リクエスト」を送信してください
  • 感染経路の特定と修正(古いプラグイン・脆弱なパスワード等)をしないと再感染します

まとめ

find コマンドと grep でサーバー上の不審なファイルを特定し、Wordfenceのスキャンと wp core verify-checksums でコアファイルの改ざんを検出します。wp core download --force でコアを再インストールし、バックドアを除去します。最後にパスワード全リセット・セキュリティキー再生成・パーミッション修正を行い再発防止します。

お気軽にご相談ください

お見積りへ お問い合わせへ