ブログ

FFRI BLOG

2013-03-07 FFRI-Tech-Meeting #5-3 「データマイニングで分かること」

プロダクト開発第二部の愛甲です。


みなさんはマルウェア解析と聞いて何を思い浮かべるでしょうか。逆アセンブラ、デバッガ、バイナリエディタといった解析ツールでしょうか。それともProcess Monitor、Process Explorerといった監視ツールでしょうか。

与えられたマルウェアを解析しそのレポートを作成することが目的ならば、これらのツールは大いに役立つでしょう。しかし、マルウェア検知エンジンを作成するために必要なものは、このようなデバッギング技術ではなくデータマイニングの技術です。弊社では両方の業務を行っているため、どちらの技術も必要なのですが、今回の勉強会では後者、すなわちデータマイニングに関する技術について話しました。


おそらくすべてのアンチウイルスベンダーはマルウェアの自動解析システムを運用しているかと思われます。内部でVMを立ち上げ、VM上でマルウェアを実行し、その動作ログを簡単なレポートとして出力するといったものです。1日数万件のマルウェアを人間であるエンジニアが捌くことは不可能ですので、作業の大半を解析システムに頼ることになります。解析システムはソフトウェアの様々な動作(例えばファイル、レジストリ、ネットワークアクセスといったもの)を監視し、それらの時系列データをログに出力します。ログを参考にすることでマルウェア解析をより簡易化できるわけですが、これをさらに進めて、大量の解析ログからマルウェアかどうかの判定を自動で行う検知エンジンを作りたいと考えます。これがヒューリスティック検知エンジンの基本的な仕組みとなるものです。


cuckooオープンソースのマルウェア自動解析ツール


自動解析システムが出力するレポートサイズはマルウェアによって様々なのですが、検体に対して平均100KB前後には抑えたいです。100KBとすると10000検体で1GBのレポートです。

ここでデータマイニング技術を使います。毎日生成されるGB単位の解析レポートから共通する特徴を見つけ出します。例えば(本当に例えばですが)TEMPフォルダ以下に実行ファイルを生成しており、かつ、レジストリのRunキーに書き込みを行っているならxx%の確率でマルウェアである、といったような統計的事実を算出することです。


マルウェアは基本的にファイル、もしくは特定プロセスに影響を与えるものが大半なのでその特徴を抽出することはさほど難しくありません。ただ、似たような動作をする一般的なプログラム(正常系)があれば誤検知(False Positive)してしまいます。誤検知問題はアンチウイルスの永遠の課題であるように思えます。誤検知を防ぐためには正常系プログラムの解析レポートも必要になりますが、正常系はマルウェアと違い共通したシンプルな特徴がなかったり、そもそもバランスよく収集することが困難だったりと解決すべき問題は多々あります。


課題はあれどもデータマイニング、機械学習の技術はセキュリティの分野でも徐々に使われ始めているようです。Java仕様脆弱性の話もそうですが、セキュリティエンジニアには今後より新しいスキルセットが求められているのかもしれません。




pagetop