(57)【特許請求の範囲】
【請求項１】
マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の通信先情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡部と、
前記追跡部によって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視部と、
前記監視部によって取得されたタグに対応する送信元の通信先情報に基づいて、前記マルウェアに指令を発する指令サーバの通信先情報を特定する特定部と、
を備えることを特徴とする特定装置。
【請求項２】
前記追跡部は、複数の送信元からデータを受信して新たなデータが生成された場合には、複数の送信元の通信先情報を一意に特定できる新たなタグを生成して前記データに付与し、該タグが付与されたデータの伝搬を追跡することを特徴とする請求項１に記載の特定装置。
【請求項３】
前記追跡部は、関数内で受信データが参照された場合には、関数の戻り値に対してタグを付与し、該タグが付与されたデータの伝搬を追跡することを特徴とする請求項１または２に記載の特定装置。
【請求項４】
前記監視部は、前記分岐命令により参照されたデータのタグを取得するとともに、マルウェアが実行したＡＰＩ呼び出しやシステムコールの発行を記録し、
前記特定部は、複数の分岐先でＡＰＩ呼び出しまたはシステムコール発行が行われた分岐命令について、分岐する際に参照されたデータのタグに対応する通信先情報が複数の分岐先において共通する場合には、該通信先情報を前記指令サーバの通信先情報として特定することを特徴とする請求項１または２に記載の特定装置。
【請求項５】
前記監視部は、前記分岐命令により参照されたデータのタグを取得するとともに、マルウェアが実行したＡＰＩ呼び出しやシステムコールの発行を記録し、
前記特定部は、複数の分岐先でＡＰＩ呼び出しまたはシステムコール発行が行われた分岐命令について、分岐する際に参照されたデータのタグに対応する通信先情報が複数の分岐先において共通する場合には、該通信先情報を前記指令サーバの通信先情報として特定することを特徴とする請求項３に記載の特定装置。
【請求項６】
特定装置が実行する特定方法であって、
マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の通信先情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡工程と、
前記追跡工程によって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視工程と、
前記監視工程によって取得されたタグに対応する送信元の通信先情報に基づいて、前記マルウェアに指令を発する指令サーバの通信先情報を特定する特定工程と、
を含んだことを特徴とする特定方法。
【請求項７】
マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の通信先情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡ステップと、
前記追跡ステップによって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視ステップと、
前記監視ステップによって取得されたタグに対応する送信元の通信先情報に基づいて、前記マルウェアに指令を発する指令サーバの通信先情報を特定する特定ステップと、
をコンピュータに実行させるための特定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定装置、特定方法および特定プログラムに関する。
【背景技術】
【０００２】
近年、情報漏えいやＤＤｏＳ（Distributed  Denial  of  Service）攻撃といったサイバー攻撃による被害が後を絶たない。サイバー攻撃ではマルウェアが利用されており、マルウェアに感染した端末によって被害が引き起こされている。実際に金銭的な損害が発生していることから、マルウェア対策の必要性が高まっている。【０００３】
マルウェア対策を行う場合、端末がマルウェアに感染するのを防ぐことが理想である。しかしながら、マルウェアに感染させる手法は高度化・多様化の一途を辿っており、全てのマルウェア感染を未然に防ぐことは困難な状況にある。そのため、マルウェアに感染することを前提とした対策が不可欠となっている。【０００４】
端末に感染したマルウェアは、攻撃の過程で攻撃者が用意した悪性なサーバや正規サイトと通信を行う。悪性なサーバには、指令サーバとダウンロードサイト、情報漏えい先がある。指令サーバは指令によってマルウェアの動作を決定し、ダウンロードサイトは追加モジュールやマルウェア本体を配布する。また、情報漏えい先は漏えい情報を受け取る役割を担う。【０００５】
このような悪性なサーバのＩＰアドレスやＦＱＤＮ、ＵＲＬをあらかじめブラックリスト化しておくことができれば、悪性なサーバとの通信の検知に基づいた感染端末の発見・隔離や通信遮断等の対策によって、マルウェア感染に起因する被害を最小限に抑制できる。ただし、情報漏えい先やダウンロードサイトは指令サーバからの指令によって指定される可能性がある。また、ボットなどのマルウェアの場合、指令サーバからの指令がその後の攻撃の起因となる。したがって、悪性なサーバの中でも特に指令サーバをブラックリスト化しておくことが重要である。【０００６】
指令サーバのブラックリストは、一般にマルウェア解析によって作成される。マルウェアを解析することで、マルウェアの通信先の取得が可能である。ただし、その中には攻撃や解析妨害を目的とした通信の通信先として正規サイトが含まれている。正規サイトを誤ってブラックリストに掲載してしまうと対策運用時の負荷につながる。そのため、解析で取得した複数の通信先の中から指令サーバのみを特定することが課題となっている。【０００７】
従来、動的解析時に発生した通信内容に基づいて通信先が指令サーバであるか否かの判定が行われてきた（例えば、非特許文献１参照）。しかし、通信内容に対する難読化・暗号化の適用が進むにつれて、通信内容だけでは指令サーバを特定することが困難となってきている。  【０００８】
指令サーバは通信データによってマルウェアの動作を制御する通信先である。したがって、受信データがマルウェアの動作を決定したか否かを解析できれば、通信内容が難読化・暗号化されていても受信データの送信元を指令サーバであると判定できる。【０００９】
このため、マルウェア内部での受信データの利用方法の解析に基づいた指令サーバの検出が注目されている。指令サーバがマルウェアを制御する方法は大きく分けて２つある。１つは、マルウェアが実行するプログラムコードに加えてシステムコールやＡＰＩの引数を指定する方法、もう１つは、実行するプログラムコードのみを指定する方法である。例えば、非特許文献２では、送受信データに関連して発行されたシステムコール間のデータの受け渡し関係に基づいて指令サーバを特定しており、システムコールやAPIの引数が指定される場合に指令サーバを特定することができる。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】P.Wurzinger,  L.Bilge,  T.Holz,  J.Goebel,  C.Kruegel,  and  E.Kirda,「Automatically  Generating  Models  for  Botnet  Detection」In  Proceedings  of  the  14th  European  Conference  on  Research  in  Computer  Security
【非特許文献２】G.Jacob,  R.Hund,  C.Kruegel,  and  T.Holz,「JACKSTRAWS:  Picking  Command  and  Control  Connections  from  Bot  Traffic」In  Proceedings  of  the  20th  USENIX  Conference  on  Security
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上記した従来の技術では、今日のマルウェアは、通信内容の難読化・暗号化を行っており、通信内容だけで指令サーバを特定することは困難になっている場合がある。このため、マルウェアの受信データの利用方法を解析し、受信データに関連して発行されたシステムコール間のデータの受け渡し関係に基づいて指令サーバを特定する方法が提案されているが、マルウェアが実行する機能を切り替えるだけの指令を検出できない場合があるという課題があった。例えば、指令サーバが、実行するプログラムコードのみを指定する制御方法においては、受信データは分岐命令にのみ影響を与え、システムコールやＡＰＩの引数として利用されないため、マルウェアが実行する機能を切り替えるだけの指令サーバの指令を検出できない場合がある。【００１２】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、実行するプログラムコードを切り替える指令のみの場合であっても、指令サーバを特定することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するため、特定装置は、マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の通信先情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡部と、前記追跡部によって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視部と、前記監視部によって取得されたタグに対応する送信元の通信先情報に基づいて、前記マルウェアに指令を発する指令サーバの通信先情報を特定する特定部と、を備えることを特徴とする。【００１４】
また、特定方法は、特定装置が実行する特定方法であって、マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の通信先情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡工程と、前記追跡工程によって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視工程と、前記監視工程によって取得されたタグに対応する送信元の通信先情報に基づいて、前記マルウェアに指令を発する指令サーバの通信先情報を特定する特定工程と、を含んだことを特徴とする。【００１５】
また、特定プログラムは、マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の通信先情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡ステップと、前記追跡ステップによって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視ステップと、前記監視ステップによって取得されたタグに対応する送信元の通信先情報に基づいて、前記マルウェアに指令を発する指令サーバの通信先情報を特定する特定ステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１６】
本願に開示する特定装置、特定方法および特定プログラムは、実行するプログラムコードを切り替える指令のみの場合であっても、指令サーバを特定することが可能であるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、第一の実施の形態に係る指令サーバ特定装置の概要を示す構成図である。
【図２】図２は、第一の実施の形態に係る指令サーバ特定装置における仮想計算機およびデータ伝搬追跡部の構成を示すブロック図である。
【図３】図３は、通信先情報ＤＢに記憶されるテーブルの一例を示す図である。
【図４】図４は、監視対象の分岐命令について説明する図である。
【図５】図５は、分岐命令で指令サーバを特定する処理について説明する図である。
【図６】図６は、第一の実施の形態に係る指令サーバ特定装置によるタグの伝搬処理の流れを示すフローチャートである。
【図７】図７は、第一の実施の形態に係る指令サーバ特定装置によるタグの強制的な伝搬処理の流れを示すフローチャートである。
【図８】図８は、第一の実施の形態に係る指令サーバ特定装置による指令サーバの特定処理の流れを示すフローチャートである。
【図９】図９は、指令サーバとの通信を検知してマルウェア対策を行う処理について説明する図である。
【図１０】図１０は、特定プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１８】
以下に、本願に係る特定装置、特定方法および特定プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係る特定装置、特定方法および特定プログラムが限定されるものではない。
【００１９】
［第一の実施の形態］
以下の実施の形態では、第一の実施の形態に係る指令サーバ特定装置の構成および処理の流れを順に説明し、その後、最後に第一の実施の形態による効果を説明する。
【００２０】
［指令サーバ特定装置の構成］
まず、図１を用いて、指令サーバ特定装置１０の構成を説明する。図１は、第一の実施の形態に係る指令サーバ特定装置の概要を示す構成図である。図１に示すように、この指令サーバ特定装置１０は、マルウェア実行環境部１１、実行ログＤＢ（Data  Base）１２、通信先情報ＤＢ１３および指令サーバ特定部１４を有する。以下にこれらの各部の処理を説明する。
【００２１】
マルウェア実行環境部１１は、ゲストＯＳ（Operating  System）１１ｂと仮想計算機１１ｃとから構成される。ゲストＯＳ１１ｂは、マルウェア１１ａを動的解析するための環境である。また、マルウェア１１ａは、情報漏洩や不正アクセス等の脅威をもたらす不正プログラムであり、解析対象のプログラムとして、ゲストＯＳ１１ｂ上で実行される。
【００２２】
仮想計算機１１ｃは、データ伝搬追跡部１１０と命令監視部１１１によって構成される。データ伝搬追跡部１１０は、マルウェア１１ａの実行時に、該マルウェア１１ａが受信したデータに対して、該データの送信元の通信先情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する。具体的には、データ伝搬追跡部１１０は、マルウェア１１ａが受信したデータに対して送信元を一意に特定できるタグを設定し、ＩＰアドレスやＦＱＤＮ、ＵＲＬといった通信先情報と対応するタグを通信先情報ＤＢ１３に転送した上で、仮想計算機１１ｃ上でのデータの伝搬の追跡を行う。
【００２３】
また、データ伝搬追跡部１１０は、複数の送信元からデータを受信して新たなデータが生成された場合には、複数の送信元の通信先情報を一意に特定できる新たなタグを生成してデータに付与し、該タグが付与されたデータの伝搬を追跡する。また、データ伝搬追跡部１１０は、関数内で受信データが参照された場合には、関数の戻り値に対してタグを付与し、該タグが付与されたデータの伝搬を追跡する。
【００２４】
命令監視部１１１は、データ伝搬追跡部１１０によって追跡されたデータのうち、マルウェア１１ａが実行した分岐命令により参照されたデータのタグを取得する。具体的には、命令監視部１１１は、マルウェア１１ａが実行したＡＰＩ呼び出しやシステムコールの発行、ｊｍｐ系命令やｃａｌｌ命令といった分岐命令、命令実行時のコールスタック、分岐命令が参照したデータのタグを取得し、実行ログＤＢ１２に転送する。
【００２５】
実行ログＤＢ１２は、命令監視部１１１によって取得されたログを記憶する。具体的には、実行ログＤＢ１２は、マルウェア１１ａが実行したＡＰＩ呼び出しやシステムコールの発行、ｊｍｐ系命令やｃａｌｌ命令といった分岐命令、命令実行時のコールスタック、分岐命令が参照したデータのタグを記憶する。また、実行ログＤＢ１２は、マルウェア１１ａが実行したＡＰＩ呼び出しやシステムコールの発行、分岐命令およびコールスタックのログ情報を記憶する。
【００２６】
通信先情報ＤＢ１３は、データ伝搬追跡部１１０によって設定されたタグを、ＩＰアドレスやＦＱＤＮ、ＵＲＬといった通信先情報に対応付けて記憶する。ここで、図３を用いて、通信先情報ＤＢ１３における通信先とタグの対応付け方法の一例について説明する。図３は、通信先情報ＤＢに記憶されるテーブルの一例を示す図である。図３に示すように、通信先情報ＤＢ１３は、マルウェ１１ａが受信したデータの送信元の通信先情報である「通信先」と、マルウェアが受信したデータに付与された「タグ」とを対応付けて記憶する。
【００２７】
例えば、図３に例示するように、ＩＰアドレス「192.168.2.150」に対応するタグは「0x001」であり、ＩＰアドレス「192.168.5.140」に対応するタグは「0x002」である。なお、これらのタグの付いたデータの演算が行われる場合、新たにタグが生成され、通信先情報ＤＢ１３に生成に関わったタグに紐づく通信先が保存される。図３の例では、ＩＰアドレス「192.168.2.150」に対応するタグ「0x001」とＩＰアドレス「192.168.5.140」に対応するタグ「0x002」がついたデータ同士の演算が行われたことで、ＩＰアドレス「192.168.2.150」とＩＰアドレス「192.168.5.140」の両方から影響を受けていることを表すタグ「0x003」が新たに生成された結果を表している。
【００２８】
指令サーバ特定部１４は、命令監視部１１１によって取得されたタグに対応する送信元の通信先情報に基づいて、マルウェア１１ａに指令を発する指令サーバの通信先情報を特定する。具体的には、指令サーバ特定部１４は、複数の分岐先でＡＰＩ呼び出しまたはシステムコール発行が行われた分岐命令について、分岐する際に参照されたデータのタグに対応する通信先情報が複数の分岐先において共通する場合には、該通信先情報を指令サーバの通信先情報として特定する。
【００２９】
例えば、指令サーバ特定部１４は、実行ログＤＢ１２が保持するマルウェア１１ａが実行したＡＰＩ呼び出しやシステムコールの発行、分岐命令およびコールスタックの情報を分析することで、複数の分岐先でＡＰＩ呼び出しやシステムコールの発行が行われた分岐命令を抽出し、ＡＰＩ呼び出しやシステムコールの発行が行われた分岐先に分岐する際に参照したデータのタグを実行ログＤＢ１２から取得する。
【００３０】
さらに、指令サーバ特定部１４は、通信先情報ＤＢ１３からタグに対応する通信先を取得することで分岐命令に影響を与えた通信先を分岐先ごとに取得し、分岐先間に共通する通信先を指令サーバと判定する。
【００３１】
次に、図２を用いて、仮想計算機１１ｃの構成例について説明する。図２は、第一の実施の形態に係る指令サーバ特定装置における仮想計算機およびデータ伝搬追跡部の構成を示すブロック図である。仮想計算機１１ｃは、ゲストＯＳ１１ｂに対して仮想的なハードウェアを提供するソフトウェアである。また、仮想計算機１１ｃは、仮想ＮＩＣ１１２や仮想ディスク１１３、仮想ＨＷコントローラ１１４、仮想メモリ１１５、仮想ＣＰＵ１１６などから構成される。
【００３２】
データ伝搬追跡部１１０は、データに対してタグを設定してデータの伝搬追跡を行うために、仮想ディスク１１３上のデータに対応するタグを保存するためのディスクタグ保存領域１１０ａ、仮想メモリ１１５上のデータに対応するタグを保存するためのメモリタグ保存領域１１０ｄ、仮想レジスタ１１６ｂ上のデータに対応するタグを保存するためのレジスタタグ保存領域１１０ｆを具備する。
【００３３】
データ伝搬追跡部１１０のタグ付与部１１０ｂは、受信データに対して送信元を一意に特定できるタグを設定し、通信先情報ＤＢ１３に転送した上で、タグをメモリタグ保存領域１１０ｄに保存する。タグを設定するタイミングは、仮想ＮＩＣ１１２から仮想メモリ１１５に対してデータがコピーされるタイミングでもよいし、マルウェア１１ａがＡＰＩ呼び出しやシステムコールの発行によって受信データを読み込む際に設定してもよい。データに設定されたタグは、タグ伝搬部１１０ｃ（タグ伝搬部Ａ）によってデータの伝搬に合わせて伝搬される。
【００３４】
タグ伝搬部１１０ｃは、ディスクタグ保存領域１１０ａとメモリタグ保存領域１１０ｄの間のタグの伝搬を行う。また、タグ伝搬部１１０ｅ（タグ伝搬部Ｂ）は、メモリタグ保存領域１１０ｄとレジスタタグ保存領域１１０ｆとの間やレジスタタグ保存領域１１０ｆ間のタグの伝搬に加え、データの演算時のタグ生成と伝搬、および受信データを表すタグを読み込んだ関数の戻り値に対してのタグの伝搬を行う。
【００３５】
また、命令監視部１１１は、マルウェア１１ａが実行する命令を監視し、マルウェア１１ａが実行したＡＰＩ呼び出しやシステムコールの発行、分岐命令、分岐命令が参照したタグ、命令実行時のコールスタックを収集する。マルウェア１１ａが実行する命令を監視するに当たり、ゲストＯＳ１１ｂ上で動作するマルウェア１１ａのプロセスやスレッドを特定する方法はプロセスＩＤやスレッドＩＤでもよいし、解析対象のマルウェア１１ａや外部から取得したプログラムに対して解析対象であることを表すタグを設定することで特定してもよい。
【００３６】
ここで、図４を用いて、監視対象の分岐命令について説明する。図４は、監視対象の分岐命令について説明する図である。第一の実施の形態に係る指令サーバ特定装置１０では、実行された命令のログからタグの監視場所となる分岐命令を抽出する。例えば、図４の例では、指令サーバ特定装置１０は、処理Ａと処理Ｂ／Ｃの分け目となっている分岐命令を監視対象としている。
【００３７】
つまり、指令サーバ特定装置１０では、監視対象である分岐命令で受信データが参照され、実行されるプログラムコードの決定に関わった通信先を解析することによって指令サーバの通信先情報を特定する。ここで、実行されるプログラムコードの決定に関わったか否かを判定するために、同じ通信先から受け取ったデータによって各パスが実行されたことを把握できる必要がある。
【００３８】
次に、図５を用いて、分岐命令で指令サーバを特定する処理の一例について説明する。図５は、分岐命令で指令サーバを特定する処理について説明する図である。図５に示すように、指令サーバ特定装置１０では、マルウェアの実行時に実行されたＡＰＩ呼び出しとシステムコール発行、分岐命令と命令実行時のコールスタックをログとして取得する（図５の（１）参照）。そして、指令サーバ特定装置１０では、テイント解析によって受信データのタグ伝播ログを取得する（図５の（２）参照）。
【００３９】
そして、指令サーバ特定装置１０は、実行トレースに基づきタグの監視場所を分岐命令に設定し、実行された命令のログからタグの監視場所となる分岐命令を抽出する（図５の（３）参照）。ここで、監視場所となる分岐命令は、分岐先にシステムコールやＡＰＩの呼び出しが存在するものとする。
【００４０】
指令サーバ特定装置１０は、監視場所で参照されたデータを確認する（図５の（４）参照）。その後、指令サーバ特定装置１０は、データに付加されたタグに対応する通信先情報を指令サーバと判定し、該通信先の情報を指令サーバブラックリストに登録する（図５の（５）参照）。このように、指令サーバ特定装置１０では、監視場所となる分岐命令で参照されたデータのタグに対応する通信先情報を指令サーバの通信先情報として特定するので、実行する機能を切り替える指令のみであっても、指令サーバを特定することが可能である。
【００４１】
また、指令サーバブラックリストとは、既知の悪性なＩＰアドレスやＵＲＬ等を掲載したリストである。指令サーバのＩＰアドレス等の通信先情報をブラックリストに登録することで、指令サーバとの通信を遮断したり、感染端末の発見・隔離を行うことが可能である。
【００４２】
このように、指令サーバ特定装置１０は、マルウェア実行時の受信データにタグを付与して追跡し、分岐命令を監視し、受信データが分岐命令に与えた影響を解析することで、指令サーバを特定する。これにより、指令サーバ特定装置１０は、実行する機能を切り換える指令のみをマルウェアが受信した場合であっても、指令サーバの通信先情報を特定することが可能となる。
【００４３】
［指令サーバ特定装置による処理］
次に、図６〜図８を用いて、第一の実施形態に係る指令サーバ特定装置１０による処理を説明する。図６は、第一の実施の形態に係る指令サーバ特定装置によるタグの伝搬処理の流れを示すフローチャートである。図７は、第一の実施の形態に係る指令サーバ特定装置によるタグの強制的な伝搬処理の流れを示すフローチャートである。図８は、第一の実施の形態に係る指令サーバ特定装置による指令サーバの特定処理の流れを示すフローチャートである。
【００４４】
まず、図６を用いて、第一の実施の形態に係る指令サーバ特定装置１０のタグ伝搬部１１０ｅによるタグの伝搬処理の流れについて説明する。ここでの処理では、タグを伝搬させるか否かをＣＰＵの１命令ごとに判断して伝搬処理を行う。
【００４５】
図６に示すように、タグ伝搬部１１０ｅは、データを移動する命令であるか否かを判定する（ステップＳ１０１）。この結果、タグ伝搬部１１０ｅは、データを移動する命令である場合には（ステップＳ１０１肯定）、タグ伝搬部１１０ｅは、移動するデータのタグを確認し（ステップＳ１０２）、タグが存在していた場合には（ステップＳ１０３肯定）、データの移動先に対応するタグ保存領域にタグを設定する（ステップＳ１０４）。また、タグ伝搬部１１０ｅは、移動元のデータに対するタグが存在していなかった場合には（ステップＳ１０３否定）、データの移動先に対応するタグ保存領域の情報を削除する（ステップＳ１０５）。
【００４６】
一方、タグ伝搬部１１０ｅは、データを移動する命令でない場合には（ステップＳ１０１否定）、データの演算をする命令であるか否かを判定する（ステップＳ１０６）。この結果、タグ伝搬部１１０ｅは、データの演算をする命令である場合には（ステップＳ１０６肯定）、オペランドに対応するタグを取得する（ステップＳ１０７）。
【００４７】
そして、タグ伝搬部１１０ｅは、取得結果に応じてタグを新たに生成するか否かの判断を行う。具体的には、タグ伝搬部１１０ｅは、タグのついたオペランドが存在するか判定し（ステップＳ１０８）、タグのついたオペランドが存在する場合には（ステップＳ１０８肯定）、タグのついたオペランドが複数存在するか否かを判定する（ステップＳ１０９）。
【００４８】
そして、タグ伝搬部１１０ｅは、タグのついたオペランドが複数存在する場合には（ステップＳ１０９肯定）、タグに紐づく通信先が違うか否かを判定する（ステップＳ１１０）。この結果、タグ伝搬部１１０ｅは、タグに紐づく通信先が異なっていた場合に（ステップＳ１１０肯定）、複数の通信先からの影響を受けて生成されたデータであることを示す新たなタグを生成し（ステップＳ１１１）、生成したタグとタグの生成に関わったタグに紐づいていた通信先を通信先情報ＤＢ１３に記録する（ステップＳ１１２）。
【００４９】
その後、タグ伝搬部１１０ｅは、演算結果の保存先に対応するタグ保存領域に生成したタグを設定する（ステップＳ１１３）。一方、タグのついたオペランドが１つしか存在しない場合（ステップＳ１０９否定）、または、タグのついたオペランドが複数存在していても紐づく通信先が同じであった場合には（ステップＳ１１０否定）、新たにタグを生成することなく演算結果の保存先に対応するタグ保存領域にタグを設定（伝搬）する（ステップＳ１１４）。
【００５０】
次に、図７を用いて、第一の実施の形態に係る指令サーバ特定装置によるタグの強制的な伝搬処理の流れについて説明する。この処理では、ＣＰＵ命令を監視し、データの移動や演算が行われていない場合においてもタグの伝搬を行う。
【００５１】
図７に示すように、タグ伝搬部１１０ｅは、実行された命令がｃａｌｌ命令であるか否かを判定し（ステップＳ２０１）、実行された命令がｃａｌｌ命令であった場合（ステップＳ２０１肯定）、関数を識別するためにコールスタックを更新した後（ステップＳ２０２）、現在のコールスタックにおける強制伝搬フラグをＯＦＦに設定する（ステップＳ２０３）。
【００５２】
また、タグ伝搬部１１０ｅは、実行された命令がｃａｌｌ命令でない場合（ステップＳ２０１否定）、実行された命令がＲｅｔ命令であるか否かを判定する（ステップＳ２０４）。そして、タグ伝搬部１１０ｅは、実行された命令がＲｅｔ命令である場合には（ステップＳ２０４肯定）、関数の終了であるため、現在のコールスタックにおける強制伝搬フラグをＯＦＦに設定し（ステップＳ２０５）、コールスタックの更新を行う（ステップＳ２０６）。
【００５３】
また、タグ伝搬部１１０ｅは、実行された命令がＲｅｔ命令でない場合には（ステップＳ２０４否定）、実行された関数の中の命令が受信データを参照する命令であるか否かを判定する（ステップＳ２０７）。この結果、タグ伝搬部１１０ｅは、受信データを参照する命令である場合には（ステップＳ２０７肯定）、現在のコールスタックにおける強制伝搬フラグをＯＮに設定し（ステップＳ２０８）、参照した受信データの送信元を表すタグを保持する（ステップＳ２０９）。
【００５４】
また、タグ伝搬部１１０ｅは、実行された命令が受信データを参照する命令でない場合には（ステップＳ２０７否定）、実行された命令が書き込みを行う命令であるか否かを判定する（ステップＳ２１０）。この結果、タグ伝搬部１１０ｅは、書き込みを行う命令が実行された場合には（ステップＳ２１０肯定）、現在のコールスタックにおける強制伝搬フラグがＯＮであるか否かを判定する（ステップＳ２１１）。この結果、タグ伝搬部１１０ｅは、現在のコールスタックにおける強制伝搬フラグがＯＮである状態であった場合（ステップＳ２１１肯定）、書き込み先に保持しておいたタグを伝搬させる（ステップＳ２１２）。
【００５５】
なお、上記の方法以外にも、ｘ８６アーキテクチャのＥＡＸレジスタのように特定のアーキテクチャにおいて戻り値格納に利用されるレジスタを戻り値とし、関数から呼び元に戻る際に受信データの影響を受けたことを表すタグを設定してもよいし、既知の関数についてはあらかじめ特定のレジスタやメモリのアドレスを戻り値とし、関数から呼び元に戻る際に受信データの影響を受けたことを表すタグを設定してもよい。このような方法でタグを強制的に伝搬させることで、関数内でデータの置き換えなどによってタグが伝搬しなくなったとしても、受信データの影響を受けていることを伝搬させることを可能とする。
【００５６】
次に、図８を用いて、第一の実施の形態に係る指令サーバ特定装置１０による指令サーバの特定処理の流れについて説明する。この処理では、指令サーバ特定部１４は、実行ログＤＢ１２が保持する情報と通信先情報ＤＢ１３が保持する情報を読み込み、マルウェア１１ａが実行するＡＰＩ呼び出しやシステムコール発行を切り換える分岐命令に影響を与えたデータの送信元を指令サーバと判定する。指令サーバ特定部１４では、マルウェア実行時に記録された全分岐命令について、コールスタックに基づいて呼び出しの経緯も考慮して識別し、次の条件に当てはまるか否かをそれぞれ確認する。
【００５７】
図８に示すように、最初に、指令サーバ特定部１４では、複数の分岐先が実行されたか否かを確認する（ステップＳ３０１）。そして、指令サーバ特定部１４では、複数の分岐先が実行されたと判定すると（ステップＳ３０１肯定）、複数の分岐先が実行された分岐命令について、全ての分岐先の組について以下の処理を行うことで指令サーバを特定する。
【００５８】
具体的には、指令サーバ特定部１４は、分岐先に合流点が存在するか否かを判定する（ステップＳ３０２）、この結果、指令サーバ特定部１４は、分岐先に合流点が存在する場合には（ステップＳ３０２肯定）、分岐点と合流点の間のＡＰＩ呼び出しとシステムコール発行ログを取得する（ステップＳ３０３）。また、指令サーバ特定部１４は、分岐先に合流点が存在しない場合には（ステップＳ３０２否定）、分岐点の終端までのＡＰＩ呼び出しとシステムコール発行ログを取得する（ステップＳ３０４）。なお、確認するＡＰＩ呼び出しやシステムコール発行は、ＡＰＩやシステムコールが操作する計算資源に応じて制限してもよいし、事前に解析したマルウェアが呼び出したＡＰＩやシステムコールによって制限してもよい。
【００５９】
そして、指令サーバ特定部１４は、各分岐先でＡＰＩ呼び出しやシステムコール発行が行われているか否かを判定する（ステップＳ３０５）。この結果、指令サーバ特定部１４は、各分岐先でＡＰＩ呼び出しやシステムコール発行が行われていない場合には（ステップＳ３０５否定）、ステップＳ３０９の処理に移行する。また、指令サーバ特定部１４は、各分岐先でＡＰＩ呼び出しやシステムコール発行が行われていた場合には（ステップＳ３０５肯定）、分岐する際に参照されたデータのタグを実行ログＤＢ１２から取得し（ステップＳ３０６）、タグに紐づいた通信先を通信先情報ＤＢ１３から取得して（ステップＳ３０７）、分岐命令に影響を与えた通信先を分岐先ごとに取得する。
【００６０】
そして、どちらの分岐先に分岐する場合においても共通している通信先を指令サーバと判定する（ステップＳ３０８）。これにより、分岐先を制御することでマルウェアが実行するプログラムコードを決定したことを根拠に、通信先を指令サーバと判定することを可能とする。
【００６１】
その後、指令サーバ特定部１４は、全ての分岐先の組についてステップＳ３０２〜ステップＳ３０８の処理を行ったか否かを判定し（ステップＳ３０９）、全ての分岐先の組について処理を行っていない場合には（ステップＳ３０９否定）、ステップＳ３０２に戻る。また、全ての分岐先の組について処理を行った場合には（ステップＳ３０９肯定）、全分岐命令についてステップＳ３０１〜ステップＳ３０９の処理を行ったか否かを判定する（ステップＳ３１０）。この結果、指令サーバ特定部１４は、全分岐命令について処理を行っていない場合には（ステップＳ３１０否定）、ステップＳ３０１に戻る。また、全分岐命令について処理を行った場合には（ステップＳ３１０肯定）、そのまま処理を終了する。
【００６２】
[第一の実施の形態の効果]
上述してきたように、指令サーバ特定装置１０は、マルウェア１１ａの実行時に、該マルウェア１１ａが受信したデータに対して、該データの送信元の通信先情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する。そして、指令サーバ特定装置１０は、追跡されたデータのうち、マルウェア１１ａが実行した分岐命令により参照されたデータのタグを取得する。そして、指令サーバ特定装置１０は、取得されたタグに対応する送信元の通信先情報に基づいて、マルウェア１１ａに指令を発する指令サーバの通信先情報を特定する。このように、指令サーバ特定装置１０では、分岐命令で指令サーバを特定するので、実行する機能を切り替える指令のみであっても、指令サーバを特定することが可能である。指令サーバ特定装置１０は、マルウェアが実行するプログラムコードのみを指定する指令を受け取った際に指令サーバを特定するのに適しており、マルウェアの通信内容が難読化・暗号化されている場合において指令サーバを自動で特定することが可能である。
【００６３】
また、例えば、指令サーバ特定装置１０は、指令サーバのＩＰアドレス等の通信先情報をブラックリストに登録することで、指令サーバとの通信を遮断したり、感染端末の発見・隔離を行うことが可能である。つまり、図９に例示するように、サイバー攻撃として、指令サーバとマルウェアに感染された感染端末とが通信を行うことで、感染端末が指令サーバの指令を取得して情報漏えい先に情報を漏えいしたり、感染端末がダウンロードサイトからプログラムを取得して正規サイトを攻撃するＤｏＳ攻撃を行ったりすることが知られている。このようなサイバー攻撃について、指令サーバのＩＰアドレス等の通信先情報が登録されたブラックリストを用いることで、感染端末と指令サーバとの通信を検知し、指令サーバとの通信を遮断したり、感染端末の発見・隔離を行ったりすることができる結果、情報漏えいやＤｏＳ攻撃を防止することが可能となる。
【００６４】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６５】
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６６】
［プログラム］
また、上記実施形態において説明した指令サーバ特定装置１０が実行する処理について、コンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第一の実施形態に係る指令サーバ特定装置１０が実行する処理について、コンピュータが実行可能な言語で記述した特定プログラムを作成することもできる。この場合、コンピュータが特定プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる特定プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録され特定プログラムをコンピュータに読み込ませて実行することにより上記第一の実施形態と同様の処理を実現してもよい。以下に、図１に示した指令サーバ特定装置１０と同様の機能を実現する特定プログラムを実行するコンピュータの一例を説明する。
【００６７】
図１０は、特定プログラムを実行するコンピュータ１０００を示す図である。図１０に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００６８】
メモリ１０１０は、図１０に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１０に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１０に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブに挿入される。シリアルポートインタフェース１０５０は、図１０に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１０に例示するように、例えばディスプレイ１１３０に接続される。
【００６９】
ここで、図１０に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の特定プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００７０】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、取得手順、比較手順、振分制御手順を実行する。
【００７１】
なお、特定プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、特定プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００７２】
１０  指令サーバ特定装置
１１  マルウェア実行環境部
１１ａ  マルウェア
１１ｂ  ゲストＯＳ
１１ｃ  仮想計算機
１１０  データ伝搬追跡部
１１０ａ  ディスクタグ保存領域
１１０ｂ  タグ付与部
１１０ｃ  タグ伝搬部Ａ
１１０ｄ  メモリタグ保存領域
１１０ｅ  タグ伝搬部Ｂ
１１０ｆ  レジスタタグ保存領域
１１１  命令監視部
１１２  仮想ＮＩＣ
１１３  仮想ディスク
１１４  仮想ＨＷコントローラ
１１５  仮想メモリ
１１６  仮想ＣＰＵ
１１６ｂ  仮想レジスタ
１２  実行ログＤＢ
１３  通信先情報ＤＢ
１４  指令サーバ特定部
【図１】
0005989936.tif 000002
【図２】
0005989936.tif 000003
【図３】
0005989936.tif 000004
【図４】
0005989936.tif 000005
【図５】
0005989936.tif 000006
【図６】
0005989936.tif 000007
【図７】
0005989936.tif 000008
【図８】
0005989936.tif 000009
【図９】
0005989936.tif 000010
【図１０】
0005989936.tif 000011