Video Screencast Help
Security Response

Backdoor.Tidserv と x64

Created: 06 May 2011 10:39:51 GMT • Translations available: English
Mircea Ciubotariu's picture
0 0 Votes
Login to vote

2011 年 4 月 12 日、AMD64 プラットフォーム上で動作する Windows Vista およびそれ以降のオペレーティングシステムに影響を及ぼす脆弱性に対処するために、KB2506014 がリリースされました。マルウェアはこの脆弱性を悪用して、未署名のドライバをロードし、カーネルモードに常駐します。

Backdoor.Tidserv(別名 TDL4)はそのような脅威の 1 つであり、その高度なルートキット機能が確実に動作するように、オペレーティングシステムのローダーファイルにひそかにパッチを適用します。予想に反せず、Tidserv は KB2506014 パッチの回避を試みました。これは、この脅威の暗号化されたファイルシステムの ldr16 エントリから取得した次のコード例を見るとわかります。


 
ここでは、フックされた int13(16 ビットのディスク動作割り込み)が、オペレーティングシステムローダーがディスクから kdcom.dll ファイルを読み込むタイミングを特定しようとします。その後、読み込まれるバージョン(x86 または x64 のいずれか)を特定し、対応するルートキットローダーである ldr32 および ldr64 で置き換えます。

さらに処理が進むと、/MININT パラメータパッチの直後でコードが更新され、winload.exe から返された STATUS_INVALID_IMAGE_HASH(0xc0000428)エラーコードを無効な値(0xc428)にするパッチが適用されています。これは、kdcom.dll に対するデジタル署名の強制を放棄することを意味します。


 
これが現実にどのように機能し、実際に感染するためには何が必要になるかを見てみましょう。この検証のために、最新の Tidserv のサンプル(2011 年 5 月 3 日リリース)を収集し、このサンプル上で動作するデフォルト設定の Windows 7 SP1 x64 コンピュータをセットアップしました。この脅威は、起動早々、(ユーザーアカウント制御(UAC)を通じて)ご親切に管理者としての実行を許可するようにユーザーに求めてきます。


 
未署名のインストーラに対して「Yes(はい)」と答える人がいるとは思いたくありませんが、ユーザーが「No(いいえ)」をクリックすると、この脅威は今度は、他に選択肢がないと思わせるために再度 UAC のダイアログを表示します。管理者権限での実行を求められるのを実際にやめさせて、脅威のインストールを防ぐには、「No(いいえ)」を平均して 16 回クリックする必要があります。

この脅威は、いったんインストールされると、カーネルメモリに自身をロードするためにコンピュータを即座にリブートします。これは、デジタル署名の強制を回避できるのはブート時だけであるか、あるいは少なくともそれが期待できるからです。

未知のエラーが報告された場合でも、ルートキットローダーによって加えられたひそかな変更はシステムローダーに検出され、システム修復モードが開始されます。しかし、ファイルに変更が加えられていることしか想定されていないため、感染した MBR の修復は行われません。


 
感染した MBR が再びロードされるため、このプロセスはリブート時に自動的に繰り返されます。修復プロセスが失敗するのはこのときだけです。


 
MBR の感染中に発生したフックは、オペレーティングシステムローダーよりも優先されるため、理論的には、OS ローダーが利用する可能性のあるすべての保護に対して、このフックコードがひそかにパッチを適用することができます。しかし、今回のケースではそうならないようなので、脅威がドライバの署名ポリシーを回避できるようになるまでにはさらに変更が加えられると思われます。

この脅威の実行は効果的に阻止されますが、残念なことに、システムは使用できなくなってしまいます。

このことによって、ハードウェアの保護技術が整っていなかった DOS 時代の記憶がよみがえります。結果として、悪質なコードとウイルス対策製品が「フェアな」戦いを繰り広げ、通常は先に配置される特権を得たものが勝利を収めていました。

この観点から考えると、まだしばらくは、マルウェアにも十分に勝利のチャンスがあります。それは、最新のオペレーティングシステムであっても、古きよき 16 ビットモードから起動する必要があるためです。ただし、この特権にも終わりがあります。署名済みのコードだけが BIOS を通じてブートされるような要件を強制すればよいのです。

 

* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。