目次
マルウェアの概要
今回解析したファイルは index.php
です。本来、WordPressのルートディレクトリに存在する重要なファイルですが、攻撃者によって改ざんされ、不正アクセス用のコードやリダイレクト機能を持つマルウェアに書き換えられていました。
特徴
- WordPressの最重要ファイルである
index.php
を狙った改ざん。 - 難読化されたPHPコードを挿入し、外部からのコマンド実行や不正スクリプトの読み込みを可能にしていた。
- 正常なテーマ表示処理の前後に不正処理を追加し、管理者や訪問者が気付きにくい。
無毒化したコードの一部をサンプルで表記
<?php
// 不審なコード例
if (isset($_REQUEST['cmd'])) {
$c = $_REQUEST['cmd'];
// 本来は system($c) でコマンド実行される
echo "[不正コマンド要求: " . htmlspecialchars($c) . "]";
}
// 正規のindex.php処理を呼び出す
require __DIR__ . '/wp-blog-header.php';
?>
感染ファイルの完全可読化ログ
以下は難読化を解除した index.php
の構造(危険部分はコメント化済み)。
<?php
@error_reporting(0);
@set_time_limit(0);
// 攻撃者のバックドア機能
if (isset($_POST['action'])) {
$act = $_POST['action'];
if ($act === 'exec') {
$cmd = $_POST['cmd'] ?? '';
if ($cmd) {
// 実際は危険なコマンド実行が行われる
// echo shell_exec($cmd);
echo "[疑似実行: $cmd]";
}
}
elseif ($act === 'upload' && isset($_FILES['file'])) {
$dest = $_FILES['file']['name'];
// move_uploaded_file($_FILES['file']['tmp_name'], $dest);
echo "[ファイルアップロード受信: $dest]";
}
}
// 本来のWordPress起動処理
require __DIR__ . '/wp-blog-header.php';
?>
危険性
- サイト全体が改ざん対象:トップページを改変されると訪問者全員が被害に遭う可能性。
- SEOへの大打撃:検索結果から除外され、アクセス数が激減。
- マルウェア拡散:訪問者が不正サイトへリダイレクトされ、フィッシング被害やマルウェア感染につながる。
- 再侵入のリスク:バックドア機能により、削除後も再度不正アクセスされる恐れがある。
実際の感染事例
index.php
にリダイレクトコードが仕込まれ、全ページがスパム広告へ飛ばされる被害。- Google検索から完全に除外され、アクセスが95%減少したサイトの事例。
- 複数の
index.php
ファイル(テーマフォルダやプラグインフォルダ)も改ざんされていたケース。
駆除と復旧の方法
- 改ざんされた
index.php
を正規のWordPressファイルに置き換え。 - テーマやプラグインの
index.php
も全て確認・修正。 - データベースに不審な挿入がないか確認。
- 管理者アカウント・FTPアカウントのパスワード変更。
- セキュリティプラグインで全ファイルをスキャン。
- 外部バックアップからの復旧を優先。
再発防止のセキュリティ対策
- WordPress・テーマ・プラグインの定期的な更新。
- 管理者ログインページに対するアクセス制限(Basic認証やIP制限)。
- 強固なパスワードと二段階認証の導入。
- ファイル改ざん検知ツールを導入。
- 不要なファイルやテーマを削除して攻撃対象を減らす。
まとめ:早期対応がSEOと信頼回復のカギ
index.php
改ざんはサイト全体に影響するため、被害が拡大しやすく極めて危険です。
感染が疑われた場合は速やかに正規ファイルで復旧し、再発防止策を講じることが不可欠です。
著者情報
WordPressのセキュリティ復旧・運用支援を専門する CreativeStudio樂のエンジニアユニット によって執筆されております。
WordPressのマルウェア駆除、改ざん復旧、セキュリティ強化の豊富な実務経験に基づき、企業サイトやブログ運営者が安心してサイトを運営できるよう支援しています。