まず、マルウェアを対象としたバイナリーコード解析の性能向上を図った。複雑なプログラムの場合に、解析の速度と精度の両面で問題が生じたため、この原因を調査したところ、複数箇所から呼び出される関数等の文脈依存共有コード解析の処理に起因することが判明した。当初の手法では、こうした共有コード部分に相当する制御フローは呼び出しごとにコピーしていたが、入れ子構造で呼び出される場合にコピーすべき範囲を特定できない場合が生じていた。これは、事前に関数などのコード範囲を確定することができないマルウェアのバイナリ解析固有の問題であって、これまでに知られた解析手法を適用することができないため、新たな解析手法を確立する必要が生じた。この点に関し、解析に用いられる静的単一代入形式を拡張し、文脈に応じて複数の値を持つような飛び先データについて、その呼び出し文脈を指定する疑似関数を導入する手法を考案し、値の解析アルゴリズムを実装した。考案した手法は一般的なものであり、従来の静的プログラム解析の手法を拡張する意義深い結果を得ることができた。この解析手法を適用したところ、複雑なマルウェアのプログラムであっても制御フローの精度を低下させることなく解析できることが確認できた。ただし、複雑な構造を持つプログラムについては、解析に時間がかかることは避けられなかった。これは問題に固有の現象であり、計算を近似するなどの措置が必要だと思われる。攻撃パターンの推定に関しては、二次攻撃プログラム投入、アンチウィルス機能の無力化、システム常駐、ボットネットワーク活動、外部記憶デバイス感染、などの十数個のパターンの分類と定義を行った。この定義をもとに進化パターンの推定を行う実験を行っているが、処理効率の問題と時間上の制約からまだ明確なパターンの同定には至っていない。大量サンプルを用いたパターン同定は今後の課題として残っている。
|