CommentOut

WordPressに不審なファイルが大量発生するウイルス『SID GIFARI』 WordPressに不審なファイルが大量発生するウイルス『SID GIFARI』

WordPressに不審なファイルが大量発生するウイルス『SID GIFARI』

公開日:  最終更新日:
  • ホームページを開くと、謎のショッピングサイトが表示されるようになった
  • WordPressの管理者ページ入れない!
  • SearchConsoleのページ数が急増している

このような症状が発生したら、それはSID GIFARIの仕業かもしれません。

SID GIFARIとは

これ、ハッカーの名前です。
このハッカーが作ったと思われるサーバーに感染するタイプのコンピュータウイルスも名前がわかんないので、SID GIFARIって呼んでます。
私はWordPressにしか感染している所を見たことないので、WordPress経由で感染するウイルスだと思います。

SID GIFARIの感染経路

WordPressに管理者ユーザーが知らない間に勝手に作成されます。
そして、ウイルスプラグイン『sid』がアップロードされ、サーバー内で動き出します。
ログファイルを見ると、この間、わずか3分間です。

アップロードされたプラグインの中身はシェルアップローダーで、ウイルスファイルをサーバー内にアップロードするシェルが実行されます。
※アップロードシェルはプラグインを有効化しなくても動作すると思われます。
※プラグイン一覧に入っても、アップロードされた『sid』はプラグイン一覧には表示されません。

あとはご存じの通り、ウイルスが他のファイルを書き換えて、どんどんサーバー内に増殖していきます。本当に生き物みたいですよね。

index.phpとabout.phpを真っ先に書き換え、これらのファイルにアクセスがあると、ウイルスが動くようです。
そのため、もしウイルスに感染したら、サイトにBASIC認証をかけましょう。
ユーザーがアクセスしている限り、ウイルスは増殖を続けてしまいます。

さらに、ファイルのアクセス権限まで勝手に書き換えられて、ファイルの上書きが出来ない状態になってしまいます。
さらにさらに、.htaccessまで書き換えられてしまいます。
そして、これが削除もできないんですよ。

何も知らないと、もうパニックですよね?
上書きも出来ない、削除もできない、詰んだ・・・って思いますよね?

もしもサーバーがSID GIFARIに感染したら

もしもサーバーがSID GIFARIにやられてしまったら、3通りの方法があります。

  • 一度サーバー内のファイルを全て削除し、バックアップファイルから復元する
  • バックアップファイルから新しいサーバーに引っ越しする
  • 頑張ってウイルスを削除する

バックアップファイルから復元する

一番現実的な方法です。
ソースコードのバックアップとデータベースのバックアップが両方あれば、復元可能です。

しかし、この方法は1サイト運用の時くらいしか使えないんじゃないかと思います。

一旦サーバー内のファイル全て削除しないと、復元したファイルに再度ウイルスが感染する恐れがあるためです。
全て削除する必要があるため、1サーバーに複数サイト存在する場合、『順次復旧』が出来ず、『一括復旧』しないといけないため、すぐに閉鎖できないサイトやバックアップの無いサイトが混在してたりして、どうしても復元できない場合があります。

バックアップファイルから新しいサーバーに引っ越しする

1サーバーに複数サイト存在する場合、バックアップファイルだけ持って、新しいサーバーに再構築していく方法もあります。
この方法であれば、『順次復旧』が可能になります。

頑張ってウイルスを削除する

もしも、『バックアップも何もない』『サイトを停止することもできない』という場合、頑張ってウイルスと戦うという方法もあります。

「まさかFTPで一つ一つ消していくの!?」って思った人

そりゃ無理です。
絶対ウイルスがファイルをコピーするスピードの方が速いです。

そこで活躍するのが、SSH(Secure Shell)です。
コマンドなので、慣れない人も多いと思いますが、慣れてくるとすごく早いので、重宝します。

XSERVERの場合、SSHの方法は以下で紹介しています。

いくつか便利なコマンドをご紹介します。

findコマンド

もう作業のほとんどこれです。

使い方は簡単

$ find ./* -type f -name 'new-index.php'

これでnew-index.phpファイルを検索できます。

細かく読み解いていくと

findfindコマンドであることを明示
./*検索するパス
./*は現在の場所以下全てを表す
-type ftypeオプションです
-type f:ファイルを検索
-type d:ディレクトリを検索
-name ‘new-index.php’nameオプションです
-name ‘[ファイル名]’:[ファイル名]を検索できます
-name ‘*.jpg’で、jpg形式のファイルを全て検索できます
-name ‘*-bk*’で、index-bk.phpやstyle-bk.cssを検索できます

SID GIFARIの生成するファイル名は私の把握している限りこんな感じでした。

  • index.php
  • new-index.php
  • about.php
  • wp-info.php
  • load.php
  • sid.php
  • style2.php
  • class.php
  • class.api.php
  • angle.gif
  • devil.gif
  • run.sh

たぶん、他にもあると思います。(知ってたら教えてください。

また、findコマンドには便利なオプションが他にもあります。

-newermt ‘[日時]’newerオプション
-newermt ‘202202-28’:2022/2/28以降に更新された
ファイルだけ表示
-exec [実行するコマンド]execオプション
検索結果に対して、何かコマンドを実行する場合に使用

例えば、こんな使い方

$ find ./* -name 'index.php' -newermt '2022/02/28 01:12:00'

2022年2月28日 1時12分以降に更新されたindex.phpだけを検索・表示する

$ find ./* -name 'new-index.php' -newermt '2022/02/28 01:12:00' -exec rm -f {} \; -print

2022年2月28日 1時12分以降に更新されたnew-index.phpを検索し、検索にかかったファイルを削除するコマンド
index.phpやabout.phpなど普通にWordPressに存在するファイルにこのコマンドを実行してしまうとWordPressが壊れてしまうので、style2.phpやnew-index.phpなど、ファイル名でウイルスだと断定できるファイルにのみ実行しましょう。

ps -xコマンド

$ ps -x

実行中プロセスを確認するコマンドです。
なんかファイルを削除してもすぐに戻ってしまうぞ!?って思った時は、このコマンドで変なプロセスが動いていないか確認してください。

killコマンド

$ kill 23456

もしもps -xで変なプロセスを見つけたらkill [プロセスID]でプロセスを削除できます。
l.phpとか、lock666.phpとか、そんな名前のやつはファイルを削除されないようにファイルのハンドラを握って他の処理を受け付けないようにしている犯人です。

まとめ

バックアップを取ることはとても重要ですが、もしこれを怠ってしまったとしても、まだ諦めないで!
時間はかかるけど、コマンドを使って少しずつ戦えば、ウイルスにだって勝てます!

宣伝
WordPressサイトのテンプレート編集やトラブル対応、バグ修正、簡単なJavascriptの作成(カルーセルやバリデーション等)など、小規模なスポット対応を受け付けております。
もしお困りごとがありましたら、お問い合わせフォームよりご相談ください。

この記事を書いた人

uilou

uilou

プログラマー

基本的に、自分自身の備忘録のつもりでブログを書いています。 自分と同じ所で詰まった人の助けになれば良いかなと思います。 システムのリファクタリングを得意としており、バックエンド、フロントエンド、アプリケーション、SQLなど幅広い知識と経験があります。 広いだけでなく、知識をもっと深堀りしていきたいですね。