ワードプレスサイトのマルウェアがプロセス(メモリ)に展開されていないか調べる方法を解説します。

サーバーのプロセスに不正なコードを展開・実行し、自身のコードをサーバー上から消してしまうマルウェア

昨今のマルウェアは高度化が著しく、まず自身の不正なコードをサーバーのプロセス(メモリ)上で無限ループなどの方法で常駐させ、そのあとに自分のコード(ファイル)をサーバー上から消してしまうものが出てきています。

※無限ループのコードの中にHTACCESSやINDEX.PHPを書き換えてマルウェアを再感染させるコードや、サーバーそのものの機能を有し他のサイトの攻撃の踏み台にしてしまうようなものもございます。

参考
Technical analysis of WordPress hack with PHP script lock360.php as running process

このようなマルウェアは、サーバー上のファイルをいくら検索しても見つけることができません。不正なプログラムがプロセス上にしか存在しないからです。

サーバーで実行されているプロセスを取得表示する

サーバー上で実行されている不正なプロセスの可能性が高いPHPのプロセスだけを取得表示する為に、サーバー上でコマンドと呼ばれる命令を直接実行します。

ps auwwx | grep -v grep | grep -i php

この結果下記のような出力が得られた場合プロセス上にマルウェアが展開されている可能性が非常に高くなります。

10207 2777 0.0 0.0 361172 38688 ? S 07:33 0:03 /opt/plesk/php/7.3/bin/php /var/www/httpdocs/wp-admin/css/colors/blue/lock360.php

10207 → プロセスのIDです

07:33 → プロセスの開始時間です

0:03 → プロセスを実行し始めるのにかかった時間です

/opt/plesk/php/7.3/bin/php → PHPを実行するコマンドです

/var/www/httpdocs/wp-admin/css/colors/blue/lock360.php → 実行され続けているファイルです(マルウェアが自身のファイルをすでにサーバー上から消している場合もあります)

なぜこのコマンドの結果のファイルがマルウェアの可能性が高いのか?

この理由は、
wp-admin/css/colors/blue/lock360.php というファイルはワードプレスのコアファイルに存在せず、一般的にPHPをコマンドで実行することはバッチ処理の場合ぐらいしかなく、ワードプレスにはバッチ処理をするようなプログラムが組み込まれていないからで、長期間実行され続けるファイルがワードプレスのコアファイルにあるはずがないからでございます

PHPプログラムから上記コマンドを実行して出力を表示する

サーバー上でコマンドを実行するには、SSH接続でコマンドプロンプトからリモートで実行するのが一般的ですが、PHPプログラムからも実行できます。

下記のコードをテキストエディタでコピペして、例えばprocesscheck.phpという名称で保存します。

<?php
exec("ps auwwx | grep -v grep | grep -i php",$output);
print_r($output);

こちらをサーバー上にアップロードしブラウザでアクセスすると現在サーバーで実行中のPHPプロセスを表示することができます。

※サーバーによってはこの方法では取得できない場合もございますが、さくらサーバーやXサーバなどの主要なレンタルサーバーではちゃんと取得表示できるようです。

怪しいプロセスが見つかったらプロセスを停止する

プロセスはサーバー上で下記のようなコマンドを実行することで停止させることが可能です、

kill -9 123456

-9 → 強制停止するという意味です
123456 → プロセスのIDを指定します。

WPドクターではサイト全体に広がってしまったマルウェアの検査駆除、このようなプロセス常駐型のマルウェアの検査駆除も専門家が代行いたします。
お気軽にご依頼ご相談お送りください。

WordPress ワードプレスのマルウェア駆除・セキュリティー対策のご依頼・ご相談はワードプレスドクターまでお気軽にお送りください