Kurage

レンタルサーバーのサイトが書き換えられたら、1時間以内に知らせる

Kurage Security Watch:自社の更新とは見分けて、置かれた覚えのない PHP や .htaccess の変化だけをメールで知らせます。

Xで共有

これはデモです。下は架空の会社(www.example.jp・shop.example.jp)の14日分の見張りの記録です。10月26日の深夜に、画像を置くフォルダへ PHP が置かれ、.htaccess と WordPress の本体が書き換えられた想定です。

48,245見張っているファイル
24直近24時間の見張り(回)
1直近24時間に知らせた変化
2まだ確かめていない疑い

最後の見張り:2026-10-28 09:00:00(毎時の見張り・サーバーの中で 0.79 秒)。直近24時間の変化は 5 件で、そのうち自社の更新や記録だけのものを除いた 1 件を知らせました。

不正なプログラムの疑い(まだ確かめていないもの)

見つけた日時場所反応した規則
2026-10-26 03:00:00www.example.jp/wp-includes/load.phpObfuscatedPhp:$eval
2026-10-26 03:00:00www.example.jp/wp-content/uploads/2026/10/class-wp-cache.phpObfuscatedPhp:$eval DodgyPhp:$at_eval,$execution

最近の変化

日時場所何が扱い
10-28 00:00www.example.jp/news/20261028.html増えた記録だけ
10-27 23:00www.example.jp/news/20261027.html増えた記録だけ
10-27 22:00shop.example.jp/public/index.php権限が変わった(644→666)知らせた
10-27 18:00www.example.jp/news/20261027.html増えた記録だけ
10-27 14:00shop.example.jp/blog/bl-content/databases/pages.php変わったデータの更新
10-27 07:00www.example.jp/news/20261027.html増えた記録だけ
10-27 06:00www.example.jp/news/20261027.html増えた記録だけ
10-26 17:00shop.example.jp/blog/bl-content/databases/pages.php変わったデータの更新
10-26 10:00shop.example.jp/blog/bl-content/databases/pages.php変わったデータの更新
10-26 04:00www.example.jp/wp-includes/load.php日時が戻された知らせた
10-26 03:00www.example.jp/wp-includes/load.php変わった知らせた
10-26 03:00www.example.jp/.htaccess変わった知らせた
10-26 03:00www.example.jp/wp-content/uploads/2026/10/class-wp-cache.php増えた知らせた
10-26 02:00www.example.jp/news/20261026.html増えた記録だけ
10-26 01:00www.example.jp/news/20261026.html増えた記録だけ
10-25 21:00www.example.jp/news/20261025.html増えた記録だけ
10-25 17:00shop.example.jp/blog/bl-content/databases/pages.php変わったデータの更新
10-25 10:00shop.example.jp/blog/bl-content/databases/pages.php変わったデータの更新
10-25 01:00www.example.jp/news/20261025.html増えた記録だけ
10-24 17:00shop.example.jp/blog/bl-content/databases/pages.php変わったデータの更新

「自社の更新」は、手元の公開用のファイルと中身が同じもの。「データの更新」は、サーバー自身が書き換えるデータ入れの PHP で、先頭の止めの1行が崩れていないことを確かめたもの。

日ごとの変化の数(直近14日)

2026-10-15 〜 2026-10-28。赤は知らせた変化があった日。

見張りの実行

日時種類ファイル変化知らせた疑い秒
10-28 09:00毎時の見張り48,2450000.79
10-28 08:00毎時の見張り48,2450001.06
10-28 07:00毎時の見張り48,2450000.76
10-28 06:00毎時の見張り48,2450000.85
10-28 05:00毎時の見張り48,2450000.65
10-28 04:00毎日の総点検48,2450005.45
10-28 03:00毎時の見張り48,2450000.83
10-28 02:00毎時の見張り48,2450000.9
10-28 01:00毎時の見張り48,2450000.78
10-28 00:00毎時の見張り48,2451000.89
10-27 23:00毎時の見張り48,2441001.08
10-27 22:00毎時の見張り48,2431100.69

届くメールの例

【Kurage Security Watch】不正なプログラムの疑い(scan・10/26 03:00)

■ 不正なプログラムの疑い 2件(YARA: php-malware-finder)
  https://www.example.jp/wp-content/uploads/2026/10/class-wp-cache.php  ObfuscatedPhp:$eval DodgyPhp:$at_eval,$execution
  https://www.example.jp/wp-includes/load.php  ObfuscatedPhp:$eval

■ 自社の更新ではない変化 3件(PHP・JavaScript・.htaccess など。手元に同じ中身のファイルが無い)
  増えた  www.example.jp/wp-content/uploads/2026/10/class-wp-cache.php  2026-10-26 02:47:12 権限644
  変わった  www.example.jp/.htaccess  2026-10-26 02:47:15 権限644
  変わった  www.example.jp/wp-includes/load.php  2026-10-26 02:47:15 権限644

(ほかに記録だけしたもの:データ入れの PHP(止めの1行を確認済み) 1件)

同じ中身のものは2回知らせません。確かめたものは「確認済み」にでき、中身がまた変わればもう一度知らせます。

しくみ

サーバーの中で比べる見張り役の PHP が、全ファイルの大きさ・更新日時・ctime・権限を台帳と比べ、違いだけを返します。FTP で一覧を取るより速く、接続を重ねて遮断されることもありません。
自社の更新と見分ける手元の公開用のファイルと中身が同じなら「自社の更新」。知らせが来るのは、自社が置いていない変化だけです。
中身をマルウェア検査増えた・変わった PHP などは中身をもらい、php-malware-finder の規則(YARA)にかけます。判定はサーバーの外でするので、共有サーバーの CPU を使いません。
日時を戻す手口も見る更新日時は戻せても ctime は戻せません。中身が変わったのに日時が古いままのファイルも知らせ、1日1回は全部の指紋を取り直します。

よくある質問

どんなサーバーで使えますか
PHP が動き、FTP(FTPS)でファイルを置けるレンタルサーバーで使えます。管理者の権限は要りません。見張り役の PHP を公開フォルダの外に置き、呼び出し口だけを公開フォルダに置きます。
サーバーに負担はかかりませんか
見張り役は、ファイルの大きさ・更新日時・権限を台帳と比べるだけで、中身の指紋は変わったファイルだけ取り直します。17万ファイルのサイトで1回2秒ほどです。マルウェアの判定はサーバーではしません。
自社でサイトを更新したときも知らせが来ますか
来ません。手元の公開用のファイルと中身が同じものは「自社の更新」として分けます。サーバー自身が書き換えるデータのファイルは、先頭の実行を止める1行が崩れていないかだけを確かめます。
第三者に呼び出されることはありませんか
呼び出し口は、合言葉で作った署名と時刻が合うときだけ動き、それ以外は「ページが無い」と答えます。同じ署名は二度使えません。
何をもってマルウェアと判断しますか
変わったファイルの中身を当社側(導入先のサーバー)でもらい、オープンソースの検査規則 php-malware-finder(YARA)にかけます。誤検知しやすい規則は外し、確かめたものは「確認済み」にできます。

導入について

見張り役(PHP)は御社のレンタルサーバーに、見張りの実行と検査は御社のサーバー(Linux・Python)に置きます。サイトの中身や記録を当社に送ることはありません。