マルウェア研究用データセットEMBER datasetの紹介

### マルウェアデータセット

マルウェア解析の研究においてマルウェアデータセットは有用です．マルウェアデータセットは主にマルウェアの研究のために作られたデータ集合です．マルウェアのプログラムやデータそのものを集めたデータセットもあれば，マルウェアの静的解析の結果や動的解析の結果を集めたデータセットもあります．

古くは [1998/1999 DARPA Intrusion Detection Evaluation Dataset](https://www.ll.mit.edu/r-d/datasets) が有名で，このデータセットを題材に，それこそ無数に論文が書かれました．最近では国内では [MWS Datasets](https://www.iwsec.org/mws/2019/about.html) が有名だと思います．海外では [Microsoft Malware Classification Challenge (BIG 2015)](https://www.kaggle.com/c/malware-classification) などがあります．このChallengeの論文は [https://arxiv.org/abs/1802.10135](https://arxiv.org/abs/1802.10135) から取れます．最近ではSophosが，2000万検体からなる驚きの規模のデータセット [SoReL-20M dataset](https://ai.sophos.com/2020/12/14/sophos-reversinglabs-sorel-20-million-sample-malware-dataset/) を公開しました．

データセットを用いて研究するメリットは多数あって，たとえば以下です．

- 自分でデータを揃える手間が省ける．
- ある程度の質と量と備えており，データの不備や偏りもチェック，考慮された上で公開されていることが多く，いわゆる「使えない」データは少ない．
- 実験結果を研究コミュニティの中で共有して比較，議論することにより，共通のデータによる研究のコラボレーションが促進される．

一方，マルウェアデータセットを用いるデメリットも多数あって，たとえば以下です．

- 実世界における傾向を忠実に反映しているデータであるかどうかはわからないし，時代遅れのデータである可能性もある．
- 多くの人が研究対象として使えるサイズや複雑度の，ある意味「ほどほどサイズ」のデータセットが多く，すごく大規模だったり複雑だったりするデータセットは少ない．
- データセットが自分のやりたい研究にとって適切な対象かどうかはわからない．

1つ目と2つ目のデメリットがある結果として，データセットのみによる評価を行った研究で世界のトップカンファレンスに論文を通すのはハードルがかなり高いと私は思います．

### EMBER Dataset

マルウェアの静的解析に関する研究を行う上で有用なデータセットの1つが EMBER dataset です．EMBER dataset は Github [https://github.com/elastic/ember](https://github.com/elastic/ember) で公開されています．EMBER datasetにはEMBER2017 datasetとEMBER2018 datasetの2つのバージョンがあります．ともにtar.gz形式のファイルであり，サイズはそれぞれ約1.63GB，約1.57GBです．作者らによるEMBER datasetについての論文 [1] もあります．

EMBER2018 datasetは約100万のPEフォーマット（Windowsプログラムの標準的なフォーマット）のファイルに対する静的解析の結果を集めたデータセットです．この種のデータセットでデータアイテム数100万はかなり大規模だと思います．PEファイルの解析結果として，たとえば以下の特徴が含まれています．

- ファイルサイズやPEヘッダから得られる基本的情報
- COFFヘッダやoptionalヘッダから得られる情報
- インポート関数
- エクスポート関数
- セクション情報
- バイトヒストグラム
- バイトエントロピーヒストグラム
- 文字列情報

私がよく使っていたのはEMBER2017 datasetですが，こちらは110万のデータアイテムからなり，内訳は以下の表に示すとおりです．

| 種類     | マルウェア | 良性ソフトウェア | ラベルなし | 和      |
|---------|-----------:|---------------:|----------:|--------:|
| 学習用   |    300000 |         300000 |     300000 | 900000 |
| テスト用 |    100000 |         100000 |          0 | 200000 |
| 和      |     400000 |         400000 |     300000 | 1100000 |

ありがたいことに，作者はEMBER datasetと共に，それを用いたマルウェア検知プログラムも配布してくれています．このプログラムを使うと，学習用のデータアイテムで機械学習を行い，与えられた特徴を持つプログラムファイルがマルウェアか良性ソフトウェアかを判定（推定）するためのモデルを構築してくれます．さらに，そのモデルを用いてテスト用データでそのモデルのマルウェア検出能力（マルウェアかどうかの判定の精度）を評価することができます．

このプログラムはscikit-learnライブラリを使ってLightGBMという機械学習アルゴリズムによってモデルを構築しており，まあまあいい精度を出しています．よって，これを越える精度のプログラムを自分で書くのはchallengingでおもしろい課題になります．機械学習のライブラリを使う練習としてこのデータセットを使うのもいいと思います．情報系学部の大学4年生が1, 2週間で取り組むくらいの課題としてちょうどいいデータ規模や難易度だと思います．

マルウェアデータセットはGoogleなどでWebを検索すると結構たくさん見つかります．特に，Googleが提供している「[Dataset Search（データセット検索）](https://datasetsearch.research.google.com/)」というサービスを使うと，自分の目的に合致するデータセットを効率的に探すことができます．

私も過去にEMBER datasetを題材に，マルウェア判定の精度と判定モデル構築速度のバランスを取るための特徴選択手法についての論文 [2] を書いたことがあります．私が使っていなかったEMBER2018 datasetが公開されているので，またいつかEMBER datasetで研究をしてみたいですね．

### 参考文献

[1] Hyrum S. Anderson, Phil Roth. EMBER: An Open Dataset for Training Static PE Malware Machine Learning Models. arXiv, https://arxiv.org/abs/1804.04637, 2018.
[2] Yoshihiro Oyama, Takumi Miyashita, Hirotaka Kokubo. [Identifying Useful Features for Malware Detection in the Ember Dataset](https://ieeexplore.ieee.org/document/8951564). Proceedings of the 6th International Workshop on Information and Communication Security (WICS 2019), in conjunction with the 7th International Symposium on Computing and Networking (CANDAR 2019), pp. 360-366, IEEE, Nov 2019.