Endpoint Protection

 View Only

執拗によみがえった Zbot のエミュレーション対策手法 

Jul 04, 2012 05:59 AM

2、3 カ月前に、Microsoft は世界中の Trojan.Zbot サーバーを一掃しました。しかし、その効果が現れたのも束の間、約 2 週間ほとんど動きを見せなかった Trojan.Zbot が執拗に活動を再開しました。しかも、新たなソーシャルエンジニアリングの手口と、ウイルス対策の検出をすり抜ける新しい技術が加わっています。

以下に示すのは、2012 年 6 月 14 日にリリースされた Trojan.Zbot の新しい亜種のサンプルです。検出をすり抜けるために、新しくエミュレーション対策の手法が実装されています。

図 1. 検出をすり抜けるためのエミュレーション対策手法

Trojan.Zbot は、悪質なコードの実行に先立って、解析のためにエミュレーション環境で実行されているかどうかを確認し、そのうえで悪質な処理を実行するか中止するかを判断します。エミュレータの有無を確認する方法は何種類かあり、これは新しい亜種から新たに実装されたものです。

この手法の一部として実行されるのは、特定の API(アプリケーションプログラミングインターフェース)に存在するコードのチェックです。たとえば、Trojan.Zbot は Kernel32.dll 内部で ReadFile API のコードをチェックします。

まず、ReadFile から OP コード(演算コード)を取得します。これは、実行する演算を指定するコードです。次に、取得した OP コードと、正規の Kernel32.dll の ReadFile に存在すると想定される内容を比較します。

想定される OP コードとして Trojan.Zbot が探すのは、8B、6A、55 です。

大部分の環境で、最も一般的に見られる OP コードは 6A です。この点は Windows 7 と Windows XP でも同様であり、Kernel32.dll のコードは次のように始まっています。

図 2. Windows 7 の正規 Kernel32.dll の ReadFile に現れる最初の OP コード

では、8B と 55 も必要なのは、なぜでしょうか。

Microsoft API のほとんどは、通常の PUSH EBP で始まる直接の導入部で始まり、この OP コードが 55 です。また、EDI は Microsoft からのホットパッチ用に予約されているコードですが、MOV EDI で始まる API も多く、この命令の OP コードが 8BFF です。Trojan.Zbot の作成者がここまで配慮しているのは、万一これらのチェックがすべて失敗した場合でもエミュレータを正確に検出するためでしょう。

Trojan.Zbot マルウェアの作成者が工夫をこらしているのは、1 つや 2 つの手口だけにとどまりません。そのほとんどの亜種には、以下の API や必須ファイル名の操作といった、検出をすり抜けるための手法が、単純なものから複雑なものまで、さまざまに駆使されています。

図 3. 操作される API とライブラリ名

検出をすり抜ける仕組みとして、この作成者は格納される "Kernel32" や "VirtualAlloc" などの文字列のスペルを故意に誤り、"hhernel32" や "hirtualAlloc" と綴っています。

後で、実際の Kernel32.dll から VirtualAlloc API のアドレスを取得する際にこれらの文字列が必要になるときには、メモリ内の文字列にパッチを適用してから正しい形で利用します。この動作を説明したのが、次の図です。

図 4. スペルミスのある "kernel32" と "VirtualAlloc" の文字列をメモリパッチによって訂正

つまり基本的に、"kernel32" と "VirtualAlloc" の文字列は使われる前に正しいスペルに戻されるということになります。

以上の手口も、変化し続けるマルウェア手法からすれば一部にすぎません。特に、ウイルス対策の検出をすり抜けるために膨大な時間をかけて新しい技術を模索しているその道のプロからすれば些細な違いです。もちろん、シマンテック製品では Trojan.Zbot もその手口も確実に検出されますので、ご安心ください。

エミュレーション対策の手法について詳しくは、『Journal in Computer Virology』に公開されている以下のホワイトペーパーをご覧ください。
Anoirel Issa, Journal in computer virology, 2012, 10.1007/s11416-012-0165-0(英語)

 

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

Statistics
0 Favorited
0 Views
0 Files
0 Shares
0 Downloads

Tags and Keywords

Related Entries and Links

No Related Resource entered.