「ブログが表示されなくなったんだけど、ちょっと見てくれない?」
仲の良い取引先から相談が持ちかけられた。こういう謎のIT系トラブルは大好物なので、報酬云々はとりあえず置いておいて首を突っ込むことにした。
聞くところによると、1日前より件のブログにアクセスしても真っ白なページが表示されるだけとなってしまった模様だ。とりあえず自分も表示してみたが真っ白である。一応ソースコードも表示してみたがこちらも真っ白だ。
さて、何とかしてみよう。
情報収集
ブログはLAMP環境*1 にWordPressをインストールして運用している様だ。サーバー機はさくらVPSの1Gプラン*2 を利用。構築したのは現在居ないエンジニアなので詳細な情報は分からないとのこと。よくある話だ。
サーバー機へのログイン情報は分かるらしいので、とりあえずそれを聞いてサーバー機の中身を覗いてみることにした。聞いて分からなければ見れば分かる、かもしれない。
それにしても、あっさりとサーバー機へのログイン情報を入手してしまった訳ですが、正直なところ、こういう機密情報はあまり知りたくない。何かあったら自分が疑われかねない。
原因特定
とりあえずエラーログを追ってみた。場合によっては気の遠くなる作業になるのだが、今回はあっさりと原因が特定できた。WordPressを実行するために必要なファイルが見つからないため、エラーが発生しているらしい。
「誤ってファイルを削除しちゃったのか。ははは、このドジっ子め。」などと心中で毒づきながらファイルがあった場所を確認すると、拡張子が「.suspected」に変更された同名のファイルが存在した。
suspected 【形】 疑わしい
これはまずい状況なのではと若干ワクワクしつつファイルの中身を覗くと、謎の文字列が散見される。定数の特定位置の文字を切り出してみたり、BASE64でエンコードされた文字をすぐにデコードしたり、それらを2重、3重に掛けた上でeval()*3 を実行している。実行内容を隠蔽する目的で書かれたソースコードのように見える。
パズルを解くような感覚でソースコードを整理してみたとろ、結局はeval($_GET[‘a’]) を実行しているだけだった。誰でもサーバー上で任意の命令を実施出来てしまうという、大変危険なコードだ。
どうやら、このブログはバックドアという類のウイルスに感染しているようだ。このファイルの他にも多数のバックドアが仕込まれていた。
なぜ拡張子が変更されていたのか
ところで、なぜファイルの拡張子が「.php」から「.suspected」に変更されたのだろうか。
「.php」でなければプログラムとして実行することが出来ないので、攻撃者が拡張子を変更することはあり得ない。つまり何らかのウイルス対策によって拡張子が変更された可能性が高いが、このサーバーにはそういった類のソフトは入っていないようだ。
推測の域を出ないが、さくらVPS側で独自にウイルス対策を講じており、その結果ウイルスに感染したファイルの拡張子が変更されたのだろう、と結論付けることにした。
次回何とかします。
*1 LAMP環境
無料で使えるソフトウェアを組み合わせて作ったサーバー。無料のくせに普通に仕事で使えちゃうとスペックとかIT界隈やばい。LAMPは、Linux + Apache + MySQL + PHP の略。PはPerlとかPythonだったりもするとか。
*2 さくらVPSの1Gプラン
みんな大好き、さくらVPSの一般的なプラン。月額900円で自分のサーバーが持てちまうんだ。最近はXSERVER推しの人が多いですが初期費用が高いので敬遠中。性能は良さそうなんだけどね。
*3 eval()
何でも実行できてしまう便利で危ない関数。PHPの新人研修があったら「とりあえず使うな」と教えられること請け合い。