(57)【要約】【課題】多種多様に派生するマルウェアの検出を容易に行う。【解決手段】実施形態の類似度判定プログラムは、取得する処理と、出力する処理とをコンピュータに実行させる。取得する処理は、所定のシステム環境下で第１のプログラムを実行させ、所定のシステムの共有ライブラリに格納されるファイル群から読み出した第１のファイル群の情報を取得する。また、取得する処理は、所定のシステム環境下で第２のプログラムを実行させ、所定のシステムの共有ライブラリに格納されるファイル群から読み出した第２のファイル群の情報を取得する。出力する処理は、取得した第１のファイル群の情報と第２のファイル群の情報とを比較し、比較結果に応じて第１のプログラムと第２のプログラムとの間の類似度を判定して出力する。【選択図】図１
2018109909.tif 000002
【特許請求の範囲】
【請求項１】
所定のシステム環境下で第１のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第１のファイル群の情報を取得し、
前記所定のシステム環境下で第２のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第２のファイル群の情報を取得し、
取得した前記第１のファイル群の情報と前記第２のファイル群の情報とを比較し、比較結果に応じて前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する、
処理をコンピュータに実行させることを特徴とする類似度判定プログラム。
【請求項２】
前記出力する処理は、前記第１のファイル群の情報に含まれるファイルを要素とする集合と、前記第２のファイル群の情報に含まれるファイルを要素とする集合との類似性を前記類似度として出力する、
ことを特徴とする請求項１に記載の類似度判定プログラム。
【請求項３】
前記出力する処理は、前記第１のファイル群の情報に含まれるファイルを要素とする集合と、前記第２のファイル群の情報に含まれるファイルを要素とする集合との類似性を示すジャックカード係数を前記類似度として出力する、
ことを特徴とする請求項２に記載の類似度判定プログラム。
【請求項４】
前記出力する処理は、前記第１のファイル群を読み出し順に並べた情報のＮ−ｇｒａｍモデルと、前記第２のファイル群を読み出し順に並べた情報のＮ−ｇｒａｍモデルとの類似度を判定して出力する、
ことを特徴とする請求項１に記載の類似度判定プログラム。
【請求項５】
前記出力する処理は、複数の前記第１のプログラムより取得した前記第１のファイル群の情報に含まれるファイルを特徴として集約した情報と、前記第２のファイル群の情報とを比較し、比較結果に応じて複数の前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する、
ことを特徴とする請求項１に記載の類似度判定プログラム。
【請求項６】
所定のシステム環境下で第１のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第１のファイル群の情報を取得し、
前記所定のシステム環境下で第２のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第２のファイル群の情報を取得し、
取得した前記第１のファイル群の情報と前記第２のファイル群の情報とを比較し、比較結果に応じて前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する、
処理をコンピュータが実行することを特徴とする類似度判定方法。
【請求項７】
所定のシステム環境下で第１のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第１のファイル群の情報を取得し、前記所定のシステム環境下で第２のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第２のファイル群の情報を取得する取得部と、
取得した前記第１のファイル群の情報と前記第２のファイル群の情報とを比較し、比較結果に応じて前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する出力部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、類似度判定プログラム、類似度判定方法および情報処理装置に関する。
【背景技術】
【０００２】
従来、ネットワークにおいて、不正に機器に感染するコンピュータウィルス、ワーム、スパイウェアなどのマルウェアを検出する方法が存在する。このマルウェア検出では、不正処理を行うソフトウェアのネットワークアドレスの走査に係る挙動と、検査対象のソフトウェアのネットワークアドレスの走査に係る挙動との相互の同一性又は類似性を比較するものがある。また、コードを要約処理しマルウェアのコードとの同一性を照合するものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５０８３７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術では、一つのマルウェアから多種多様に派生する亜種のマルウェアを検出することが困難であるという問題がある。
【０００５】
例えば、亜種のマルウェアは、攻撃先などの一部の変更により元となるマルウェアより比較的に簡単に作成されることから、多種多様なものが派生する。これら亜種のマルウェアは、コードも攻撃先も各々異なることから、派生元のマルウェアのコードやネットワークアドレスの走査に係る挙動との照合では検出することが困難である。また、これら亜種のマルウェアの検出は、全ての亜種のマルウェアを収集する必要があり、容易なことではない。
【０００６】
１つの側面では、多種多様に派生するマルウェアの検出を容易に行うことができる類似度判定プログラム、類似度判定方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、類似度判定プログラムは、取得する処理と、出力する処理とをコンピュータに実行させる。取得する処理は、所定のシステム環境下で第１のプログラムを実行させ、所定のシステムの共有ライブラリに格納されるファイル群から読み出した第１のファイル群の情報を取得する。また、取得する処理は、所定のシステム環境下で第２のプログラムを実行させ、所定のシステムの共有ライブラリに格納されるファイル群から読み出した第２のファイル群の情報を取得する。出力する処理は、取得した第１のファイル群の情報と第２のファイル群の情報とを比較し、比較結果に応じて第１のプログラムと第２のプログラムとの間の類似度を判定して出力する。
【発明の効果】
【０００８】
本発明の１実施態様によれば、多種多様に派生するマルウェアの検出を容易に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態にかかる情報処理装置の機能構成を例示するブロック図である。
【図２】図２は、システム環境を説明する説明図である。
【図３】図３は、ＡＰＩコール情報を説明する説明図である。
【図４】図４は、ＤＬＬ読出情報を説明する説明図である。
【図５】図５は、プロセス情報を説明する説明図である。
【図６】図６は、実施形態にかかる情報処理装置の動作例を示すフローチャートである。
【図７】図７は、結果出力を説明する説明図である。
【図８】図８は、実施形態にかかる情報処理装置のハードウエア構成例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、実施形態にかかる類似度判定プログラム、類似度判定方法および情報処理装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する類似度判定プログラム、類似度判定方法および情報処理装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【００１１】
図１は、実施形態にかかる情報処理装置の機能構成を例示するブロック図である。図１に示すように、情報処理装置１は、マルウエアなどの不正処理を行うソフトウェアであり、照合元となる元プログラム１１Ａと、マルウエアであるか否かの判定対象となる対象プログラム１１Ｂとを受け付けて照合を行い、判定した結果をディスプレイなどに出力する装置である。情報処理装置１は、例えばＰＣ（Personal  Computer）などを適用でき、入力部１０、実行部２０、判定部３０、出力部４０および記憶部５０を有する。
【００１２】
入力部１０は、半導体メモリやＤＶＤ（Digital  Versatile  Disc）などの記憶媒体からのデータの読み取りやインターネットなどの通信ネットワークとの通信を介してデータの入力を受け付ける。具体的には、入力部１０は、元プログラム１１Ａおよび対象プログラム１１Ｂの入力を受け付ける。この元プログラム１１Ａおよび対象プログラム１１Ｂは、第１のプログラムおよび第２のプログラムの一例である。入力部１０は、受け付けた元プログラム１１Ａおよび対象プログラム１１Ｂを実行部２０へ出力する。また、入力部１０は、元プログラム１１Ａを記憶部５０に格納する。
【００１３】
実行部２０は、取得部の一例であり、所定のＯＳ（Operating  System）のシステム環境下で元プログラム１１Ａ、対象プログラム１１Ｂを実行させ、実行時における各種情報を取得する。
【００１４】
図２は、システム環境を説明する説明図である。図２に示すように、元プログラム１１Ａ、対象プログラム１１Ｂなどのアプリケーション２０２を実行するシステム環境２００は、ＯＳの中核であるカーネル２０１と、ＤＬＬ（Dynamic  Link  Library）などの各種共有ライブラリで構成される共有ライブラリ群２０３とを有する。このシステム環境２００は、例えば、情報処理装置１上のＯＳまたは情報処理装置１において仮想化技術を利用して実現される仮想マシン（Virtual  Machine）上のＯＳにより提供される。なお、ＯＳの種別は、例えばＬｉｎｕｘ（登録商標）やＷｉｎｄｏｗｓ（登録商標）などのいずれの種別であってもよい。
【００１５】
実行部２０は、元プログラム１１Ａ、対象プログラム１１Ｂなどのアプリケーション２０２の実行時におけるシステムコールを監視し、カーネル２０１との通信で呼び出すＡＰＩ（Application  Programming  Interface）コールの種別、呼び出し回数、呼び出し順などのＡＰＩコール情報５１を取得する。実行部２０は、取得したＡＰＩコール情報５１を、元プログラム１１Ａ、対象プログラム１１Ｂを示す識別子（例えばプログラム名）などとともに記憶部５０に格納する。
【００１６】
図３は、ＡＰＩコール情報５１を説明する説明図である。図３に示すように、ＡＰＩコール情報５１は、アプリケーション２０２の実行時におけるＡＰＩコールについて、「Ｔｉｍｅｓｔａｍｐ」、「Ｔｈｒｅｄ」、「Ｆｕｎｃｔｉｏｎ」、「Ａｒｇｕｍｅｎｔｓ」、「Ｓｔａｔｕｓ」、「Ｒｅｔｕｒｎ」など情報を含む。
【００１７】
「Ｔｉｍｅｓｔａｍｐ」は、ＡＰＩコールの時刻、すなわち呼び出し順序を示す。「Ｔｈｒｅｄ」はＡＰＩコールのスレッドを示しており、同一スレッドのＡＰＩコール数が呼び出し回数を示している。「Ｆｕｎｃｔｉｏｎ」は、ＡＰＩコールで呼び出された機能を示す。「Ａｒｇｕｍｅｎｔｓ」は、ＡＰＩコールの引数を示す。「Ｓｔａｔｕｓ」は、ＡＰＩコールの状態（例えば成功／失敗）を示す。「Ｒｅｔｕｒｎ」は、ＡＰＩコールの戻りアドレスを示す。
【００１８】
また、実行部２０は、元プログラム１１Ａ、対象プログラム１１Ｂなどのアプリケーション２０２の実行時における共有ライブラリ群２０３の読み出しを監視し、共有ライブラリ群２０３から読み出した共有ライブラリのファイル群のＤＬＬ読出情報５２を取得する。実行部２０は、取得したＤＬＬ読出情報５２を、元プログラム１１Ａ、対象プログラム１１Ｂを示す識別子（例えばプログラム名）などとともに記憶部５０に格納する。
【００１９】
図４は、ＤＬＬ読出情報５２を説明する説明図である。図４に示すように、ＤＬＬ読出情報５２は、アプリケーション２０２の実行時に共有ライブラリ群２０３より読み出したファイル群（「ＧＸＸ３２．ｄｌｌ」、「Ｓｘｘ３２．ｄｌｌ」…など）のリストである。ＤＬＬ読出情報５２におけるリストは、読み出し順にファイル群が記述されている。
【００２０】
また、実行部２０は、元プログラム１１Ａ、対象プログラム１１Ｂなどのアプリケーション２０２の実行時におけるプロセスを監視し、実行したプロセスのプロセス情報５３を取得する。実行部２０は、取得したプロセス情報５３を、元プログラム１１Ａ、対象プログラム１１Ｂを示す識別子（例えばプログラム名）などとともに記憶部５０に格納する。
【００２１】
図５は、プロセス情報５３を説明する説明図である。図５に示すように、プロセス情報５３は、アプリケーション２０２の実行時におけるプロセスのリストである。具体的には、プロセス情報５３は、実行時におけるプロセスごとに、プロセスの識別子としてのプロセス名（「ｙＸＸＸＸ．ｅｘｅ」など）およびプロセスＩＤ（「ＰＩＤ：３３３３」など）と、親プロセスを示す情報（「Ｐａｒｅｎｔ  ＰＩＤ：２２２２」など）とを含む。
【００２２】
判定部３０は、元プログラム１１Ａのコードと、対象プログラム１１Ｂのコードとの比較結果や元プログラム１１Ａの実行時に取得した情報と、対象プログラム１１Ｂの実行時に取得した情報との比較結果をもとに、元プログラム１１Ａと、対象プログラム１１Ｂとの類似度を判定する。
【００２３】
具体的には、判定部３０は、元プログラム１１Ａのコードと、対象プログラム１１Ｂのコードとを比較することで、コード同士の類似度合いを示す類似度を判定する静的解析を行い、解析結果を出力部４０に出力する。また、判定部３０は、元プログラム１１Ａの実行時に取得した情報と、対象プログラム１１Ｂの実行時に取得した情報とを比較して互いの情報の類似度を判定する動的解析を行い、解析結果を出力部４０に出力する。
【００２４】
より具体的には、判定部３０は、元プログラム１１ＡのＡＰＩコール情報５１に含まれるＡＰＩコール種別、ＡＰＩコールの呼び出し回数または第１のＡＰＩコールの呼び出し順の情報と、対象プログラム１１ＢのＡＰＩコール情報５１に含まれるＡＰＩコール種別、ＡＰＩコールの呼び出し回数または第１のＡＰＩコールの呼び出し順の情報とを比較する。そして、判定部３０は、互いの情報の一致／不一致をもとにスコアリングすることで、互いの情報の類似度合いを示す類似度を算出する。
【００２５】
例えば、亜種のマルウェアは、元のマルウェアに対して攻撃先などの一部の変更に留まることから、ＡＰＩコールの内容は元となるマルウェアと類似する。したがって、照合元である元プログラム１１ＡのＡＰＩコール情報５１と、対象プログラム１１ＢのＡＰＩコール情報５１との類似度を求めることで、元プログラム１１Ａより多種多様に派生する亜種のマルウェアの検出を容易に行うことができる。一例として、照合元である元プログラム１１ＡのＡＰＩコール情報５１と、対象プログラム１１ＢのＡＰＩコール情報５１との類似度が高い（例えば所定値以上）場合には、対象プログラム１１Ｂはマルウェアであるものと判断することができる。
【００２６】
また、判定部３０は、元プログラム１１ＡのＤＬＬ読出情報５２と、対象プログラム１１ＢのＤＬＬ読出情報５２とを比較し、互いの情報の一致／不一致をもとにスコアリングすることで、互いの情報の類似度合いを示す類似度を算出する。
【００２７】
例えば、元のマルウェアが読み出す共有ライブラリのファイルと、亜種のマルウェアが読み出す共有ライブラリのファイルとは互いに類似する。したがって、照合元である元プログラム１１ＡのＤＬＬ読出情報５２と、対象プログラム１１ＢのＤＬＬ読出情報５２との類似度を求めることで、元プログラム１１Ａより多種多様に派生する亜種のマルウェアの検出を容易に行うことができる。一例として、照合元である元プログラム１１ＡのＤＬＬ読出情報５２と、対象プログラム１１ＢのＤＬＬ読出情報５２との類似度が高い（例えば所定値以上）場合には、対象プログラム１１Ｂはマルウエアであるものと判断することができる。
【００２８】
また、判定部３０は、複数の元プログラム１１ＡのＤＬＬ読出情報５２に含まれるファイルを特徴として集約した情報と、対象プログラム１１ＢのＤＬＬ読出情報５２とを比較し、複数の元プログラム１１Ａと、対象プログラム１１Ｂとの類似度を出力してもよい。
【００２９】
具体的には、判定部３０は、複数の元プログラム１１ＡのＤＬＬ読出情報５２に含まれるファイルの出現頻度／複数の元プログラム１１Ａ全体におけるファイルの出現頻度などを集計し、ＴＦ（Term  Frequency）／ＩＤＦ（Inverse  Document  Frequency）やｃｏｎｔｒａｓｔ  ｓｅｔ  ｍｉｎｉｎｇなどを求める。そして、判定部３０は、複数の元プログラム１１ＡのＤＬＬ読出情報５２より集約したＴＦ／ＩＤＦやｃｏｎｔｒａｓｔ  ｓｅｔ  ｍｉｎｉｎｇと、対象プログラム１１ＢのＤＬＬ読出情報５２とを比較し、複数の元プログラム１１Ａと、対象プログラム１１Ｂとの類似度を出力する。
【００３０】
複数の元プログラム１１ＡのＤＬＬ読出情報５２より集約したＴＦ／ＩＤＦは、マルウエア独特の特徴を示すものである。よって、複数の元プログラム１１ＡのＤＬＬ読出情報５２より集約したＴＦ／ＩＤＦとの比較により、マルウエアに特徴的なものを重視した類似度の算出を行うことができる。
【００３１】
また、判定部３０は、元プログラム１１Ａのプロセス情報５３と、対象プログラム１１Ｂのプロセス情報５３とを比較し、互いの情報の一致／不一致をもとにスコアリングすることで、互いの情報の類似度合いを示す類似度を算出する。
【００３２】
例えば、元のマルウェアが実行するプロセスと、亜種のマルウェアが実行するプロセスとは互いに類似する。したがって、照合元である元プログラム１１Ａのプロセス情報５３と、対象プログラム１１Ｂのプロセス情報５３との類似度を求めることで、元プログラム１１Ａより多種多様に派生する亜種のマルウェアの検出を容易に行うことができる。一例として、照合元である元プログラム１１Ａのプロセス情報５３と、対象プログラム１１Ｂのプロセス情報５３との類似度が高い（例えば所定値以上）場合には、対象プログラム１１Ｂはマルウエアであるものと判断することができる。
【００３３】
出力部４０は、判定部３０により判定された元プログラム１１Ａと、対象プログラム１１Ｂとの類似度をディスプレイやファイルなどに出力する。出力された類似度を確認することで、ユーザは、対象プログラム１１Ｂがマルウエアであるか否かを判別することができる。
【００３４】
また、出力部４０は、対象プログラム１１Ｂに対する複数の元プログラム１１Ａとの比較結果をもとに、類似度（スコア）の高い順に元プログラム１１Ａを順位付けする。ついで、出力部４０は、スコア順（高い順）に元プログラム１１Ａを並び替え、元プログラム１１Ａごとに判定された対象プログラム１１Ｂとの類似度を示すスコア値を表示する。これにより、ユーザは、複数の元プログラム１１Ａの中から対象プログラム１１Ｂと類似度の高い元プログラム１１Ａを容易に見つけることができる。
【００３５】
また、出力部４０は、元プログラム１１Ａに対する複数の対象プログラム１１Ｂとの比較結果をもとに、類似度（スコア）の高い順に対象プログラム１１Ｂを順位付けする。ついで、出力部４０は、スコア順（高い順）に対象プログラム１１Ｂを並び替え、対象プログラム１１Ｂごとに判定された元プログラム１１Ａとの類似度を示すスコア値を表示する。これにより、ユーザは、複数の対象プログラム１１Ｂの中から元プログラム１１Ａと類似度の高い対象プログラム１１Ｂを容易に見つけることができる。なお、本実施形態では、対象プログラム１１Ｂに対する複数の元プログラム１１Ａとの比較結果をもとに、スコア順の元プログラム１１Ａを並び替えて表示する場合を例に説明する。
【００３６】
記憶部５０は、ＨＤＤ（Hard  Disk  Drive）などの記憶装置である。記憶部５０は、照合元となる元プログラム１１Ａと、プログラムごとのＡＰＩコール情報５１、ＤＬＬ読出情報５２およびプロセス情報５３とを記憶する。
【００３７】
図６は、実施形態にかかる情報処理装置１の動作例を示すフローチャートである。なお、元プログラム１１Ａについては、処理の開始前に入力済であり、元プログラム１１Ａと、元プログラム１１ＡのＡＰＩコール情報５１、ＤＬＬ読出情報５２およびプロセス情報５３とは記憶部５０に格納済（取得済）であるものとする。また、対象プログラム１１Ｂは、処理の開始時に入力されるものとする。
【００３８】
図６に示すように、処理が開始されると、判定部３０は、記憶部５０より元プログラム１１Ａを読み出し、読み出した元プログラム１１Ａと、入力された対象プログラム１１Ｂとのコードを差分ツール（例えばＤｉｆｆ）を用いて比較する（Ｓ１）。
【００３９】
次いで、判定部３０は、Ｓ１の比較結果より、元プログラム１１Ａのコードと、対象プログラム１１Ｂのコードとの類似度を判定する（Ｓ２）。具体的には、判定部３０は、差分ツールにより差分として検出された相違部分の分量をもとに、コードについての類似度を示すスコアを求める。
【００４０】
次いで、判定部３０は、記憶部５０に格納された元プログラム１１ＡのＡＰＩコール情報５１、ＤＬＬ読出情報５２およびプロセス情報５３を取得する（Ｓ３）。
【００４１】
次いで、実行部２０は、入力された対象プログラム１１Ｂを実行し、対象プログラム１１ＢのＡＰＩコール情報５１、ＤＬＬ読出情報５２およびプロセス情報５３を取得する（Ｓ４）。実行部２０は、取得した対象プログラム１１ＢのＡＰＩコール情報５１、ＤＬＬ読出情報５２およびプロセス情報５３を記憶部５０に格納するとともに、判定部３０へ出力する。
【００４２】
次いで、判定部３０は、元プログラム１１ＡのＡＰＩコール情報５１と、対象プログラム１１ＢのＡＰＩコール情報５１とを比較する（Ｓ５）。次いで、判定部３０は、互いの情報の一致／不一致をもとにスコアリングすることで、元プログラム１１ＡのＡＰＩコール情報５１と、対象プログラム１１ＢのＡＰＩコール情報５１の類似度（スコア）を判定する（Ｓ６）。
【００４３】
Ｓ６における類似度の判定では、元プログラム１１ＡのＡＰＩコール情報５１によるＮ−ｇｒａｍモデルと、対象プログラム１１ＢのＡＰＩコール情報５１によるＮ−ｇｒａｍモデルとの類似度合いをスコアとして求めてもよい。
【００４４】
具体的には、判定部３０は、元プログラム１１ＡのＡＰＩコール情報５１をもとに、ＡＰＩコールを呼び出し順に並べた情報（例えば図３の「Ｔｉｍｅｓｔａｍｐ」でのソート）求める。そして、判定部３０は、Ｎ個のＡＰＩコールの組み合わせがどの程度出現するかの出現頻度を順次求めることで、元プログラム１１ＡのＡＰＩコール情報５１によるＮ−ｇｒａｍモデルを得る。
【００４５】
同様に、判定部３０は、対象プログラム１１ＢのＡＰＩコール情報５１をもとに、ＡＰＩコールを呼び出し順に並べた情報求める。そして、判定部３０は、Ｎ個のＡＰＩコールの組み合わせがどの程度出現するかの出現頻度を順次求めることで、対象プログラム１１ＢのＡＰＩコール情報５１によるＮ−ｇｒａｍモデルを得る。次いで、判定部３０は、互いのＮ−ｇｒａｍモデルの類似度合いをスコアに換算して類似度を求める。このように、元プログラム１１ＡのＡＰＩコール情報５１によるＮ−ｇｒａｍモデルと、対象プログラム１１ＢのＡＰＩコール情報５１によるＮ−ｇｒａｍモデルとの類似度を求めることで、ＡＰＩコールの呼び出し順を考慮した類似度を得ることができる。
【００４６】
また、Ｓ６における類似度の判定では、元プログラム１１ＡのＡＰＩコール情報５１をもとにしたベクトルと、対象プログラム１１ＢのＡＰＩコール情報５１を元にしたベクトルとのベクトル空間におけるコサイン類似度をスコアとして求めてもよい。具体的には、判定部３０は、元プログラム１１ＡのＡＰＩコール情報５１に含まれるＡＰＩコール種別、ＡＰＩコールの呼び出し回数、ＡＰＩコールの呼び出し順などを元とするベクトルを求める。また、判定部３０は、対象プログラム１１ＢのＡＰＩコール情報５１に含まれるＡＰＩコール種別、ＡＰＩコールの呼び出し回数、ＡＰＩコールの呼び出し順などを元とするベクトルを求める。次いで、判定部３０は、ベクトル空間における互いのベクトルのコサイン類似度を求める。このように、判定部３０は、コサイン類似度によるスコアを求めてもよい。
【００４７】
次いで、判定部３０は、元プログラム１１ＡのＤＬＬ読出情報５２と、対象プログラム１１ＢのＤＬＬ読出情報５２とを比較する（Ｓ７）。次いで、判定部３０は、互いの情報の一致／不一致をもとにスコアリングすることで、元プログラム１１ＡのＤＬＬ読出情報５２と、対象プログラム１１ＢのＤＬＬ読出情報５２の類似度（スコア）を判定する（Ｓ８）。
【００４８】
Ｓ８における類似度の判定では、元プログラム１１ＡのＤＬＬ読出情報５２に含まれるファイルを要素とする集合と、対象プログラム１１ＢのＤＬＬ読出情報５２に含まれるファイルを要素とする集合とを比較して、集合の類似性を示すスコアをもとめてもよい。この集合の類似性を示すスコアとしては、ジャックカード（Jaccard）係数がある。具体的には、判定部３０は、２つの集合のＯＲの要素数を分母とし、２つの集合のＡＮＤの要素数を分子としてジャックカード係数を求める。
【００４９】
また、集合の類似性を示すスコアとしては、ファイルの読み出される順番（ファイルの並び順）の類似性がある。例えば、互いの集合におけるファイルの読み出し順（並び順）の一致箇所に応じたスコアを求めてもよい。また、判定部３０は、元プログラム１１ＡのＤＬＬ読出情報５２に含まれるファイルを読み出し順に並べた情報のＮ−ｇｒａｍモデルと、対象プログラム１１ＢのＤＬＬ読出情報５２に含まれるファイルを読み出し順に並べたＮ−ｇｒａｍモデルとの類似度合いをスコアに換算して類似度を求めてもよい。
【００５０】
このように、判定部３０は、元プログラム１１Ａが共有ライブラリ群２０３より呼び出すファイルの集合と、対象プログラム１１Ｂが共有ライブラリ群２０３より呼び出すファイルの集合との類似度合いを求めてもよい。
【００５１】
次いで、判定部３０は、元プログラム１１Ａのプロセス情報５３と、対象プログラム１１Ｂのプロセス情報５３とを比較する（Ｓ９）。次いで、判定部３０は、互いの情報の一致／不一致をもとにスコアリングすることで、元プログラム１１Ａのプロセス情報５３と、対象プログラム１１Ｂのプロセス情報５３の類似度（スコア）を判定する（Ｓ１０）。
【００５２】
Ｓ１０における類似度の判定では、元プログラム１１Ａのプロセス情報５３に含まれるプロセスを要素とする集合と、対象プログラム１１Ｂのプロセス情報５３に含まれるプロセスを要素とする集合とを比較して、集合の類似度を示すジャックカード係数をスコアとして求めてもよい。このように、判定部３０は、元プログラム１１Ａが実行するプロセスの集合と、対象プログラム１１Ｂが実行するプロセスの集合との類似度合いを求めてもよい。
【００５３】
次いで、出力部４０は、Ｓ２、Ｓ６、Ｓ８およびＳ１０において判定部３０により判定された判定結果、すなわち元プログラム１１Ａと、対象プログラム１１Ｂとの類似度をディスプレイやファイルなどに出力する（Ｓ１１）。
【００５４】
図７は、結果出力を説明する説明図である。図７に示すように、出力部４０は、Ｓ２、Ｓ６、Ｓ８およびＳ１０において判定部３０により判定された判定結果を表示画面３００に表示する。これにより、ユーザは、対象プログラム１１Ｂがマルウエアであるか否かを判別することができる。
【００５５】
具体的には、表示画面３００は、ファイル表示領域３０１、結果表示領域３０２〜３０４を有する。ファイル表示領域３０１は、対象プログラム１１Ｂに対する複数の元プログラム１１Ａとの比較結果をもとに、類似度（スコア）の高い順に元プログラム１１Ａを並べて表示する領域である。このファイル表示領域３０１により、ユーザは、対象プログラム１１Ｂとの類似度の高い元プログラム１１Ａを容易に知ることができる。
【００５６】
結果表示領域３０２は、元プログラム１１Ａと、対象プログラム１１Ｂとのコード同士の類似度合いを解析した静的解析の結果を表示する領域である。この結果表示領域３０２により、ユーザは、元プログラム１１Ａと、対象プログラム１１Ｂとのコードの類似度合いを容易に知ることができる。
【００５７】
結果表示領域３０３は、元プログラム１１Ａの実行時と、対象プログラム１１Ｂの実行時との比較による動的解析の結果を表示する領域である。具体的には、結果表示領域３０３は、元プログラム１１ＡのＡＰＩコール情報５１と、対象プログラム１１ＢのＡＰＩコール情報５１との比較によるスコア値３０３ａを有する。このスコア値３０３ａより、ユーザは、元プログラム１１Ａの実行時におけるＡＰＩコールの内容と、対象プログラム１１Ｂの実行時におけるＡＰＩコールの内容との類似度合いを容易に知ることができる。
【００５８】
また、結果表示領域３０３は、元プログラム１１ＡのＤＬＬ読出情報５２と、対象プログラム１１ＢのＤＬＬ読出情報５２との比較によるスコア値３０３ｂを有する。このスコア値３０３ｂより、ユーザは、元プログラム１１Ａの実行時において呼び出される共有ライブラリのファイル群と、対象プログラム１１Ｂの実行時において呼び出される共有ライブラリのファイル群との類似度合いを容易に知ることができる。
【００５９】
また、結果表示領域３０３は、元プログラム１１Ａのプロセス情報５３と、対象プログラム１１Ｂのプロセス情報５３との比較によるスコア値３０３ｃを有する。このスコア値３０３ｃより、ユーザは、元プログラム１１Ａの実行時におけるプロセスと、対象プログラム１１Ｂの実行時におけるプロセスとの類似度合いを容易に知ることができる。
【００６０】
結果表示領域３０４は、元プログラム１１ＡのＡＰＩコール情報５１と、対象プログラム１１ＢのＡＰＩコール情報５１との比較によるコサイン類似度のスコア値３０４ａを表示する領域である。このスコア値３０４ａにより、ユーザは、元プログラム１１Ａの実行時におけるＡＰＩコールの内容と、対象プログラム１１Ｂの実行時におけるＡＰＩコールの内容とのコサイン類似度を容易に知ることができる。
【００６１】
以上のように、情報処理装置１は、システム環境２００下で元プログラム１１Ａを実行させ、共有ライブラリ群２０３から読み出したファイル群のＤＬＬ読出情報を取得する。また、情報処理装置１は、システム環境２００下で対象プログラム１１Ｂを実行させ、共有ライブラリ群２０３から読み出したファイル群のＤＬＬ読出情報を取得する。また、情報処理装置１は、元プログラム１１ＡのＤＬＬ読出情報と、対象プログラム１１ＢのＤＬＬ読出情報とを比較し、比較結果に応じて元プログラム１１Ａと対象プログラム１１Ｂとの間の類似度を判定して出力する。したがって、ユーザは、全ての亜種のマルウェアを元プログラム１１Ａとして収集することなく、元プログラム１１Ａより多種多様に派生するマルウェアの検出を容易に行うことができる。
【００６２】
なお、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００６３】
また、情報処理装置１で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウエア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。また、情報処理装置１で行われる各種処理機能は、クラウドコンピューティングにより、複数のコンピュータが協働して実行してもよい。
【００６４】
ところで、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施形態と同様の機能を有するプログラムを実行するコンピュータ（ハードウエア）の一例を説明する。図８は、実施形態にかかる情報処理装置１のハードウエア構成例を示すブロック図である。
【００６５】
図８に示すように、情報処理装置１は、各種演算処理を実行するＣＰＵ１０１と、データ入力を受け付ける入力装置１０２と、モニタ１０３と、スピーカ１０４とを有する。また、情報処理装置１は、記憶媒体からプログラム等を読み取る媒体読取装置１０５と、各種装置と接続するためのインタフェース装置１０６と、有線または無線により外部機器と通信接続するための通信装置１０７とを有する。また、情報処理装置１は、各種情報を一時記憶するＲＡＭ１０８と、ハードディスク装置１０９とを有する。また、情報処理装置１内の各部（１０１〜１０９）は、バス１１０に接続される。
【００６６】
ハードディスク装置１０９には、上記の実施形態で説明した入力部１０、実行部２０、判定部３０および出力部４０における各種の処理を実行するためのプログラム１１１が記憶される。また、ハードディスク装置１０９には、プログラム１１１が参照する各種データ１１２が記憶される。入力装置１０２は、例えば、情報処理装置１の操作者から操作情報の入力を受け付ける。モニタ１０３は、例えば、操作者が操作する各種画面を表示する。インタフェース装置１０６は、例えば印刷装置等が接続される。通信装置１０７は、ＬＡＮ（Local  Area  Network）等の通信ネットワークと接続され、通信ネットワークを介した外部機器との間で各種情報をやりとりする。
【００６７】
ＣＰＵ１０１は、ハードディスク装置１０９に記憶されたプログラム１１１を読み出して、ＲＡＭ１０８に展開して実行することで、各種の処理を行う。なお、プログラム１１１は、ハードディスク装置１０９に記憶されていなくてもよい。例えば、情報処理装置１が読み取り可能な記憶媒体に記憶されたプログラム１１１を読み出して実行するようにしてもよい。情報処理装置１が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこのプログラム１１１を記憶させておき、情報処理装置１がこれらからプログラム１１１を読み出して実行するようにしてもよい。
【００６８】
以上の実施形態に関し、さらに以下の付記を開示する。
【００６９】
（付記１）所定のシステム環境下で第１のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第１のファイル群の情報を取得し、
前記所定のシステム環境下で第２のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第２のファイル群の情報を取得し、
取得した前記第１のファイル群の情報と前記第２のファイル群の情報とを比較し、比較結果に応じて前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する、
処理をコンピュータに実行させることを特徴とする類似度判定プログラム。
【００７０】
（付記２）前記出力する処理は、前記第１のファイル群の情報に含まれるファイルを要素とする集合と、前記第２のファイル群の情報に含まれるファイルを要素とする集合との類似性を前記類似度として出力する、
ことを特徴とする付記１に記載の類似度判定プログラム。
【００７１】
（付記３）前記出力する処理は、前記第１のファイル群の情報に含まれるファイルを要素とする集合と、前記第２のファイル群の情報に含まれるファイルを要素とする集合との類似性を示すジャックカード係数を前記類似度として出力する、
ことを特徴とする付記２に記載の類似度判定プログラム。
【００７２】
（付記４）前記出力する処理は、前記第１のファイル群を読み出し順に並べた情報のＮ−ｇｒａｍモデルと、前記第２のファイル群を読み出し順に並べた情報のＮ−ｇｒａｍモデルとの類似度を判定して出力する、
ことを特徴とする付記１に記載の類似度判定プログラム。
【００７３】
（付記５）前記出力する処理は、複数の前記第１のプログラムより取得した前記第１のファイル群の情報に含まれるファイルを特徴として集約した情報と、前記第２のファイル群の情報とを比較し、比較結果に応じて複数の前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する、
ことを特徴とする付記１に記載の類似度判定プログラム。
【００７４】
（付記６）所定のシステム環境下で第１のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第１のファイル群の情報を取得し、
前記所定のシステム環境下で第２のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第２のファイル群の情報を取得し、
取得した前記第１のファイル群の情報と前記第２のファイル群の情報とを比較し、比較結果に応じて前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する、
処理をコンピュータが実行することを特徴とする類似度判定方法。
【００７５】
（付記７）前記出力する処理は、前記第１のファイル群の情報に含まれるファイルを要素とする集合と、前記第２のファイル群の情報に含まれるファイルを要素とする集合との類似性を前記類似度として出力する、
ことを特徴とする付記６に記載の類似度判定方法。
【００７６】
（付記８）前記出力する処理は、前記第１のファイル群の情報に含まれるファイルを要素とする集合と、前記第２のファイル群の情報に含まれるファイルを要素とする集合との類似性を示すジャックカード係数を前記類似度として出力する、
ことを特徴とする付記７に記載の類似度判定方法。
【００７７】
（付記９）前記出力する処理は、前記第１のファイル群を読み出し順に並べた情報のＮ−ｇｒａｍモデルと、前記第２のファイル群を読み出し順に並べた情報のＮ−ｇｒａｍモデルとの類似度を判定して出力する、
ことを特徴とする付記６に記載の類似度判定方法。
【００７８】
（付記１０）前記出力する処理は、複数の前記第１のプログラムより取得した前記第１のファイル群の情報に含まれるファイルを特徴として集約した情報と、前記第２のファイル群の情報とを比較し、比較結果に応じて複数の前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する、
ことを特徴とする付記６に記載の類似度判定方法。
【００７９】
（付記１１）所定のシステム環境下で第１のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第１のファイル群の情報を取得し、前記所定のシステム環境下で第２のプログラムを実行させ、前記所定のシステムの共有ライブラリに格納されるファイル群から読み出した第２のファイル群の情報を取得する取得部と、
取得した前記第１のファイル群の情報と前記第２のファイル群の情報とを比較し、比較結果に応じて前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する出力部と、
を有することを特徴とする情報処理装置。
【００８０】
（付記１２）前記出力部は、前記第１のファイル群の情報に含まれるファイルを要素とする集合と、前記第２のファイル群の情報に含まれるファイルを要素とする集合との類似性を前記類似度として出力する、
ことを特徴とする付記１１に記載の情報処理装置。
【００８１】
（付記１３）前記出力部は、前記第１のファイル群の情報に含まれるファイルを要素とする集合と、前記第２のファイル群の情報に含まれるファイルを要素とする集合との類似性を示すジャックカード係数を前記類似度として出力する、
ことを特徴とする付記１２に記載の情報処理装置。
【００８２】
（付記１４）前記出力部は、前記第１のファイル群を読み出し順に並べた情報のＮ−ｇｒａｍモデルと、前記第２のファイル群を読み出し順に並べた情報のＮ−ｇｒａｍモデルとの類似度を判定して出力する、
ことを特徴とする付記１１に記載の情報処理装置。
【００８３】
（付記１５）前記出力部は、複数の前記第１のプログラムより取得した前記第１のファイル群の情報に含まれるファイルを特徴として集約した情報と、前記第２のファイル群の情報とを比較し、比較結果に応じて複数の前記第１のプログラムと前記第２のプログラムとの間の類似度を判定して出力する、
ことを特徴とする付記１１に記載の情報処理装置。
【符号の説明】
【００８４】
１…情報処理装置
１０…入力部
１１Ａ…元プログラム
１１Ｂ…対象プログラム
２０…実行部
３０…判定部
４０…出力部
５０…記憶部
５１…ＡＰＩコール情報
５２…ＤＬＬ読出情報
５３…プロセス情報
１０１…ＣＰＵ
１０２…入力装置
１０３…モニタ
１０４…スピーカ
１０５…媒体読取装置
１０６…インタフェース装置
１０７…通信装置
１０８…ＲＡＭ
１０９…ハードディスク装置
１１０…バス
１１１…プログラム
１１２…各種データ
２００…システム環境
２０１…カーネル
２０２…アプリケーション
２０３…共有ライブラリ群
３００…表示画面
３０１…ファイル表示領域
３０２〜３０４…結果表示領域
３０３ａ、３０３ｂ、３０３ｃ、３０４ｃ…スコア値
【図１】
2018109909.tif 000003
【図２】
2018109909.tif 000004
【図３】
2018109909.tif 000005
【図４】
2018109909.tif 000006
【図５】
2018109909.tif 000007
【図６】
2018109909.tif 000008
【図７】
2018109909.tif 000009
【図８】
2018109909.tif 000010