ラボでは毎日、何万もの疑わしいバイナリを扱っている。人間の研究者の比較的小さなグループが、このような量を取り扱える唯一の方法は、もちろんオートメーション化だ。我々のマルウェアサンプル管理システムにインポートされたサンプルはスキャンされ、分類され、仮想環境で実行される。記録が作成され、我々人間が分析する。
マルウェア作者は、アンチウイルスのベンダが最新の亜種のライフスパンを攻撃するため、オートメーション化と仮想化を使用する事を知っている。(それが、彼らが毎日多数の亜種を作成する理由だ。)量が多いことに加えて、多くのマルウェアの亜種は、我々のリサーチを妨げ、可能な限り長く検出されないようにするため、バーチャルマシン検出とアンチデバッギングコードも含んでいる。
時には、彼らのアンチデバッギングはあまりに攻撃的で、逆効果寸前ということもある。
先週、私はデバッガの存在を検出するため、複数のメソッドを使用しているZbot(別名ZeuS)の亜種を分析していた。デバッガが検出されると、ExitProcessが即座に呼びだし、悪意あるコードは実行されない。このアンチデバッグトリックは長らく知られているものだが、その一つには面白い副作用がある。
以下がアセンブリコードだ:

最初に、RDTSC(Read Time-Stamp Counter)インストラクションが実行される。タイムスタンプカウンタは、各クロックサイクル上で値が増加する。カウンタの高位の32ビットはEDXにロードされ、スタック上にプッシュされる。次に、2秒間実行を停止するSleep(0x7D0)が呼び出される。最後にRDTSCが再び実行され、好意の32ビットはスタックに保存された値と比較される。値が等しければ、すなわちRDTSCが実行される実行されるたびに、EDXが同じ値を受けとるなら、サンプルはデバッガが存在しているに違いないと判断する。これは、少なくとも2秒間に2^32クロックサイクルが起き、EDXの値が増加しなければならないという仮定に基づいている。
これは、サンプルはCPUが2GHz以上で動作すると想定していることを意味している。言い換えれば、2GHz以下のCPUでは、サンプルはデバッグされているかのように振る舞い、実行を中止し、システムに感染しないということだ。私はこのサンプルをIBM T42(1.86GHz)ノート上でテストしたが、同システムはスピードが遅かったため、感染を避けることができた。
Zbotのアンチデバッギング防御のもう一つ別の面白い副作用は、同サンプルが感染させることの出来るどんなコンピュータも、ボットの高価なコレクションに終わるということだ。もしかしたら、Zbotをばらまいている連中には、特異な趣味があるのだろうか?
この記事はレスポンスチームのTimoによる。
マルウェア作者は、アンチウイルスのベンダが最新の亜種のライフスパンを攻撃するため、オートメーション化と仮想化を使用する事を知っている。(それが、彼らが毎日多数の亜種を作成する理由だ。)量が多いことに加えて、多くのマルウェアの亜種は、我々のリサーチを妨げ、可能な限り長く検出されないようにするため、バーチャルマシン検出とアンチデバッギングコードも含んでいる。
時には、彼らのアンチデバッギングはあまりに攻撃的で、逆効果寸前ということもある。
先週、私はデバッガの存在を検出するため、複数のメソッドを使用しているZbot(別名ZeuS)の亜種を分析していた。デバッガが検出されると、ExitProcessが即座に呼びだし、悪意あるコードは実行されない。このアンチデバッグトリックは長らく知られているものだが、その一つには面白い副作用がある。
以下がアセンブリコードだ:

最初に、RDTSC(Read Time-Stamp Counter)インストラクションが実行される。タイムスタンプカウンタは、各クロックサイクル上で値が増加する。カウンタの高位の32ビットはEDXにロードされ、スタック上にプッシュされる。次に、2秒間実行を停止するSleep(0x7D0)が呼び出される。最後にRDTSCが再び実行され、好意の32ビットはスタックに保存された値と比較される。値が等しければ、すなわちRDTSCが実行される実行されるたびに、EDXが同じ値を受けとるなら、サンプルはデバッガが存在しているに違いないと判断する。これは、少なくとも2秒間に2^32クロックサイクルが起き、EDXの値が増加しなければならないという仮定に基づいている。
これは、サンプルはCPUが2GHz以上で動作すると想定していることを意味している。言い換えれば、2GHz以下のCPUでは、サンプルはデバッグされているかのように振る舞い、実行を中止し、システムに感染しないということだ。私はこのサンプルをIBM T42(1.86GHz)ノート上でテストしたが、同システムはスピードが遅かったため、感染を避けることができた。
Zbotのアンチデバッギング防御のもう一つ別の面白い副作用は、同サンプルが感染させることの出来るどんなコンピュータも、ボットの高価なコレクションに終わるということだ。もしかしたら、Zbotをばらまいている連中には、特異な趣味があるのだろうか?
この記事はレスポンスチームのTimoによる。