Mebromi: 初めて検出された BIOS ルートキット


By Marco Giuliani

この数週間で、Qihoo 360 という中国のセキュリティ会社は、中国内のコンピューターを攻撃する新しい BIOS ルートキットに関するブログを投稿しました。これは、2007 年の IceLord と呼ばれる有名な概念実証以降、システム BIOS をターゲットとする初めてのマルウエアと思われることから、非常に興味深い発見になりました。このマルウエアは Mebromi という名前で、特に Award BIOS をターゲットとする BIOS ルートキット、MBR ルートキット、カーネル モード ルートキット、PE ファイル型感染ウイルス、トロイの木馬型ダウンローダーなど、さまざまなプログラムが収められています。現時点では、64 ビットのオペレーティング システムは Mebromi に感染しません。また、限られた特権で実行されているシステムも感染しません。

感染は、hook.rom、flash.dll、cbrom.exe、my.sys、bios.sys の 5 つの暗号化リソース ファイルを含む、小さい暗号化されたドロッパーから始まります。これらのファイルの目的については、この分析の後半で説明します。

ドロッパーは、感染対象のシステムが中国のセキュリティ ソフトウェアである Rising AntivirusJiangmin KV Antivirus で保護されているかどうかを念入りにチェックするので、感染ウイルスのターゲットは明らかに中国内のユーザーです。BIOS へのアクセス権を獲得するため、感染ウイルスは、仮想メモリではなく物理メモリを操ることができるように、まずカーネル モードで侵入する必要があります。

かつての CIH/Chernobyl の感染ウイルスを思い出す方も多いでしょう。1998 年に発見された悪名高きウイルスで、マザーボードの BIOS をフラッシュして BIOS を消去する能力がありました。CIH も BIOS にアクセスするためにカーネル モードのアクセス権を獲得する必要がありましたが、当時のウイルスは Windows 9x オペレーティング システムの特権エスカレーション バグを悪用し、Interrupt Descriptor Table をユーザー モードから独自のペイロードで上書きして、上書きされた割り込みハンドラーをトリガーすることによって、その不正コードをカーネル モードで実行することを実現しました。Mebromi は、このような種類の特権エスカレーションのトリックはもう使っていません。必要なのは、BIOS の感染を操る専用のカーネル モード ドライバーをロードすることだけです。そのために、次の 2 つの手段が使われています。つまり、flash.dll ライブラリを解凍してロードすることで bios.sys ドライバーをロードするか、beep.sys サービス キーを停止して beep.sys ドライバーを独自の bios.sys コードで上書きし、サービス キーを再始動して、元の beep.sys コードを復元するか、そのどちらかを行う可能性があります。

bios.sys ドライバーは BIOS の感染を操るコードです。BIOS コードを読み取るには、物理メモリ アドレス 0xF0000 にある物理メモリをマップする必要があります。通常、BIOS ROM はここに常駐しています。BIOS コードを読み取ったら、ドライバーは、ストリング $@AWDFLA の存在をチェックして、BIOS ROM が Award BIOS であるかどうかを確認します。このストリングが見つかると、次に SMI ポートを探します。ルートキットはこのポートを使用して BIOS ROM をフラッシュします。

BIOS ROM がストリングと一致すると、ルートキットは BIOS のコピーをファイル C:\bios.bin に保存し、感染は次のユーザー モード部のステップに入ります。ドロッパーは、cbrom.exe と hook.rom の 2 つのファイルを解凍します。cbrom.exe は、Phoenix Technologies で開発された正規のツールで、iAward/Phoenix BIOS ROM バイナリの変更に使用されたものです。hook.rom は、BIOS バイナリに加えられるルートキット ISA BIOS ROM で、ここにルートキット感染ウイルスが含まれています。ドロッパーは、/isa スイッチ パラメーターを指定して cbrom.exe を実行し、hook.rom ファイルを渡します。不正な ISA ROM を実際に挿入する前に、ドロッパーは BIOS ROM コードをチェックして、感染ウイルスのマーカーとして使用される「hook rom」ストリングを探します。このストリングが見つかれば、BIOS は既に感染されていることを意味するので、再び感染させる必要はないわけです。

bios.bin ファイルの変更後、bios.sys ドライバーは BIOS SMI ポートにコマンド 0×29 を送り、このコマンドで BIOS フラッシュを消去します。次に、コマンド 0x2F を送り、このコマンドで新しい BIOS ROM コードを BIOS ROM に書き込みます。

これで BIOS は感染しました。ドロッパーは次のステップ、マスター ブート レコードの感染に進みます。この感染は 14 セクターの長さに及び、元の MBR はセクター 7 に保存されます。潜在的な起動問題を避けるため、感染した MBR は元の MBR のパーティション テーブルのコピーを保存します。最後に、ドロッパーは C: ドライブのルートに my.sys ドライバーを解凍します。my.sys はカーネル モードのルートキットで、IRP_MJ_READ/WRITE と IRP_MJ_DEVICE_CONTROL のネイティブ関数をリダイレクトすることによって、disk.sys の IRP の主要な関数を乗っ取ります。これを使用して、ディスク上で感染を隠します。BIOS の感染が失敗しても、ルートキットは MBR に感染します。

次にシステムを起動すると、BIOS の POST フェーズ後に、BIOS 内部に挿入された不正なコードが MBR 全体の感染を準備し (最初の 14 セクターすべて (合計で 7168 バイト) が不正な BIOS ROM に保存されます)、ハード ドライブの MBR コードをチェックして、感染ウイルスが既にあるかどうかを調べます。そのために、BIOS の不正なコードは、オフセット 0×92 でストリング「int1」が存在するかどうかをチェックします。このストリングが見つからないと、不正な BIOS ROM は、ハード ドライブの最初の 14 セクターをすべて上書きし、MBR 感染を復元します。

システムの起動手順は続行され、制御は不正なマスター ブート レコードに渡されます。ここで、不正なペイロードは元の MBR パーティション テーブルを分析し、アクティブなパーティションを探して、NTFS ファイル システムまたは FAT32 ファイル システムを使用しているかどうかをチェックします。不正な MBR コードには、実はNTFS/FAT32 パーサー ルーチンが含まれています。これを使用してファイル システムに侵入し、winlogon.exe ファイルまたは wininit.exe ファイルを探します。ファイルが見つかると、不正なコードに含まれているファイル感染ペイロードによって、指定ファイル内に不正なコードを挿入し、そのエントリ ポイントを乗っ取ることができます。ファイルを感染させる前に、MBR の不正なコードは、PE ファイルの先頭からオフセット 0×50 の位置でストリング「cnns」を探し、そのファイルが既に感染しているかどうかをチェックします。これが感染ウイルスのマーカーです。このストリングが見つからないと、感染ウイルスは、暗号化されたペイロード (約 600 バイトのコード) を winlogon.exe または wininit.exe 内に保存し、先頭を指す PE エントリ ポイントを乗っ取り、元のエントリ ポイントをオフセット 0×60 に保存します。

MBR 感染の作業はこれで終わり、Windows が起動して、パッチが適用された実行可能ファイルをロードするまで待機します。ロードされると、ペイロードは不正なコードを自己復号化して、メモリに my.sys ドライバーをロードします。次に、URL アドレス http://dh.3515.info:806/test/91/calc%5Bremoved%5D (現在は使用できません) から、その他の感染ウイルスのダウンロードを試みます。

Mebromi の概念は新しくありません。実のところ、2007 年に公開された IceLord BIOS ルートキットを思い出す必要があります。これは、Award BIOS ROM をターゲットにできるという公の概念実証で、ここで使用されている手法は Mebromi と非常によく似ています。これで、Mebromi は単に IceLord ルートキットに触発されただけではないと言えるでしょうか。

不正なコードを BIOS ROM 内に保存することは、実際には単なるセキュリティ ソフトウェアの問題にとどまらず、ウイルス対策製品が MBR の感染を検出して駆除しても、次にシステムを再起動したときに不正な BIOS ペイロードが MBR コードを再び上書きすれば感染は繰り返されることを示しています。BIOS コードを駆除できるウイルス対策ユーティリティの開発は課題です。完全にエラー プルーフにして、システムがブート不可能になることを避ける必要があります。このような特定のシステム コードを扱う作業は、BIOS コードを更新するための特定のツールと一緒に BIOS の更新をリリースする、具体的なマザーボード モデルの開発者に任せる必要があります。

一方、この種の感染ウイルスは、潜在的には、世の中に出回っている最も持続性のある感染ウイルスの 1 つですが、その目的を達成するために必要な複雑さのレベルのため、重大な脅威になることはおそらくありません。カーネル モードの感染や MBR の感染は、世の中のすべての PC 間で汎用的な方法で広がり続ける可能性があり、それらの感染の影響を受ける範囲は多大であるものの、BIOS ベースのルートキットは、世の中の主要なすべての BIOS ROM との完全な互換性が必要です。また、Award、Phoenix、AMI の各 BIOS のさまざまなリリースすべてに感染可能であることも必要です。これは、持続性に優れた感染ウイルス (TDL ルートキット、各種の Rustock リリース、ZeroAccess ルートキットなど) を作成するには必要のない複雑さのレベルです。実のところ、Mebromi はなぜ Award BIOS ROM だけをターゲットにしているのでしょうか。おそらく、オンラインで入手できる Award BIOS ROM をターゲットとする既知の概念実証が 5 年前に既に存在していたためです。

BIOS ルートキットは真の脅威でしょうか。答えはイエスです。Mebromi は、世の中で検出された初めての真の BIOS ルートキット インシデントと考えることができます。IceLord BIOS ルートキットは概念実証であると考えましょう。BIOS ルートキットを心配すべきでしょうか。PC が隠密性に極めて優れた未知のBIOS ルートキットに感染しているかどうかを確認する必要はあるかもしれませんが、それ以前に、攻撃者がリモートからシステムを密かに操ることを可能にする、もっと「謙虚な」カーネル モード ルートキットに PC が感染しているかどうかを調べた方がいいかもしれません。

wordpress blog stats