# suadd.com WordPress ハッキング 感染調査レポートと復旧手順

作成日: 2026-07-03
対象: ロリポップ・レンタルサーバからFTPでダウンロードした suadd.com のファイル一式

---

## 1. 結論（サマリー）

サイトは複数のマルウェアに感染しており、**Webシェル（遠隔操作用バックドア）** と **暗号資産（仮想通貨）ウォレット・ドレイナー（資産窃取スクリプト）** の両方が仕込まれています。攻撃者はサーバ上で任意のコマンドを実行できる状態にあり、かつ訪問者のブラウザから暗号資産を盗もうとする不正スクリプトを配信していました。

改ざん・設置されたファイルの日時はいずれも **2026年6月28日〜6月30日** に集中しており、この時期に侵入・設置が行われたと考えられます。

対応の優先度は高く、**サーバ側の完全クリーンアップ、全パスワードの変更、WordPressのクリーン再構築** が必要です。

---

## 2. 検出された不正ファイル一覧

### 2-1. 明確なマルウェア（削除必須）

| ファイル | 種別 | 内容 |
|---|---|---|
| `wp/wp-includes/js/tinymce/utils/cvs.php` (53KB, 6/28) | **Webシェル** | `system()` / `exec()` / `passthru()` で任意コマンド実行。ファイル管理、Symlink、DBアクセス等の機能を持つフル機能のバックドア。文字列は8進・16進で難読化。 |
| `wp/wp-includes/js/tinymce/plugins/lists/error_log.php` (29KB, 6/28) | **バックドア（ファイルマネージャ）** | パスワード（`limit`）で保護された不正な管理画面。ファイルのアップロード・改ざんに使用。インドネシア語UI。 |
| `wp/wp-includes/js/tinymce/plugins/lists/anesongalfa.php` (1.7KB, 6/28) | **ダウンローダ** | `goto`による難読化。外部（`gist.githubusercontent.com/rafaeyfa1337/...` および `dns.cloudflare-...` 系）から追加ペイロードを取得して実行する二次感染ローダ。 |
| `wp/wp-includes/js/tinymce/plugins/lists/bypass_ssi.shtml` (6/28) | **SSIシェル** | SSI（Server Side Includes）の `#exec cmd` を悪用したコマンド実行シェル。「SENBONZAKURA KAGEYOSHI SSI / Layn.ID / TNGXploit」を名乗る。PHPが無効でもコマンド実行を狙う。 |
| `default.php`（サイトルート, 735KB, 6/30） | **暗号資産ドレイナー** | `<head>`内に難読化JavaScriptを注入。Base（Ethereum L2）チェーンのRPCとethers.jsを読み込み、訪問者のウォレットから資産を吸い上げる「wallet drainer」。ログイン中のWP管理者や `wp-admin`/`wp-login` では発動しないよう細工されている。 |

### 2-2. 攻撃者が設置した「クローキング」の仕組み（要修正）

サイトルートの `index.php` が改ざんされ、以下の**振り分け（クローキング）**を行っています。

- **Googlebot（検索エンジン）でアクセス** → `default.php`（ドレイナー入り＝インドネシア語の別コンテンツ `<html lang="id-ID">`）を表示
- **一般利用者でアクセス** → `index2.php`（本来のWordPress表示に見えるページ）を表示

これはSEOスパム／不正コンテンツを検索エンジンにだけ見せ、通常の閲覧では気づかせない典型的な手口です。`index.php`・`index2.php`・`default.php` はいずれも6/28〜6/30に生成・改ざんされています。

関連して、6/28に大量の `google〈ランダム〉.html`（Google Search Console 所有権確認ファイル）が設置されています。これは攻撃者が**自分のSearch Consoleアカウントにサイトを登録**し、検索結果を乗っ取る／スパムをインデックスさせるための痕跡の可能性が高いです。

```
google378632bf7ec97dd8.html / google49012ec7ec51fe50.html /
google92bdc701f404b8b8.html / googled681439280227de6.html /
googlef91c1569c4ccfc54.html   （すべて 6/28 設置）
```

また `sitemap-adinda.xml`（6/28, 16KB）も攻撃者が設置したスパム用サイトマップと見られ、`robots.txt` からこのサイトマップを参照するよう書き換えられています。

### 2-3. 補足・確認事項

- 設置場所が `wp-includes/js/tinymce/` 配下である点が特徴的です。WordPress本体のフォルダに紛れ込ませ、発見を遅らせる狙いです。**これらのフォルダには本来PHPの実行ファイルはほとんど存在しません。**
- `page4/`（`add.php` `edit.php` `in.php` `index.php` 等）はファイル日時が2008〜2013年と古く、今回の攻撃とは別の**旧来からのコンテンツ**と見られます。ただし古いPHPアプリで脆弱性の温床になり得るため、使っていなければ削除を推奨します。
- WordPress本体は **6.9.4**（比較的新しい）で、Wordfence・Akismet・BackWPup・Classic Editor が導入済み。皮肉にもWordfenceのログ領域 `wp-content/wflogs/` は正常です。
- `wp-content/uploads/` 配下のPHPは、BackWPupが設置する正規の空 `index.php`（ディレクトリ一覧防止用）のみで、こちらは問題ありません。

---

## 3. 侵入経路の推定

確定はできませんが、状況から次のいずれかが有力です。

1. **プラグイン／テーマの脆弱性、または古いPHPアプリ経由**での侵入。まず1つのバックドア（`error_log.php` 等）を設置し、そこから他のシェルやドレイナーを展開した多段構成。
2. **FTP／管理画面の認証情報の漏洩**（総当たり・使い回しパスワード・端末のマルウェア等）。ロリポップFTPアカウントが乗っ取られると、任意ファイルを直接設置できます。

いずれの場合も、`anesongalfa.php` が外部から追加ペイロードを取得する構造のため、**一度侵入されると継続的に再感染し得る**点が厄介です。放置は危険です。

---

## 4. 復旧手順

> 重要: バックドアが残ったままだと駆除しても再感染します。「隔離 → パスワード変更 → クリーン再構築 → 再発防止」の順で、途中で妥協せず進めてください。

### ステップ0: 事前準備（証拠保全）
- 今ダウンロード済みのフォルダを**そのまま1部コピーして保管**（後日の原因究明・被害範囲確認のため）。
- 可能なら、この時点でロリポップの管理画面から**サイトを一時的に非公開／メンテナンス表示**にする（訪問者のウォレット被害と、Google判定悪化を止めるため）。

### ステップ1: すべての認証情報を変更
侵入時点で漏洩している前提で、**先にパスワードを変えてから**作業します。
- ロリポップの**アカウントパスワード**・**FTP/SFTPパスワード**
- **WordPress管理者**の全ユーザーのパスワード（不審な管理者ユーザーが増えていないかも確認し、あれば削除）
- **データベース**のパスワード（`wp/wp-config.php` の `DB_PASSWORD`。変更後は wp-config.php も更新）
- WordPressの**認証キー（SALT）** を再発行（`wp-config.php` の `AUTH_KEY` 等を https://api.wordpress.org/secret-key/1.1/salt/ の値に差し替え）。これで盗まれたログインCookieが無効化されます。

### ステップ2: 不正ファイルの削除
サーバ上から最低限、以下を削除します。
- `wp/wp-includes/js/tinymce/utils/cvs.php`
- `wp/wp-includes/js/tinymce/plugins/lists/error_log.php`
- `wp/wp-includes/js/tinymce/plugins/lists/anesongalfa.php`
- `wp/wp-includes/js/tinymce/plugins/lists/bypass_ssi.shtml`
- サイトルートの `default.php`
- 改ざんされた `index.php`（ルート）と `index2.php`（後述の通り正規版で置き換え）
- 攻撃者設置の `google〈ランダム〉.html` 5個、`sitemap-adinda.xml`
- `robots.txt` を正規の内容に戻す（不正サイトマップ参照を削除）

### ステップ3: WordPress本体をクリーンな公式ファイルで置き換え（最重要）
バックドアは他にも潜んでいる可能性があるため、**目視での駆除だけに頼らない**でください。
- WordPress **6.9.4（同一バージョン）の公式zip** を wordpress.org から入手し、`wp-content/`・`wp-config.php` を除く **すべての本体ファイル（wp-admin/・wp-includes/・ルートのwp-*.php）を丸ごと上書き**。
- `wp-content/` は、**themes / plugins を一度すべて削除**し、公式配布元から**新規に取得し直したもの**を入れる（既存のものは使い回さない）。使用中テーマ（Twenty Twenty-Five 等）とプラグイン（Wordfence, Akismet, BackWPup, Classic Editor）を入れ直す。
- `wp-content/uploads/`（画像等）は、PHPファイルが混入していないか確認したうえで残す。`.php` は原則すべて不要（BackWPupの空 index.php を除く）。
- 可能であれば、感染前の**クリーンなバックアップ（6/28より前）から復元**するのが最も確実です。BackWPupやロリポップのバックアップに6/27以前の世代があれば優先検討してください。

### ステップ4: データベースの点検
- `wp_users` に不審な管理者アカウントがないか、`wp_options` の `siteurl` / `home` が改ざんされていないか確認。
- 記事本文やウィジェットに不正な `<script>` が注入されていないか確認（ドレイナーがDB側にも仕込まれている可能性）。

### ステップ5: 全体スキャンと検証
- Wordfenceで**フルスキャン**を実行し、コア整合性チェック（公式との差分）を確認。
- サーバ全体で `.php` `.shtml` の新規・改ざんファイルを日付順で再点検（特に 6/28〜6/30）。
- ルートに `.htaccess` があれば不正なリダイレクト記述がないか確認。

### ステップ6: 公開再開とGoogle対応
- クリーン確認後にサイトを再公開。
- **Google Search Console** に自分のアカウントで登録し、**攻撃者が登録した所有者がいないか**確認・削除。「セキュリティの問題」レポートを確認し、クリーン後に**再審査リクエスト**を送る。
- 前述の攻撃者所有権確認ファイルを消したので、攻撃者側のSearch Console紐付けは切れます。

### ステップ7: 再発防止
- WordPress本体・テーマ・プラグインを**常に最新**に保つ。未使用のテーマ／プラグインは削除。
- 使っていない旧アプリ（`page4/`, `wk/`＝Wiki, `m/`＝MT4i, 各種MovableTypeの `mtview.php` 等）を棚卸しし、不要なら削除（古いPHPは侵入口になりやすい）。
- FTPは平文FTPをやめ**SFTP**を使用。ログイン**2要素認証**を有効化。
- Wordfence等でログイン試行制限・ファイル変更監視を有効化。
- 定期的な**自動バックアップ**（複数世代・サーバ外保管）を設定。

---

## 5. すぐ着手すべき最優先3点

1. **パスワード全変更**（ロリポップ／FTP／WP管理者／DB／SALT再発行）
2. **バックドア4ファイル＋default.php＋改ざんindex.phpの削除**とサイト一時非公開
3. **WordPress本体・テーマ・プラグインのクリーン再構築**（目視駆除に頼らない）

---

*注記: 本レポートはダウンロード済みファイルの静的解析に基づきます。サーバ上には解析対象に含まれない追加ファイルやcron・DB内改ざんが存在する可能性があるため、最終判断はサーバ実機での確認をもって行ってください。*
