WordPressに潜む不審ファイルの正体とは?マルウェア感染後にサーバーで起きていること

WordPressに潜む不審ファイルの正体とは?マルウェア感染後にサーバーで起きていること

「サイトは表示されているのに、知らないうちに別のページに飛ばされる」「Googleから『このサイトは危険です』と警告が出るようになった」「ホスティング会社からアカウントを停止された」——こうした症状が出ているとき、サーバーの内部ではすでに不審なファイルが密かに活動しています。

WordPressへの攻撃が成功すると、攻撃者はサーバー内のさまざまな場所にファイルを仕込み、痕跡を隠しながら長期にわたって居座り続けます。感染を完全に取り除くには、「どんなファイルが、どこに、どのような形で潜んでいるか」を正確に把握することが不可欠です。

この記事では、WordPressセキュリティの視点から、感染時にサーバー内で検出される代表的な不審ファイルの種類と特徴を解説します。


改ざんPHPとバックドア——正規ファイルに紛れ込む”内通者”

改ざんPHPとは、WordPressの本体・プラグイン・テーマを構成する正規のPHPファイルの中に、攻撃者が悪意あるコードを無断で書き加えたファイルのことです。ファイル名は元のままなので、一見しただけでは感染に気づけません。

そしてその中でも特に危険なのが、バックドアと呼ばれる仕組みです。バックドアとは、正規のログイン手続きを一切経ずに、外部から自由にサーバーへアクセスできる”隠し通路”として機能するコードです。攻撃者はバックドアさえ設置しておけば、パスワードを変更されても、プラグインを更新されても、いつでもサイトに再侵入できます。これが「一度復旧したはずなのに何度も再感染する」という状況の主な原因です。

改ざんPHPやバックドアは、以下のような場所に仕込まれていることが多いです。

・wp-includes/ や wp-admin/ などのWordPressコアディレクトリ
・テーマのfunctions.phpやindex.php
・プラグインのメインファイル内部
・画像フォルダ(uploadsディレクトリ)内に偽装されたPHPファイル

特に画像フォルダ内への設置は盲点になりやすく、「画像ファイルしか置かない場所」にPHPファイルが存在していること自体が感染のサインです。

▶ 専門家に依頼すると:全PHPファイルのハッシュ値照合(正規ファイルとの差分検出)、バックドアコードのパターン検索、コアファイルのクリーンな状態への完全置き換えを行います。


異常JSと不正.htaccess——訪問者を”静かに”攻撃する仕掛け

訪問者を"静かに"攻撃する仕掛け

異常JS(異常なJavaScriptコード)とは、サイトのページに埋め込まれた悪意あるJavaScriptのことです。JavaScriptは本来、ページの動きやデザインを制御するために使われる正当な技術ですが、攻撃者はこれを悪用してサイト訪問者のブラウザ上で不正な処理を実行させます。

具体的な被害としては、訪問者を詐欺サイトやフィッシングサイトへ自動転送する、訪問者のデバイス情報や入力データを盗み取る、訪問者のブラウザを踏み台にして別の攻撃を行う、といったものがあります。サイトの管理者には見た目上の変化が出にくく、被害が訪問者側に集中する点が悪質です。

一方、不正.htaccessとは、Webサーバーの動作ルールを記述する設定ファイル「.htaccess」が攻撃者によって書き換えられたものです。.htaccessは本来、URLのリダイレクトやアクセス制限を管理するための重要なファイルですが、ここに不正なルールを書き込まれると、特定の条件(例:Googleからの訪問時のみ、スマートフォンからのアクセス時のみ)に応じて訪問者を別サイトへ転送したり、管理者には正常に見えながら訪問者にだけ別のコンテンツを表示させたりすることが可能になります。

この「管理者からは正常に見える」という特性が、発見を著しく遅らせる原因になります。

▶ 専門家に依頼すると:全ページのJavaScript読み込み元の精査、外部ドメインへの不審な通信の検出、.htaccessファイルの内容解析と正規ルールへの復元を行います。


難読化コード——”読めない”状態に変換された謎ファイル

難読化コードとは、プログラムの内容を人間が一見して理解できないよう、意図的に複雑・不可読な形式に変換したコードのことです。正規の開発でも軽量化などの目的で使われる場合がありますが、マルウェアに使われる難読化は、セキュリティ担当者やウイルス対策ソフトによる検出を逃れるために用いられます。

よく使われる難読化の手口として、以下のものがあります。

・base64エンコード:コードをまったく別の文字列に変換し、実行時に元に戻す方式
・文字列の分割と結合:コードを細かいパーツに分解してバラバラに記述し、実行時に組み立てる方式
・変数名の無意味化:変数名や関数名をランダムな文字列(例:$a1b2c3)に置き換えて内容を隠す方式

こうして難読化されたコードは、ファイルを開いて中を見ても何をしているのかが即座にはわかりません。しかし「このコードが何をしているかわからない」という状態そのものが、感染を示す重大なシグナルです。

特にWordPressのテーマやプラグインのファイルの中に、本来必要のないbase64でエンコードされた長い文字列が存在している場合は、ほぼ確実に不正なコードが仕込まれています。

▶ 専門家に依頼すると:難読化コードの自動検出ツールと手動解析の組み合わせによる全ファイルスキャン、コードのデコード・内容解析、安全なファイルへの差し替えを行います。


この記事のまとめ

WordPressがマルウェアに感染すると、サーバー内には以下のような不審ファイルが潜んでいます。

  1. 改ざんPHP・バックドア:正規ファイルに偽装して再侵入の通路を維持する
  2. 異常JS・不正.htaccess:訪問者を静かに攻撃・誘導し、管理者には見えにくい
  3. 難読化コード:検出を避けるために意図的に読めない形式に変換されている

これらの不審ファイルに共通するのは、「一般のサイト管理者が目視で発見するのは非常に困難」という点です。ファイル数が数千〜数万に及ぶWordPressのサーバー環境の中から、巧妙に隠された悪意あるコードを手作業で探し出すことは、専門的な知識とツールなしには現実的ではありません。

また、見つけたものだけを削除しても、別の場所に残っているバックドアや難読化されたコードが再び活動を始めます。感染の完全除去には、ファイル単位での全件調査と、正規状態への完全な復元が必要です。

「もしかして感染しているかも」と思ったら、自己判断での対処は二次被害・証拠の消失につながるリスクがあります。まずはWordPressセキュリティの専門家に調査を依頼し、正確な現状把握から始めることを強くおすすめします。


不審ファイル検出 語彙辞典

本辞典は、マルウェア感染によりサイトが停止してしまった方が、WordPressのサーバー内に潜む「悪意あるファイル」や「改ざんされたコード」を見つけ出す(不審ファイル検出)ための必須キーワード集です。


■ 1. コアファイル(Core Files)

WordPressが動作するための本体プログラム(wp-includesやwp-adminフォルダー内のファイル、wp-config.phpなど)。初期状態から変更がないか(改ざんされていないか)の検証対象となります。

■ 2. 難読化コード(Obfuscated Code)

攻撃者がセキュリティ検知ツールや人間の目から隠すために、わざと複雑で解読しにくく書き換えたプログラム。不審ファイルを見分ける最大の目印です。

■ 3. base64_decode

難読化されたプログラムを元に戻して実行するときによく悪用される、PHPの関数。不審なファイルの中にこの文字列が潜んでいないかを検索(グレップ)します。

■ 4. eval

文字列をプログラムコードとして実行してしまう危険なPHPの関数。マルウェアがバックドアを動作させるために多用するため、検出時の警戒レベルは最上級です。

■ 5. パーミッション(File Permissions)

ファイルやフォルダーに対する「読み取り」「書き込み」「実行」の権限設定。不審なファイルが勝手に書き換えられたり、実行されたりしないよう、適切な数値(例: ファイルは644、フォルダーは755)になっているか確認します。

■ 6. 差分比較(Diff)

正常なバックアップデータ(または公式の新品ファイル)と、現在のサーバー内にあるファイルを重ね合わせて「どこが書き換えられたか」を浮き彫りにする作業。

■ 7. チェックサム(Checksum / MD5ハッシュ値)

ファイルが改ざんされていないかを証明するための「デジタル指紋」。公式ファイルが持つ指紋と一致しない場合、そのファイルは不審(改ざん済み)と判断できます。

■ 8. 拡張子偽装(Extension Spoofing)

「photo.jpg.php」のように、一見画像ファイルに見せかけて、実際はサーバー上で動く不正なプログラム(PHP)であるケース。メディアアップロード用フォルダー(uploads)によく混入します。

■ 9. ファイルスキャン(File Scanning)

セキュリティプラグインなどを用いて、サーバー内の全ファイルを自動で巡回し、既知のマルウェアパターンや不審なコード(シグネチャ)が含まれていないかを自動検査する処理。

■ 10. クロンジョブ(Cron Job / wp-cron)

指定した日時にプログラムを自動実行させるスケジュール機能。マルウェア自身が「削除されても自動で復活する」ための仕組み(不審な自動実行タスク)をここに仕込むケースがあります。


お問い合わせはこちら

サービスに関するご相談・お見積りなど、お気軽にお問い合わせください。