|
|
サーバーも狙われる 〜RFI攻撃によるボットの感染〜
今週のSecurity Check(第200回)
サーバーを攻撃する手法の一つにリモート・ファイル・インクルード(以下,RFI)攻撃がある。RFIはスクリプト言語のPHPで作成されたWebアプリケーションのぜい弱性を突くことで,リモートからWebページに攻撃コードを挿入し実行させる攻撃である。攻撃者は悪意のあるURLリクエストをWebサーバーに送るだけで,サーバーから情報を盗み出したり,データを改ざんしたりできる。ボットを埋め込む方法としても使われるため,注意が必要である。 今回は実際の検体を基に,RFI攻撃を使って埋め込まれるボットの機能や,ボットに感染した場合の検知・対処方法,そして感染しないための予防法について解説する。 RFI攻撃では以下のようなURLリクエストを送ることで,リモートの悪意あるサーバーXXXXで公開している攻撃コードattack.txtをWebサーバー(example.com)に読み込ませることができる(図1)。このため,Webアプリケーションと同じ動作権限で様々な攻撃コードを実行させることができる。
攻撃者はこれを利用し,外部からPHPで記述したボットをターゲット・サーバーへ送り込み,感染させることができる。
ボットの機能IBM SOC(セキュリティ・オペレーション・センター)で検知したRFI攻撃情報を基に収集したボットを調査した結果,ボットはクライアント・パソコンに感染するボットと異なり,ログ消去などサーバーへの感染を意識した機能を備えていることが分かった(表1)。
表1 一般的なボットの機能
ログの消去機能は表2で挙げたフォルダや,特徴を持ったファイルを消去する機能である。表2のファイルやフォルダは,RFI攻撃を仕掛ける際のURLリクエストのログや,コマンド実行のヒストリーが保存されている。これらのログを消去することで,感染したサーバーでの動作を隠ぺいしようとする。 表2 ボットが消去するログ・ファイルやフォルダの例
さらに,以下のような特徴的な機能を持つボットもある。
・最新のぜい弱性を調査し,ぜい弱性があるサイトを検索サイトから調査する
・フェイク・プロセスを作成する
・感染したホストが利用しているWebサーバー・ソフトを特定する
・コードを難読化して検知されないようにする
PHPスクリプトの実行には実行時間の制限があり,デフォルトでは30秒しか実行し続けられない。ボットはその実行時間制限をset_time_limit(0)で無制限にすることで,1回のRFI攻撃でボットのプロセスが実行を続けるようにしている。PHPのプロセスが終了してしまうことを考慮してバックドア・プログラムをダウンロードしてくるボットもある。プログラム実行時にエラーが発生することも考えられるため,エラー出力をオフにする仕組みも備える。
>>PHP以外の言語で作成されたボット
連載新着記事一覧へ >>
|