(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025024535
(43)【公開日】2025-02-20
(54)【発明の名称】生成装置、生成方法及び生成プログラム
(51)【国際特許分類】
G06F 21/56 20130101AFI20250213BHJP
【FI】
G06F21/56 340
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023128713
(22)【出願日】2023-08-07
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】久保田 稜
(72)【発明者】
【氏名】碓井 利宣
(72)【発明者】
【氏名】川古谷 裕平
(72)【発明者】
【氏名】岩村 誠
(57)【要約】
【課題】痕跡のバリエーションを考慮したシグネチャグラフを自動で生成することができる。
【解決手段】生成装置10は、マルウェアの実行ログを用いて、マルウェアの一連の実行プロセスにおける操作の主体及び対象をノードとし、操作の主体が当該操作の対象へ実行する操作を、ノード間を接続するエッジで表した第1の挙動グラフを作成するグラフ変換部11と、第1の挙動グラフを、第1の挙動グラフのノードラベルを正規表現化した第2の挙動グラフに変換する正規表現化部12と、第2の挙動グラフに対し、グラフマイニングを行ってシグネチャグラフを生成する抽出部13と、を有する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
マルウェアの実行ログを用いて、前記マルウェアの一連の実行プロセスにおける操作の主体及び対象をノードとし、前記操作の主体が当該操作の対象へ実行する操作を、前記ノード間を接続するエッジで表した第1の挙動グラフを作成するグラフ変換部と、
前記第1の挙動グラフを、前記第1の挙動グラフのノードラベルを正規表現化した第2の挙動グラフに変換する正規表現化部と、
前記第2の挙動グラフに対し、グラフマイニングを行ってシグネチャグラフを生成する抽出部と、
を有することを特徴とする生成装置。
【請求項2】
前記正規表現化部は、前記ノードラベルの文字列のうちパスセパレーター文字がある場合には、前記パスセパレーター文字で区切られた各コンポーネントをそれぞれ1文字とみなして、第1の編集距離を計算し、
前記正規表現化部は、前記第1の編集距離を基に前記ノードラベルをクラスタリングしたクラスタ集合を求め、各クラスタについて、前記クラスタに含まれる前記ノードラベルの文字列すべてを正規表現化することを特徴とする請求項1に記載の生成装置。
【請求項3】
前記正規表現化部は、各コンポーネント間の編集距離を第2の編集距離として計算し、計算した第2の編集距離を、前記第1の編集距離の計算時における置換コストとして用いることを特徴とする請求項2に記載の生成装置。
【請求項4】
前記正規表現化部は、各クラスタについて、前記ノードラベルの二つの文字列を基に、前記二つの文字列の両方を表す文字列を生成し、生成した文字列を、所定のルールにしたがって、正規表現に変換することを特徴とする請求項2に記載の生成装置。
【請求項5】
前記抽出部は、前記第2の挙動グラフの集合について、グラフマイニングを行い、良性プログラムであるnegative検体に相当する挙動グラフよりもマルウェアであるpositive検体に相当する挙動グラフに多く現れる部分グラフを抽出し、抽出した結果の部分グラフ集合を、前記シグネチャグラフとして出力することを特徴とする請求項1に記載の生成装置。
【請求項6】
生成装置が実施する生成方法であって、
マルウェアの実行ログを用いて、前記マルウェアの一連の実行プロセスにおける操作の主体及び対象をノードとし、前記操作の主体が当該操作の対象へ実行する操作を、前記ノード間を接続するエッジで表した第1の挙動グラフを作成する工程と、
前記第1の挙動グラフを、前記第1の挙動グラフのノードラベルを正規表現化した第2の挙動グラフに変換する工程と、
前記第2の挙動グラフに対し、グラフマイニングを行ってシグネチャグラフを生成する工程と、
を含んだことを特徴とする生成方法。
【請求項7】
マルウェアの実行ログを用いて、前記マルウェアの一連の実行プロセスにおける操作の主体及び対象をノードとし、前記操作の主体が当該操作の対象へ実行する操作を、前記ノード間を接続するエッジで表した第1の挙動グラフを作成するステップと、
前記第1の挙動グラフを、前記第1の挙動グラフのノードラベルを正規表現化した第2の挙動グラフに変換するステップと、
前記第2の挙動グラフに対し、グラフマイニングを行ってシグネチャグラフを生成するステップと、
をコンピュータに実行させるための生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、生成装置、生成方法及び生成プログラムに関する。
【背景技術】
【0002】
[IOC(Indicator Of Compromise)]
企業ネットワーク上のPC端末をサイバー攻撃から保護するために広く使われている手段の1つが、Endpoint Detection & Response(EDR)である。EDRでは、端末にインストールされたエージェントが常時監視を行い、検知にはマルウェアが残す痕跡を表すIOCを使う。痕跡は、プロセス名や作成するファイルの名前など、マルウェアが活動したことによってシステム上に現れる特定の識別子である。
【0003】
エージェントは検知を行うと、アラートを通知する。それを受けて、通常セキュリティオペレーションセンター(SOC)の分析官が人手で確認・対応を行う。
【0004】
現状のIOCは、単一の痕跡についてのルール(例:ファイル“C:\Temp\mal.exe”を作成)、あるいは複数のルールの論理的結合(ANDまたはOR)で表される。個々のルールでは、単純な文字列の一致比較だけでなく、正規表現によるマッチングも可能である。
【0005】
[検知ルール]
検知ルールは、良性なプログラムを誤検知せず、かつマルウェアを見逃さないことが望ましい。なぜなら、誤検知が多ければ人的対応コストが増加し、見逃しは攻撃の被害拡大につながるからである。しかしながら、現状IOCは誤検知が多く、精度の改善が求められる。
【0006】
[痕跡のバリエーション]
同様の特徴を持ったマルウェアは同一のファミリ名で呼称される。検知ルールを作成するうえでの課題の1つは、同じファミリに属する検体であっても、類似した痕跡が、検体ごと、あるいは実行ごとに異なる場合が存在することである。これを痕跡のバリエーションと呼ぶ。
【0007】
マルウェア開発者は、検知を逃れるために、例えば、マルウェアが生成するファイル名をソースコード上で変更する。あるいは、マルウェア開発者は、実行時に動的にファイル名を決定するように実装する。
【0008】
このような痕跡は、そのまま検知ルールに使用すると、非常に限られた検体の範囲のみ検知するようになってしまい、検知力が低くなる。また、そのような痕跡を省いて検知ルールを作ったとしても、それ以外の痕跡が十分に特徴的でなければ、誤検知を生んでしまう。
【0009】
このようなマルウェアを高精度に検知するには、バリエーションのある痕跡の不変な部分を捉えることが必要である。
【0010】
EIGER(非特許文献1)は、同一ファミリに属する多数のマルウェア検体と良性検体の実行ログから、そのファミリを表すようなIOCを自動的に生成する技術である。この手法は類似の痕跡をまとめて正規表現化したうえでIOCを生成する。
【0011】
一方で、マルウェアの特徴を、現状のIOCのように痕跡の論理的結合として表現するのではなく、痕跡をノードとしたグラフとして表現し検知ルールとする手法も存在する。ここではそのようなグラフをシグネチャグラフと呼ぶ。
【0012】
HOLMES(非特許文献2)は、シグネチャグラフを自動生成する手法の1つである。入力は、同一ファミリの複数の悪性検体と、良性検体の実行ログから作られたグラフの集合である。グラフマイニングなどの技術を用い、「悪性検体には多くマッチするが良性検体にはあまりマッチしない」ようなサブグラフ集合を出力する。
【0013】
ただし、HOLMESは、痕跡のバリエーションを考慮しておらず、正規表現のようなパターン生成も行わない。
【先行技術文献】
【非特許文献】
【0014】
【非特許文献1】Y. Kurogome, Y. Otsuki, Y. Kawakoya, M. Iwamura, S. Hayashi, T. Mori, and K. Sen, “EIGER: Automated IOC Generation for Accurate and Interpretable Endpoint Malware Detection”, In Proceedings of the 35th Annual Computer Security Applications Conference (ACSAC '19), pp. 687-701, 2019., [令和5年7月11日検索],インターネット<URL:https://dl.acm.org/doi/10.1145/3359789.3359808>
【非特許文献2】M. Fredrikson, S. Jha, M. Christodorescu, R. Sailer and X. Yan, “Synthesizing Near-Optimal Malware Specifications from Suspicious Behaviors”, 2010 IEEE Symposium on Security and Privacy, Oakland, CA, USA, 2010, pp. 45-60, doi: 10.1109/SP.2010.11., [令和5年6月28日検索],インターネット<URL:https://ieeexplore.ieee.org/document/5504788>
【非特許文献3】Tang, Yong et al. “Generating Simplified Regular Expression Signatures for Polymorphic Worms”, International Conference on Autonomic and Trusted Computing (2007)., [令和5年7月11日検索],インターネット<URL:http://www4.comp.polyu.edu.hk/~csbxiao/paper/2007/ATC-07-SRE.pdf>
【非特許文献4】Gonzalez, L. B. Holder, and D. J. Cook, “Graph-Based Concept Learning”, Proceedings of the Florida Artificial Intelligence Research Symposium, 2001., [令和5年7月11日検索],インターネット<URL:https://ailab.wsu.edu/subdue/papers/GonzalezAAAI00.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0015】
シグネチャグラフは、現状のIOCと比較して、表現できる情報の種類が多いため、より高精度に検知できる可能性がある。具体的には、マルウェア実行時に複数のプロセスが別々の痕跡を残す場合では、現状のIOCではどのプロセスがどの痕跡を残すのかを表現することができないが、シグネチャグラフでは表現可能である。
【0016】
しかしながら、痕跡のバリエーションを考慮するようなシグネチャグラフ自動生成手法はまだ提案されていない。
【0017】
本発明は、上記に鑑みてなされたものであって、痕跡のバリエーションを考慮したシグネチャグラフを自動で生成することができる生成装置、生成方法及び生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【0018】
上述した課題を解決し、目的を達成するために、本発明に係る生成装置は、マルウェアの実行ログを用いて、前記マルウェアの一連の実行プロセスにおける操作の主体及び対象をノードとし、前記操作の主体が当該操作の対象へ実行する操作を、前記ノード間を接続するエッジで表した第1の挙動グラフを作成するグラフ変換部と、前記第1の挙動グラフを、前記第1の挙動グラフのノードラベルを正規表現化した第2の挙動グラフに変換する正規表現化部と、前記第2の挙動グラフに対し、グラフマイニングを行ってシグネチャグラフを生成する抽出部と、を有することを特徴とする。
【発明の効果】
【0019】
本発明によれば、痕跡のバリエーションを考慮したシグネチャグラフを自動で生成することができる。
【図面の簡単な説明】
【0020】
【
図1】
図1は、パス文字列をクラスタリングする例を示す図である。
【
図2】
図2は、実施の形態に係る生成装置の構成の一例を示す図である。
【
図3】
図3は、実行ログのデータ構成の一例を示す図である。
【
図4】
図4は、
図2に示すグラフ変換部が実行する処理の例を示すフローチャートである。
【
図5】
図5は、第1の挙動グラフの一例を示す図である。
【
図6】
図6は、
図2に示す正規表現化部が実行する処理の例を示すフローチャートである。
【
図7】
図7は、Distanceサブルーチンの処理手順を示すフローチャートである。
【
図8】
図8は、
図2に示す抽出部が実行する処理の例を示すフローチャートである。
【
図9】
図9は、
図2に示す生成装置が出力するシグネチャグラフの一例を示す図である。
【
図10】
図10は、プログラムが実行されることにより、生成装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【0021】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0022】
実施の形態として、シグネチャグラフの新たな生成手法を提案する。実施の形態では、痕跡のバリエーションを正規表現として表現するシグネチャグラフの新たな自動生成方法、具体的には、正規表現をノードラベルに含むシグネチャグラフの新たな自動生成手法を説明する。
【0023】
本実施の形態では、シグネチャグラフを生成する際に、ノードラベルのクラスタリングを行ってから、各クラスのノードラベルの正規表現化を行い、バリエーションを除去した上でグラフマイニングを行うことで、痕跡のバリエーションを内包したパターンを抽出できる。
【0024】
ここで、実施の形態では、ノードラベルのクラスタリングに用いる距離関数は、パスセパレーター(/)を意識するように改変した編集距離アルゴリズムを使用する。
【0025】
実施の形態では、パスセパレーター文字で区切られたコンポーネントを、長さに関わらず、1文字と扱って距離を計算する。これによって、実施の形態では、長いフォルダ名やファイル名が過度に距離に影響することを防ぐ。また、実施の形態では、
図1に示すように、あるパスの2つの連続するコンポーネントが別のパスの1つのコンポーネントに偶然ほぼマッチして距離が短くなることを防ぐ。
【0026】
図1は、パス文字列A,B,Cをクラスタリングする例を示す図である。
【0027】
パス文字列Aは、パス文字列Bと通常の編集距離では距離が短くなるが、ファイル名は類似しているとは言えず、存在するフォルダも異なる。一方、パス文字列Bとパス文字列Cとは、ファイル名は異なるものの、フォルダが同一であり、パス文字列Bとパス文字列Cとの距離の方が、パス文字列Aとパス文字列Bとの距離よりも、距離が近くなるべきだと考えられる。しかしながら、通常の編集距離では、パス文字列Bとパス文字列Cとの距離は、パス文字列Aとパス文字列Bとの距離よりも遠くなっていた。
【0028】
本実施の形態における距離尺度では、パスセパレーター(/)を意識するように改変した編集距離アルゴリズムを使用することで、上記の認識に合った距離とすることができる。言い換えると、実施の形態における距離尺度では、パス文字列Bとパス文字列Cとの距離の方が、パス文字列Aとパス文字列Bとの距離よりも、距離が近くなり、パス文字列Bとパス文字列Cとが同一のクラスタに入りやすくなる。
【0029】
[生成装置]
本実施の形態に係る生成装置について説明する。
図2は、実施の形態に係る生成装置の構成の一例を示す図である。
【0030】
実施の形態に係る生成装置10は、痕跡のバリエーションを考慮したシグネチャグラフを自動で生成する。生成装置10は、1つのファミリを表現するシグネチャグラフを、1つ或いは複数生成する。
【0031】
生成装置10が生成したシグネチャグラフは、そのままリアルタイムマルウェア検知に用いることができる。
【0032】
検知の方法の一例を説明する。検知装置20において、監視対象の端末の監視ログを収集して、監視ログの挙動グラフを構成する。検知装置20は、
図2に示すように、生成装置10が生成したシグネチャグラフを取得する。そして、検知装置20は、生成装置10が生成したシグネチャグラフのうち、あるファミリのシグネチャグラフいずれか1つが、監視対象の端末の監視ログの部分グラフとして現れた場合、監視対象の端末に感染したマルウェアが、そのファミリのマルウェアと判定する。
【0033】
実施の形態に係る生成装置10は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、CPU(Central Processing Unit)等を含むコンピュータ等に所定のプログラムが読み込まれて、CPUが所定のプログラムを実行することで実現される。また、生成装置10は、ネットワーク等を介して接続された他の装置との間で、各種情報を送受信する通信インタフェースを有する。
【0034】
生成装置10は、監視対象の端末の監視ログである実行ログを入力とし、痕跡のバリエーションを考慮したシグネチャグラフを自動で生成し、出力する。生成装置10は、実行ログを第1の挙動グラフに変換するグラフ変換部11、第1の挙動グラフのノードラベルを正規表現化した第2の挙動グラフに変換する正規表現化部12、及び、第2の挙動グラフを基にシグネチャグラフを生成する抽出部13を有する。
【0035】
[実行ログ]
図3は、実行ログのデータ構成の一例を示す図である。
図3に示すように、入力データである実行ログには、1以上の実行ログが含まれる。入力データである実行ログは、ある検体集合に属する検体からそれぞれ得られた実行ログからなる集合である。
【0036】
この検体集合は、シグネチャグラフを作成しようとしている対象のマルウェア(positive検体と呼ぶ)集合と、良性プログラム(negative検体と呼ぶ)集合の和集合である。各実行ログには、実行プロセスの呼び出し元のPID(プロセスID、操作の主体となるプロセスの識別情報)、当該PIDの操作の種類、当該操作の対象等が示される。
【0037】
操作の種類は、例えば、ファイルの読み込み・書き込み、プロセスの作成・終了、他プロセスへのコード注入に関わる操作(例えば、CreateRemoteThread等)、ソケットへの送信・受信等である。なお、Windows OSの場合、操作の種類として、レジストリの読み込み・書き込みをさらに含む。
【0038】
操作の対象は、例えば、操作の対象がファイルの場合はファイルパス、レジストリの場合はキー・バリューのパス、プロセスの場合はプロセスID、ソケットの場合は通信先のIPアドレス、コード注入関連のAPIは対象のプロセスID等である。
【0039】
ただし、例えば、操作の対象がレジストリキーの場合等、操作の対象がハンドルを用いて操作されるリソースである場合、該当の呼び出しの情報だけでは操作の対象が特定できない可能性がある。ここで操作の対象がレジストリキーの場合は、RegOpenKeyで得られたハンドルを引数にして、さらにRegOpenKeyを呼び出すことで、さらに深いパスのキー(サブキー)をオープンすることができる。よって、該当の呼び出しの情報だけでは操作の対象が特定できない場合、データ入力元の装置が、過去の呼び出しを再帰的にさかのぼって情報を取得し、実行ログファイルに書き込まれる。
【0040】
[グラフ変換部]
次に、グラフ変換部11について説明する。グラフ変換部11は、入力の各実行ログを第1の挙動グラフ1つに変換する。
図4は、
図2に示すグラフ変換部11が実行する処理の例を示すフローチャートである。
【0041】
例えば、グラフ変換部11は、実行ログに示されるマルウェアの一連の実行プロセスにおける、操作の主体及び対象をノードとし、操作の主体が当該操作の対象に対し実行する操作を、ノード間を接続するエッジで表した第1の挙動グラフを作成する。ただし、マルウェアを実行することによって作られる最初のプロセスをrootノードとし、固有のラベル(例えばroot)を与える。このラベルは全検体で共通である。グラフ変換部11による処理の詳細を、
図4を用いて説明する。
【0042】
例えば、グラフ変換部11は、マルウェアの実行ログを取得する(ステップS11)。そして、グラフ変換部11は、空のグラフGを用意し(ステップS12)、ステップS11で取得した実行ログそれぞれに対し、以下に示すステップS13~ステップS16の処理を実行した後、グラフGを返す(ステップS17)。
【0043】
例えば、グラフ変換部11は、ステップS11で取得したマルウェアの実行ログに示される操作の主体、操作の対象に対応するノードがグラフG内に存在しなければ、操作の主体、操作の対象に対応するノードを作成する(ステップS13)。
【0044】
次に、グラフ変換部11は、実行ログ内で着目している操作が、読み込みアクセスまたは受信であるか否かを判定し(ステップS14)、着目している操作が、読み込みアクセスまたは受信であると判定した場合(ステップS14:Yes)、ステップS15へ進む。そして、グラフ変換部11は、グラフGに、操作の対象のノードから当該操作の主体のノードへの当該操作の種類のラベルが付いたエッジがまだ存在しなければ、グラフGに追加する(ステップS15)。
【0045】
一方、グラフ変換部11は、実行ログ内で着目している操作が、操作の対象の読み込みアクセス、受信のいずれでもないと判定した場合(ステップS14:No)、ステップS16へ進む。そして、グラフ変換部11は、グラフGに、操作の主体のノードから当該操作の対象のノードへの当該操作の種類のラベルが付いたエッジがまだ存在しなければ、グラフGに追加する(ステップS16)。
【0046】
このようにすることでグラフ変換部11は、マルウェアの実行ログに対応する挙動グラフを作成することができる。
【0047】
なお、グラフ変換部11は、上記の第1の挙動グラフの作成において、POIROT(非特許文献2参照)のprovenanceグラフと同様に、プロセス、ファイル、ソケットをノードとして表現し、それぞれの具体的な挙動をノード間のエッジとして表現する。なお、Windows OSの場合、グラフ変換部11は、レジストリもノードとして表現する。
【0048】
また、上記のプロセスはPIDで区別されるが、終了したプロセスのPIDは新しいプロセスに再利用される。そのため、グラフ変換部11は、上記のような新しいプロセスには別のノードを割り当てる。
【0049】
なお、グラフ変換部11は、上記のレジストリ及びファイルをパスで区別し、ソケットをIPアドレスで区別する。
【0050】
また、グラフ変換部11は、操作の種類が、読み込みアクセスまたは受信の場合は、エッジの向きを操作の対象のノードから操作の主体のノードへの方向とする。それ以外の場合は逆の方向とする。
【0051】
図5は、第1の挙動グラフの一例を示す図である。例えば、グラフ変換部11は、
図3に示した実行ログに基づき、
図5に示す第1の挙動グラフを作成する。なお、
図5に示す第1の挙動グラフにおいて、エッジには操作の種類を示すノードラベルの記載は省いている。
【0052】
例えば、グラフ変換部11は、
図5に示すように、
図3に示す実行ログにおける操作の主体(例えば、最初のプロセスであるrootノード)と、当該操作の主体による操作の対象(例えば、ファイル C:\Temp\logger.exe、レジストリ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\logger、プロセス(ProcessID=20)"C:\Temp\logger.exe" --detach、ファイル C:\Temp\log)と、を示すノードを作成する。
【0053】
また、
図5に示す実行ログにおける操作の主体(例えば、C:\Temp\Ddcu49\logger.exe)と、当該操作の主体による操作の対象(root)とを示すノードを作成する。そして、グラフ変換部11は、操作の主体のノードと当該操作の主体による操作の対象のノードとをエッジで接続する。
【0054】
なお、
図5に示す実行ログにおけるrootの操作の対象「"C:\Temp\Ddcu49\logger.exe" --detach」は、「C:\Temp\Ddcu49\logger.exe」のプロセスの作成であるため、グラフ変換部11は、rootのノードと、「"C:\Temp\Ddcu49\logger.exe" --detach」のノードとをエッジで接続する。
【0055】
また、グラフ変換部11が作成する最終的な第1の挙動グラフには、操作の主体のノード(プロセスノード)にPIDを含めない。これにより、検知装置20が、監視ログの挙動グラフと第1の挙動グラフとのマッチングを行う際、任意のプロセスノードにマッチさせることができる。
【0056】
[正規表現化部]
正規表現化部12は、第1の挙動グラフを、第1の挙動グラフのノードラベルを正規表現化した第2の挙動グラフに変換する。
【0057】
具体的には、正規表現化部12は、第1挙動グラフのノードラベルの文字列のうちパスセパレーター文字がある場合には、パスセパレーター文字で区切られた各コンポーネントをそれぞれ1文字とみなして、第1の編集距離を計算する。この際、正規表現化部12は、各コンポーネント間の編集距離を第2の編集距離として計算し、計算した第2の編集距離を、第1の編集距離の計算時に使用する置換コストとして用いる。このように、正規表現化部12は、2段階の編集距離計算を行うことで、クラスタリングに使用する第1の編集距離を求める。
【0058】
そして、正規表現化部12は、第1の編集距離を基に、第1挙動グラフのノードラベルをクラスタリングしたクラスタ集合を求め、各クラスタについて、クラスタに含まれるノードラベルの文字列すべてを正規表現化する。この際、正規表現化部12は、各クラスタについて、ノードラベルの二つの文字列を基に、二つの文字列の両方を表す文字列を生成し、生成した文字列を、所定のルールにしたがって、正規表現に変換する。
【0059】
図6は、
図2に示す正規表現化部12が実行する処理の例を示すフローチャートである。
【0060】
正規表現化部12は、グラフ変換部11が変換した第1の挙動グラフの集合Sを入力として受け付ける(ステップS21)。正規表現化部12は、ステップS21において取得した第1の挙動グラフの各ノードタイプTについて、以下に示すステップS22~ステップS35を実行した後、出力S(第2の挙動グラフの集合)を返す(ステップS36)。
【0061】
正規表現化部12は、まず、ステップS21で取得した第1の挙動グラフの集合Sの各ノードタイプTについて、第1の挙動グラフの集合Sに属するグラフに含まれるノードタイプTのノードのノードラベルのうち、複数のグラフに現れないノードラベル全てをノードラベルの集合Lとして抽出する(ステップS23)。
【0062】
正規表現化部12は、ノードラベルの集合Lを、DBSCAN(Density-based spatial clustering of applications with noise)アルゴリズムを用いてクラスタリングした結果のクラスタ集合をCSとして求める(ステップS24)。正規表現化部12は、クラスタリングの際に用いる距離関数として、後述するDistanceサブルーチンを用いる。
【0063】
正規表現化部12は、CS内の各クラスタCについて、以下のステップS25~ステップS34を繰り返し行う。まず、各クラスタC内の任意のラベルの1つをpとする(ステップS26)。
【0064】
そして、正規表現化部12は、各クラスタC内の各ラベルlについて、以下のステップS27~ステップS29を繰り返し行う。正規表現化部12は、各クラスタC内の各ラベルlについて、pとlとを入力としてCSR(Contiguous Substrings Rewarded)アルゴリズム(非特許文献3)を実行した実行結果をpとして取得する(ステップS28)。CSRアルゴリズムは、二つの文字列p,lを入力とし、pとlとの両方を表すような文字列を出力するアルゴリズムである。このCSRアルゴリズムでは、ステップS27~ステップS29の処理において生成されうるワイルドカードとして、シンボル「*」、シンボル「?」を、入力文字列に含めることができる。
【0065】
正規表現化部12は、ステップS27~ステップS29のループが終了すると、CSRアルゴリズムの実行結果pを、正規表現rに変換する(r=Convert(p))(ステップS30)。
【0066】
正規表現化部12は、C内の各ラベルlについて、以下のステップS31~ステップS33を繰り返し行う。正規表現化部12は、C内の各ラベルlについて、Sに属するグラフに含まれるノードタイプTのノードでラベルがlであるものすべてについて、ラベルを正規表現rで置換する(ステップS32)。
【0067】
図6では、クラスタリングとしてDBSCANアルゴリズムを用いた場合を例に説明したが、これに限らない。
【0068】
例えば、実施の形態では、クラスタリングとして、クラスタ数の指定を必要とせず、外れ値(いずれのクラスタにも属さないデータ点)を判定でき、かつ、複数の互いに素な部分集合の集合を出力するようなアルゴリズムであれば他のものを用いてもよい。例えば、実施の形態では、クラスタリングとして、X-meansやOPTICSを適用することも可能である。
【0069】
また、実施の形態では、正規表現化としてSRE(Simplified Regular Expression)(非特許文献3)のCSRアルゴリズムを用いた場合を例に説明したが、これに限らない。実施の形態では、正規表現化には、3つ以上の文字列から、それらすべてを表現する正規表現を生成する任意の手法を適用することも可能である。
【0070】
[Distanceサブルーチン]
実施の形態では、クラスタリング(ステップS24)に用いる距離関数として、Distanceサブルーチンを用いる。そこで、ステップS24において距離関数として用いる、Distanceサブルーチンについて説明する。
図7は、Distanceサブルーチンの処理手順を示すフローチャートである。
【0071】
Distanceサブルーチンでは、2つの文字列X, Yを入力として(ステップS41)、標準化編集距離Dを表す0以上1以下の実数を出力する(ステップS46)。
【0072】
Distanceサブルーチンでは、文字列X, Yがともにファイルパスであるか、ともにレジストリパスであるかを判定する(ステップS42)。
【0073】
Distanceサブルーチンでは、文字列X, Yがともにファイルパスであるか、ともにレジストリパスである場合(ステップS42:Yes)、パスセパレーター文字を用いてX, Yを分割した結果(配列)をそれぞれLX, LYとする(ステップS43)。
【0074】
具体的に、
図1を参照して、説明する。例えば、パス文字列A「C:/superstar.exe」は、パスセパレーター文字(/)で、2つのコンポーネントA1「C:」,A2「superstar.exe」に区切られる。パス文字列B「C:/super/tar.exe」は、パスセパレーター文字で、3つのコンポーネントB1「C:」,B2「super」,B3「tar.exe」に区切られる。パス文字列C「C:/super/7zip.exe」は、パスセパレーター文字で、3つのコンポーネントC1「C:」,C2「super」,C3「7zip.exe」に区切られる。
【0075】
Distanceサブルーチンでは、配列の各要素(ワードと呼ぶ)を1文字とみなして、LXとLYとの標準化編集距離D(第1の編集距離)を計算する(ステップS44)。
【0076】
例えば、パス文字列Aについては、コンポーネントA1を1文字目とし、コンポーネントA2を2文字目とした、2文字の文字列LAとする。パス文字列Bについては、コンポーネントB1を1文字目とし、B2を2文字目とし、コンポーネントB3を3文字目とした、3文字の文字列LBとする。パス文字列Cについては、コンポーネントC1を1文字目とし、C2を2文字目とし、コンポーネントC3を3文字目とした、3文字の文字列LCとする。そして、文字列LA,LB,LC間の標準編集化距離(第1の編集距離)を計算する。
【0077】
ここで、標準化編集距離は、編集距離を0以上1以下の値にスケーリングしたものをいい、編集距離を、2つの入力文字列の長さのうち長い方で除算して得られる値を指す。編集距離は、編集コストをパラメータとして指定することができる。具体的には、置換コスト、挿入コスト、削除コストである。編集距離は、入力文字列の片方をもう片方と一致させるために必要な編集操作(文字の置換か挿入か削除)の合計コストの最小値で定義される。
【0078】
さらに、ステップS44では、置換コストを、置換されるワードと置換後のワードのWord Distance(第2の編集距離)とし、挿入コストを1とし、削除コストを1としている。ここで、第2の編集距離は、後述するように、Word Distanceサブルーチンを用いて計算した、各コンポーネント間の編集距離に基づく値である。
【0079】
ステップS43,S44の処理によって、
図1の例では、パス文字列Bについては、同じ3文字で構成されるパス文字列Cとの標準化編集距離D(例えば、0.17)の方が、2文字で構成されるパス文字列Aとの標準化編集距離D(例えば、0.49)よりも近くなる。このため、パス文字列Bとパス文字列Cとが同一のクラスタに入りやすくなる。
【0080】
一方、Distanceサブルーチンでは、文字列X, Yがともにファイルパスでない、かつ、レジストリパスでない場合(ステップS42:No)、文字列Xと文字列Yとの標準化編集距離Dを計算する(ステップS45)。
【0081】
そして、Distanceサブルーチンでは、ステップS44またはステップS45において計算した標準化編集距離Dを出力して(ステップS46)、処理を終了する。
【0082】
このDistanceサブルーチンは、標準化編集距離に基づいている。本実施の形態で使用するDistanceサブルーチンでは、パスセパレーター文字で区切られた部分をそれぞれ1文字とみなすことが特徴となる。
【0083】
[Word Distanceサブルーチンの処理]
図7のステップS44に示すWord Distanceサブルーチンの処理について説明する。Word Distance サブルーチンは、2つの文字列X, Yを入力として、距離を表す0以上1以下の実数を出力する。
【0084】
ステップS44では、Word Distanceの出力は、以下のパラメータで計算した文字列Xと文字列Yの標準化編集距離(第2の編集距離)である。
置換コスト:1
挿入コスト:1
削除コスト:1
【0085】
例えば、ノードラベルが、
図1のパス文字列A,B,Cである場合、パスセパレーター文字で区切られた各コンポーネントA1,A2,B1~B3,C1~C3が、Word Distanceサブルーチンの入力となる。
【0086】
Word Distanceサブルーチンでは、コンポーネントA1,A2,B1~B3,C1~C3の各組合せにおいて、各文字同士を比較して、標準化編集距離を計算する。そして、それぞれ計算した標準化編集距離を、ステップS44の置換コストとする。例えば、コンポーネントA1,A2と、コンポーネントB1~B3との各組合せの標準化編集距離をそれぞれ計算し、それらを、文字列LA,LB間の標準編集化距離を計算する際の置換コストとする。
【0087】
[Convertサブルーチン]
図6のステップS30に示すConvertサブルーチンについて説明する。Convertサブルーチンは、ワイルドカードを含む文字列Xを入力とし、次の処理を行う。
【0088】
まず、Convertサブルーチンでは、文字列Xを、同等の正規表現rに変換する。
【0089】
文字列のうち、シンボル「*」は任意の1文字または0文字を表し、シンボル「?」は任意の1文字を表す。正規表現rへの変換は、具体的には、文字列Xのうち、シンボル「*」は「.?」とし、シンボル「?」は「.」とする。
【0090】
Convertサブルーチンでは、ワイルドカードが複数連続している場合、Convertサブルーチン「.{n}」または「.{n,m}」を用いてまとめる。Convertサブルーチンでは、例えば、「x??***c??」は「x.{2,5}c.{2}」に変換する。
【0091】
そして、Convertサブルーチンでは、エスケープ処理が必要な非ワイルドカード文字はエスケープする。必要な非ワイルドカード文字を、例えば、「.」を「\.」に変換する。どの文字のエスケープが必要かは、検知時に正規表現のマッチングを行う正規表現エンジンの実装に依存する。
【0092】
Convertサブルーチンでは、変換した正規表現rを出力する。
【0093】
[抽出部]
抽出部13は、ノードラベルを正規表現化した第2の挙動グラフを基にシグネチャグラフを生成する。
図8は、
図2に示す抽出部13が実行する処理の例を示すフローチャートである。
【0094】
抽出部13は、第2の挙動グラフの集合Sを入力として受け付ける(ステップS51)。抽出部13は、集合Sの中のうち、positive検体に相当する挙動グラフP、集合Sの中のうち、negative検体に相当する挙動グラフNを抽出する(ステップS52)。
【0095】
抽出部13は、挙動グラフPをpositive examples、挙動グラフNをnegative examplesとして、グラフマイニングであるSubdueCL(非特許文献4)を実行して抽出した結果の部分グラフ集合SGを生成する(ステップS53)。
【0096】
抽出部13は、部分グラフ集合SG内の各部分グラフgに対して、gが(root)ラベルのノードを含む場合には、そのラベルを正規表現「.*」で置き換える(ステップS54)。そして、抽出部13は、部分グラフ集合SGを、シグネチャグラフとして出力する(ステップS55)。
【0097】
このように、抽出部13は、入力である第2の挙動グラフの集合Sの中のpositive検体に頻繁に現れ、negative検体にはほとんど現れない部分グラフをいくつか抽出する。
【0098】
抽出部13では、抽出方法として、SubdueCLというグラフマイニング手法を用いる。これは入力として、positive examplesとnegative examplesという2つのグラフ集合をとる。出力は、positive examplesに多く現れ、negative examplesにあまり現れないような部分グラフである。positive examplesとしてpositive検体のグラフを、negative examplesとしてnegative検体のグラフを入力することで、できるだけpositiveのファミリの検体にのみマッチするような部分グラフを作ることができる。
【0099】
[シグネチャグラフの一例]
図9は、生成装置10が出力するシグネチャグラフの一例を示す図である。なお、実際に出力されるシグネチャグラフのラベルは、他の類似した検体と比較してどの部分が実際に共通しているかに依存する。
図9に示すように、実行ログにおける操作の主体であるrootラベルのノードは、ステップS54の処理において、ラベルが正規表現「.*」に置き換えられている。
【0100】
そして、「.*」ラベルのノードと接続する、ノードのラベル「C:\Temp\Ddcu49\logger.exe」は、「Ddcu49」部を正規表現「.{6}」に変換した「C:\\Temp\\.{6}\\logger\.exe」と表現される。
【0101】
また、「.*」ラベルのノードと接続する、ノードのラベル「"C:\Temp\Ddcu49\logger.exe" --detach」は、「Ddcu49」部を正規表現「.{6}」に変換した「"C:\\Temp\\.{6}\\logger\.exe" --detach」と表現される。
【0102】
なお、ノードのラベル「"C:\\Temp\\.{6}\\logger\.exe" --detach」と接続する、ノードのラベル「C:\Temp\logs.txt」は、他の挙動グラフによって決まり、
図9の例では、「C:\Temp\logs.txt」のままである。
【0103】
[実施の形態の効果]
図9に例示する様に、実施の形態に係る生成装置10は、痕跡のバリエーションを正規表現として表現したシグネチャグラフを自動生成することができる。
【0104】
生成装置10は、シグネチャグラフを生成する際に、入力の各実行ログを変換した挙動グラフについて、ノードラベルの正規表現化を行い(
図6)、バリエーションを除去した上で、グラフマイニングを行うことで、痕跡のバリエーションを内包したパターンを抽出できる。
【0105】
そして、生成装置10は、クラスタリングに用いる距離関数は、パスセパレーター(/)を意識するように改変した編集距離アルゴリズム(Distanceサブルーチン)を使用する。生成装置10が使用する編集距離アルゴリズム(Distanceサブルーチン)は、パスセパレーター文字で区切られたコンポーネントを、長さに関わらず「1文字」と扱って第1の編集距離を計算するものである。
【0106】
これによって、生成装置10は、長いフォルダ名やファイル名が過度に距離に影響することを防ぐ。これによって、実施の形態では、
図1に示すように、あるパスの2つの連続するコンポーネントが別のパスの1つのコンポーネントに偶然ほぼマッチして距離が短くなることを防ぐことができる。
【0107】
さらに、生成装置10が使用する編集距離アルゴリズム(Distanceサブルーチン)は、第1の編集距離の置換コストとして、各コンポーネント間の第2の編集距離を使用する。これによって、例えば、フォルダが類似していないパス文字列間の編集距離よりも、フォルダが同一または類似するパス文字列間の距離が近くなるように、計算することができる。
【0108】
したがって、生成装置10は、痕跡のバリエーションを正規表現として表現するシグネチャグラフを、自動で生成することができる。生成装置10は、痕跡のバリエーションを正規表現で吸収し、より多くの検体を表現するシグネチャグラフを生成できる。分析側(例えば、検知装置20)は、このシグネチャグラフを基に、より多くの未知の検体が検知できるようになる。
【0109】
さらに、生成装置10では、痕跡にバリエーションのある似た検体に対してそれぞれシグネチャグラフを作るのではなく、1つのシグネチャグラフで多くの検体を表現することができ、検知の計算負荷削減や、分析官にとっての分かりやすさが向上する。
【0110】
[実施の形態のシステム構成について]
生成装置10の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、生成装置10の機能の分散及び統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散または統合して構成することができる。
【0111】
また、生成装置10においておこなわれる各処理は、全部または任意の一部が、CPU、GPU(Graphics Processing Unit)、及び、CPU、GPUにより解析実行されるプログラムにて実現されてもよい。また、生成装置10において行われる各処理は、ワイヤードロジックによるハードウェアとして実現されてもよい。
【0112】
また、実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともできる。もしくは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述及び図示の処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて適宜変更することができる。
【0113】
[プログラム]
図10は、プログラムが実行されることにより、生成装置10が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0114】
メモリ1010は、ROM1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0115】
ハードディスクドライブ1090は、例えば、OS(Operating System)1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、生成装置10の各処理を規定するプログラムは、コンピュータ1000により実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、生成装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0116】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
【0117】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0118】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0119】
10 生成装置
11 グラフ変換部
12 正規表現化部
13 抽出部