自動化されたマルウェア動的解析システムで収集した大量 API コールログの分析
藤野 朗稚 †

森 達哉 †† 早稲田大学
169-8555 東京都新宿区大久保 3-4-1{fujino,mori}@nsl.cs.waseda.ac.jp
あらまし 本研究は自動化されたマルウェア動的解析システムが出力する大量の API コールを機械学習のフ
レームワークを用いて分析し，マルウェアの分類と特徴抽出を試みる．約 2,600 個のマルウェア検体の API
コールデータに本研究で提示する一連の前処理を施した後，クラスタ分析を行った．この結果，Adware，

Backdoor，および Trojan の一部は他と明確に異なる特徴を有すること，および残りの Trojan と Wormについてはファミリー間の区別がつきにくいことが判明した．後者に関しては共通の特徴を有するファミリー群の存在が確認できた．また非負値行列因子分解によるクラスタ分析の結果を用いて，特定のマルウェ
アファミリーに共通する API コールの組み合わせをトピックとして自動抽出できること，およびトピックを利用して類似検体を検索可能であることを示す．

Analysis of massive amount of API call logs collected fromautomated dynamic malware analysis systems
Akinori Fujino†

Tatsuya Mori††School of Fundamental Science and Engineering, Waseda University
3-4-1 Okubo, Shinjuku-ku, Tokyo 169-8555, JAPAN{fujino,mori}@nsl.cs.waseda.ac.jp

Abstract This work aims to classify malware samples and extract intrinsic characteristics from them,using machine-learning approach. For this, we build a novel data preprocessing scheme for API calllogs. We then employ clustering analysis to Win32 API call logs that were collected from automateddynamic malware analysis system. We found that malware samples labeled as Backdoor, Adware, andsome Trojan ones were successfully classified while the rest of samples such as Worm and other Trojan
oens were not. We also found that the latter samples exhibit common characteristics in terms of API
calls; i.e., they are likely using similar high-level functions. We also found the “topics” extracted throughthe non-negative matrix factorization technique can be used to find new malware samples that exhibit
similar characteristics.

1

はじめに

を回避するために様々な難読化が施されるため，静的解析のみでは対処できないケースが存在する．こマルウェアの脅威を防ぐ対策として行われるマルの問題を解決するひとつの手段は限りなく実際の感

ウェア解析は静的解析と動的解析に大別される．静染者の環境と近い状況でマルウェアを動作させ，そ的解析はより深くマルウェアの挙動や手口を解析すの結果を解析すること–すなわち動的解析を実施す

ることを目的として行われるが，マルウェアは解析ることである．

一方，マルウェアは日々驚くべき速度で大量生産と明確に異なる特徴を有すること，および残りのされている．Kaspersky Lab の調査では 2012 年末

Trojan と Worm についてはファミリー間の区別

時点において毎日 20 万種類のマルウェアが検出さがつきにくいことが判明した．

ウェアの大量生産体制に抗するべく，動的解析を自• 互いに区別がつきにくいファミリー群が共通の特徴を有することを明らかにした．

動化する技術の進展がめざましい [2]．本研究で利用• マルウェアファミリーに特有な API コールの組

するデータセットを収集するために使われたオープ

み合わせをトピックとして自動抽出可能なこと，

ンソースソフトウェアである Cuckoo Sandbox [3]およびトピックの応用例として類似検体の検索事れていることが報告されている [1]．そのようなマルはその一例であり，マルウェア解析における一連の例を示した．

データ解析と記録をすべて自動化する．具体的には

本論文の構成は以下の通りである．はじめに 2 章

PE フォーマット形式ファイルの簡易な静的解析結果の出力，仮想マシン上での実行時の API コールのではデータセットの概要，およびデータの前処理と詳細な記録，プロセス情報，アクセスファイル，レの具体的な方法を述べる．つづいで 3 では k-means

ジストリ，ファイルハッシュ値，ネットワーク通信

法と NMF の概要を簡潔に紹介する． 4 章でクラの記録等を自動化している．

スタリング結果を述べた後， 5 章にて本論文のまと上記のような自動化された解析技術を大量に生産してスクリーニング，特徴ベクトル生成，特徴選択

めと今後の展望を述べる．

されるマルウェアに適用すると解析システムが出力するログデータも大量となる．したがって大規模な分析データと前処理

2

ログデータから有効な対策につながる規則性を導くことが次の課題となった．本論文はそのような背景にもとづき，マルウェアの動的解析で得られる情報の中でも特に量が膨大となる API コールログのク

本章では，分析に利用するデータの詳細と，クラスタ分析にかけるための前処理の手順を示す．

2.1

データの概要ラスタ分析を行う．API コールは情報量が膨大であるだけでなく，マルウェア解析上重要な指標である

本研究では MWS 2013 の研究用データセット [7]ことが報告されている [4, 5, 6]．また，大量に収集の一部として FFRI 社が提供している FFRI Dataset

される検体を自動的にクラスタ分類できれば，次の2013 [8] を用いる．以下に FFRI Dataset の主な特アクションを決定するための 1 次フィルターとして徴を記す． FFRI Dataset は 2012 年 9 月から 2013

活用できると期待される．

年 3 月にかけて様々なチャネルで収集されたマルウェ

本研究では約 2,600 のマルウェア検体に対して

ア検体の内，PE 形式かつ実行可能な 2,644 検体を

Cuckoo Sandbox を適用して収集したログを分析対象にする．ログから Win32 API の関数名と引数の情報を用いて特徴ベクトルを作成し，k-means 法

ログファイルは JSON 形式であり，圧縮前のログ

および非負値行列因子分解 (NMF) を用いたクラス

約 4300 万行のデータである．Cuckoo Sandbox に

タ分析を行う．これらのクラスタリングアルゴリズ

よる 1 検体当りの実行時間は 90 秒であった．

ムはそれぞれデータは必ず単一のクラスタに属する
ハードクラスタリング (k-means) と，データが複数

Cuckoo Sandbox と VirusTotal [9] との連携機能
により，各検体には最大で 66 種類のアンチウィルスのクラスタに属することを許容するソフトクラスタ

ソフトウェアによる検査結果がついている．本研究リング (NMF) を実現する手法である．

は後述する方法によって VirusTotal の検査結果を

Cuckoo Sandbox を用いて動的解析したログである．
ファイルは合計 1.7 GB であり，テキストとしては

本研究の主要な貢献は下記のとおりである．

用いて各検体にマルウェア種別を示すラベルをつけ• 大量の Win32 API コールログを機械学習のフる．ラベル付きのマルウェアを分析することによっ

レームワークで分析するためのデータ前処理方法て，API コールの情報がマルウェアの自動分類や識を詳細に提示した．

別に有効であるかを経験的なアプローチによって明• マルウェア検体を分類する上で API の関数名だけでなく，引数値が重要であることを明らかにした．

• Adware，Backdoor，および Trojan の一部は他らかにすることを狙いとする．

2.2

データの前処理

表 1: Kaspersky の検知結果 (Top 10)．
マルウェア名

本節では API コールをクラスタ分析するために

HEUR:Trojan.Win32.GenericWorm.Win32.WBNA
Trojan.Win32.Jorik.Vobfus
Worm.Win32.Vobfus
Trojan-PSW.Win32.Tepfer
Trojan-Spy.Win32.Zbot
Trojan.Win32.SelfDel
Trojan.Win32.Agent
HEUR:AdWare.Win32.iBryte.heur
Worm.Win32.VBNA
合計

必要なデータの前処理方法を詳細に示す，はじめにラベル付きのマルウェアを各ラベル毎に偏りなくランダム抽出するデータスクリーニングの手順を説明する．次に選択されたマルウェアに対して API コー
ルを「単語」に変換し，出現単語集合にもとづいて
特徴ベクトルを作成する方法を示す，最後に単語の出現頻度にもとづく特徴選択方法を示す．

2.2.1

データスクリーニング

前述したように Cuckoo Sandbox のログは最大で66 種のアンチウィルスソフトウェアの検出結果を含む．本研究ではその内最も検知率が高かった Kaspersky [10] の検知結果を利用してラベルを作成する．以下ではデータスクリーニングをした上でラベルを作成する手順を述べる．

検知数

547
275
110
84
55
43
43
37
36
36
2021

表 2: スクリーニング後の分析対象マルウェア種別．
括弧内数字はラベル ID．
(1) B.Azbreg, (2) B.Buteraft, (3) B.Shiz, (4) B.Simda,(5) T-Do.Agent, (6) T-Dr.Dorifel, (7) T-Dr.VB,(8) T-PSW.Tepfer, (9) T-Spy.Zbot, (10) T.Agent,(11) T.Diple, (12) T.Jorik.Vobfus, (13) T.Midhos,(14) T.SelfDel, (15) T.Skillis, (16) T.VB,(17) T.VBKrypt, (18) T.Vobfus, (19) T.Yakes,(20) DangerousObject.Multi.Generic,(21) W.AutoRun, (22) W.VBNA, (23) W.Vobfus, (24) W.WBNA,(25) A.Gamevance, (26) A.iBryte, (27) A.iBryte.heur

文献 [11] の記載によると Kaspersky によるマルウェア命名則は下に示す通りである．

ることがわかる．前述したようにこの検体の実体は[Prefix:]Behaviour.Platform.Name[.Variant]Prefix が HEUR であり，かつ Name が Generic で

Prefix と Variant はオプションであり，それあるため明確ではない．本研究の目的は素性が明確

ぞれ検体を検出したサブシステム，および検体のなマルウェアを対象にすることでクラスタ分析が有亜種を示す．Prefix が HEUR である検体はなんら効に働くことを示すことであるので，以下ではこれ

かのヒューリスティックにより検知したケースであらの検体を分析対象から除外する．

るため，一般にその素性は明確でない．Behaviour

さらに各マルウェア種別毎のサンプル数を平滑化

は検体の動作を示し，Viruses，Worms，Trojans，することで特に数が多いクラスのオブジェクトがク

Malicious Tools，Adware，Riskware，Pornware

ラスタリングアルゴリズムに与えるバイアスを排除などがある．Platform は OS 種別であり，Win32，

する．また，各マルウェア種別の特徴を統計的に捉Linux，multi などがある．Name は検体の公式なえるために必要な検体数の下限値を設定する．具体

ファミリー名である．

的には最低 10 個の検体が属するマルウェア種別を

Kaspersky の検知結果では 1,051 種類のユニーク

選別し，それぞれの種別毎に 10 個の検体を無作為なマルウェア種別を得た．すなわち各マルウェア種抽出した．この結果，表 2 に示す 27 のマルウェア

別に属する検体数は平均して 2 から 3 程度である．

種別について，それぞれ 10 個の検体を得た．本研

上記は亜種を区別した場合であるが，亜種を集約す

究では以降，27 のマルウェア種別をラベルとしてることでマルウェア種別を 277 種類にまで減らすこ用い，合計で 270 個のマルウェア検体を分析の対象とが出来る．種別を減らすことで，種別ごとのサンする．なお紙面の節約のため，下記のような省略を

プル数を増やす効果が期待できるため，以下の分析

した．Backdoor → B，Trojan → T，Downloader

では亜種を区別しない．なお，ここでは亜種は同様→ Do，Dropper → D，Worm → W，Adware → A，の API コールを持つと暗黙に仮定しているが，後Downloader → Do，Dropper → Dr．platform がWin32 の場合は省略．

に見るように同一種別であっても API コールの特徴に差異が生じるケースは存在する．
表 1 に Kaspersky のマルウェア検出結果の一2.2.2

特徴ベクトルの作成部を示す．表より検出されたマルウェアの約 25%

つぎに API コールから特徴ベクトルを作成する

が HEUR:Trojan.Win32.Generic に分類されてい手順を示す．図 1 は単一の API コールを記録した

表 3: 単語の作成レベルの定義と具体例．
レベル

定義

具体例

Level 0Level 1
Level 2
Level 3api
api:n1:n2:. . .
api:n1:m(v1):n2:m(v2):. . .
api:n1:v1:n2:v2:. . .

"LdrGetDllHandle""LdrGetDllHandle":"FileName":"ModuleHandle""LdrGetDllHandle":"FileName":"C:\\WINDOWS\\system32\\rpcss.dll":"ModuleHandle":MASK"LdrGetDllHandle":"FileName":"C:\\WINDOWS\\system32\\rpcss.dll":"ModuleHandle":0x00000000"category": "system","status": "FAILURE","return": "0xc0000135","timestamp": "2013-02-28 12:03:55,656","thread_id": "432","repeated": 1,"api": "LdrGetDllHandle","arguments":[{"name": "FileName","value": "C:\\WINDOWS\\system32\\rpcss.dll"},{"name": "ModuleHandle","value": "0x00000000"}]

図 1: API コールログの例．
ログの抜粋である (紙面の都合上実際の JSON を変形した)．図中の api，arguments はそれぞれ APIの関数名と引数である．arguments は更に引数名

name と値 value を含む．本研究ではこれら 3 つの変数を用いて各 API コールを「単語」に変換する．
なお，他にも API コール が持つ特徴的な情報として戻り値やスレッド ID があるが，分析が煩雑になるため今回は対象から外している．これらの効果に関する分析は残課題とする．
単語の変換方法を，情報量のレベルによって表 3に示すような 4 パターンに分類した．表中の n, v
はそれぞれ name, value の略である．また Level

2 の m() は値が 16 進数の数値であるときにマスクをかける関数であり，メモリアドレス等の差異を考慮しない効果を期待している．Level 0 は API 関数
名のみで単語を生成する方式であるが，予想されるようにこの方式は情報量が少ない．
各検体に含まれるすべての API コールから単語を抽出し，それらの単語集合を Bag-of-Words (BoW)
モデルで表現することで特徴ベクトルを作成する．具
体的には 270 個の検体のログデータから抽出した単語集合を W = {w1 , w2 , . . . , wm } とし，i 番 目の検体の特徴ベクトルを Xi = {θ(w1 ), θ(w2 ), . . . , θ(wm )}と定義する．ここに θ(w) は検体が単語 w を含む時に 1 ，含まない時に 0 となる関数である．すなわち単語の出現有無によって特徴ベクトルを構成する．
自然言語処理の分野では単なる単語の有無ではな
く，TF-IDF 等を用いて単語に重み付けをする手法が用いられるが，TF および TF-IDF のいくつかのバリアントを試行した結果，単語の有無で特徴ベク
トルを構成した上で次節に示す特徴選択を行う方式
が経験的に最も有効であったので，本研究では単語有無による特徴ベクトルを採用した．

2.2.3

特徴選択

以上で示した手順にしたがってスクリーニング，特徴ベクトル作成を行った後，クラスタ分析が有効に働くような特徴選択を行う．基本的な考え方は分類に貢献しない単語を除外することであり，以下の 2 つの方法を用いる．第一の方法は大多数のラベルに共通して出現する単語は分類には寄与しないとみなし，出現頻度が高い単語を除去する．これを高頻度フィルターと呼ぶことにする．具体的には 0 < H ≤ 1を満たす閾値 H を用い，ある単語が出現したマル
ウェアサンプル数の割合が全体の H 以上であったら除外する．この手法は DF-thresholding として知られるものであり，テキスト分類タスクにおける単語選択などで使われる [12]．第二の方法は出現頻度が極端に低い単語を除去することであり，これを低頻度フィルターと呼ぶことにする．具体的には閾値をL = 1, 2, . . . とし，ある単語が出現したマルウェア
サンプル数が L 未満のとき，その単語を除外する．
図 2，3 は特徴選択をした結果をサイズ I × J の
行列 X で表現したものである．行列の要素が 1 を
黒，0 を白でプロットしている．行は単語を出現順にソートしたものであり，単語生成レベルによってそのサイズ I は異なる．列は個々のマルウェア検体を示し，ラベル順にソートされている．データスク
リーニングの結果，J = 270 である．
図の基本的な見方として，同一のラベルを持つ 10個のマルウェア検体の集合（薄い線の矩形で囲まれた部分）に属する単語が矩形内で水平方向に連続して出現しており，かつそれらの単語が他のラベルには出現しないときに分類精度が高くなる．つまり他のラベルには登場しない黒いマス目 (ただしバーコードのような細いマス目もある) のみを持つラベルは他とは明確に弁別されると期待できる．このように

図 2: 単語生成レベルと高頻度フィルターによる特徴ベクトルの差異．

ラベル付きの特徴ベクトルを行列として表現することにより，データの特徴やクラスタ分析の成否を大雑把にとらえることができる．
図 2 は L = 2 と固定した時に，単語生成レベルと高頻度フィルターの閾値を H = 0.9, 0.1 と変化させたときの行列を示す．はじめにレベル 0,1 とレベル

2, 3 はそれぞれ類似していることがわかる．また，レベルが 1 から 2 にあがるに伴い，生成される単語数が飛躍的に拡大することがわかる．レベル 0,1
については部分的に分類がうまくいくと考えられる箇所があるものの，全般的に単語が複数のラベルにまたがるか，単語がほとんど存在しないラベルが出てきてしまい，分類はあまりうまくいかないことが定性的にわかる．すなわち，API コールにおいては引数の値が重要な役割を果たすことが示された．一方，レベル 2, 3 はレベル 0,1 と比較して分類がうま
くいきそうなことがみてとれる．高頻度フィルターの効果に関しては，閾値を H = 0.9 から H = 0.1に変更することで複数ラベルに共通する単語を削除する効果がでるため，結果として分類がシャープになる効果が認められる．その他の H についても同様の方法で調査したが，紙面の都合で割愛し，以降では経験的に決めた H = 0.1 を採用する．
図 3 は H = 0.1 と固定した時に，単語生成レベ
ル 2, 3 と低頻度フィルターの閾値を L = 2, 5, 10 と変化させたときの行列を示す．L = 2 の場合はよ

図 3: 単語生成レベルと低頻度フィルターによる特徴ベクトルの差異．

り多くの単語を拾うためラベルと無関係な点が多数あるが，L を増加させることにより，それらの「ゴミ」を除去する効果が出る．また今回のデータはラベル毎に 10 個の検体があるため，理想的な単語はある特定のラベルにのみ 10 個存在する．実際には同一ラベルには亜種が含まれているため，かならずしも 10 個すべてが同じ単語を持たないケースもあり，

L = 10 とするとそのようなケースを見逃してしまうことになる．本研究では両者の中間的な値としてL = 5 を採用する．単語レベルの差異はこの図からのみでは甲乙をつけがたいが，経験的に Level 3 の方が良い結果を与えたため，次章の分析では Level
3 を採用する．

3

クラスタリングアルゴリズム

本研究ではハードクラスタリング手法である kmeans およびソフトクラスタリング手法である NMF

図 4: クラスタ分析対象の特徴ベクトル行列 X

を用いてクラスタ分析を行う．以下ではそれぞれのアルゴリズムの概要を簡潔に述べる

k-meansk-means は与えられたデータを距離の近さにもとづいて k 個のクラスタに割り当てるアル
ゴリズムである．アルゴリズムの動作は以下の通り
である．はじめにランダムな重心を与え，各データとの距離 (例えばユークリッド距離やコサイン類似度など) を計算し，データと最も近いクラスタをそのデータの属するクラスタとする．その後，各クラする．距離関数は下記の更新式を繰り返すことによって最小化される． ただし xc
ij は行列 T の i 番目の行と行列 V の j 番目の列の内積である．
∑ xij
∑ xij
j x
i x
bij vkjb tik
tik ← tik ∑, vkj ← vkj ∑ ij .
j vkj
i tik

(1)

クラスタ分析

4

スタの重心を更新し，新たな重心と各データの距離

本章ではクラスタ分析の結果を示す．クラスタリを計算し，属するクラスタを更新する．この操作をング結果の評価には様々な手法を適用できるが，本収束するまで繰り返す．

研究では個々のラベルの分類結果を直感的に解釈可

NMF 非負値行列因子分解 (NMF) は非負値からなる行列を分解するアルゴリズムであり，画像認識，能なクロス表を採用する．いずれのアルゴリズムも

音響信号処理，文書データの分類，ネットワーク監

験的に決めた値 K = 20 を利用する．図 4 にクラ視データの分析等の応用に利用されている [13, 14]．

スタ分析対象の特徴ベクトル行列を可視化した図を前章で導入したように各マルウェア検体の特徴ベク示す．前述したように，単語レベルを 3，DF 閾値を

トル集合が I × J の非負値行列 X で表現されていL = 5，H = 0.1 とした．

クラスタ数 K を設定する必要があるが，今回は経るとする．NMF は X を I × K 非負値行列 T と

K × J 非負値行列 V の積に分解するアルゴリズムである．K は基底の数であり，文書分類の場合はトピック数と解釈される．一般にはクラスタ数に相当するものであり，アルゴリズムの利用者がデータに合わせて適切に設定する量である．

4.1

k-means によるクラスタ分析

図 4 の行列に対応する特徴ベクトル集合に k-means を適用した結果を図 5 に示す．k-means ア
ルゴリズムにおける更新式の反復回数は最大 30 回とし，30 の異なる初期値によるクラスタリング結果

NMF のアルゴリズムは X と TV の距離 D(X, TV)の内，もっともクラスタ内距離総和が最小となる結を最小化する．距離関数はいくつかの選択肢がある
果を採用した．
が，本研究では Kullback-Libler divergence を適用

図 5: k-means のクロス表．
図より，Backdoor 4 種は全般的にきれいにクラスタに分離していることがみてとれる．また，Ad-

ware.iBryte 2 種は片方が 2 つのクラスタに分かれてしまっているが，概ね他のファミリーと独立したクラスタに分類された．Trojan については Tepfer,
Zbot, Midhos がそれぞれ独立したクラスタに分類されている．その他，Worm 系全般を含む Vobfus,
VB, VBNA, WBNA に関してはファミリー毎の明確なクラスタは存在せず，特定のクラスタ (ID=1,3,14)のいずれかに集中していることがみてとれる．一方，
これらのファミリー名をもつマルウェア検体は亜種
によっては相互に別のファミリー名で検知されることが報告されている [15]．したがってクラスタ分析

図 6: NMF による行列因子分解の例．行列 T (上)の結果，単純に検知結果のファミリー名では判別でおよび行列 V (下)．

きない内部動作の潜在的な類似性を抽出することができたと解釈できる．
る考えられる．API コールの類似性は同様の上位関

4.2

NMF によるクラスタ分析

図 4 の行列に対応する特徴ベクトル集合に NMFを適用した結果を図 6 に示す．NMF アルゴリズムにおける更新式の反復回数は 50 回とした．特に行列V は各々の検体がどの基底 (クラスタ) の線形和として表現されるかを示すものであり，クラスタ分析数の存在が示唆される．そのような仮説を検証するアプローチとして行列 T を参照し，当該クラスタに対応する API コールを抽出して調査する方法が考えられる．これは今後の課題としたい．

4.3

NMF によるトピック抽出と応用の結果に対応する．クラスタ分析の結果は k-means

図 6 で示した行列 T は同時生起しやすい単語をと概ね同様の結果を得た．すなわち，Backdoor 4 種「トピック」として抽出したものと解釈できる．トピッと Adware.iBryte 2 種，Trojan の一部 (Zbot, Mid-クを構成する単語に対応する API コールはそれぞれ

hos, Yakes) はきれいにクラスタに分離しているこのマルウェア種別の特徴を代表するものであるため，と，および Worm 系全般を含む Vobfus, VB, VBNA,

類似の検体を検索することに使えることが期待でき

WBNA に関してはファミリー毎の明確なクラスタ

る．表 4 はクラスタ番号 4 の Trojan.Win32.Midhosは存在せず，特定のクラスタ (ID=6,18) のいずれかに関して行列要素の数値が高い単語上位 5 個をトピッに集中していることから，相互に類似性を有していクとして抽出した結果である．以下では API 関数と

表 4: Trojan.Win32.Midhos のトピック単語抽出結果 (Top 5)．
"RegOpenKeyExW":"Registry":"0x80000002":"SubKey":"Software\Microsoft\COM3":"Handle":"0x000000f4""LdrGetProcedureAddress":"ModuleHandle":"0x77cf0000":"FunctionName":"CallNextHookEx":"Ordinal":"0""NtCreateSection":"SectionHandle":"0x00000070":"DesiredAccess":"0x00000004":"ObjectAttributes:":"FileHandle":"0x0000006c""LdrLoadDll":"Flags":"522168":"FileName":"uxtheme.dll":"BaseAddress":"0x58730000""LdrLoadDll":"Flags":"522348":"FileName":"C:\WINDOWS\system32\uxtheme.dll":"BaseAddress":"0x58730000"

引数値が持つ意味に関する詳細な分析は行わず，この課題としたい．また API コールの時空間データの情報によって未知の検体を検知できることを示す

構造を考慮したモデルの拡張，分類結果に基づくマ

簡易な実験を行った結果を示す．

ルウェア検知技術の検討は今後の課題である．

表 4 に示す 5 つのトピック単語すべてを API
コールとして利用した検体をスクリーニング前の全データから抽出したところ，15 検体が該当し，この内，10 検体はスクリーニング後に利用した検体であった．新たに発見された 5 検体の内訳はいずれもHEUR:Trojan.Win32.Generic であった (つまりス
クリーニング後の検体数が閾値の 10 とたまたま一致していた)．これら 5 検体について他のアンチウィ
ルスソフトウェアの検知結果を調べたところ，4 検
体が Midhos ファミリーと検知されていた．さらに残りの 1 検体については Medfos ファミリーと検知されており，Medfos は Midhos ファミリーとして検知される場合がある [16]．以上のように NMF で抽出したトピック単語を利用して類似した特徴を持
つ検体を検索可能であることを示した．

5

まとめ
本研究では自動化されたマルウェア動的解析シス

テムから出力される大量の API コールを機械学習のフレームワークを用いて分析するための前処理方法を提示した．API コールを単語に変換し，BoW

謝辞
貴重なデータセットを研究コミュニティに貢献頂いた株式会
社 FFRI の諸氏に感謝します．また，NMF の適用に関して有用なアドバイスを頂いた NTT 研究所の木村達明氏に感謝します．

参考文献[1] Kaspersky Lab, “2012 by the numbers: Kaspersky Lab
now detects 200,000 new malicious programs every day.”http://www.kaspersky.com/about/news/virus/2012/2012_by_the_numbers_Kaspersky_Lab_now_detects_200000_new_
malicious_programs_every_day.
[2] M. Egele, T. Scholte, E. Kirda, and C. Kruegel, “A survey
on automated dynamic malware-analysis techniques andtools,” ACM Comput. Surv., vol. 44, pp. 6:1–6:42, Mar.
2008.
[3] “Cuckoo Sandbox.” http://www.cuckoosandbox.org.
[4] C. Willems, T. Holz, and F. Freiling, “Toward automateddynamic malware analysis using cwsandbox,” Security &Privacy, IEEE, vol. 5, no. 2, pp. 32–39, 2007.
[5] U. Bayer, P. M. Comparetti, C. Hlauschek, C. Krgel, andE. Kirda, “Scalable, behavior-based malware clustering.,”
in NDSS, The Internet Society, 2009.
[6] M. Alazab, S. Venkataraman, and P. Watters, “Towards
Understanding Malware Behaviour by the Extraction of
API Calls,” in Cybercrime and Trustworthy Computing
Workshop (CTC), 2010 Second, pp. 52–59, 2010.
[7] 神薗雅紀他, “マルウェア対策のための研究用データセット 〜MWS
Datasets 2013〜.” MWS 2013 http://www.iwsec.org/mws/
2013/, Oct 2013.
[8] “FFRI Dataset 2013.” http://www.iwsec.org/mws/2013/
files/FFRI_Dataset_2013.pdf.

モデルで表現するアプローチは考えうる最も単純な[9] “VirusTotal.” http://www.virustotal.com.

方式であり，さらに高度なアプローチのベースライ[10] “Kaspersky.” http://www.kaspersky.com.

ンを与えるものである．前処理したデータに対して[11] SECURELIST, “Rules for naming detected objects.”
http://www.securelist.com/en/threats/detect?chapter=136.

k-means および NMF を用いてクラスタ分析を行った結果，API コールで分類可能なマルウェア種別とそうでない種別が存在すること，および類似していると考えられる複数のマルウェアファミリーに共通する潜在的特徴の存在が示された．また，NMF を利用することでマルウェアファミリーに特有な API
コールの組み合わせをトピックとして自動抽出し，類似検体の検索に応用可能であることを示した．
本研究ではクラスタ分析の評価を有効にするためにラベル間のバランスをとるスクリーニングを行った．今回の分析から外れた検体に関しても原理的に同様のアプローチを用いた分析が可能であり，今後[12] Y. Yang and J. O. Pedersen, “A comparative study on
feature selection in text categorization,” in Proceedingsof the Fourteenth International Conference on Machine
Learning, ICML ’97, pp. 412–420, 1997.
[13] 澤田宏, “非負値行列因子分解 NMF の基礎とデータ/信号解析への応用,” 電子情報通信学会誌, vol. 95, pp. 829–833, sep 2012.
[14] 木村，竹下，豊野，横田，西松，森, “Syslog+SNS 分析によるネットワーク故障検知・原因分析技術,” NTT 技術ジャーナル, vol. 25,
pp. 20–24, Jul 2013.
[15] Microsoft Malware Protection Center, “Win32/Vobfus.F.”
http://www.microsoft.com/security/portal/threat/encyclopedia/entry.aspx?Name=Worm:Win32/Vobfus.F#tab=2.
[16] Microsoft Malware Protection Center, “Win32/Medfos.”
http://www.microsoft.com/security/portal/threat/encyclopedia/entry.aspx?Name=Win32/Medfos.