SpyEye ボットの通信からの検出について

IIR Vol.13 の1.4.2節では SpyEye ボットの検出方法について、通信データからの観点と感染したホスト上からの観点で述べています。今回はこの通信データについてもう少し突っ込んで説明します。
SpyEye ボットは Collector デーモンと Web UI の2種類のサーバと通信を行います。Collector デーモンとの通信は圧縮処理や XOR エンコードなどが施されているので、検出を行うのは困難だと思われますが、Web UI との通信は、1.3.10では GET パラメータ、1.3.45では base64 でエンコードされた POST パラメータとして送信されるので、シグネチャを生成するのは容易です。たとえば GET パラメータとして送信された場合は、以下のようなデータになります。

個人的な意見ですが、この通信のみで SpyEye を検出するのはリスクがあると思います。理由は2つあります。
まず、この通信は customconnector という config.bin 内のプラグインによって行われる通信であるということです。プラグインによる通信は SpyEye の動作に必須ではないので、ボットのアップデートなどの制御を必要としないならば、Collector デーモンとの通信のみでシステムを構築することもできます。
もう1つの理由としては、Web UI との通信はいずれ検出が難しくなるのではないかという懸念があります。既に、1.3.48では XOR でエンコードして送信しているという情報もあります。今後のバージョンでは、単純なXORだけではない、より複雑なエンコード処理が施される可能性が高いと考えています。
よって、通信からの検出のみに頼らず、ホスト上から効率よく検出する手法についても検討すべきです。この手法については、また機会があれば書かせていただきたいと思います。