SD_BOTの検体とウィルススキャン信者

ウィルスの検体を入手した。Trend Micro ServerProtectが検知したらしく、それによれば「SD_BOT.CD」とのこと。オンラインスキャンで検知したらしいが、マシンの挙動はすでにおかしいらしい。つまり、もう感染してしまっているようだ。

送ってもらった検体のファイル名は「73.scr」。スクリーンセーバーだ。スクリーンセーバーっていっても実体はただのEXEだ。つまり、「スクリーンセーバーが起動する」ということは、なにもスクリーンセーバー「プレイヤー」が「.scr」を実行しているわけではなく「.scr」自身が起動しているにすぎない。メールの添付とかダウンロードとかで「.scr」を入手したときに、EXEじゃないからといって、うっかり実行してしまってはいけない。このあたり、意外と知られていないのでは?

で、話を元に戻すと、実行形式である限りファイルの先頭にはお決まりのパターンがついているはずだ。たとえば「メモ帳」をバイナリエディタで開いてみると、MZ...PE...というお決まりのパターンが現れる。

MZシグニチャとPEヘッダ
http://codezine.jp/article/detail/412?p=1



でこの検体もプログラムである以上、このようなパターンが必ず含まれているはずだ。「73.scr」をバイナリエディタで開いてみた。



むむむ。PEヘッダなんかついていない。PACK(実行時圧縮)かけられているようなものともなんか違う。いままで、PACKされているプログラムを何回か覗いてみたが、少なくともPEヘッダは認識できた。まったく見たことがないパターンに見える。

これ、検体の送付ミスか?または、ServerProtectの仕業で無効化されているとか?
VIRUSTOTALにかけてみた。Trendのエンジンも然り、ぜんぜんヒットしないやんけ。1/39だって。Kasperskyも「Generic」としているだけで正体は分からないようだ。



もう一度、検体のバイナリパターンを見てみる。妙に「0xff」が多い。
EXEファイルとかってパディングが多い。特にPEヘッダはデータ幅を32ビット幅に揃えるためにパディングされている箇所が多いようだ。なので、「0x00」が連続して出現するのはよく見てきた。しかし、このファイルは「0xff」が連続している箇所が多い。ということはビットが反転されているのでは?ビット反転したEXEがそのまま動くとは思えないんだが........

まぁ、とりあえずビットを逆さにするプログラムをつくってこの検体を食わせてみた。以下が出力。たいぶ読めそうなパターンになった。



「MZ..PE..」のお決まりパターンも出現したが、何やらその前に「VSBF」なる文字から始まるヘッダっぽいものがついている。パスらしき文字列も出現している。これはなんだ?もう一度、VIRUSTOTALにかけてみた。結果は0/39。Kasperskyまでもヒットしなくなった。

どうも「VSBF〜」の正体が不明なので、このヘッダ部分をカットしてみよう。通常の「MZ..PE..」から始まるパターンにする。この部分をカットするプログラムをつくって食わせてみた。食わせてみたところ、突然、ローカルのAvastが反応した。おっと。



まぁ、実行したわけではないので、とりあえず、ここは何もせずにそのまま出力。で、もう一度、VIRUSTOTALにかけてみた。



来た来た。TrendのエンジンもSD_BOTだと言っている。Kasperskyに言わせるとこれは「EPProt」なるものでさらにPackされているらしい。ほんとに解析させないようにあの手この手だね。「EPProt」なるをアンパックする方法が見当たらないのでこれ以上の静的解析は無理か。

感染したマシンではファイルが置かれたときに検知したわけではなくオンメモリ上にロードされて初めて検知したと思われる。つまり、もう実行されてしまったわけだ。「オンラインスキャンで捕まえた」→「実行前だから安心」は成り立たないね。

そもそも、こんなあの手この手の難読化やPACKをかけれらたらシグニチャマッチングなんで土台無理。破たんは目に見えて明らか。今回のウィルスが感染した環境では未パッチ状態が長く続いていたらしい。ウィルススキャンが入っているから大丈夫だと。

ウィルススキャンの過信はほんとに禁物なんだ。これを分かっていない人がいまだに多すぎる。パッチをあてることで大部分のウィルスインシデントが防げるはず。パッチをあてることをまず考えずに安易にウィルススキャンに頼る。パッチコントロール運用なんて端っから検討されていないことが多いようだ。まず検討するだけでもいいので考えることを始めてみようよ。



それにしても、この73.scrについてふたつの疑問が残る。

1.ビット反転したEXEイメージは実行できるのか
2.ファイルの先頭にあった「VSBF」ヘッダはなんなのか

もしかしたら別の親プログラムがいるのかな?73.scrはこの親プログラムからロードされて実行されるなんてことも考えられそうだ。1についてはサンドボックスで実行してみればいいんだけどあいにく使える環境が手元にない。