CommentOut

サーバーがハッキングを受けて、謎のファイルが大量発生した場合 サーバーがハッキングを受けて、謎のファイルが大量発生した場合

サーバーがハッキングを受けて、謎のファイルが大量発生した場合

公開日:  最終更新日:

実は、私はサーバーにハッキングを受けた経験あります。
本来あってはならないのですが、セキュリティ関係は知識不足で、ハッキングを許してしまいました。
その時の対処についてお話します。

サーバーがハッキングを受けて、何が起きたか

ホームページのアクセス数を確認していて、アクセス数の多い記事を開いた時のことです。
記事ページを開くと、URLは自身のホームページのURLなのに、開くのはCSSのない中国語の通販サイトのようなものが開きました。
その時点で、サイトが攻撃を受けていたことに気づきます。

厄介なのは、中国語のサイトへ転送がかかっているわけではなく、私のサイトのドメインのままで中国語のサイトをロードして表示されているため、SearchConsoleにはあたかも私のサイトがコンテンツを表示しているように見えてしまっていることです。
これはSEO上、大打撃です。

私のホームページはWordpressサイトです。
今回の攻撃はWordpressの脆弱性を突いた攻撃です。

不審なファイルがサイト内に大量設置されていた

FTPでサーバー内を覗くと、「siowse.php」「wp-info.php」「about.php」等の不審なファイルが至るところに存在しています。
他にも「2index.php」や「new-index.html」などが作られていました。

しかし、これらのファイルは中国語のサイトを読み込んでいるようには見えません。
本体はもっと別の場所にいるはずです。

ドメインルートのindex.phpと.htaccessが書き換えられていた

どうやってかわかりませんが、index.phpと.htaccessの2つのファイルが書き換えられていました。

どうやら、中国語のサイトを読み込んでいるのは、このindex.phpのようです。
.htaccessは拡張子指定でファイルにアクセスできないようになっていました。

しかも、これらのファイルはFTPから削除しようと思っても消すことができません

pluginsフォルダに知らないプラグインがアップロードされていた

WordPressの(ドメインルート)/wp-content/pluginsに、知らないプラグインがアップロードされていました。
しかも、このプラグインはWordpressのダッシュボードには表示されませんでした。

もう、絶対こいつやん!

なんらかの方法で外部からアクセス(ダッシュボードにはログインしていないと思う)し、pluginsフォルダにファイルをアップロード
WordPressに誰かがアクセスしたタイミングでpluginsフォルダのチェックが行われ、チェックによってプログラムが作動
index.phpの書き換えや謎のファイルの増殖が始まったのではないかと思います。

サーバーがハッキングを受けた時、何をしたか

まず、index.phpと.htaccessを削除しました。
しかし、FTPクライアントから削除しても、すぐに復活してしまい、削除できないんですね。

これはどういうことかというと、削除した瞬間に上書きプロセスが走っている・・・ではなくて、何かプロセスが走っていて、ファイルのハンドラをずっと握っているから削除自体出来ていない状態なんです。
これを解消するには、サーバーにSSH接続する必要があります。

XSERVERの方は以下の記事を参照してください。

SSHアクセスして、プロセスを確認しよう

サーバーにSSHで接続すると、以下のコマンドを使ってみてください。

$ ps -x

これはサーバー上で実行中のプロセスを確認するコマンドです。
コマンドの実行結果に見たことないプロセスが表示されていれば、そのプロセスがハンドラを保持している可能性が高いです。
私の場合はl.phpやlock666.phpというプログラムがハンドラを保持していました。

プロセスを削除するには、以下のコマンドを使用します。

$ kill [プロセスID]

killコマンドでプロセスを削除したら、index.phpや.htaccessが削除できるようになりました。

ファイルの上書きができない

index.phpや.htaccessを削除せず、そのまま上書きしようと思っている場合は『権限』にも注意してください。
権限が444に書き換えられている場合があります。
権限444は、読み込みのみ許可された状態なので、書き込みが出来ない状態です。
この場合はFTPクライアントでも権限を変更できる物もありますし、SSH接続して以下のコマンドでも変更できます。

$ chmod 744 [ファイル名]

権限744は管理者にのみ書き込み・実行を許可しています。

あっちこっちにコピーされたファイルの削除もコマンドで行う

index.phpと.htaccessを元に戻したことで、ホームページは正常に戻りましたが、それでもサーバー上には不審なファイルがあっちこっちに残っている状態です。
しばらくすると、index.phpと.htaccessが再度書き換えられ、元に戻ってしまうので、きっとこいつらがドメイン直下にindex.phpと.htaccessをコピーしてくるプログラムなのでしょう。
こいつらを全て削除しない限りは永遠にいたちごっこです。
不審なファイルを1つ1つ削除していては埒があきませんので、こちらもコマンドを使います。

まず、ファイル名で検索してみましょう。

$ find ./* -type f -name [ファイル名]

findコマンドは検索するコマンドです。
./*の部分は検索先を指定します。今回はカレント以下全てのディレクトリを検索します。
-type fはファイルを検索するという意味です。
-name [ファイル名]は検索するファイル名を指定します。
今回であれば「$ find ./* -type f -name “wp-info.php”」とかですね。

そして、検索結果に消しちゃいけなさそうなファイルが無ければ、思い切って削除します。

$ find ./* -type f -name [ファイル名] -print | xargs rm 

上記コマンドで削除ができます。
※削除する際はよく注意して削除してください。

私の場合、ここまでやったらウイルスによる被害は抑えることが出来ました。
しかし、こんな苦労しなくても、ちゃんとバックアップを取っていれば、簡単に再構築できます。

良い子のみんなはバックアップはちゃんと取ろうね!

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

この記事を書いた人

uilou

uilou

プログラマー

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