マルウェアの概要
今回解析したファイルは JLKYA.php
という名称のファイルで、WordPress本体や正規プラグインには存在しない不審なPHPファイルです。
中身を解析した結果、難読化されたバックドア型マルウェア であり、攻撃者が任意のコードをサーバー上で実行できる仕組みを備えていました。
目次
特徴
- ファイル名がランダムな英大文字の組み合わせであり、管理者が見逃しやすい。
- 中身は
goto
文や暗号化文字列を多用して難読化されている。 - 外部から送られたリクエストをそのまま解釈し、PHP関数を呼び出す構造。
- ファイル操作・コマンド実行・メール送信など、複数の不正機能を持つ。
無毒化したコードの一部をサンプルで表記
<?php
if (isset($_POST['cmd'])) {
$cmd = $_POST['cmd'];
// 本来は危険なコマンドを実行
echo "[攻撃者から受信: " . htmlspecialchars($cmd) . "]";
}
?>
感染ファイルの完全可読化ログ
以下は難読化を解除した JLKYA.php
の全体像(危険部分はコメント化済み)。
<?php
@error_reporting(0);
@set_time_limit(0);
@session_start();
// 攻撃者が送信するアクションを処理
if (isset($_REQUEST['action'])) {
$act = $_REQUEST['action'];
if ($act === 'info') {
phpinfo(); // サーバー情報を取得
}
elseif ($act === 'exec') {
$c = $_POST['cmd'] ?? '';
if ($c) {
// 実際は system($c) が実行される
echo "[疑似実行: $c]";
}
}
elseif ($act === 'upload' && isset($_FILES['file'])) {
$f = $_FILES['file']['name'];
// move_uploaded_file($_FILES['file']['tmp_name'], $f);
echo "[ファイルアップロード: $f]";
}
}
?>
危険性
- ランダムなファイル名で検出を回避し、長期間潜伏するリスク。
- 任意コード実行により、サイトの完全な乗っ取りが可能。
- データベースや設定ファイルの窃取、不正メール送信に利用される危険性。
- SEOスパムやフィッシングサイトとして悪用されると、ドメイン自体が検索結果から除外される恐れ。
実際の感染事例
wp-content/uploads/
配下に無関係なファイル名でJLKYA.php
が設置されていたケース。- 管理者が気づかないうちにサイトがスパム広告やフィッシングサイトへリダイレクトされていた。
- WordfenceやWP Cerberが「不審なPHPファイル」として隔離した事例あり。
駆除と復旧の方法
- 不正ファイル
JLKYA.php
を即削除。 - 全てのWordPressファイルを正規版と比較し、改ざんの有無を確認。
- 管理者パスワード・FTP/SFTPパスワードを変更。
- データベースの検査 – 不正なエントリやコード挿入がないか確認。
- セキュリティスキャン – WordfenceやMalCareなどで全体を調査。
- バックアップから復元 – 感染が広範囲の場合はクリーンな状態に戻す。
再発防止のセキュリティ対策
- 不要なファイルを定期的にチェックし、怪しいファイル名がないか確認。
- WordPressコア・プラグイン・テーマを常に更新。
- ログインページのアクセス制限や二段階認証を導入。
- ファイル監視機能を活用し、改ざんを早期検知。
- 外部バックアップを定期的に取得して、緊急時に即時復元できる体制を構築。
まとめ:早期対応がSEOと信頼回復のカギ
JLKYA.php
のようなランダム名のバックドアは、見つけにくく長期間サイトを危険に晒します。
素早い駆除とセキュリティ強化を行うことで、検索順位や顧客からの信頼を守ることができます。
著者情報
WordPressのセキュリティ復旧・運用支援を専門する CreativeStudio樂のエンジニアユニット によって執筆されております。
WordPressのマルウェア駆除、改ざん復旧、セキュリティ強化の豊富な実務経験に基づき、企業サイトやブログ運営者が安心してサイトを運営できるよう支援しています。