WP-AIレスキューWP-AIレスキュー
FILE — 005CASE FILE 002
WP-RESCUE // Case File 002 · WordPress 復旧現場

仕込まれていたのは、導入したその日から。

「入手元が分からない有償プラグイン」が引き金になった、もう一つの侵害記録です。 コアファイルへの自動再生成型、有償プラグイン内のELF実行バイナリ、 AES-256暗号化シェルドロッパー——検出した3つのアーティファクトを、そのまま公開します。
※ 守秘義務契約のため、サイト名・業種・URL は非公開とさせていただいています。

Photo: Rob Wingate / Unsplash

CASE FILE — 2026.07.002FIELD REPORT
RECOVERY LOG // 4 CHAPTERS

※ 本ケースは特定事例の実績です。所要時間・潜伏期間はサイト規模・侵害深度・サーバ環境により大きく変動します。守秘義務契約のためサイト名・業種・URLは非公開とさせていただいています。

これは、「入手元が分からない有償プラグイン」がきっかけで起きた、もう一つのフィールドレポートです。 きっかけは、レンタルサーバ会社からの、「改竄されてますよ」の報告だった。調査を進めるほど、事態は深く、そして古くまで遡っていきました。

サーバーラックのイメージ
Chapter 1 · Detection
早朝

ある中小企業のWebサイトで、ある朝レンタルサーバー会社から「改竄の疑いがあります」の連絡が入った。 事業者様が確認すると、画面には意味の分からないコードの羅列が表示され、 WordPress管理画面にもログインできない状態になっていた。事業者様はすぐにWATRIXへ依頼。だが、これは単なる改竄ではなかった—— 後の調査で、事の発端は2年以上前にまで遡ることが判明する。

発見
レンタルサーバー会社からの通報
症状
コード羅列表示・管理画面ログイン不可
後に判明した潜伏期間
約2年3ヶ月
Chapter 2 · Forensics
18:45 → 21:00頃

調査で見つかったのは、身に覚えのない管理者アカウント。だが本当に不気味だったのはその先だ。 WordPress コアのウィジェットクラス2ファイルに関数が埋め込まれ、 WordPress が起動するたび、不正管理者を自動的に再生成する仕組みが仕込まれていた。 アカウントを消しても、消しても、生き返る理由がここにあった。

不正管理者アカウント
1件
バックドア埋込コアファイル
2件
永続化の仕組み
起動毎に自動再生成
Chapter 3 · Deep Dive
21:00 → 23:00

調査対象を広げると、正規に導入されていたはずの有償プラグインの内部から、ELF実行バイナリAES-256暗号化のシェルドロッパーを検出。 このバイナリ自体が実行された形跡は確認されなかったが、サーバーレベルでのコード実行を狙った、明らかに高度な攻撃基盤だった。 「プラグインの更新」だけでは、まず気づけない場所に置かれていた。

検出したELF実行バイナリ
1点
暗号化シェルドロッパー
複数点(AES-256)
設置場所
有償プラグイン内部
Chapter 4 · Root Cause + Recovery
23:00 → 翌朝8:57

決め手はファイルのタイムスタンプだった。悪性ファイルの生成日時が、同じフォルダ内の正規プラグインファイルと完全に一致——つまり後から仕込まれたのではなく、導入時点からすでに同梱されていたことが判明した。 サイトを構築した制作会社が入手元不明のいわゆる「海賊版」の有償プラグインを導入しており、それが2年以上眠り続けた時限爆弾だったという結論に至る。 証拠を保全したうえで、WordPress コア・全プラグイン・全テーマを公式配布元から強制再インストール。 全パスワード・認証キーをリセットし、翌朝には復旧を確認した。

根本原因特定
23:00(同日)
証拠保全データ量
約350MB(tar.gz+DBダンプ)
作業終了
翌朝8:57

— 本ケースからの教訓(WATRIX による分析)

Field Notes — 海賊版プラグインの中身

このケースで実際に検出された3つのアーティファクトです。 いずれも、入手元が公式でない「海賊版」の有償プラグインに、導入した瞬間から同梱されていました。

コードが表示されたディスプレイのイメージ
Artifact 01 / 01 of 03
📄 wp-includes/widgets/class-wp-widget-media-image.php

本サンプルは実際の侵害構造を基に再構成したイメージです。管理者アカウントを削除するだけの対処では、この関数自体が再びアカウントを生成してしまう。

FIELD REPORT / 03 ARTIFACTS LOGGED
class-wp-widget-media-image.php
// — コアファイルの末尾に、静かに追記されていた関数 —
if (!function_exists('wpab_bootstrap')) {
  function wpab_bootstrap() {
    // WordPress起動のたび、不正管理者アカウントの
    // 存在を確認し、削除されていれば再作成する。
    // 「消しても消しても復活する」の正体はこれ。
  }
  add_action('init', 'wpab_bootstrap');
}
Artifact 02 / 02 of 03
📄 wp-content/plugins/(有償プラグイン)/assets/contenttype.news

タイムスタンプがプラグイン本体と完全一致——つまり後から追加されたのではなく、導入時点から同梱されていたことを示す決定的な証拠だった。

FIELD REPORT / 03 ARTIFACTS LOGGED
contenttype.news
$ file contenttype.news
contenttype.news: ELF 64-bit LSB executable, x86-64

# 拡張子は画像やニュースフィードを装っているが、
# 実体はサーバー上で直接実行可能なバイナリ。
# 通常のプラグインスキャンでは「画像ファイル」として
# スルーされやすい。
Artifact 03 / 03 of 03
📄 wp-content/plugins/(有償プラグイン)/inc/banners.bak

このシェルドロッパー自体が実行された痕跡(一時ファイルの中身)は確認されず、発火する前に発見・駆除できた(※同時に発見したコアファイルの管理者自動再生成バックドアは、既に稼働していた)。「拡張子を信じない」ことの重要性を示すサンプル。

FIELD REPORT / 03 ARTIFACTS LOGGED
banners.bak
# 拡張子は ".bak"(バックアップファイル)を装っているが、
# 中身は AES-256 で暗号化されたペイロード。
# 復号キーとローダーが揃った時点で、
# サーバー上に任意のシェルを展開できる状態だった。

$ openssl enc -d -aes-256-cbc -in banners.bak ...
# (復号には別途仕込まれた鍵ファイルが必要)

ファイル名・拡張子は簡単に偽装できます。18体の AI エージェントがタイムスタンプ・バイナリ構造・DBレコードまで同時並列で照合し、 「本当に正規のファイルか」を1つずつ検証する——これが WP-AIレスキューのアプローチです。

「更新は最新」でも、入り口が汚染されていれば意味がありません。まずはサイト URL を1行、確認させてください。

URL1行で無料診断を始める