• 検索結果がありません。

推定確率を用いた段階的なマルウェアの分類

N/A
N/A
Protected

Academic year: 2022

シェア "推定確率を用いた段階的なマルウェアの分類"

Copied!
41
0
0

読み込み中.... (全文を見る)

全文

(1)

2016 年度 修士論文

推定確率を用いた段階的なマルウェアの分類

提出日: 2017 年 1 月 30 日

指導:後藤滋樹教授

早稲田大学 基幹理工学研究科 情報理工・情報通信専攻 学籍番号: 5115F048-0

仲山 裕也

(2)

目次

1章 序論 5

1.1 研究の背景 . . . . 5

1.2 研究の目的 . . . . 6

1.3 本論文の構成 . . . . 6

2章 関連研究 8 2.1 マルウェアの検出に関する研究 . . . . 8

2.2 マルウェアの分類に関する研究 . . . . 8

2.2.1 動的解析 . . . . 8

2.2.2 静的解析 . . . . 9

2.2.3 その他の研究 . . . . 10

3章 提案手法 11 3.1 提案手法の概要 . . . . 11

3.2 提案手法のフロー . . . . 12

3.3 前処理 . . . . 13

3.4 STEP1:文字列によるマルウェアファミリーの分類 . . . . 15

3.4.1 方法1:ファミリーごとに出現回数の多い文字列. . . . 16

3.4.2 方法2:API名,DLLファイル名の出現回数 . . . . 16

3.5 STEP2:API情報によるマルウェアファミリーの分類 . . . . 16

3.6 APIとDLLファイル . . . . 17

3.6.1 API (Application Program Interface) . . . . 17

3.6.2 DLL (Dynamic Link Library) . . . . 17

3.7 SVM (Support Vector Machine) . . . . 18

3.7.1 多クラス分類 . . . . 18

3.7.2 推定確率 . . . . 19

(3)

目次

4章 検証実験 20

4.1 データの概要 . . . . 20

4.2 実験に用いるデータについて . . . . 23

4.3 閾値の決定方法 . . . . 24

4.4 実験結果 . . . . 26

4.4.1 本手法の最終結果 . . . . 26

4.4.2 前処理における実験結果 . . . . 29

4.4.3 STEP1における実験結果 . . . . 29

4.4.4 STEP2における実験結果 . . . . 30

5章 本手法の有効性の評価 32 5.1 前処理の有効性評価 . . . . 32

5.2 推定確率と組み合わせの有効性評価 . . . . 33

6章 結論 35 6.1 まとめ . . . . 35

6.2 今後の課題 . . . . 35

6.2.1 分類精度と分類数の向上 . . . . 35

6.2.2 検体数の増加 . . . . 36

6.2.3 正常な実行ファイルを考慮した実験 . . . . 36

6.2.4 分類に失敗している検体の調査 . . . . 36

謝辞 37

参考文献 38

(4)

図一覧

3.1 提案手法の概要 . . . . 11

3.2 提案手法の分類フロー . . . . 12

3.3 タイプ特有な文字列の例 . . . . 14

3.4 テスト検体の文字列の例 . . . . 14

3.5 STEP1:特徴量の決定法 . . . . 15

3.6 1対1方式の例 . . . . 19

4.1 stringsの具体例 . . . . 21

4.2 behaviorの具体例 . . . . 22

4.3 Kasperskyの命名規則 . . . . 23

4.4 STEP1での推定確率のヒストグラム (Backdoor). . . . 25

(5)

表一覧

3.1 マルウェアにおいてよく用いられるAPIの例 . . . . 17

3.2 推定確率の値の例 . . . . 19

4.1 Cuckoo Sandboxにより取得できる具体的なデータ項目 . . . . 21

4.2 実験対象となる検体数 . . . . 24

4.3 本実験での推定確率の値 . . . . 26

4.4 実験結果(精度重視) . . . . 27

4.5 実験結果(バランス重視) . . . . 27

4.6 実験結果(分類数重視) . . . . 28

4.7 実験結果(前処理) . . . . 29

4.8 実験結果(STEP1) . . . . 30

4.9 実験結果(STEP2) . . . . 31

5.1 前処理無しの結果 . . . . 33

5.2 STEP1,STEP2単体ですべての検体を分類した場合 . . . . 34

5.3 STEP1,STEP2単体で確率が高いもののみを分類した場合. . . . 34

(6)

1 序論

1.1 研究の背景

マルウェア (Malware) とは英語のMalicious (悪意のある)と Software (ソフトウェア)から なる造語であり,不正な働きをするソフトウェアの総称である.このマルウェアによる被害が 拡大・深刻化している[1].PCがマルウェアに感染してしまうと,個人情報が流出したり,遠隔 操作されたりと様々な被害が発生する.さらに被害を受けるだけでなく,意図せずにユーザの PCや管理している機器が悪用され,加害者となってしまうこともある.例えば2016年10月 にMiraiというマルウェアによってDDos (Distributed Denial of Service attack)攻撃が行われ,

TwitterやAmazonに接続しにくくなるトラブルが発生した[2].このMiraiはIoT (Internet of

Things)機器を乗っ取り,悪用する.つまり,セキュリティ対策が不十分なIoT機器の所有者

は,意図せずに攻撃に加担してしまったことになる.

また,マルウェアの数は増加し続けている [4].これはマルウェアの亜種の増加が主な原因

である [3].亜種とは既存のオリジナルのマルウェアに少しだけの改変や機能の追加,削除な

どを施したものである.このマルウェアの亜種が大量に増加しているのは,マルウェアの亜種 を自動に作成するツールが原因である.つまり,マルウェアの亜種を作成するのは非常に容易 なのである.

マルウェアはコンピュータが提供するサービスやセキュリティ上の脅威となることが多く,

セキュリティベンダの解析者は日々増加するマルウェアを解析していく必要がある.そのため パターンマッチングでは検出できないマルウェアの亜種の増加は,解析者の負担を増加させて

いる [5].この問題に対してはマルウェアファミリーの分類技術が有効である.マルウェアファ

ミリーとは,オリジナルのマルウェアと亜種のマルウェアをまとめたものである.マルウェア

(7)

1 章 序論

ファミリーの分類技術とは,未知のマルウェアをどのファミリーに属するかを分類するもので ある.同じファミリーに属するマルウェアは機能が類似している.そのため分類を行うことで 新たに解析する必要がない,もしくは少ない解析で済み,解析者の負担を減らすことができる.

1.2 研究の目的

本研究では,軽量な既存のマルウェア解析の技術を組み合わせて多くの検体の分類を行うこ とにより,解析者の負担を減らす.マルウェアの解析は大きく分けて動的解析と静的解析の2 つがある.動的解析は仮想環境においてマルウェアを動作させてその動作を監視することによ り解析する.静的解析は逆アセンブルをして実際のコードを分析して解析する.マルウェア解 析者にとって,解析のコストを減らすことは非常に大きな課題である.そのため,自動でマル ウェアを分類する様々な既存研究が存在する.しかし既存研究には様々なメリット,デメリッ トが存在する.特に高精度な分類を行える研究は非常に計算量が多く,コストが高い.そこで 本研究では,軽量な手法を段階的に組み合わせて高確率で判定できる検体のみを分類すること により,軽量な手法でも高精度に分類できることを示す.全検体でなくとも,多くの検体が軽 量な手法で分類可能であれば,解析者の負担を減らすことができる.

本研究の目的は既存の動的解析や静的解析の自動分類手法や,手動による解析自体を置き換 えるというものではなく,これらの手法をサポートする軽量な手段を提供する方法である.つ まり,高精度な自動分類手法や,手動解析を行う前に,本研究の手法を適用することで,解析 対象の検体を減らすことができる.

1.3 本論文の構成

本論文は以下の章により構成される.

1章 序論

本論文の概要を述べる.

2章 関連研究

本論文に関連する研究を紹介する.

3章 提案手法

本研究の提案手法を説明する.

(8)

1 章 序論

4章 検証実験

提案手法を用いた実験について述べる.

5章 本手法の有効性の評価

本手法の有効性について評価して考察する.

6章 結論

本論文の結論を述べ,今後の課題を示す.

(9)

2 関連研究

2.1 マルウェアの検出に関する研究

マルウェア検知に関する研究の中で本研究に関連があるものとして戸部 [6]の研究がある.

この研究では実行ファイル内に含まれる文字列情報を抽出し,得られた情報から統計的特徴ベ クトルを作成して,マルウェアの検知を行っている.特徴ベクトルの作成の際には得られた印 字可能な文字列のうち,辞書に含まれる単語のみを抽出することによってベクトルの次元数を 減らす.さらに実行ファイルの先頭Nバイト(N=512,1024,2048,4096,8192)のみにおい て検知精度を算出しており,先頭512バイトのみでも高精度にマルウェアの検知が可能である ことを示している.しかしこの研究ではマルウェアの検知しか行っておらず,より包括的なマ ルウェアの対策としてはマルウェアの分類まで行う必要がある.

2.2 マルウェアの分類に関する研究

マルウェアの分類はKaspersky社 [7]やTrend Micro 社[8],McAfee社 [9]などさまざまな アンチウイルスベンダが行いファミリーごとにマルウェアを命名している.マルウェアの分類 を行う研究は1.2 章で述べたように,大きく分けて動的解析と静的解析がある.以下に動的解 析,静的解析それぞれにおいて,既存研究を説明する.

2.2.1 動的解析

マルウェアの動的解析においては,API (Application Program Interface) コール情報がよく 利用される.APIコール情報とは,APIが呼び出される際に得ることのできる情報のことで

(10)

2 章 関連研究

ある.例としては,APIの関数名,引数,返り値などがある.青木 [10]はAPIの関数名のみ を利用するマルウェア検知方法を提案し,APIコールの抽出方法を変化させると,マルウェア のファミリーごとに精度が変化することを示している.具体的には検体を実行したときのAPI コールの連鎖した出現パターンの出現回数を特徴量として,決定木でマルウェアの分類を行っ ている.さらにマルウェアごとに高精度に分類できる連鎖数が異なることを示している.し かし,APIコールの連鎖,つまりN-gramを取る必要があり,特徴ベクトル作成の計算量が大 きい.

堀合 [11]はマルウェアの動的解析の結果からその挙動を多次元のベクトルとして数値化し,

ベクトル間の距離を用いてマルウェアの分類を行っている.具体的にはまず自分達で収集した マルウェアを仮想環境内で動作させる.その後,マルウェアを実行する前と実行した後のログ を比較し,その差分をマルウェアの挙動を示す情報としてベクトル化して用いる.情報の例と してはプロセスの起動,レジストリの改ざん,通信の内容などがある.これらの情報をデータ ベースに登録しておき,分類の際には,対象となる未知のマルウェアのベクトルとデータベー スに登録済みのベクトル間の距離によって類似度を算出し,分類を行うというものである.

一般に動的解析は静的解析よりも容易かつ短時間での解析が可能である [12].そのため本研 究でも動的解析によって得られるAPI情報を使用している.

2.2.2 静的解析

静的解析においてよく利用されるのが,実行ファイルを逆アセンブルして得られるオペコー

ド (op code)列である.オペコードとは機械語の一個の命令で,実行する操作の種類を指定す

る部分のことである.例えば加算を行うADDや,スタックにデータを入れるPUSH,スタッ クからデータを取り出すPOPなど様々なものがある.このオペコード列の並びによってプロ グラムが実現される.

このオペコードを利用してマルウェアの分類をおこなっている研究として文献[13]が挙げら れる.この研究は,マルウェアの亜種同士やその本体は同じような動作をするので,オペコー ド列も似たものになるはずであるというアイディアに基づいている.具体的にはまず実行ファ イルを逆アセンブルして,オペコード列を得る.そして連続するN個のオペコード列 (N-gram) が何度出現しているかを特徴ベクトルとする.この特徴ベクトルをマルウェアの特徴とし,マ ルウェアの類似度をコサイン距離として定義することによってマルウェアの分類を可能として いる.

(11)

2 章 関連研究

静的解析においてもAPI情報を利用したものがある.碓井[14]は逆アセンブル結果から,マ ルウェアの各サブルーチンが利用しているAPIの種類と回数を特徴量としてマルウェアの分 類を行っている.さらにサブルーチン内で使用されているAPIに動作の概要を示すラベルを 付けることで,マルウェアの動作を同時に特定している.岩本 [15]は検体の実行コードに対し てAPI推移依存グラフの,あるAPIとそのあとに呼び出されるAPIの組の有無を定義し,マ ルウェア検体の特徴量とすることで分類を行っている.具体的には,まず検体を逆アセンブル して取得した逆アセンブルリストに対して制御フロー解析を行う.そして制御フロー解析の結 果グラフからAPIの推移,つまりあるAPIから呼び出される可能性のあるAPIの関係を得る.

マルウェア検体はこのAPI推移を要素とする集合とみなすことができるため,これを用いて マルウェアの分類を実現している.しかしそもそも静的解析の手法は逆アセンブルやコード分 析にコストがかかるという問題がある.

2.2.3 その他の研究

動的解析,静的解析どちらのも属さない研究の一つに筆者である仲山[16]の研究成果がある.

これはマルウェアに含まれる印字可能な文字列を特徴量とし,SVM (Support Vector Machine) を使って分類を行うというものである.前述の戸部 [6]の研究とは異なり,マルウェアの検知 ではなく,マルウェアの分類を行っている.マルウェア検体から文字列を抜き出してくるだけ であるため,非常に軽量に動作するが,精度が低いという問題点がある.本研究ではこの手法 を既存研究の一つとして利用している.

(12)

3 提案手法

3.1 提案手法の概要

本研究では,軽量な既存のマルウェア解析の技術を組み合わせて多くの検体の分類を行う ことで,解析者の負担を減らす手法を提案する.本研究の貢献は手動での解析や,既存の動 的解析や静的解析における自動分類手法を置き換えるものではなく,これらのコストを削減す ることにある.具体的には,最初に独自の手法である前処理を施し,その後2つの手法を段階 的に適用する.2つの手法を適用する順にSTEP1,STEP2と呼ぶ.前処理では,マルウェア の種類に特有な文字列を使い,マルウェアの種類 (以降マルウェアタイプと呼ぶ)の判定をす る.STEP1は筆者の先行研究 [16]を応用する.具体的には文字列を特徴量としてSVMでマ ルウェアファミリーの分類を行う. 既存の動的解析や静的解析の手法とは異なり,文字列を 抜き出すだけなので,非常に軽量に動作する.STEP2では動的解析のAPI情報を特徴量とし て,SVMでマルウェアファミリーの分類を行う.既存の動的解析情報を使った自動分類技術 とは違い,複雑な計算を必要としない.提案手法の概要を図3.1に示す.

図 3.1: 提案手法の概要

(13)

3 章 提案手法

3.2 提案手法のフロー

提案手法では,分類対象検体 (テスト検体)に対して,順に前処理,STEP1,STEP2を適用 する.提案手法で検体を分類する際のフローを図3.2に示す.

図 3.2: 提案手法の分類フロー

まずテスト検体の前処理をする.ここではマルウェアタイプの判定を行う.タイプが判定さ れた場合は,その情報を有してSTEP1へ進む.タイプが判定されない場合はそのままSTEP1 へ進む.STEP1では,前処理でタイプが判定されていた場合には,そのタイプの中でのみマル ウェアファミリーの分類を行う.タイプが判定されていない場合はすべての中から判定を行う.

例えば,あるテスト検体が前処理でBackdoorであると判定されていた場合には,STEP1では

Backdoorに属する訓練データのみで構成された訓練モデルに入力し,Backdoorの中でファミ

リーの分類を行う.タイプ判定されていなかった場合は,すべての訓練データで構成された訓

(14)

3 章 提案手法

練モデルに入力してファミリーの分類を行う.ファミリーの分類を行う際に確率が高いものの みを分類するために,推定確率がある閾値以上の場合のみファミリーの分類を行う.推定確率 については,3.7.2項で説明する.ある閾値を超えていない検体に関しては,STEP1では分類 不可として,STEP2へ進む.STEP2でもSTEP1と同じように分類する.なお,前処理の判

定結果はSTEP2でも引き継ぐ.STEP1,STEP2ともにファミリーの分類が不可となった場合

は,本手法では分類できなかったことになる.

3.3 前処理

本研究では検体をマルウェアファミリーに分類するが,ここではその前にマルウェアタイプ の判定する.マルウェアタイプとはBackdoor,Trojan,Wormなどのことで,マルウェアは その種類の中でさらにファミリーに分けられている.先に大きなグループであるタイプを判定 しておくことで,ファミリーへの分類の精度向上が期待される.判定にはマルウェアタイプに 特有な文字列集合を使う.まず,訓練データをマルウェアタイプごとにまとめる.その後それ ぞれのタイプごとに,そのタイプに属する検体すべてから文字列を抜き出し,和集合を取る.

次に特有な文字列集合を得たいタイプの和集合からそのタイプ以外の和集合を引き.差集合を 取る.このようにすることで,そのタイプにしか出現しない文字列集合,つまりタイプ特有の 文字列集合を得ることができる.テスト検体の判定の際には,検体の持つ文字列集合と,タイ プ特有の文字列集合を比較する.この比較において,あるタイプ特有の文字列をN個以上持っ ていて他のタイプ特有な文字列を持っていなければ,そのタイプだと判定する.それ以外の場 合はタイプ判定不可となる.判定不可の例としては「複数のタイプ特有な文字列を持っている 場合」や「あるタイプ特有な文字列集合しか持っていないが,N個以上持っていない場合」な どが挙げられる.今回は予備実験の結果からN=5に設定している.

マルウェアタイプ判定の方法を例を用いて説明する.タイプ特有な文字列集合の例が図3.3 であり,テスト検体の文字列の例が図3.4のようになっている場合を考える.まずテスト検 体1の場合は,タイプA特有な文字列である‘SysTrayMouseDown’,‘uL[VNV’,‘:OOoT”es’,

‘OP$:uxWa’,‘gRTwJTAm’の5個を持っている.そしてタイプ Bに特有な文字列は一つも 持っていない.そのためテスト検体1は「タイプA」と判定される.次にテスト検体2の場合 は,タイプAに特有な文字列である‘SysTrayMouseDown’,‘uL[VNV’と,タイプBに特有な 文字列である‘NewFrameColor’,‘OpmiKBGEhzi’,‘aTmOlmeQ’の両方を持っている.その ためタイプ判定不可となる.最後にテスト検体3の場合は,タイプBに特有な文字列である

(15)

3 章 提案手法

‘NewFrameColor’,‘OpmiKBGEhzi’,‘aTmOlmeQ’の3個持っているが,5個以上でないため,

タイプ判定不可となる.

図 3.3: タイプ特有な文字列の例

図 3.4: テスト検体の文字列の例

(16)

3 章 提案手法

3.4 STEP1 :文字列によるマルウェアファミリーの分類

STEP1では,検体に含まれる印字可能な文字列を用いて特徴ベクトルを作成し,SVMを使

いマルウェアファミリーを分類する.以下,マルウェア検体から得た印字可能な文字列を用い て特徴ベクトルを作成する方法を詳しく述べる.特徴ベクトルを作成する方法は二つあり,こ れらを組み合わせることでマルウェアの分類を行う.一つ目は,それぞれのファミリーごとに 多く出現する文字列の出現頻度を特徴量とする方法である.もう一つは,それぞれのファミ リーごとに多く出現するAPI名,DLL (Dynamic Link Library)ファイル名の出現回数を特徴 量とする方法である.どちらの抽出方法もファミリーごとに出現回数の多いものを採用するこ とで,そのファミリーの特徴を捉えることができる.特徴量の作成方法の概要を図3.5に示す.

このようにまず解析済み検体(訓練データ)から特徴量を決定し,特徴ベクトルをSVMへ入 力して訓練モデルを構築する.その後,テストデータから特徴ベクトルを作成し,訓練モデル へ入力して推定確率がある閾値以上であった場合のみファミリーの分類を行う.閾値を超えて いない場合は,次のSTEP2へ進む.以下.2つの特徴ベクトルを作成する方法を述べる.

図 3.5: STEP1:特徴量の決定法

(17)

3 章 提案手法

3.4.1 方法 1 :ファミリーごとに出現回数の多い文字列

まず解析済みのマルウェア検体(訓練データ)を,亜種を区別せずにファミリーごとにまと めて印字可能な文字列を抽出する.そしてそのファミリーごとにどのような文字列が多く出現 しているかを分析する.分析した結果から出現回数が多い文字列上位30個を特徴量とする.分 類対象となるファミリーすべてから30個ずつ特徴量となる文字列を集める.ここで集めた文 字列は同じものが出現する可能性があるため,重複を除きユニークなものを使う.こうして得 た文字列の出現頻度を特徴ベクトルとする.なお出現頻度は以下の式で算出される.

出現頻度= 対象となる文字列の出現回数

検体中の印字可能な文字列すべての数 (3.1)

3.4.2 方法 2API 名, DLL ファイル名の出現回数

まずWindows API Index (Windows) [17]というサイトからAPIのリストを作成する.さら に訓練データの全検体の文字列を調べ,拡張子がdllである文字列をリストに追加しておく.こ うすることで検体中に登場する可能性があるAPI名とDLLファイル名のリストができる.方 法1と同じように分類対象となるファミリーごとに,そのファミリーに属する検体すべての文 字列について,リスト中の文字列の出現回数を調べる.その結果からファミリーごとに出現回 数が多い上位30個を特徴量とする.分類対象となるファミリーから30個ずつ特徴量を集め,

ユニークなものをとる.こうして得たAPI名またはDLLファイル名の出現回数を調べて特徴 ベクトルとする.

3.5 STEP2 API 情報によるマルウェアファミリーの分類

STEP2では動的解析のAPI情報を利用して,マルウェアファミリーの分類を行う.3.4.2章

と同じように,Windows API Index (Windows) [17]というサイトからAPIのリストを作り,

それを特徴量とする.そして特徴ベクトルは各APIの出現頻度をとする.なお出現頻度は式 3.2で定義する.一般に動的解析は静的解析よりも軽量であり.さらにその中でもこの方法は API単体の出現頻度を求めるのみであるため,非常に軽量である.STEP2でもSTEP1と同じ ように,推定確率がある閾値以上であった場合のみファミリーの分類を行う.

出現頻度= 対象となるAPIの呼び出し回数

検体中のすべてのAPIの呼び出し回数 (3.2)

(18)

3 章 提案手法

3.6 APIDLL ファイル

3.6.1 API (Application Program Interface)

APIとは Application Program Interface の略であり,あるソフトウェアの機能などを外部 のプログラムから呼び出して使用するためのインターフェースのことである.本研究で述べて いるAPIとはWindows APIのことを指す.Windows APIとはmicrosoft [18]が提供している オペレーティングシステムであるWindowsの機能を利用するために存在するAPIである.多 くのマルウェアはAPIを使用することでファイルの読み書きや,レジストリの書き換えなどさ まざまな機能を実現している.そのため2章で述べた関連研究でAPIを使用している研究のよ うに,マルウェアが呼び出しているAPIを調べることでマルウェアの解析の手がかりになる.

マルウェアにおいてよく用いられるAPIの例[12]を表3.1に示す.

表 3.1: マルウェアにおいてよく用いられるAPIの例

API名 概要

RegCreateKey 特定のレジストリキーを作成する

RegSetValue レジストリの値を設定する

RegDeleteValue レジストリの値を削除する

CopyFile 既存のファイルをコピーする

DeleteFile 既存のファイルを削除する

CreateProcess 新しいプロセスを作成する

send 接続されたソケット上でデータを送る recv 接続されたソケット上でデータを受け取る

GetKeyboardState キーの状態を指定されたバッファへコピーする

3.6.2 DLL (Dynamic Link Library)

DLL とは Dynamic Link Library の略であり,特定のタスクを実行するのに必要なコードお よびその他のリソースを,複数のプログラムで共有できるようにするファイルのことである.

上述の大半のAPIはこのDLLファイルを介して提供されている.動的リンクを行うことによっ てさまざまなプログラムから同時にAPIを利用することができる.

(19)

3 章 提案手法

STEP1ではマルウェアに含まれる文字列情報を利用しているため,その文字列の中にAPI

名やDLLファイル名があったとしても,実際に呼び出されているとは限らない.しかしマル ウェア内に含まれているということは何らかの関係性があると考えて,API名とDLLファイ ル名を使用している.

3.7 SVM (Support Vector Machine)

SVMは教師あり機械学習法の一つであり,優れた識別機能を有するパターン認識手法とし て知られている.本来SVMは線形識別器であるが,カーネル関数との組み合わせにより非線 形に容易に拡張することができる.この非線形の拡張手法を利用することにより,複雑な対象 に対しても識別することが可能である.訓練データを用いた訓練モデルをビルドする際には,

識別境界と訓練データの間の距離(マージン)を最大化するようにパラメータを最適化する.し かし,訓練データが必ずしも完全に識別できるとは限らない.そこでSVMではソフトマージ ンを採用して,制約条件を緩めている.この際にどの程度誤りを許すかについてのパラメータ Cを経験的に求める必要がある.また同様にカーネル関数についてもパラメータを経験的に決 定する必要がある.本実験では特徴ベクトルに対して線形なスケーリングをした後,ソフト マージンのパラメータとカーネル関数のパラメータをグリッドサーチを行い求めている.また 本実験ではSVMの実装として,LIBSVM [19]を使用している.

3.7.1 多クラス分類

SVMは本来2クラス分類器であるが,実際は本研究のように多クラス分類を行う必要がある 場合も多い.そのため,2クラス分類機を複数組み合わせることで多クラス分類を行う方法があ る.その方法は大きく分けて2つあり,1対他(one-versus-the-rest) と,1対1 (one-versus-one) 方式である [20].1対他方式ではK個のクラスがあるときに,あるクラスに属するデータを正 例,それ以外のクラスに属するデータを負例として,K個の別々のSVMを構築する,そして テストデータに対して,識別関数が最大化されたクラスへ分類する.1対1方式ではK個のク ラスがあるときに,すべてのクラスの組み合わせについて,2クラス分類のSVMを構築する.

その結果得られたKC2個のテストデータをSVMに入力して出力の多数決をとる.本研究でも 他クラス分類を行っており,1対1方式を使用している.これは本研究のSVMの実装である

LIBSVMが多クラス分類に1対1方式を採用しているからである.

(20)

3 章 提案手法

3.7.2 推定確率

STEP1とSTEP2で確率の高いもののみを分類するために,本手法では推定確率(probability

estimation) を使用する.推定確率とは検体がどの程度の確率でそのクラスに属するかを表し

ている値で,通常一番この値が高いクラスへ分類される.例えばA,B,Cの3クラス分類の 問題を考える,多クラス分類の方式としては,本実験では1対1方式であるため,その場合の 説明をする.まず,AとBに属する訓練データを使って訓練モデルを構築する.同じように,

BとC,CとAというようにクラスすべての組み合わせで,訓練モデルを構築する.そして各 モデルにテストデータを入力し,判定結果をそれぞれのクラスごとに数えて,訓練モデルの総 数で割ると推定確率となる.例えば図3.6のようにA,B,Cの3クラスの分類することを考 える.すると推定確率は表3.2のようになる.例えばクラスAに属する推定確率は,Aの判定 個数の2を訓練モデルの総数である3で割り,0.67というように求められる.本手法では,こ の推定確立がある閾値を超えた場合のみ分類している.つまり,通常はこの結果の場合クラス Aと判定されるが,閾値が0.70の場合だと,このテストデータは判定不可能となる.またこの 閾値は予備実験をすることで求めている.予備実験に関する詳細は4.3節で説明する.

図 3.6: 1対1方式の例

表 3.2: 推定確率の値の例 クラス 推定確率

A 0.67

B 0.33

C 0.00

(21)

4 検証実験

4.1 データの概要

本研究ではMWSデータセット[21]の一部として,株式会社FFRI [22]から提供されたFFRI Dataset 2013から2016を用いる.FFRI Datasetには,マルウェア検体をCukcoo Sandbox [23]

を用いて動的解析したログが集録されている.Cukcoo Sandboxとはオープンソースのマルウェ ア解析システムであり,仮想環境内でマルウェアを実行し,動的解析ログを得ることができる.

動的解析ログは1検体につき1つのログで,json形式である.Cukcoo Sandboxで得ることが できる具体的なデータ項目を表4.1に示す.FFRI Dataset2013,2014,2015,2016にはそれぞ れ,2012年9月から2013年3月に収集された2644個,2014年1月から2014年4月に収集さ れた3000個,2015年1月から2015年4月にかけて収集された3000個,2016年1月から2016 年3月に収集された8243個の検体が含まれている.本研究の前処理とSTEP1において,検体 中に含まれる文字列情報であるstringsという項目を使用する.stringsの具体例を図4.1に示 す.また,STEP2では検体実行時のAPIログであるbehaviorという項目にあるAPIの関数名 を使用する.このbehaviorの具体例を図4.2に示す.

(22)

4 章 検証実験

表 4.1: Cuckoo Sandboxにより取得できる具体的なデータ項目

項目 内容

info 解析の開始,終了時刻,id (id1から順に採番)

yara yara (OSSのマルウェア検知・分類エンジン) の標準ルールとの照合結果

signatures ユーザー定義シグニチャとの照合結果

virustotal VirusTotalの検査履歴との照合結果

static 検体のファイル情報(インポートAPI,セクション構造等)

dropped 検体が実行時に生成したファイル

behavior 検体実行時のAPIログ (PIDTIDAPIの関数名,引数,返り値等) processtree 検体実行時のプロセスツリー(親子関係)

summary 検体が実行時にアクセスしたファイル,レジストリ等の概要情報

target 解析対象検体のファイル情報(ハッシュ値等)

debug 検体解析時のCuckoo Sandboxのデバッグログ

strings 検体中に含まれる文字列情報

network 検体が実行時に行った通信の概要情報

図 4.1: stringsの具体例

(23)

4 章 検証実験

図 4.2: behaviorの具体例

(24)

4 章 検証実験

4.2 実験に用いるデータについて

マルウェアの分類実験を行う際には,解析済みでファミリー名が既知であるデータが必要で ある.今回は動的解析ログに付属してくるVirusTotal [24]の検査結果を利用した.Virus Total は,様々なアンチウイルスエンジンを利用して検体の検査が行えるフリーのWebサービスで ある.このサービスを利用すると,アンチウイルスエンジンごとの検体解析結果,SHA-256 ハッシュ値,その検体が初めてVirusTotalで解析された日時などが取得できる.本実験では,

Kaspersky [7]の検査結果を利用する.Kasperskyの命名規則[25]を図4.3に示す.Prefixは検 出に用いたサブシステム,Behaviour は検体の動作,Platform はOSの種類,Nameは検体の ファミリー名,Variant は検体の亜種を表す.

[Prefix:]Behaviour.Platform.Name[.Variant]

図 4.3: Kasperskyの命名規則

本研究ではBackdoor,Trojan,Wormの3種類のタイプの中で,検体数が多いものを実験対 象とする.具体的には,亜種を区別せずにファミリーでまとめたときに,タイプの中でそれぞ れ検体数が多いファミリー3種類ずつで実験を行う.つまり3タイプそれぞれ,3種類ずつで あるから合計9つのファミリーが対象となる.そして各ファミリーごとに,訓練データとテス トデータをランダムに半分ずつに分ける.対象となる検体数は,訓練データが1566個,テス トデータが1560個の計3116個である.対象となる検体数をまとめたものを表4.2に示す.な お,ファミリーに属する検体が奇数のときは,訓練データが多くなるようにしている.また,

STEP2において動的解析のAPI情報を使用するため,APIのログがうまく取れていないもの

は除外している.

(25)

4 章 検証実験

表 4.2: 実験対象となる検体数

ファミリー名 訓練データ テストデータ 合計

Backdoor.Win32.Androm 221 220 441

Backdoor.Win32.DarkKome 103 102 205

Backdoor.Win32.Matsnu 55 55 110

Trojan-Spy.Win32.Zbot 290 290 580

Trojan.Win32.Waldek 337 337 674

Trojan.Win32.Yakes 290 289 579

Worm.Win32.Ngrbot 50 49 99

Worm.Win32.Vobfus 60 60 120

Worm.Win32.WBNA 154 154 308

合計 1556 1560 3116

4.3 閾値の決定方法

本研究ではSTEP1とSTEP2において,推定確率の閾値を各訓練モデルごとに決定する必要 がある.訓練モデルごととは,前処理でタイプ判定されたテストデータが入力されるBackdoor,

Trojan,Wormの訓練モデルそれぞれと,タイプ判定されなかったテストデータが入力される

訓練モデルである.なお,前処理においてタイプ判定されなかったものが入力される訓練モデ ルをAllと呼ぶこととする.推定確率の閾値と,分類可能な検体数はトレードオフの関係があ るため,今回は3つのパターンの推定確率を決定して実証実験を行っている.以下に3つのパ ターンを示す.

精度重視

バランス重視

分類数重視

精度重視とは,閾値を高めに設定して分類される検体数は少ないが精度を重視したものであ る.バランス重視とは分類される検体数と精度のバランスを取ったものである.分類数重視は 精度は少し低くなるが,出来る限り分類される検体数が多くなるように,閾値を少し低めに設 定したものである.マルウェア解析者の負担に合わせて,これらを使い分けることができる.

(26)

4 章 検証実験

本研究では,この推定確率を予備実験を行って決定した.STEP1,STEP2での推定確率決 定の予備実験の方法を述べる.まず,前処理を行ったすべてのテストデータをSTEP1の方法 で分類を行う.そして分類されたデータの正解しているものと,間違っているものを分ける.

その後どの程度の推定確率で正解しているのか,または間違っているのかをそれぞれ調べる.

具体的にはヒストグラムを作成してその結果によって,上で延べた3つのパターンの推定確率 を決定する.STEP2ではSTEP1で決定した推定確率それぞれの値ごとに同じように決定する.

図4.4に,ヒストグラムの例を示す.これは前処理でBackdoorだと判定されたテストデータ

をSTEP1で判定した際の推定確率のヒストグラムである.

図 4.4: STEP1での推定確率のヒストグラム (Backdoor)

これを見るとおおよそ正解のデータは推定確率が高いものが多く,不正解のデータは推定確 率が低いものが多いことがわかる.この結果から閾値を決定する.例えば,精度重視の閾値を 決定することを考える.つまり,出来る限り不正解のものは分類しないようにする.そう考え ると,0.9から0.95に多数の正解データ分布しており,それ以下は不正解データの割合が多く なってしまう.そのため0.9に設定する.このようにして精度重視,バランス重視,分類数重 視をそれぞれ決定した.この値を表4.3に示す.

(27)

4 章 検証実験

表 4.3: 本実験での推定確率の値

STEP1 STEP2

Backdoor Trojan Worm All Backdoor Trojan Worm All

精度 0.9 0.7 0.9 0.85 0.875 0.875 0.75 0.55

バランス 0.8 0.7 0.85 0.75 0.775 0.725 0.7 0.5

分類数 0.75 0.7 0.85 0.65 0.75 0.7 0.7 0.425

4.4 実験結果

この節では実験結果を報告する.本手法は前処理,STEP1,STEP2と段階が分かれている.

そのため,最初に提案手法の最終の結果を報告し,その後にそれぞれの段階でどのような結果 だったかを合わせて報告していく.なお精度とは以下の式で表される.

精度= あるファミリーに分類された検体のうち正解している検体数

あるファミリーに分類された検体数 (4.1)

4.4.1 本手法の最終結果

表4.4,表4.5,表4.6に本実験での3つのパターンの最終結果をそれぞれ示す.最終結果とは 前処理,STEP1,STEP2を適用し推定確率が高いもののみを分類したものである.なお,推 定確率の値は表4.3の値を使用している.ここで用いたテストデータの数は表4.2にあるよう に1560検体である.

(28)

4 章 検証実験

表 4.4: 実験結果(精度重視)

ファミリー名 分類数 正解数 精度 [%]

Backdoor.Win32.Androm 30 28 93.33 Backdoor.Win32.DarkKome 30 27 90 Backdoor.Win32.Matsnu 26 21 80.77 Trojan-Spy.Win32.Zbot 149 139 93.29 Trojan.Win32.Waldek 270 248 91.85 Trojan.Win32.Yakes 186 153 82.26

Worm.Win32.Ngrbot 9 7 77.78

Worm.Win32.Vobfus 8 8 100.00

Worm.Win32.WBNA 109 104 95.41

合計 817 735 89.96

表 4.5: 実験結果(バランス重視)

ファミリー名 分類数 正解数 精度 [%]

Backdoor.Win32.Androm 91 77 84.62 Backdoor.Win32.DarkKome 52 44 84.62 Backdoor.Win32.Matsnu 34 26 76.47 Trojan-Spy.Win32.Zbot 206 179 86.89 Trojan.Win32.Waldek 347 309 89.05 Trojan.Win32.Yakes 264 203 76.89

Worm.Win32.Ngrb 14 9 64.29

Worm.Win32.Vobfus 34 33 97.06

Worm.Win32.WBNA 133 128 96.24

合計 1,175 1,008 85.79

(29)

4 章 検証実験

表 4.6: 実験結果(分類数重視)

ファミリー名 分類数 正解数 精度 [%]

Backdoor.Win32.Androm 117 92 78.63 Backdoor.Win32.DarkKome 60 49 81.67 Backdoor.Win32.Matsnu 43 30 69.77 Trojan-Spy.Win32.Zbot 226 189 83.63 Trojan.Win32.Waldek 366 319 87.16 Trojan.Win32.Yakes 304 216 71.05

Worm.Win32.Ngrbot 18 11 61.11

Worm.Win32.Vobfus 37 36 97.3

Worm.Win32.WBNA 134 129 96.27

合計 1,305 1,071 82.07

精度重視の結果は,テストデータの52.4%である817検体が分類され,そのうち正解は735 検体であった.精度は89.96%と非常に高いものであった.また各ファミリーごとに見ると,低

くても81%程度であり,高いものは100%であるものもあった.

続いてバランス重視の結果はテストデータの75.3%である1175検体が分類され,そのうち 正解は1008検体であった.精度は85.79%となる.精度重視よりも若干低くなるが,より多く の検体を分類できていることがわかる.また各ファミリーごとに見ると,検体数が少ないファ ミリーに関しては少し低くなっているものもあるが,検体数が多いファミリーに関しては,概

ね85%以上の精度で分類できていることがわかる.

最後に分類数重視の結果はテストデータの84.7%である1305検体が分類され,そのうち正 解は1071検体であった.精度は82.07%となる.バランス型より精度は少し悪くなるが,さら に多くの検体を分類することができていることがわかる.また各ファミリーごとに見ても,精 度は落ちているが,正解している検体数は増えていることがわかる.

以上のことから,推定確率を閾値として使用することで,高い確率で判定できる検体を分類 することができることがわかる.本手法を適用することで,全検体でなくとも推定確率が高い もののみを分類することで,高精度に判定して解析者が解析しなければならない検体数を減ら せることができる.

(30)

4 章 検証実験

4.4.2 前処理における実験結果

表4.7に前処理の結果を示す.前処理とはタイプ特有な文字列集合を利用して,判定できる ものに関しては最初にマルウェアタイプを判定しておくものであった.

結果はテストデータの約53%である822検体に関して,マルウェアタイプが判定可能であっ た.そのうち正解しているものは777検体で精度は約94%と非常に高いものであった.また各 タイプごとに見ると,Wormが約99%と非常に高い精度で判定可能であることがわかった.

表 4.7: 実験結果(前処理)

タイプ名 分類数 正解数 精度 [%]

Backdoor 143 129 90.21

Trojan 515 486 94.37

Worm 164 162 98.78

合計 822 777 94.53

4.4.3 STEP1 における実験結果

STEP1における実験結果を表4.8に示す.STEP1における実験結果とは,前処理を行い,

STEP1を適用し分類されたものの結果である.なお閾値がバランス重視のもののみを示す.

STEP1では564検体が分類され,502検体が正解であった.精度は89%である.表4.5より,

バランス重視では最終的に1175検体が分類されるので,STEP1ではその半分程度が分類され ていることがわかる.各ファミリーごとに見ると,Trojan 系に関しては比較的高精度に分類 されている.

(31)

4 章 検証実験

表 4.8: 実験結果(STEP1)

ファミリー名 分類された数 正解数 精度[%]

Backdoor.Win32.Androm 19 17 89.47

Backdoor.Win32.DarkKome 39 33 84.62

Backdoor.Win32.Matsnu 31 23 74.19

Trojan-Spy.Win32.Zbot 55 51 92.73

Trojan.Win32.Waldek 228 207 90.79

Trojan.Win32.Yakes 115 100 86.96

Worm.Win32.Ngrbot 12 7 58.33

Worm.Win32.Vobfus 31 31 100.00

Worm.Win32.WBNA 34 33 97.06

合計 564 502 89.01

4.4.4 STEP2 における実験結果

 STEP2における実験結果を表4.9に示す.STEP2における実験結果とは,前処理を行い,

STEP1を適用し分類されなかったものをSTEP2で分類した結果である.なお閾値がバランス

重視のもののみを示す.

STEP2では611検体が分類され,506検体が正解であった.精度は83%程度である.この

STEP2のみの結果と,STEP1のみの結果の合計が表4.5の結果となっている.STEP1のみと 結果と比べると,全体的に少し精度が低くなっている.

(32)

4 章 検証実験

表 4.9: 実験結果(STEP2)

ファミリー名 分類された数 正解数 精度[%]

Backdoor.Win32.Androm 72 60 83.33

Backdoor.Win32.DarkKome 13 11 84.62

Backdoor.Win32.Matsnu 3 3 100.00

Trojan-Spy.Win32.Zbot 151 128 84.77

Trojan.Win32.Waldek 119 102 85.71

Trojan.Win32.Yakes 149 103 69.13

Worm.Win32.Ngrbot 2 2 100.00

Worm.Win32.Vobfus 3 2 66.67

Worm.Win32.WBNA 99 95 95.96

合計 611 506 82.82

(33)

5

本手法の有効性の評価

本章では本手法の有効性の評価をして考察する.最初に前処理の有効性を評価する.つまり,

前処理をすることによってどのような効果があったのか,検証,考察する.その後,推定確率 を使用することと,2つの手法をSTEP1,STEP2として組み合わせたことの有効性を評価す る.具体的にはSTEP1,STEP2をそれぞれ単体で動作させた場合と比較する.

5.1 前処理の有効性評価

前処理を行った場合と,行わなかった場合を比較する.なお行った場合の対象は表4.5のバ ランス重視とする.行わなかった場合の結果を表5.1に示す.なお比較のため,バランス重視 の分類数と近くなるように予備実験をし,行わなかった場合の推定確率の閾値を決定している.

具体的にはSTEP1では0.65,STEP2では0.45である.なお閾値が各STEPにつき一つなの は,前処理がないためタイプ判定される検体が存在しないためである.

表4.5と表5.1を比較すると,前処理を行った場合のほうが結果が良いことがわかる.合計 の精度を見ると前処理を行っている方が2%程度良い結果となっている.また各ファミリーご とに見ても,ほとんどのファミリーで前処理を行っている方が良い結果となっている.特に

Bacckdoor系はすべてのファミリーで精度が平均で10%程度よいことがわかる.また,前処理

は印字可能な文字列を比較するだけであり,機械学習を使う必要がなく軽量である.そのため 前処理は非常に有効である.さらに,ファミリーまで判定できなくても,素早くマルウェアタ イプが判定できるという点でも有効である.

(34)

5 章 本手法の有効性の評価

表 5.1: 前処理無しの結果

ファミリー名 分類された数 正解数 精度

Backdoor.Win32.Androm 68 53 77.94%

Backdoor.Win32.DarkKome 35 27 77.14%

Backdoor.Win32.Matsnu 38 25 65.79%

Trojan-Spy.Win32.Zbot 216 182 84.26%

Trojan.Win32.Waldek 344 308 89.53%

Trojan.Win32.Yakes 292 214 73.29%

Worm.Win32.Ngrbot 10 5 50.00%

Worm.Win32.Vobfus 31 31 100.00%

Worm.Win32.WBNA 139 134 96.40%

合計 1173 979 83.46%

前処理が有効であるのは,分類先であるファミリー数が減ることが理由であると考えられる.

本実験では前処理を行わない場合,9つのファミリーへ分類することになる.それに対し,前 処理でタイプが判定された検体は3つのファミリーへ分類することとなる.一般的に機械学習 での多値分類はクラスが増えれば増えるほど,精度が下がる傾向にある.そのため前処理にお いて,分類先となるクラスを減らすことができるので,結果として精度が上がったのだと考え ることができる.

5.2 推定確率と組み合わせの有効性評価

推定確率を用いることと,2つの手法をSTEP1,STEP2として組み合わせたことの有効性を 評価する.まずSTEP1,STEP2のみでそれぞれすべてのテストデータを分類したものを表5.2 に示す.なお各ファミリーごとではなく,合計で示している.これを見ると,STEP1,STEP2 ともに単体の場合の精度は,あまり良くないということがわかる.これはどちらの手法も複雑 な計算を必要とせず,軽量であることからも妥当である.

(35)

5 章 本手法の有効性の評価

表 5.2: STEP1,STEP2単体ですべての検体を分類した場合 分類数 正解数 精度[%]

STEP1のみ 1,560 1,032 66.15 STEP2のみ 1,560 1,045 66.99

表5.3にSTEP1,STEP2を単体で動作させて推定確率を使い確率が高いもののみを分類し

たものを示す.なお比較のため,本実験のバランス重視型と同程度の分類数となるように閾値 を設定した.閾値の値としてはそれぞれSTEP1単体で動作させたものが0.465,STEP2単体 で動作させたものが0.365となっている.これと表5.2を比べると,分類数は減っているが,精 度は上がっていることがわかる.つまり,精度があまりよくない手法であっても,推定確率が 高いもののみ分類することで,精度を上げることができる.このことから推定確率を用いて閾 値を決定し,分類することは有効である.正解の検体と,不正解の検体の推定確率を比べると,

正解の検体のほうが高いものが多い.

表 5.3: STEP1,STEP2単体で確率が高いもののみを分類した場合 分類数 正解数 精度[%]

STEP1のみ 1,175 884 75.23 STEP2のみ 1,180 857 72.63

v

次に表5.3と表5.1を比較する.するとSTEP1,STEP2単体では精度が70%少々なのに対 し,組み合わせた場合は80%超と10%程度向上していることがわかる.つまり精度があまり 良くない手法でも,組み合わせることで精度の向上が期待される.これはSTEP1の手法と,

STEP2の手法がある程度補完関係にあるからだと考えることができる.つまり,STEP1でう

まく分類できない検体が,STEP2では分類できるというような関係性があると考えられる.こ のような関係性がある手法を組み合わせることで,今回用いた手法以外でも精度を向上させる ことができる可能性がある.

(36)

6 結論

6.1 まとめ

本研究では,軽量な既存のマルウェア解析の技術を組み合わせて多くの検体の分類を行うこ とで,解析者の負担を減らす手法を提案した.具体的には最初に独自の手法の前処理を行い,

その後,2つの手法を順に適用する.1つ目は印字可能な文字列を特徴量としSVMで分類する 手法である.2つ目は動的解析のAPI情報を特徴量としSVMで分類する手法である.2つの 手法で分類する際には推定確率が高いもののみを分類することで,あるファミリーに属する可 能性が高いもののみを判定できる.

実験の結果,推定確率が高いもののみを分類することで高精度に判定できることを示した.

具体的にはバランス重視において,テストデータの75.3%である1175検体が分類され,精度

は85.79%であった.本手法は軽量なものを組み合わせているので,非常に軽量に判定できる.

そのため,マルウェアの解析の際にこの手法を適用することで,軽量にマルウェアファミリー の分類を自動で行うことができる.全検体でなくとも多くの検体のファミリーを行うことで,

マルウェア解析の研究者や,セキュリティベンダにおいてコスト削減が期待される.

6.2 今後の課題

6.2.1 分類精度と分類数の向上

本実験では,テストデータの75.3%であるが分類され,精度は85.79%であった.比較的高 精度ではあるが,実用面を考えると,より高精度かつ分類数が多いことが必要である.精度や 分類数を増加する方法としては,組み合わせる手法を増加することが考えられる.今回は2つ

(37)

6 章 結論

の手法を組み合わせたが,2つの手法どちらでも分類が難しい検体が存在していることが考え られる.そのため,2つの手法ではうまく分類できない検体に対して,うまく作用する手法を 組み込むことで,精度や分類数の増加が期待される.また前処理の精度を向上させる必要もあ ると考えている.本手法では前処理においてタイプ判定を誤っている場合にSTEP1,STEP1 どちらのおいても正解になることはない.そのため,前処理において精度を向上することで,

最終的な精度の向上につながる.

6.2.2 検体数の増加

本実験で用いた検体数は訓練データとテストデータを合わせて,3116検体である.機械学 習では訓練モデルを作成する際に,一般的に検体数が多いほうがより精密な訓練モデルを作る ことができる.よって検体数を増やすことで精度の向上につながる可能性がある.また,本実 験ではファミリーごとに検体数の偏りが生じている.機械学習では正負データの差は少ないほ うが良いとされる.そのため検体数を増やし,さらにファミリーごとにの検体数の差を無くす ことで,本手法の信頼性を高めることができると考えられる.検体数を増やすには他のデータ セットを用いることや,自分でマルウェアを収集する必要がある.

6.2.3 正常な実行ファイルを考慮した実験

本研究では,正常な実行ファイルを考慮していない.つまり,マルウェアであると分かって いる条件のもとで,その種類を判別する手法を提案している.しかし,実環境では分類の対象 となる実行ファイルが,正常なものである可能性がある.よって正常な実行ファイルを含めて 分類実験を行い,精度の検証をする必要がある.その検証においても高い精度が維持された場 合,マルウェアの解析の大幅なコスト削減が期待できる.

6.2.4 分類に失敗している検体の調査

本実験では,分類に失敗している検体に関する詳細な調査は実施していない.しかし調査を することで,分類精度の向上につながる可能性がある.つまり分類に失敗している検体の共通 点を発見できれば,それを特徴とすることで精度向上できる.またどのような特徴があるか発 見できれば,今後の研究の発展につながる.

(38)

謝辞

本修士論文の作成にあたり,日ごろよりご指導を頂いた早稲田大学基幹理工学研究科の後藤 滋樹教授に深く感謝いたします.また,本研究を進めるにあたり,後藤研究室の皆様には様々 なアドバイスとご協力をいただきました.重ねて感謝いたします.

(39)

参考文献

[1] SophosLabs, “セキュリティ脅威レポート2014,” Sophos,

http://www.sophos.com/ja-jp/threat-center/medialibrary/PDFs/other/sophos- security-threat-report-2014.pdf, January, 2014.

[2] 読売新聞(YOMIURI ONLINE), “「IoT乗っ取り」攻撃でツイッターなどがダウン,”

http://www.yomiuri.co.jp/science/goshinjyutsu/20161028-OYT8T50051.html, December, 2016.

[3] G DATA SECURITYLABS, “G DATA SECURITYLABS MALWARE REPORT,” G DATA Software AG,

https://public.gdatasoftware.com/Presse/Publikationen/Malware_Reports/

GData_PCMWR_H2_2014_EN_v1.pdf, May 2015.

[4] McAfee Labs, “McAfee脅威レポート:2016年第2四半期,” McAfee,

http://www.mcafee.com/jp/resources/reports/rp-quarterly-threats-sep- 2016.pdf, June, 2016.

[5] The Guardian, “Antivirus software is dead, says security expert at Symantec,”

https://www.theguardian.com/technology/2014/may/06/antivirus-software- fails-catch-attacks-security-expert-symantec

[6] 戸部 和洋, 森 達哉, 千葉 大紀, 下田 晃弘, 後藤 滋樹, “実行ファイルに含まれる文字列 の学習に基づくマルウェア検出方法,”マルウェア対策研究人材育成ワークショップ 2010, October 2010.

[7] Kaspersky,

http://www.kaspersky.com

[8] Trend Micro,

http://jp.trendmicro.com

(40)

参考文献

[9] McAfee,

http://www.mcafee.com

[10] 青木 一樹, 後藤 滋樹, “マルウェア検知のためのAPIコールパターンの分析,” 電子情報通 信学会総合大会講演論文集, pp.179, March 2014.

[11] 堀合 啓一, 今泉 隆文, 田中 英彦, “マルウェア亜種の動的挙動を利用した自動分類手法の 提案と実装,” 情報処理学会論文誌, Vol.50, No.4, pp.1321-1333, April 2009.

[12] 新井 悠, 岩村 誠, 川古谷 裕平, 青木 一史, 星澤 裕二, “アナライジング・マルウェア?フ リーツールを使った感染事案対処,”オライリージャパン, pp. 43–45, December 2010.

[13] Igor Santos, Felix Brezo, avier Nieves, YOseba K Penya, Borja Sanz, Carlos Laorden, Pablo G.Bringas, “Idea: Opcode-Sequence-Based Malware Detection,” ESSOS 2010, LNCS 5965, pp. 35-43, 2010.

[14] 碓井 利宣, 重松 邦彦, 武田 圭史, 村井 純, “サブルーチンの静的解析に基づくマルウェア 分類手法の提案,”全国大会講演論文集 2012(1), pp.597-599, March 2012.

[15] 岩本 一樹, 和崎 克己, “静的解析により抽出されたAPI推移に基づくマルウェアの分類,”

情報処理学会論文誌, Vol.54, No.3, pp.1199-1210, March 2013.

[16] 仲山 裕也, “印字可能な文字列によるマルウェアの分類,” 早稲田大学 2014年度卒業論文, February 2015.

[17] Windows API Index (Windows),

http://msdn.microsoft.com/ja-JP/library/windows/desktop/ff818516(v=vs.85) .aspx

[18] Microsoft - Official Home Page,

http://www.microsoft.com/en-us/default.aspx

[19] LIBSVM – A Library for Support Vector Machines, http://www.csie.ntu.edu.tw/?cjlin/libsvm

[20] C.M.ビショップ, “パターン認識と機械学習 下 ベイス理論による統計的予測,” 丸善出

版, 2012.

(41)

参考文献

[21] 高田 雄太, 寺田 真敏, 村上 純一,笠間 貴弘, 吉岡 克成, 畑田 充弘, “マルウェア対策のた めの研究用データセット 〜MWS Datasets 2016〜,”情報処理学会 研究報告コンピュータ セキュリティ(CSEC), 2016年7月.

[22] 株式会社FFRI,

http://www.ffri.jp/

[23] Automated Malware Analysis - Cuckoo Sandbox, https://cuckoosandbox.org/

[24] VirusTotal,

https://www.virustotal.com/

[25] SECURELIST, “Rules for naming detected objects.”

http://www.securelist.com/en/threats/detect?chapter=136

参照

関連したドキュメント

3.(結 果)

本講義では , 確率過程論を展開する上で , 重要な道具である確率積分(伊藤積分)や伊藤の公式 等について解説し,

本稿では,既存の EDA である PBILc と HIS を参考に して,多様性が異なる複数の確率モデルを用いた新しい 実数値 EDA

10 連続型確率変数の関数の確率密度関数と母期待値と推定

この確率にしたがう乱数を返す関数 int

2.4 いろいろな確率分布 ( 教科書

アクセント句内でアクセント核を 2.2 節で説明 した方法に基づき決定し、各単語のアクセント 4.3 評価 を決定する。

–  依存関係を条件付き確率でまとめる –  各事象の確率を現状に基づいて計算.