(57)【要約】  分類装置（１０）は、ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、１回または複数回の通信に関する属性情報を末端のノードとする木構造のデータを構築し、末端のノードの属性情報を基に、上位のノードの属性情報を算出し、最上位のノードの属性情報に基づいて、ソフトウェアの種類を特定して分類する。
2017094377.tif 000002
【特許請求の範囲】
【請求項１】
分類装置によって実行される分類方法であって、
ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、１回または複数回の通信に関する属性情報を末端のノードとする木構造のデータを構築する構築工程と、
前記末端のノードの属性情報を基に、上位のノードの属性情報を算出する算出工程と、
最上位のノードの属性情報に基づいて、前記ソフトウェアの種類を特定して分類する分類工程と
を含んだことを特徴とする分類方法。
【請求項２】
前記構築工程は、前記末端のノードのうち、通信が発生した時刻が最も近い２つのノードの属性情報を基に、該２つのノードに対する新たな上位のノードを作成し、新たに作成されたノードを含め上位のノードが存在しないノードのうち、時刻が最も近い２つのノードの属性情報を基に、該２つのノードに対する新たな上位のノードを作成する処理を繰り返すことを特徴とする請求項１に記載の分類方法。
【請求項３】
前記構築工程は、前記末端のノードのうち、通信が発生した時刻が最も早いノードと２番目に早いノードとの属性情報を基に、該２つのノードに対する新たな上位のノードを作成し、新たに作成されたノードを含め上位のノードが存在しないノードのうち、通信が発生した時刻が最も早いノードと２番目に早いノードとの属性情報を基に、該２つのノードに対する新たな上位のノードを作成する処理を繰り返すことを特徴とする請求項１に記載の分類方法。
【請求項４】
前記構築工程は、前記末端のノードのうち、類似度が高いノード同士の属性情報を基に、該２つのノードに対する新たな上位のノードを作成し、新たに作成されたノードを含め上位のノードが存在しないノードのうち、類似度が高いノード同士の属性情報を基に、該２つのノードに対する新たな上位のノードを作成する処理を繰り返すことを特徴とする請求項１に記載の分類方法。
【請求項５】
前記算出工程は、前記末端のノードの属性情報を入力とし、上位のノードの属性情報を出力とする第一の関数を用いて、全ての上位のノードの属性情報を算出することを特徴とする請求項１〜４のいずれか一つに記載の分類方法。
【請求項６】
ソフトウェアの種類が既知であるソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から構築された前記木構造のデータにおける末端のノードの属性情報を入力とし、上位のノードの属性情報を出力とする第一の関数を用いて、全ての上位のノードの属性情報を算出し、さらに、最上位のノードの属性情報を入力とし、ソフトウェアの種類を出力する第二の関数を用いて、ソフトウェアの種類を特定する特定工程と、
前記特定工程によって特定されたソフトウェアの種類と実際のソフトウェアの種類との誤差が小さくなるように、前記第一の関数および前記第二の関数を変更する変更工程と、
をさらに含んだことを特徴とする請求項１に記載の分類方法。
【請求項７】
前記構築工程は、前記ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信のうち、通信先が同一である複数の通信に関する属性情報をまとめて一つの末端ノードとし、前記木構造のデータを構築することを特徴とする請求項１に記載の分類方法。
【請求項８】
ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、１回または複数回の通信に関する属性情報を末端のノードとする木構造のデータを構築する構築部と、
前記末端のノードの属性情報を基に、上位のノードの属性情報を算出する算出部と、
最上位のノードの属性情報に基づいて、前記ソフトウェアの種類を特定して分類する分類部と
を有することを特徴とする分類装置。
【請求項９】
ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、１回または複数回の通信に関する属性情報を末端のノードとする木構造のデータを構築する構築ステップと、
前記末端のノードの属性情報を基に、上位のノードの属性情報を算出する算出ステップと、
最上位のノードの属性情報に基づいて、前記ソフトウェアの種類を特定して分類する分類ステップと
をコンピュータに実行させるための分類プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分類方法、分類装置および分類プログラムに関する。
【背景技術】
【０００２】
従来、悪性なソフトウェアであるマルウェアの種類を特定して分類する手法が知られている。このようなマルウェアを分類する手法として、マルウェアのコードに基づく手法、ホスト上での挙動に基づく手法、ネットワーク上での挙動に基づく手法に大別することができる。【０００３】
マルウェアのコードに基づく手法では、マルウェアを逆アセンブリしたコードから、連続する単語の出現回数に基づくｎ-ｇｒａｍ特徴量を抽出し、機械学習を適用することで、マルウェアを分類する手法が提案されている（例えば、非特許文献１参照）。他の手法としては、逆アセンブリしたコードから使用される関数の依存関係のグラフを作成し、グラフの距離を定義することで、マルウェアを分類する手法が提案されている（例えば、非特許文献２参照）。【０００４】
また、ホスト上の挙動に基づく手法では、ＣＷＳａｎｄＢｏｘと呼ばれるマルウェアを安全に解析するサンドボックスシステムで解析した際に生成されるレポートに、特定の文字列が出現するかどうかを特徴量として算出し、機械学習を適用することでマルウェアを分類する手法が提案されている（例えば、非特許文献３参照）。他の手法としては、マルウェア実行時に呼び出されたＡＰＩの時系列に対し、文章のトピックを推定する手法であるトピックモデルを適用し、マルウェアを分類する手法が提案されている（例えば、非特許文献４参照）。【０００５】
また、ネットワーク上の挙動に基づく手法では、マルウェアによる個々の通信をノードとし、ＤＮＳ（Domain  Name  System）名前解決に基づいてＨＴＴＰ（Hyper  Text  Transfer  Protocol）通信が行われたなどの依存関係に基づいてエッジを作成することで、グラフを作成する。グラフの大きさやノードのエッジ数の平均などを特徴量として算出し、機械学習を適用する手法が提案されている（例えば、非特許文献５参照）。他の手法としては、マルウェアの特徴的な通信パターンを抽出しシグネチャを作成することで、マルウェアを検知する手法が提案されている（例えば、非特許文献６参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Kolter,  J.  Z.  and  Maloof,  M.A.,  “Learning  to  detect  and  classify  malicious  executables  in  the  wild.”,  The  Journal  of  Machine  Learning  Research,  Vol.  7,  pp.  2721-2744,  2006
【非特許文献２】Kong,  D.  and  Yan,  G.,  “Discriminant  malware  distance  learning  on  structural  information  for  automated  malware  classification.”,  in  Proceedings  of  the  19th  ACM  SIGKDD  international  conference  on  Knowledge  discovery  and  data  mining,  2013,  pp.  1357-1365.
【非特許文献３】Rieck,  K.,  Holz,  T.,  Willems,  C.,  Dussel,  P.  and  Laskov,  P.,  “Learning  and  classification  of  malware  behavior.”,  in  Detection  of  Intrusions  and  Malware,  and  Vulnerability  Assessment,  2008,  pp.  108-125.
【非特許文献４】Xiao,  H.  and  Stibor,  T.,  “A  supervised  topic  transition  model  for  detecting  malicious  system  call  sequences.”,  in  Proceedings  of  the  2011  workshop  on  Knowledge  discovery,  modeling  and  simulation,  2011,  pp.  23-30.
【非特許文献５】Nari,  S.,  et  al.,  “Automated  malware  classification  based  on  network  behavior.”,  in  International  Conference  on  Computing,  Networking  and  Communications  ,  2013,  pp.  642-647.
【非特許文献６】Mizutani,  M.,  Shirahata,  S.,  Minami,  M.  and  Murai,  J.,  “Rook:  Multi-session  based  network  security  event  detector.”,  in  International  Symposium  on  Applications  and  the  Internet,  2008,  pp.  48-54.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記の従来技術では、マルウェアの特徴を適切に捉えることができず、マルウェアを適切に分類することができない場合があるという課題がある。例えば、マルウェアのコードに基づく手法では、マルウェアが難読化されていると、マルウェアの特徴を捉えることができず、適切に分類できなくなると考えられる。ホスト上の挙動に基づく手法では、マルウェアが解析環境をレジストリ名やファイル名から検知し、検知した場合に悪性な挙動を示さなくなる機能を具備していると、悪性な挙動の特徴を抽出することができず、適切に分類することができなくなると考えられる。【０００８】
一方、ネットワーク上の挙動に基づく手法では、実際にマルウェアを実行するため難読化の影響を受けず、情報の収集にはマルウェアのトラフィックを監視する機器のみが必要なため、解析環境の検知による影響を受けないと考えられる。マルウェアのネットワーク上の挙動には、Ｃ＆Ｃサーバに通信した後に攻撃を実行するといった時系列特徴が存在する。しかし、攻撃対象とその数はＣ＆Ｃサーバから送信されるコマンドによって異なるため、この特徴を捉えるためには、柔軟な時系列解析が必要となる。しかし、従来技術は通信の順序性を考慮していない手法と、予め用意した固定的なシグネチャに基づく手法であるため、柔軟な時系列解析を実施できない。このため、柔軟な時系列解析によって、マルウェアのネットワーク上の時系列の特徴を捉え、マルウェアを分類する手法を構築する必要がある。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明の分類方法は、分類装置によって実行される分類方法であって、ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、１回または複数回の通信に関する属性情報を末端のノードとする木構造のデータを構築する構築工程と、前記末端のノードの属性情報を基に、上位のノードの属性情報を算出する算出工程と、最上位のノードの属性情報に基づいて、前記ソフトウェアの種類を特定して分類する分類工程とを含んだことを特徴とする。【００１０】
また、本発明の分類装置は、ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、１回または複数回の通信に関する属性情報を末端のノードとする木構造のデータを構築する構築部と、前記末端のノードの属性情報を基に、上位のノードの属性情報を算出する算出部と、最上位のノードの属性情報に基づいて、前記ソフトウェアの種類を特定して分類する分類部とを有することを特徴とする。【００１１】
また、本発明の分類プログラムは、ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、１回または複数回の通信に関する属性情報を末端のノードとする木構造のデータを構築する構築ステップと、前記末端のノードの属性情報を基に、上位のノードの属性情報を算出する算出ステップと、最上位のノードの属性情報に基づいて、前記ソフトウェアの種類を特定して分類する分類ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、マルウェアの特徴を捉え、マルウェアを適切に分類することができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施形態に係る分類装置の概要を示す構成図である。
【図２】図２は、識別対象ソフトウェアの通信に関する情報例を示す図である。
【図３】図３は、既知ソフトウェアの通信に関する情報例を示す図である。
【図４】図４は、通信が発生した時刻が近いノードに対する上位ノードを作成することで木を構築する例を説明する図である。
【図５】図５は、通信が発生した時刻が早いノードに対する上位ノードを作成することで木を構築する例を説明する図である。
【図６】図６は、属性情報の類似性が高いノードに対する上位ノードを作成することで木を構築する例を説明する図である。
【図７】図７は、上位ノードの属性情報を算出する処理の一例を説明する図である。
【図８】図８は、本実施形態に係る分類装置における分類モデル作成処理の流れを示すフローチャートである。
【図９】図９は、本実施形態に係る分類装置におけるソフトウェア分類処理の流れを示すフローチャートである。
【図１０】図１０は、分類プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願に係る分類方法、分類装置および分類プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係る分類方法、分類装置および分類プログラムが限定されるものではない。
【００１５】
［実施形態］
以下の実施形態では、実施形態に係る分類装置の構成及び処理の流れを順に説明し、その後、最後に実施形態による効果を説明する。
【００１６】
［分類装置の構成］
まず、図１を用いて、分類装置１０の構成を説明する。図１は、本実施形態に係る分類装置の概要を示す構成図である。図１に示すように、この分類装置１０は、対象通信入力部１１、既知通信入力部１２、出力部１６、制御部２０および記憶部３０を有する。
【００１７】
対象通信入力部１１は、識別対象のソフトウェアの通信を入力として許容する。既知通信入力部１２は、ソフトウェアの種別が既知である既知ソフトウェアの通信を入力として許容する。出力部１６は、後述する分類モデルまたは分類結果を出力する。
【００１８】
記憶部３０は、制御部２０による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、対象通信入力部１１、既知通信入力部１２から入力された情報を記憶する。例えば、記憶部３０は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
【００１９】
ここで、図２を用いて、対象通信入力部１１によって入力される情報であって、記憶部３０が記憶する通信に関連する情報について説明する。図２は、識別対象ソフトウェアの通信に関する情報例を示す図である。図２に例示するように、記憶部３０は、ソフトウェアを実行した際に発生する通信先との一連の通信を識別する「通番」と、通信が発生したタイミングを示す「時刻」と、発生した通信のプロトコルを示す「プロトコル」と、名前解決を実施したドメイン名を示す「名前解決ドメイン」と、発生した通信の通信先ドメインを示す「通信先ドメイン」と、発生した通信がＨＴＴＰ通信だった場合のＨＴＴＰメソッド名を示す「ＨＴＴＰメソッド」とを対応付けて記憶する。なお、図２の時刻は、所定の時刻を基準として、該所定の時刻から何秒後に通信が発生したかを示している。例えば、時刻「４」とある場合には、所定の時刻から「４」秒後に通信が発生したことを意味する。
【００２０】
また、プロトコルとしてはＤＮＳやＨＴＴＰが考えられるが、これに限るものではなく、ＳＭＴＰ（Simple  Mail  Transfer  Protocol）、ＳＳＬ（Secure  Sockets  Layer）、ＴＣＰ（Transmission  Control  Protocol）、ＵＤＰ（User  Datagram  Protocol）などでもよい。ただし、時刻情報は、通信発生順序と変更することもできる。なお、図２において、上記した通信に関連する情報として、時刻情報は必須とし、その他に、プロトコル、名前解決ドメイン、通信先ドメイン、ＨＴＴＰメソッドなどを例示しているが、これに限るものではなく、ポート番号、ドメインに対応するＩＰアドレス数、ＨＴＴＰレスポンスのサイズ、ＵＲＬなどを記憶してもよい。
【００２１】
なお、図２に例示した情報は、少なくとも後述の図３の内容を含んでいることが望ましいが、含んでいない場合は、含まれていない情報を空欄として扱って分類する等の処理が可能である。また、これらの情報は、対象通信入力部１１が保有する外部インタフェースを介して入力される。当該情報は、外部に設けた機能から自動的に入力される場合もあれば、オペレータによって手動で入力される場合もある。
【００２２】
また、これらの情報は、ｐｃａｐ（packet  capture）やｓｙｓｌｏｇなど、機器が保有する通信ログから生成することができる。通信ログからこれらの情報を生成する場合、データ変換用プログラムが必要となるが、対象通信入力部１１に保有させてもよいし、外部に設けた機能に保有させてもよい。なお、通番はマルウェア１検体で発生した通信をまとめて振り、重複は許さないものとする。
【００２３】
次に、図３を用いて、既知通信入力部１２によって入力される情報であって、記憶部３０が記憶する通信に関連する情報について説明する。図３は、既知ソフトウェアの通信に関する情報例を示す図である。図３に例示するように、記憶部３０は、ソフトウェアを実行した際に発生する通信先との一連の通信を識別する「通番」と、ソフトウェアの種別が既知である既知ソフトウェアの種類を示す「ラベル」と、通信が発生したタイミングを示す「時刻」と、発生した通信のプロトコルを示す「プロトコル」と、名前解決を実施したドメイン名を示す「名前解決ドメイン」と、発生した通信の通信先ドメインを示す「通信先ドメイン」と、発生した通信がＨＴＴＰ通信だった場合のＨＴＴＰメソッド名を示す「ＨＴＴＰメソッド」とを対応付けて記憶する。
【００２４】
なお、図３において、上記した通信に関連する情報として、時刻情報は必須とし、その他に、プロトコル、名前解決ドメイン、通信先ドメイン、ＨＴＴＰメソッドなどを例示しているが、これに限るものではない。ただし、時刻情報は、通信発生順序と変更することもできる。
【００２５】
また、本発明における、プロトコルとしてはＤＮＳ、ＨＴＴＰ、ＳＭＴＰが考えられるが、これに限るものではない。また、ソフトウェアの性質を識別するラベルを各通信に付与するが、ラベルは図に示した「ワーム」や「ウイルス」に限るものではなく、「バックドア」、「ダウンローダー」、「スパイウェア」等でもよい。
【００２６】
また、これらの情報は、既知通信入力部１２が保有する外部インタフェースを介して入力される。当該情報は、外部に設けた機能から自動的に入力される場合もあれば、オペレータによって手動で入力される場合もある。
【００２７】
また、これらの情報は、例えばサンドボックスやマルウェア動的解析システムに代表される、既知ソフトウェアの通信先を収集する機器が保有する解析ログから生成することができる。解析ログからこれらの情報を生成する場合、データ変換用プログラムが必要となるが、既知通信入力部１２に保有させてもよいし、外部に設けた機能に保有させても良い。なお、通番はマルウェア１検体で発生した通信をまとめて振り、重複は許さないものとする。
【００２８】
図１の説明に戻って、制御部２０は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、木構築部１３、属性情報算出部１４および分類部１５を有する。木構築部１３は、対象通信入力部１１と既知通信入力部１２で入力した各通信から、１回または複数回の通信に関する属性情報を末端ノードとする木を構築する。属性情報算出部１４は、木構築部１３によって構築された木の上位ノードの属性情報を、下位ノードの属性情報をもとに算出する。分類部１５は、属性情報算出部１４によって算出された最上位のノードの属性情報を用いて、ソフトウェアの分類を行う。以下に、各部について、詳しく説明する。
【００２９】
木構築部１３は、ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、１回または複数回の通信に関する属性情報を末端のノードとする木構造のデータ（以下では、適宜「木」と記載）を構築する。木構築部１３は、木構造のデータを構築するタイミングとして、分類モデルを作成する際、または、分類モデルを用いて識別対象ソフトウェアを分類する際に、木構造のデータを構築する。木構築部１３は、分類モデルを作成する際には、既知通信入力部１２で入力されたソフトウェアの種類が既知であるソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、木構造データを構築する。一方、木構築部１３は、分類モデルを用いて識別対象ソフトウェアを分類する際には、対象通信入力部１１で入力された通信の情報を基に、木構造データを構築する。
【００３０】
また、木構築部１３は、木構造データを構築する手法として、例えば、通信が発生した時刻が近いノードに対する上位ノードを作成して木を構築する手法と、通信が発生した時刻が早いノードに対する上位ノードを作成して木を構築する手法と、属性情報の類似度が高いノードに対する上位ノードを作成し、木を通番ごとに構築する手法のうち、いずれか１つの手法を用いて木構造データを構築するものとする。上記３つの手法のうち、いずれの手法を使用するかは任意に選択できるものとする。
【００３１】
例えば、木構築部１３は、末端のノードのうち、通信が発生した時刻が最も近い２つのノードの属性情報を基に、該２つのノードに対する新たな上位のノードを作成し、新たに作成されたノードを含め上位のノードが存在しないノードのうち、時刻が最も近い２つのノードの属性情報を基に、該２つのノードに対する新たな上位のノードを作成する処理を繰り返すことで木構造のデータを構築する。
【００３２】
ここで、図４を用いて、通信が発生した時刻が近いノードに対する上位ノードを作成し、木を構築する例を説明する。ここでは、対象通信入力部１１で入力された通信の情報または既知通信入力部１２で入力された通信の情報を基に、１回または複数回の通信を末端ノードとする木を通番ごとに構築する。
【００３３】
例えば、１回または複数回の通信に対応するノードを、通信が発生した順に末端ノードの位置に配置する（図４の（１）参照）。複数回の通信を１つのノードに対応させる場合は、ノードの時刻として通信の平均、最初の通信の時刻、最後の通信の時刻などを採用することができる。例えば、通信先ドメインごとに通信をまとめると、マルウェアの挙動として想定される通信環境の確認、攻撃指令の受信、被害者に関する情報の送信、攻撃等の情報を抽出でき、マルウェアの挙動を効果的に表現可能と考えられる。また、ノード数の削減にもなるため、計算量の低減も可能である。
【００３４】
次に、上位ノードが存在しないノードの中で、隣り合うノードの時刻の差を計算し、最も時刻が近い２つのノードに対し上位ノードを作成する（図４の（２）参照）。上位ノードの時刻は、下位ノードの平均の時刻、またはどちらかの下位ノードの時刻などを採用することができる。新たに作成されたノードを含め上位ノードが存在しないノードに対し、すべての末端ノードが１つの木に属するようになるまでこの処理を繰り返す（図４の（３）参照）。なお、テーブルに同時刻での通信情報が記載されていた場合、記載順序に応じて通信が発生したものとして処理する。
【００３５】
マルウェアの通信は、特定の目的の通信を行った後、その結果を処理し、次の通信に遷移すると考えられる。つまり、同一の目的の通信は短い間隔で発生すると考えられる。マルウェアが解析を妨害するために、一時的に挙動を停止する動作や、無関係な通信を発生する動作が埋め込まれていなければ有効と考えられる。
【００３６】
また、例えば、木構築部１３は、末端のノードのうち、通信が発生した時刻が最も早いノードと２番目に早いノードとの属性情報を基に、該２つのノードに対する新たな上位のノードを作成し、新たに作成されたノードを含め上位のノードが存在しないノードのうち、通信が発生した時刻が最も早いノードと２番目に早いノードとの属性情報を基に、該２つのノードに対する新たな上位のノードを作成する処理を繰り返すことで木構造のデータを構築するようにしてもよい。
【００３７】
ここで、図５を用いて、通信が発生した時刻が近いノードに対する上位ノードを作成し、木を構築する例を示す。ここでは、対象通信入力部１１で入力された通信の情報または既知通信入力部１２で入力された通信の情報を基に、１回または複数回の通信を末端ノードとする木を通番ごとに構築する。
【００３８】
例えば、１回または複数回の通信に対応するノードを、通信が発生した順に末端ノードの位置に配置する（図５の（１）参照）。複数回の通信を１つのノードに対応させる場合は、ノードの時刻として通信の平均、最初の通信の時刻、最後の通信の時刻などを採用することができる。例えば、通信先ドメインごとに通信をまとめると、マルウェアの挙動として想定される通信環境の確認、攻撃指令の受信、被害者に関する情報の送信、攻撃等の情報を抽出でき、マルウェアの挙動を効果的に表現可能と考えられる。また、ノード数の削減にもなるため、計算量の低減も可能である。
【００３９】
次に、上位ノードが存在しないノードの中で、ノードの時刻が最も早い２つのノードに対する上位ノードを作成する（図５の（２）参照）。上位ノードの時刻は、下位ノードの平均の時刻、またはどちらかの下位ノードの時刻などを採用することができる。新たに作成されたノードを含め上位ノードが存在しないノードに対し、すべての末端ノードが1つの木に属するようになるまでこの処理を繰り返す（図５の（３）参照）。なお、テーブルに同時刻での通信情報が記載されていた場合、記載順序に応じて通信が発生したものとして処理する。
【００４０】
マルウェアによる解析妨害として、一時的に挙動を停止する動作をランダムに挿入することが考えられる。この場合、通信間隔に基づいてノードを結合させると、異なる目的のノードを先に結合させることになり、推定がうまくいかないと考えられる。このような場合には、通信が発生した時刻が早いノードから結合させることで影響を最低限に抑えることが可能と考えられる。
【００４１】
また、例えば、木構築部１３は、末端のノードのうち、類似度が高いノード同士の属性情報を基に、該２つのノードに対する新たな上位のノードを作成し、新たに作成されたノードを含め上位のノードが存在しないノードのうち、類似度が高いノード同士の属性情報を基に、該２つのノードに対する新たな上位のノードを作成する処理を繰り返すことで木構造のデータを構築するようにしてもよい。
【００４２】
ここで、図６を用いて、属性情報の類似性が高いノードに対する上位ノードを作成し、木を構築する例を示す。ここでは、対象通信入力部１１で入力された通信の情報または既知通信入力部１２で入力された通信の情報を基に、１回または複数回の通信を末端ノードとする木を通番ごとに構築する。
【００４３】
例えば、１回または複数回の通信に対応するノードを、通信が発生した順に末端ノードの位置に配置する（図６の（１）参照）。複数回の通信を１つのノードに対応させる場合は、ノードの時刻として通信の平均、最初の通信の時刻、最後の通信の時刻などを採用することができる。例えば、通信先ドメインごとに通信をまとめると、マルウェアの挙動として想定される通信環境の確認、攻撃指令の受信、被害者に関する情報の送信、攻撃等の情報を抽出でき、マルウェアの挙動を効果的に表現可能と考えられる。また、ノード数の削減にもなるため、計算量の低減も可能である。
【００４４】
次に、上位ノードが存在しないノードの中で、ノードの属性情報の類似度が最も高い2つのノードに対する上位ノードを作成する（図６の（２）参照）。上位ノードと末端ノードとの類似度は、上位ノードの結合する各ノード（通信２、通信３に対応するノード）と末端ノード（通信１に対応するノード）との類似度を計算し、最大値、最小値、平均値などを採用することができる。
【００４５】
上位ノード同士の類似度は、下位ノード同士の類似度を全ての組み合わせで計算し、最大値、最小値、平均値などを採用することができる。ノードの属性情報としては、ドメインに対応するＩＰアドレス数、ドメインに含まれる数字の割合、各プロトコルの通信数などを利用することができる。
【００４６】
類似度の算出方法としては、属性情報がすべて数値の場合はユークリッド距離、マンハッタン距離などを利用することができ、カテゴリデータが含まれる場合はＪａｃｃａｒｄ係数などを用いることができる。属性情報の類似度に加え、通信の発生時間を考慮して最終的な類似度を算出してもよい。新たに作成されたノードを含め上位ノードが存在しないノードに対し、すべての末端ノードが１つの木に属するようになるまでこの処理を繰り返す（図６の（３）参照）。また、類似度の算出方法として複数の方法を用意し、ある算出方法で類似度が閾値以上のノードが存在しなくなった場合に他の算出方法を用いて類似度を算出することを繰り返しても良い。
【００４７】
マルウェアの解析妨害として、マルウェアの本来の目的と無関係な通信を挿入する手法が考えられる。この場合、図４または図５の手法では妨害の通信とその他の通信を先に結合させることになり、推定がうまくいかないと考えられる。一方、通信の類似度に基づく手法では、同一の目的に関する通信は類似していると考えられるので、適切に木を構築可能と考えられる。
【００４８】
属性情報算出部１４は、末端のノードの属性情報を基に、上位のノードの属性情報を算出する。具体的には、属性情報算出部１４は、分類モデルを用いて識別対象ソフトウェアを分類する際には、末端のノードの属性情報を入力とし、上位のノードの属性情報を出力とする特定の関数を用いて、全ての上位のノードの属性情報を算出する。ここで、図７を用いて、上位ノードの属性情報の算出する例を説明する。図７は、上位ノードの属性情報を算出する処理の一例を説明する図である。
【００４９】
属性情報算出部１４は、前述の木構築部１３によって構築された木を基に、上位ノードの属性情報を算出する。ノードの属性情報としては、ドメインに対応するＩＰアドレス数、ドメインに含まれる数字の割合、各プロトコルの通信数などを利用することができる。属性情報にカテゴリデータが含まれる場合は、カテゴリ数を次元としカテゴリのインデックスの次元のみ「１」残りは「０」のベクトルとして表現するなど、属性情報を数値ベクトルに変換する必要がある。上位のノードの属性情報は、下位の２つのノードを引数とする関数ｆによって算出する。上位のノードの属性情報の算出では、この関数ｆを木構造に従って再帰的に適用する。
【００５０】
また、属性情報算出部１４は、分類モデルを作成する際にも同様に、木構築部１３によって構築された木構造のデータにおける末端のノードの属性情報を入力とし、上位のノードの属性情報を出力とする特定の関数を用いて、全ての上位のノードの属性情報を算出する。
【００５１】
分類部１５は、最上位のノードの属性情報に基づいて、ソフトウェアの種類を特定して分類する。具体的には、分類部１５は、識別対象ソフトウェアを分類する際には、最上位のノードの属性情報を入力とし、マルウェアの種類を出力する関数を用いて、マルウェアの種類を特定し、該マルウェアの種類に応じて分類する。
【００５２】
また、分類部１５は、分類モデルを作成する際には、最上位のノードの属性情報を入力とし、ソフトウェアの種類を算出する関数を用いて、種類が既知であるソフトウェアの種類を算出する。ここで、分類部１５は、算出されたソフトウェアの種類と実際のソフトウェアの種類との誤差が小さくなるように、特定の関数ｆおよびソフトウェアの種類を算出する関数を変更して分類モデルを作成する。
【００５３】
［分類装置の処理の一例］
次に、図８および図９を用いて、分類装置１０における処理の流れを説明する。図８は、本実施形態に係る分類装置における分類モデル作成処理の流れを示すフローチャートである。図９は、本実施形態に係る分類装置におけるソフトウェア分類処理の流れを示すフローチャートである。
【００５４】
まず、図８を用いて、分類モデルを作成する処理を説明する。図８に示すように、分類装置１０は、ソフトウェアの種類が既知である既知ソフトウェアの通信の情報の入力を受け付ける（ステップＳ１０１）。そして、分類装置１０は、既知通信入力部１２で入力された通信の情報から木を構築する（ステップＳ１０２）。木構築部１３は、木構造データを構築する手法として、例えば、通信が発生した時刻が近いノードに対する上位ノードを作成して木を構築する手法と、通信が発生した時刻が早いノードに対する上位ノードを作成して木を構築する手法と、属性情報の類似度が高いノードに対する上位ノードを作成し、木を通番ごとに構築する手法のうち、いずれか１つの手法を用いて木構造データを構築する。
【００５５】
続いて、分類装置１０は、末端のノードの属性情報を基に、上位のノードの属性情報を算出する。具体的には、分類装置１０は、構築された木構造のデータにおける末端のノードの属性情報を入力とし、上位のノードの属性情報を出力とする特定の関数ｆを用いて、全ての上位のノードの属性情報を算出する（ステップＳ１０３）。ここで、さらに、分類装置１０は、属性情報からソフトウェアの種類を算出する関数を用いて、最上位のノードからソフトウェアの種類を予測する。
【００５６】
そして、分類装置１０は、予測誤差に基づく学習アルゴリズムを適用し、上記の分類モデルを作成する（ステップＳ１０４）。すなわち、分類装置１０は、ステップＳ１０１にて入力された既知のソフトウェアの種類（ラベル）を「教師データ」とした教師あり機械学習により、分類モデルを作成する。予測されたソフトウェアの種類と実際のソフトウェアのラベルとの誤差が小さくなるように、属性情報からソフトウェアの種類を算出する関数と上位ノードの属性情報を算出する関数とを変更し、分類モデルを作成する。なお、この処理は十分な回数繰り返し行うものとする。その後、分類装置１０は、作成された分類モデルを出力する（ステップＳ１０５）。なお、ここでは、属性情報からソフトウェアの種類を算出する関数と上位ノードの属性情報を算出する関数の両方を含むものを分類モデルと記載する。
【００５７】
次に、図９を用いて、ソフトウェアを分類する処理を説明する。図９に示すように、分類装置１０は、対象通信入力部１１で入力された識別対象のソフトウェアの通信の情報を受け付ける（ステップＳ２０１）。そして、分類装置１０は、対象通信入力部１１で入力された通信の情報を基に、木構造データを構築する（ステップＳ２０２）。
【００５８】
そして、分類装置１０は、上述の作成されたモデルを読み込み（ステップＳ２０３）、末端のノードの属性情報を入力とし、上位のノードの属性情報を出力とする関数ｆを用いて、全ての上位のノードの属性情報を算出した後、最上位のノードの属性情報を入力し、ソフトウェアの種類を出力する分類モデルを用いて、ソフトウェアの種類を算出する（ステップＳ２０４）。その後、分類装置１０は、ソフトウェアの分類結果を出力する（ステップＳ２０５）。
【００５９】
［実施形態の効果］
このように、分類装置１０は、ソフトウェアを実行した際に発生する単数または複数の通信先との一連の通信から、１回または複数回の通信に関する属性情報を末端のノードとする木構造のデータを構築し、末端のノードの属性情報を基に、上位のノードの属性情報を算出し、最上位のノードの属性情報に基づいて、ソフトウェアの種類を特定して分類する。このため、分類装置１０が、単数または複数の通信先との１回または複数回の通信に関する属性情報を末端ノードとする木を構築し、下位のノードの属性情報をもとに、上位のノードの属性情報を算出し、最上位のノードの属性情報に基づいて分類を行うことで、多少の変化は許容しつつ、ソフトウェアに特徴的な通信の時系列特徴を捉えることで難読化や解析環境検知の影響を受けず精度の高いソフトウェアの分類を行うことが可能となる。
【００６０】
また、分類装置１０は、上述したように、木構造データを構築する手法として、例えば、通信が発生した時刻が近いノードに対する上位ノードを作成して木を構築する手法と、通信が発生した時刻が早いノードに対する上位ノードを作成して木を構築する手法と、属性情報の類似度が高いノードに対する上位ノードを作成し、木を通番ごとに構築する手法のうち、いずれか１つの手法を用いて木構造データを構築する。上記３つの手法のうち、いずれの手法を使用するかは任意に選択できるものとする。例えば、マルウェアが解析を妨害するために、一時的に挙動を停止する動作や、無関係な通信を発生する動作が埋め込まれていない場合には、通信が発生した時刻が近いノードに対する上位ノードを作成して木を構築する手法が選択される。また、例えば、マルウェアによる解析妨害として、一時的に挙動を停止する動作がランダムに挿入されている場合には、通信が発生した時刻が早いノードに対する上位ノードを作成して木を構築する手法が選択される。また、例えば、マルウェアが解析を妨害するために、マルウェアの本来の目的と無関係な通信が挿入されている場合には、属性情報の類似度が高いノードに対する上位ノードを作成し、木を通番ごとに構築する手法が選択される。このように、マルウェアの挙動に応じて、最適な木構造データの構築手法が選択された上で、木構造データを構築することが可能である。
【００６１】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。例えば、木構築部１３と属性情報算出部１４とを統合してもよい。
【００６２】
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６３】
［プログラム］
また、上記実施形態において説明した分類装置１０が実行する処理について、コンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係る分類装置１０が実行する処理について、コンピュータが実行可能な言語で記述した分類プログラムを作成することもできる。この場合、コンピュータが分類プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる分類プログラムをコンピュータが読み取り可能な記録媒体に記録して、この記録媒体に記録され分類プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図１に示した分類装置１０と同様の機能を実現する分類プログラムを実行するコンピュータの一例を説明する。
【００６４】
図１０は、分類プログラムを実行するコンピュータ１０００を示す図である。図１０に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００６５】
メモリ１０１０は、図１０に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１０に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１０に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブに挿入される。シリアルポートインタフェース１０５０は、図１０に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１０に例示するように、例えばディスプレイ１１３０に接続される。
【００６６】
ここで、図１０に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の分類プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００６７】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、実行する。
【００６８】
なお、分類プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、分類プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００６９】
１０  分類装置
１１  対象通信入力部
１２  既知通信入力部
１３  木構築部
１４  属性情報算出部
１５  分類部
１６  出力部
２０  制御部
３０  記憶部
【図１】
2017094377.tif 000003
【図２】
2017094377.tif 000004
【図３】
2017094377.tif 000005
【図４】
2017094377.tif 000006
【図５】
2017094377.tif 000007
【図６】
2017094377.tif 000008
【図７】
2017094377.tif 000009
【図８】
2017094377.tif 000010
【図９】
2017094377.tif 000011
【図１０】
2017094377.tif 000012
【国際調査報告】
2017094377.tif 000013
2017094377.tif 000014
2017094377.tif 000015