(57)【特許請求の範囲】
【請求項１】
通信データに対して、当該通信データの送信元または送信先の識別情報に対応づけた属性情報を含むタグを付与し、当該タグが付与された通信データの伝搬を追跡する追跡部と、
前記追跡部によって付与されたタグを用いて、前記通信データの改ざんの発生を検知するとともに、該改ざんを指令した指令サーバの識別情報を特定する検知部と、
前記検知部によって改ざんの発生が検知された場合に、前記指令サーバの識別情報と改ざん発生時におけるマルウェアによる攻撃対象の識別情報とに基づいて、改ざんの発生が検知された実行トレースから、前記通信データの送信元または送信先の識別情報が攻撃対象の識別情報であるかを判定するプログラムコードを特定する特定部と、
前記特定部によって特定されたプログラムコードを解析し、当該プログラムコードが攻撃対象の識別情報であるかを判定する際に参照するデータを前記攻撃対象の識別情報の一覧として前記実行トレースから取得する取得部と
を有することを特徴とする特定装置。
【請求項２】
システム内で発行される命令を監視する命令監視部を更に備え、
前記検知部は、前記命令監視部によってＡＰＩ（Application  Programming  Interface）呼び出しまたはシステムコールが前記命令として検知された場合に、前記通信データに対して前記改ざんの発生の検知を行うことを特徴とする請求項１に記載の特定装置。
【請求項３】
前記検知部は、前記通信データに、当該通信データの送信元に対応する属性情報とは異なる属性情報を含むタグが存在する場合に、当該通信データの改ざんの発生を検知するとともに、前記異なる属性情報を含むタグに紐付く送信元の識別情報を、該改ざんを指令した指令サーバの識別情報として特定することを特徴とする請求項１または２に記載の特定装置。
【請求項４】
前記特定部は、前記実行トレースの中から、攻撃対象候補の識別情報であることを表すタグと指令サーバに紐づくタグの両方を参照する命令を抽出し、該命令を含むプログラムコードを前記攻撃対象の識別情報であるかを判定するプログラムコードとして特定することを特徴とする請求項１〜３のいずれか一つに記載の特定装置。
【請求項５】
前記取得部は、前記攻撃対象でない通信先と通信を行わせて前記プログラムコードを解析し、前記攻撃対象の識別情報であることを表すタグと前記指令サーバに紐付くタグとが比較されている場合に、該指令サーバに紐付くタグが付与されている通信データ内の文字列を抽出することで前記攻撃対象の識別情報の一覧を取得することを特徴とする請求項１〜４のいずれか一つに記載の特定装置。
【請求項６】
特定装置によって実行される特定方法であって、
通信データに対して、当該通信データの送信元または送信先の識別情報に対応づけた属性情報を含むタグを付与し、当該タグが付与された通信データの伝搬を追跡する追跡工程と、
前記追跡工程によって付与されたタグを用いて、前記通信データの改ざんの発生を検知するとともに、該改ざんを指令した指令サーバの識別情報を特定する検知工程と、
前記検知工程によって改ざんの発生が検知された場合に、前記指令サーバの識別情報と改ざん発生時におけるマルウェアによる攻撃対象の識別情報とに基づいて、改ざんの発生が検知された実行トレースから、前記通信データの送信元または送信先の識別情報が攻撃対象の識別情報であるかを判定するプログラムコードを特定する特定工程と、
前記特定工程によって特定されたプログラムコードを解析し、当該プログラムコードが攻撃対象の識別情報であるかを判定する際に参照するデータを前記攻撃対象の識別情報の一覧として前記実行トレースから取得する取得工程と
を含んだことを特徴とする特定方法。
【請求項７】
通信データに対して、当該通信データの送信元または送信先の識別情報に対応づけた属性情報を含むタグを付与し、当該タグが付与された通信データの伝搬を追跡する追跡ステップと、
前記追跡ステップによって付与されたタグを用いて、前記通信データの改ざんの発生を検知するとともに、該改ざんを指令した指令サーバの識別情報を特定する検知ステップと、
前記検知ステップによって改ざんの発生が検知された場合に、前記指令サーバの識別情報と改ざん発生時におけるマルウェアによる攻撃対象の識別情報とに基づいて、改ざんの発生が検知された実行トレースから、前記通信データの送信元または送信先の識別情報が攻撃対象の識別情報であるかを判定するプログラムコードを特定する特定ステップと、
前記特定ステップによって特定されたプログラムコードを解析し、当該プログラムコードが攻撃対象の識別情報であるかを判定する際に参照するデータを前記攻撃対象の識別情報の一覧として前記実行トレースから取得する取得ステップと
をコンピュータに実行させることを特徴とする特定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定装置、特定方法および特定プログラムに関する。
【背景技術】
【０００２】
近年、オンラインバンキングにおける不正送金被害が急増している。原因の１つはマルウェアによるＭＩＴＢ攻撃（Man-In-The-Browser攻撃）であり、ＭＩＴＢ攻撃によって端末利用者とWebサービスの間で行われる通信内容の盗聴・改ざんが行われ、搾取されたアカウント情報が不正送金に悪用されている。実際にＺＢｏｔやＳｐｙＥｙｅ等のマルウェアにはＭＩＴＢ攻撃機能が備わっており、当該マルウェアに感染すると攻撃対象のサイトにアクセスした際に偽装入力フォームの表示といった攻撃が行われる。
【０００３】
このようなＺＢｏｔやＳｐｙＥｙｅ等の近年のマルウェアによるＭＩＴＢ攻撃では、攻撃の対象となるサイトはＣ＆Ｃサーバ（Command  &  Controlサーバ）からの設定ファイルに記載されており、攻撃対象を変更する場合には設定ファイルの内容が更新される。
【０００４】
また、攻撃の対象となっているＷｅｂサービスは一般にマルウェア解析によって特定される。しかしながら、攻撃対象を特定するための解析を手動で行うことはコストが高く、日々膨大な数のマルウェアが新たに生成されていることを鑑みると、手動の解析によって攻撃対象の変化に追従してくことは困難である。
【０００５】
そのため、これまでに、動的解析によってＭＩＴＢ攻撃を行う可能性のあるマルウェアを自動で解析する手法が提案されている。例えば、Ｗｅｂサービスに影響を与えることなくマルウェアを分析し、改ざん検知および改ざん場所の特定ができる手法が提案されている（例えば、非特許文献１参照）。また、テイント解析を応用して通信データの改ざんを検知し、改ざん内容を指定したＣ＆Ｃサーバを特定する手法が提案されている（例えば、非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】瀬川  達也、神薗  雅紀、星澤  裕二、吉岡  克成、松本  勉  「Man-in-the-Browser攻撃を行うマルウェアの安全な動的解析手法」  電子情報通信学会技術研究報告、  2013-CSEC-61、  pp.1-8、  2013年5月発行
【非特許文献２】幾世  知範、青木  一史、八木  毅、針生  剛男  「改ざんデータの出自確認に基づいたC&Cサーバ特定手法の提案」  電子情報通信学会通信ソサイエティ大会講演論文集、  no.2、  pp.16、  2014年9月発行
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記の従来技術では、サイトに対する改ざんの発生やＣ＆Ｃサーバを特定することができるが、マルウェアの攻撃対象を効率的に取得することができないという課題がある。例えば、従来の技術では、マルウェアの攻撃対象の識別情報（ＵＲＬや、ＦＱＤＮ、ＩＰアドレスなど）を取得するために、動的解析で動作させている攻撃を一つずつ解析して攻撃対象の識別情報を特定するので、処理負荷や処理時間が掛かってしまい、攻撃が発生しなかったものも含めて攻撃対象の識別情報を取得することを効率よく行うことができなかった。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明の特定装置は、通信データに対して、当該通信データの送信元または送信先の識別情報に対応づけた属性情報を含むタグを付与し、当該タグが付与された通信データの伝搬を追跡する追跡部と、前記追跡部によって付与されたタグを用いて、前記通信データの改ざんの発生を検知するとともに、該改ざんを指令した指令サーバの識別情報を特定する検知部と、前記検知部によって改ざんの発生が検知された場合に、前記指令サーバの識別情報と改ざん発生時におけるマルウェアによる攻撃対象の識別情報とに基づいて、改ざんの発生が検知された実行トレースから、前記通信データの送信元または送信先の識別情報が攻撃対象の識別情報であるかを判定するプログラムコードを特定する特定部と、前記特定部によって特定されたプログラムコードを解析し、当該プログラムコードが攻撃対象の識別情報であるかを判定する際に参照するデータを前記攻撃対象の識別情報の一覧として前記実行トレースから取得する取得部とを有することを特徴とする。
【０００９】
また、本発明の特定方法は、特定装置によって実行される特定方法であって、通信データに対して、当該通信データの送信元または送信先の識別情報に対応づけた属性情報を含むタグを付与し、当該タグが付与された通信データの伝搬を追跡する追跡工程と、前記追跡工程によって付与されたタグを用いて、前記通信データの改ざんの発生を検知するとともに、該改ざんを指令した指令サーバの識別情報を特定する検知工程と、前記検知工程によって改ざんの発生が検知された場合に、前記指令サーバの識別情報と改ざん発生時におけるマルウェアによる攻撃対象の識別情報とに基づいて、改ざんの発生が検知された実行トレースから、前記通信データの送信元または送信先の識別情報が攻撃対象の識別情報であるかを判定するプログラムコードを特定する特定工程と、前記特定工程によって特定されたプログラムコードを解析し、当該プログラムコードが攻撃対象の識別情報であるかを判定する際に参照するデータを前記攻撃対象の識別情報の一覧として前記実行トレースから取得する取得工程とを含んだことを特徴とする。
【００１０】
また、本発明の特定プログラムは、通信データに対して、当該通信データの送信元または送信先の識別情報に対応づけた属性情報を含むタグを付与し、当該タグが付与された通信データの伝搬を追跡する追跡ステップと、前記追跡ステップによって付与されたタグを用いて、前記通信データの改ざんの発生を検知するとともに、該改ざんを指令した指令サーバの識別情報を特定する検知ステップと、前記検知ステップによって改ざんの発生が検知された場合に、前記指令サーバの識別情報と改ざん発生時におけるマルウェアによる攻撃対象の識別情報とに基づいて、改ざんの発生が検知された実行トレースから、前記通信データの送信元または送信先の識別情報が攻撃対象の識別情報であるかを判定するプログラムコードを特定する特定ステップと、前記特定ステップによって特定されたプログラムコードを解析し、当該プログラムコードが攻撃対象の識別情報であるかを判定する際に参照するデータを前記攻撃対象の識別情報の一覧として前記実行トレースから取得する取得ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、マルウェアの攻撃対象を効率的に取得することができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施形態に係る特定装置の概要を示す構成図である。
【図２】図２は、本実施形態に係る特定装置における仮想マシンモニタ及びデータ伝搬追跡部の構成を示すブロック図である。
【図３】図３は、本実施形態に係るタグの構成例を示す図である。
【図４】図４は、本実施形態に係る識別情報ＤＢに記憶される情報の一例を示す図である。
【図５】図５は、ブラウザ操作部により改ざん攻撃対象ではない通信先と通信させることで攻撃対象である正規サイトの識別情報を網羅的に取得する処理を説明する図である。
【図６】図６は、本実施形態に係る特定装置における攻撃対象の正規サイトの識別情報を特定する処理の流れを示すフローチャートである。
【図７】図７は、特定プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願に係る特定装置、特定方法および特定プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係る特定装置、特定方法および特定プログラムが限定されるものではない。
【００１４】
［実施形態］
以下の実施形態では、実施形態に係る特定装置の構成及び処理の流れを順に説明し、その後、最後に実施形態による効果を説明する。
【００１５】
［特定装置の構成］
まず、図１を用いて、特定装置１０の構成を説明する。図１は、本実施形態に係る特定装置の概要を示す構成図である。図１に示すように、この特定装置１０は、マルウェア実行環境部１１、解析結果ＤＢ（Data  Base）１２及びＣ＆Ｃサーバ識別情報ＤＢ１３を有する。以下に、これらの各部の処理を説明する。
【００１６】
マルウェア実行環境部１１は、ブラウザ１１Ｂ、ブラウザ操作部１１Ｃ、ゲストＯＳ（Operating  System）１１Ｄ、及び仮想マシンモニタ１１Ｅから構成される。ゲストＯＳ１１Ｄは、マルウェア１１Ａを動的解析するための環境である。また、特定装置１０では、マルウェア１１ＡがゲストＯＳ１１Ｄ上で実行され、ゲストＯＳ１１Ｄ上ではマルウェア１１Ａの改ざん攻撃実施場所となるブラウザ１１Ｂ等の各種プロセスを動作させる。また、ブラウザ操作部１１Ｃは、ブラウザ１１Ｂに所定の通信先と通信をさせるための操作を行うためのものであり、例えば、マウスやキーボード等の入力デバイス、もしくはブラウザを自動操作するプログラムと巡回先ＵＲＬリストで構成される。
【００１７】
仮想マシンモニタ１１Ｅは、データ伝搬追跡部１１０、命令監視部１１１、改ざん検知部１１２、識別情報ＤＢ１１３、特定部１１４および取得部１１５から構成される。
【００１８】
データ伝搬追跡部１１０は、通信データに対して、当該通信データの送信元または送信先の識別情報に対応づけた属性情報を含むタグを付与し、当該タグが付与された通信データの伝搬を追跡する。つまり、データ伝搬追跡部１１０は、マルウェア１１Ａ実行の動作を監視するため、テイント解析によってデータに対して属性情報を表すタグを設定することでマルウェア１１Ａ実行時のデータの伝搬を追跡する。このとき、通信データの送信先、もしくは送信元を一意に特定するため、タグには識別情報に対応する属性情報等を保持させる。なお、以下の説明において、送信先及び送信元を総称する場合に、適宜「通信先」と表記する。また、識別情報とは、例えば、通信先のＩＰアドレスやＦＱＤＮ（Fully  Qualified  Domain  Name）、ＵＲＬ（Uniform  Resource  Locator）等の情報である。
【００１９】
ここで、図３を用いて、タグの構成例について説明する。図３は、本実施形態に係るタグの構成例を示す図である。図３に示すように、タグは、「ＩＤ（identification）」と、「属性情報」とを含む。ここで、属性情報は、通信データの送信元や送信先の識別情報に対応する情報である。ＩＤは、当該属性情報ごとに連続した値（通番）になるように設定される情報である。すなわち、タグは、属性情報とＩＤとの組み合わせによって一意に識別可能となる。なお、タグは、例えば、ある通信データに対して所定のデータ長単位ごとに付与される。
【００２０】
一例として、ＩＰアドレス「１９２．１６８．０．１」の通信先から受信された１０バイトの受信データに対してタグが付与される場合を説明する。なお、この例では、タグが１バイト単位で付与され、ＩＰアドレス「１９２．１６８．０．１」に対応する属性情報が「０ｘ１」である場合を説明する。この場合、１０バイトの受信データに対して１バイト単位でタグが付与されるので、この受信データには１０個のタグが付与される。このうち、１個目のタグは、ＩＤ「１」及び属性情報「０ｘ１」を含み、２個目のタグは、ＩＤ「２」及び属性情報「０ｘ１」を含み、３個目のタグは、ＩＤ「３」及び属性情報「０ｘ１」を含み、・・・１０個目のタグは、ＩＤ「１０」及び属性情報「０ｘ１」を含む。
【００２１】
このように、それぞれのタグは、通番で付与されるＩＤと、通信先に応じた属性情報とを含む。なお、ＩＰアドレス「１９２．１６８．０．１」の通信先から再びデータを受信した場合には、その受信データには、例えば、ＩＤ「１１」から始まる通番のＩＤを含む複数のタグが付与される。また、「１９２．１６８．０．２」等、上記とは異なるＩＰアドレスの通信先からデータを受信した場合には、その受信データには、例えば、ＩＤ「１」から始まる通番のＩＤを含む複数のタグが付与される。
【００２２】
なお、上記のように、本実施形態に係るタグが、通信データに対して所定のデータ長単位で複数付与されるとともに、複数のタグのそれぞれのＩＤが通番で割り当てられるのは、これによって、通信データの改ざん内容の特定が可能となるからである。例えば、通番で割り当てられていれば、複数のタグのそれぞれに含まれるＩＤの値は、タグの並び順にしたがって連続している。ところが、複数のタグのそれぞれに含まれるＩＤの値がタグの並び順にしたがって連続していなければ、改ざん検知部１１２は、通信データの改ざんを検知するとともに、連続していない付近のデータが改ざんされたことを特定できる。さらに、例えば、ＩＤの番号が無くなっていたり、他のタグが混入していたりすれば、改ざん検知部１１２は、通信データの書き換えや追記が行われたことを特定できる。また、ＩＤの番号にずれが生じていれば、改ざん検知部１１２は、その付近のデータが削除されたことを特定できる。
【００２３】
すなわち、データ伝搬追跡部１１０は、通信データに対してタグを設定し、設定したタグに含まれる属性情報と、その属性情報に対応する識別情報とを識別情報ＤＢ１１３に転送した上で、仮想マシンモニタ１１Ｅ上で通信データの伝搬の追跡を行う。識別情報ＤＢ１１３は、データ伝搬追跡部１１０から転送された属性情報と識別情報とを対応づけて記憶する。なお、識別情報ＤＢ１１３に記憶される情報については、後述する。
【００２４】
なお、データ伝搬追跡部１１０では、マルウェア１１Ａが受信した通信データに対しては送信元および何番目の受信データであるかを一意に特定できるタグを設定し、キーボード入力やＡＰＩ（Application  Programming  Interface）の引数に識別情報が指定された際には識別情報であることを示すタグを設定している。
【００２５】
ここで、テイント解析技術とは、データフロー解析を自動化する手法の１つであり、データに対してタグを設定し、伝搬ルールに従ってタグを伝搬させることでシステム内のデータの伝搬を追跡する技術である。タグとは、データに対して付与される属性情報であり、データの出自や種類が設定される。また、伝搬ルールとはタグを伝搬させる条件であり、一般にデータのコピーや演算が伝搬の条件として設定される。
【００２６】
例えば、受信データの利用用途を解析する場合には、受信データに対して取得元を一意に特定可能なタグを設定し、データのコピーや演算に応じてタグを伝搬させる。ＡＰＩの引数として渡されたデータにタグが設定されていることを確認することで、受信データはＡＰＩの引数として利用されるデータであることが解析できる。なお、テイント解析技術は仮想計算機技術を用いて実現されることが一般的であり、タグはデータとは異なる専用の記録領域にデータと対応が取れるように保持される。
【００２７】
命令監視部１１１は、システム内で発行される命令を監視する。具体的には、命令監視部１１１は、マルウェア１１Ａが実行したＡＰＩ呼び出しやシステムコールの発行といった命令を監視する。
【００２８】
例えば、命令監視部１１１は、マルウェア１１Ａのプログラムコードが実行したＡＰＩ呼び出しや特定のタグのついたデータを参照する命令を監視・記録し、データ伝搬追跡部１１０にはタグの設定、改ざん検知部１１２には改ざん発生有無の確認を要求する。
【００２９】
改ざん検知部１１２は、データ伝搬追跡部１１０によって付与されたタグを用いて、通信データの改ざんの発生を検知するとともに、該改ざんを指令したＣ＆Ｃサーバの識別情報を特定する。具体的には、命令監視部１１１によってＡＰＩ呼び出し又はシステムコールが命令として検知された場合に、通信データに対して改ざんの検知を行う。また、改ざん検知部１１２は、通信データに、その通信データの送信元に対応する属性情報とは異なる属性情報を含むタグが存在する場合に、通信データの改ざんを検知する。
【００３０】
例えば、改ざん検知部１１２は、データを受信するＡＰＩ呼び出し後の戻りアドレスにおいて受信データの改ざん有無を確認し、仮想ＮＩＣ１１９Ａ（図２参照）において送信データの改ざん有無を確認する。ここで、改ざんは、データ内に異なる出自情報を持つデータが混在していることを根拠に検知され、混入されたデータの取得元はＣ＆Ｃサーバとして特定される。
【００３１】
そして、改ざん検知部１１２は、改ざんを検知した場合に、通信データの送信元に対応する属性情報とは異なる属性情報を含むタグに対応するデータを、改ざん内容として特定し、特定した改ざん内容を解析結果ＤＢ１２に転送する。解析結果ＤＢ１２は、改ざん検知部１１２から転送された改ざん内容をはじめとする解析結果を記憶する。
【００３２】
また、改ざん検知部１１２は、改ざんを検知した場合に、通信データの送信元に対応する属性情報とは異なる属性情報を含むタグに紐付く通信先を、Ｃ＆Ｃサーバとして特定する。そして、改ざん検知部１１２は、特定した識別情報をＣ＆Ｃサーバの識別情報としてＣ＆Ｃサーバ識別情報ＤＢ１３に転送する。Ｃ＆Ｃサーバ識別情報ＤＢ１３は、改ざん検知部１１２から転送されたＣ＆Ｃサーバの識別情報を記憶する。
【００３３】
特定部１１４は、改ざん検知部１１２によって改ざんの発生が検知された場合に、Ｃ＆Ｃサーバの識別情報と改ざん発生時におけるマルウェア１１Ａによる攻撃対象の識別情報とに基づいて、改ざんの発生が検知された実行トレースから、通信データの送信元または送信先の識別情報が攻撃対象の識別情報であるかを判定するプログラムコードを特定する。
【００３４】
具体的には、特定部１１４は、改ざん攻撃実施時の実行トレースを取得し、実行トレースの中から攻撃対象候補の識別情報であることを表すタグとＣ＆Ｃサーバに紐付くタグの両方を参照する演算命令や比較命令を抽出し、該演算命令や比較命令を含むプログラムコードを攻撃対象選定のためのプログラムコードとして特定する。ここで、攻撃対象候補の識別情報とは、ブラウザ操作部１１Ｃから入力される識別情報であって、マルウェア１１による攻撃対象の候補であるＵＲＬ等の識別情報のことである。
【００３５】
取得部１１５は、特定部１１４によって特定されたプログラムコードを解析し、当該プログラムコードが攻撃対象の通信先であるかを判定する際に参照するデータを攻撃対象の識別情報の一覧として実行トレースから取得する。
【００３６】
具体的には、取得部１１５は、特定部１１４によって特定されたプログラムコードを解析し、識別情報であることを表すタグとＣ＆Ｃサーバに紐付くタグとが比較されている場合に、Ｃ＆Ｃサーバに紐付くタグが付与されているデータを記録し、記録されたデータの取得元メモリアドレスに存在する文字列を抽出することで攻撃対象の正規サイト一覧を取得する。
【００３７】
次に、図２を用いて、仮想マシンモニタ１１Ｅの構成例について説明する。図２は、本実施形態に係る特定装置における仮想マシンモニタ及びデータ伝搬追跡部の構成を示すブロック図である。仮想マシンモニタ１１Ｅは、ゲストＯＳ１１Ｄに対して仮想的なハードウェアを提供するソフトウェアである。また、仮想マシンモニタ１１Ｅは、仮想ＮＩＣ（Network  Interface  Card）１１９Ａや仮想ディスク１１９Ｂ、仮想ＨＷコントローラ１１６、仮想メモリ１１７、仮想ＣＰＵ１１８などから構成される。
【００３８】
データ伝搬追跡部１１０は、データに対してタグを設定してデータの伝搬追跡を行うために、仮想ディスク１１９Ｂ上のデータに対応するタグを保存するためのディスクタグ保存領域１１０Ａ、仮想メモリ１１７上のデータに対応するタグを保存するためのメモリタグ保存領域１１０Ｄ、仮想レジスタ１１８Ｂ上のデータに対応するタグを保存するためのレジスタタグ保存領域１１０Ｆを具備する。
【００３９】
データ伝搬追跡部１１０のタグ付与部１１０Ｂは、通信データに対して送信元を一意に特定できるタグを設定し、識別情報ＤＢ１１３に転送した上で、タグをメモリタグ保存領域１１０Ｄに保存する。タグを設定するタイミングは、受信データであれば、仮想ＮＩＣ１１９Ａから仮想メモリ１１７に対してデータがコピーされるタイミング、もしくはデータを受信するＡＰＩ／システムコールを呼び出した直後（関数から呼び元に戻るタイミング）であり、また、送信データであれば、ブラウザ１１Ｂなどの正規のアプリケーションがデータを送信するためのＡＰＩ呼び出しやシステムコールを発行するタイミングである。データに設定されたタグは、タグ伝搬部１１０Ｃ（タグ伝搬部Ａ）によってデータの伝搬に合わせて伝搬される。
【００４０】
タグ伝搬部１１０Ｃは、ディスクタグ保存領域１１０Ａとメモリタグ保存領域１１０Ｄの間のタグの伝搬を行う。また、タグ伝搬部１１０Ｅ（タグ伝搬部Ｂ）は、メモリタグ保存領域１１０Ｄとレジスタタグ保存領域１１０Ｆとの間やレジスタタグ保存領域１１０Ｆ間のタグの伝搬を行う。
【００４１】
また、命令監視部１１１は、ブラウザ１１Ｂなどの正規アプリケーションが実行するＡＰＩ呼び出しを監視する。正規アプリケーションがデータ受信に関わるＡＰＩを呼び出した場合、呼び出し時に関数の引数を全て記録し、戻り時に改ざん検知部１１２に通知を行う。また、命令監視部１１１は、ＡＰＩがデータ送信に関わるものである場合は呼び出し時にデータ伝搬追跡部１１０に通知を行う。通知を受け取ったデータ伝搬追跡部１１０は、タグ付与部１１０Ｂで送信データに対してデータの送信先を一意に特定できるタグを設定する。なお、データ受信やデータ送信に関わるＡＰＩは、マルウェア解析者等が解析前に設定する。
【００４２】
改ざん検知部１１２は、命令監視部１１１から通知を受けた後、受信データに対応するタグを確認することで受信データに対する改ざんの検知、改ざん内容の特定、改ざん内容を指定したＣ＆Ｃサーバの特定を行う。更に、改ざん検知部１１２は、仮想ＮＩＣ１１９Ａにおいてデータ送信時に送信データに対応するタグを確認することによって、送信データに対する改ざんの検知、改ざん内容の特定、改ざん内容を指定したＣ＆Ｃサーバの特定を行う。なお、データ伝搬時において、暗号化／復号処理を実施するＡＰＩに通信データが受信データ／送信データとして渡された場合、当該ＡＰＩの戻り値に対しても強制的にタグを伝搬させる処理を行っても良い。その際、ＩＤは再度振り直してもよい。
【００４３】
ここで、図４を用いて、識別情報ＤＢ１１３に記憶される情報について説明する。図４は、本実施形態に係る識別情報ＤＢ１１３に記憶される情報の一例を示す図である。図４に示すように、識別情報ＤＢ１１３は、タグに含まれる属性情報と、送受信情報と、識別情報とを対応づけて記憶する。この送受信情報は、通信先との通信が受信であるか送信であるかを示す情報であり、例えば、「Ｒ」が受信を示し、「Ｓ」が送信を示す。なお、図４では、識別情報としてＩＰアドレスが記憶される場合を例示する。
【００４４】
図４に示す例では、識別情報ＤＢ１１３は、属性情報「０ｘ１」と、送受信情報「Ｒ」と、識別情報「１９２．１６８．０．１」とを対応づけて記憶する。これは、ＩＰアドレス「１９２．１６８．０．１」からの受信データに付与される属性情報が「０ｘ１」であることを示す。また、識別情報ＤＢ１１３は、属性情報「０ｘＡ」と、送受信情報「Ｒ」と、識別情報「１９２．１６８．１．１０」とを対応づけて記憶する。これは、ＩＰアドレス「１９２．１６８．１．１０」への受信データに付与される属性情報が「０ｘＡ」であることを示す。
【００４５】
なお、図４の３行目に示すように、識別情報ＤＢ１１３は、属性情報「０ｘ３」と、送受信情報「Ｓ」と、識別情報「１９２．１６８．０．１」とを対応づけて記憶する。これは、１行目のＩＰアドレス「１９２．１６８．０．１」と同一のＩＰアドレスであっても、送受信情報が１行目の「Ｒ（受信）」とは異なり「Ｓ（送信）」であれば、異なる属性情報「０ｘ３」が付与されることを示す。すなわち、識別情報ＤＢ１１３において、属性情報は、送受信情報と識別情報との組み合わせに対して一意に設定される。なお、識別情報ＤＢ１１３は、必ずしも送受信情報を記憶しなくても良い。この場合、属性情報は、送受信の向きに限らず、通信先ごとに記憶される。また、属性情報は、解析時には固定長であるが、解析ごとに長さを変更してもよい。
【００４６】
なお、上記のように、識別情報ＤＢ１１３が属性情報と識別情報とを対応づけて記憶するのは、これによって、通信データの改ざんの検知が可能となるからである。例えば、改ざん検知部１１２は、識別情報ＤＢ１１３を参照し、処理対象となる通信データの送信先、もしくは送信元に対応する属性情報を取得する。そして、改ざん検知部１１２は、通信データに含まれる属性情報を参照し、取得した属性情報と照合する。ここで、改ざんされていなければ、通信データに含まれる全ての属性情報は、識別情報ＤＢ１１３から取得した属性情報と一致するはずである。一方、一致しなければ、改ざん検知部１１２は、改ざんを検知することが可能となる。さらに、本来の通信先とは異なる通信先が紐付けられていれば、改ざん検知部１１２は、その通信先をＣ＆Ｃサーバとして特定することができる。
【００４７】
そして、特定部１１４は、改ざん検知部１１２におけるＣ＆Ｃサーバ特定に起因して、攻撃対象選定のプログラムコードを特定する処理を開始する。特定部１１４は、Ｃ＆Ｃサーバ特定後に命令監視部１１１に対してマルウェア１１Ａのプログラムコードの実行トレースを取得するように通知する。実行トレースでは、実行アドレスと利用したレジスタや読み書きを行ったメモリ領域、それらが保持するデータおよび設定されているタグを記録する。さらに、実行トレースを取得する際には通信先を指定するＡＰＩの呼び出し時に識別情報に対してタグを設定する。
【００４８】
例えば、Windows（登録商標）  OS上のInternet  ExplorerにおいてInternetConnect関数が呼ばれた場合にはＦＱＤＮやＩＰアドレスに対して識別情報であることを示すタグを設定する。タグは、フラグ値としてもよいし、どの関数の引数に指定された識別情報かを把握するためにユニークな値を設定してもよい。
【００４９】
実行トレースが有効な状態で、ブラウザ操作部１１Ｃに改ざん攻撃発生が確認されたサイトへのアクセスを行わせ、改ざん攻撃実施時の実行トレースを取得する。なお、改ざん検知前から実行トレースを有効にしないのは、解析負荷を低減させるためである。改ざん攻撃実施時の実行トレースを取得した後、特定部１１４は、実行トレースの中から攻撃対象候補の識別情報であることを表すタグとＣ＆Ｃサーバに紐付くタグの両方を参照する演算命令や比較命令を抽出し、攻撃対象選定のためのプログラムコードとして特定する。例えば、識別情報に０ｘ１という値のタグを設定しており、Ｃ＆Ｃサーバからの受信データに対して０ｘ２という値のタグを設定していた場合、「cmp  eax,  ebx」という比較命令においてeaxないしebxにおいて０ｘ１という値のタグが設定されており、他方に０ｘ２という値のタグが設定されていることを確認することで攻撃対象選定のプログラムコードであることを特定する。
【００５０】
その後、取得部１１５は、ブラウザ操作部１１Ｃに改ざん攻撃発生が確認されていないサイトにアクセスさせることで、改ざん攻撃対象であるか否かを判定する処理の実行トレースを取得する。当該実行トレースの中から攻撃対象を選定するためのプログラムコードで参照されたＣ＆Ｃサーバに紐付くタグのついたデータを取得し、当該実行トレースを実行とは逆順に辿ることで記録されたデータの取得元のメモリ領域を特定し、当該メモリ領域の文字列情報を抽出する。ここで文字列情報とは、所定の数以上連続するＡＳＣＩＩコードで構成されたデータ列である。これにより、攻撃対象である正規サイトの一覧を取得する。
【００５１】
上述したように、正規サイトの一覧を取得する処理を行う際には、まず、ブラウザ操作部１１Ｃに改ざん攻撃発生が確認されていないサイトにアクセスさせているが、これは、攻撃対象である正規サイトの識別情報を網羅的に取得するためである。
【００５２】
ここで、図５を用いて、ブラウザ操作部１１Ｃにより改ざん攻撃対象ではない通信先と通信させることで攻撃対象である正規サイトの識別情報を網羅的に取得する処理を説明する。図５は、ブラウザ操作部により改ざん攻撃対象ではない通信先と通信させることで攻撃対象である正規サイトの識別情報を網羅的に取得する処理を説明する図である。図５の例では、改ざん攻撃対象ではない識別情報として、ＵＲＬ「http://zzzbank.co.jp/」がブラウザ操作部１１Ｃを介して入力されている場合を例として説明する。なお、改ざん攻撃対象ではない識別情報は、予め設定されて自動的に入力されるものであってもよいし、手動で入力されるものであってもよい。
【００５３】
図５に例示するように、通信データの送信元または送信先の識別情報が攻撃対象の識別情報であるかを判定するプログラムコードでは、まず、改ざん攻撃対象ではない識別情報であるＵＲＬ「http://zzzbank.co.jp/」が、攻撃対象の識別情報であるＵＲＬ「http://AAAbank.com/*」と一致するか比較される。この結果、一致しない場合には、図５に例示するように、照合結果が「×」となり、次の改ざん攻撃対象ではない識別情報であるＵＲＬ「http://zzzbank.co.jp/」と、攻撃対象の識別情報であるＵＲＬ「http://BBBbank.*/login.html」とが一致するか比較され、一致しない場合には、照合結果が「×」となる。なお、上記したＵＲＬの「*」は、任意の文字列を表すものである。
【００５４】
同様の比較処理が、攻撃対象の識別情報であるＵＲＬ「http://CCCbank.com/*」、「http://DDDbank.com/*」に対しても行われる。つまり、上記の比較を行った結果、仮に一致してしまうと、そこで比較処理が終了となってしまうが、改ざん攻撃対象ではない通信先と通信させることで、全ての攻撃対象である正規サイトの識別情報についての比較処理が行われる。このように、改ざん攻撃対象ではない通信先と通信させることで、全ての攻撃対象である正規サイトの識別情報についての比較処理が行われるため、プログラムコードを解析することで、正規サイトの識別情報を網羅的に取得することが可能となる。
【００５５】
［特定装置の処理の一例］
次に、図６を用いて、特定装置１０における処理の流れを説明する。図６は、本実施形態に係る特定装置における攻撃対象の正規サイトの識別情報を特定する処理の流れを示すフローチャートである。なお、以下の処理は、改ざん検知部１１２により、改ざんが検知されるとともに、Ｃ＆Ｃサーバの識別情報が特定された後に開始される処理である。
【００５６】
図６に示すように、特定装置１０の特定部１１４は、Ｃ＆Ｃサーバとタグ、改ざん発生時の通信先を改ざん検知部１１２から取得する（ステップＳ１０１）。なお、ここで、特定部１１４は、Ｃ＆Ｃサーバとタグを取得できなかった場合には（ステップＳ１０２否定）、処理を終了する。
【００５７】
また、特定部１１４は、Ｃ＆Ｃサーバとタグを取得できた場合には（ステップＳ１０２肯定）、命令監視部１１１の実行トレース取得を有効化し（ステップＳ１０３）、ブラウザ操作部１１Ｃに改ざん発生時の通信先に通信させる（ステップＳ１０４）。つまり、実行トレースが有効な状態で、ブラウザ操作部１１Ｃに改ざん攻撃発生が確認されたサイトへのアクセスを行わせ、改ざん攻撃実施時の実行トレースを取得する。なお、改ざん検知前から実行トレースを有効にしないのは、解析負荷を低減させるためである。
【００５８】
そして、特定部１１４は、改ざん攻撃実施時の実行トレースを取得した後、実行トレースからＣ＆Ｃサーバのタグと識別情報のタグを参照するプログラムコードを特定する（ステップＳ１０５）。具体的には、特定部１１４は、実行トレースの中から攻撃対象候補の識別情報であることを表すタグとＣ＆Ｃサーバに紐付くタグの両方を参照する演算命令や比較命令を抽出し、攻撃対象選定のためのプログラムコードとして特定する。なお、ステップＳ１０５において条件に合う存在しなかった場合には（ステップＳ１０６否定）、ここで処理を終了する。
【００５９】
プログラムコードとして特定する処理について具体的な例を用いて説明すると、識別情報に０ｘ１という値のタグを設定しており、Ｃ＆Ｃサーバからの受信データに対して０ｘ２という値のタグを設定していた場合、特定部１１４は、「cmp  eax,  ebx」という比較命令においてeaxないしebxにおいて０ｘ１という値のタグが設定されており、他方に０ｘ２という値のタグが設定されていることを確認することで攻撃対象選定のプログラムコードであることを特定する。
【００６０】
そして、ステップＳ１０５において条件に合うプログラムコードが存在した場合には（ステップＳ１０６肯定）、ブラウザ操作部１１Ｃに改ざん攻撃対象でない通信先と通信させる（ステップＳ１０７）。このようにブラウザ操作部１１Ｃに改ざん攻撃対象でない通信先と通信させ、例えば、改ざん攻撃発生が確認されていないサイトにアクセスさせることで、改ざん攻撃対象であるか否かを判定する処理の実行トレースを取得する。
【００６１】
そして、取得部１１５は、当該プログラムコードで参照されたデータのうち、Ｃ＆Ｃサーバに紐づくタグが設定されたデータを記憶する（ステップＳ１０８）。そして、取得部１１５は、実行トレースを遡り、取得元アドレスを特定する（ステップＳ１０９）。その後、取得部１１５は、攻撃対象の識別情報として、取得元アドレスから文字列を取得する（ステップＳ１１０）。
【００６２】
つまり、例えば、取得部１１５は、実行トレースの中から攻撃対象を選定するためのプログラムコードで参照されたＣ＆Ｃサーバに紐付くタグのついたデータを取得し、当該実行トレースを実行とは逆順に辿り、データの受け渡し関係を１つずつ確認していくことで、記録されたデータの取得元のメモリ領域を特定し、当該メモリ領域の文字列情報（例えば、正規化されたＵＲＬやＩＰアドレス）を抽出する。これにより、攻撃対象である正規サイトの識別情報の一覧を取得する。なお、取得した識別情報に対して、さらに、所定の条件を満たすものだけを抽出するようにしてもよい。例えば、金融サービスに関連する識別情報だけを抽出したい場合には、金融サービスに関連する識別情報を抽出する条件を予め設定し、取得した識別情報から金融サービスに関連する識別情報のみを抽出するようにしてもよい。
【００６３】
［実施形態の効果］
このように、特定装置１０は、通信データに対して、当該通信データの送信元または送信先の識別情報に対応づけた属性情報を含むタグを付与し、当該タグが付与された通信データの伝搬を追跡する。そして、特定装置１０は、付与されたタグを用いて、通信データの改ざんの発生を検知するとともに、該改ざんを指令したＣ＆Ｃサーバの識別情報を特定する。続いて、特定装置１０は、改ざんの発生が検知された場合に、Ｃ＆Ｃサーバの識別情報と改ざん発生時におけるマルウェア１１Ａによる攻撃対象の識別情報とに基づいて、改ざんの発生が検知された実行トレースから、通信データの送信元または送信先の識別情報が攻撃対象の識別情報であるかを判定するプログラムコードを特定する。その後、特定装置１０は、特定されたプログラムコードを解析し、当該プログラムコードが攻撃対象の識別情報であるかを判定する際に参照するデータを攻撃対象の識別情報の一覧として実行トレースから取得する。このため、マルウェアの攻撃対象を効率的に取得することが可能である。
【００６４】
また、特定装置１０は、マルウェア１１Ａが通信データに対して行った改ざん攻撃の検知、改ざん内容を指定したＣ＆Ｃサーバの特定だけでなく、改ざん攻撃の対象となっている正規サイトを特定するのに有用である。また、特定装置１０では、特定した攻撃対象の正規サイトの識別情報は、特定装置１０のブラウザ操作部１１Ｃへの入力生成や、注意喚起などへの利用に適している。なお、攻撃対象となっている各正規サイトにアクセスした際に行われる改ざん内容も特定することが可能である。
【００６５】
［その他の実施形態］
なお、上記の実施形態では、マルウェア実行環境における解析に適用される場合を説明したが、これに限定されるものではない。例えば、本実施形態に係る各部は、ユーザ端末に導入されてもよい。また、本実施形態を利用する際には、改ざん機能を有したマルウェアか否かの判定や改ざん攻撃が発生したことの警告通知のみを目的として、Ｃ＆Ｃサーバ特定処理を行わず、改ざん攻撃の検知処理のみを実施してもよい。なお、Ｃ＆Ｃサーバ特定処理を実施する際には、Ｃ＆Ｃサーバ識別情報ＤＢ１３の内容に基づいて、ＶＭＭ（Virtual  Machine  Monitor）側で通信の遮断を実施してもよいし、外部ＩＰＳ（Intrusion  Prevention  System）装置等と連携して通信遮断の措置をとらせてもよい。なお、Ｃ＆Ｃサーバは、「指令サーバ」とも称される。
【００６６】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。例えば、特定部１１４と取得部１１５とを統合してもよい。
【００６７】
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６８】
［プログラム］
また、上記実施形態において説明した特定装置１０が実行する処理について、コンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係る特定装置１０が実行する処理について、コンピュータが実行可能な言語で記述した特定プログラムを作成することもできる。この場合、コンピュータが特定プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる特定プログラムをコンピュータが読み取り可能な記録媒体に記録して、この記録媒体に記録され特定プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図１に示した特定装置１０と同様の機能を実現する特定プログラムを実行するコンピュータの一例を説明する。
【００６９】
図７は、特定プログラムを実行するコンピュータ１０００を示す図である。図７に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００７０】
メモリ１０１０は、図７に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図７に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図７に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブに挿入される。シリアルポートインタフェース１０５０は、図７に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図７に例示するように、例えばディスプレイ１１３０に接続される。
【００７１】
ここで、図７に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の特定プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００７２】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、実行する。
【００７３】
なお、特定プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、特定プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００７４】
１０  特定装置
１１  マルウェア実行環境部
１１Ａ  マルウェア
１１Ｂ  ブラウザ
１１Ｃ  ブラウザ操作部
１１Ｄ  ゲストＯＳ
１１Ｅ  仮想マシンモニタ
１１０  データ伝搬追跡部
１１０Ａ  ディスクタグ保存領域
１１０Ｂ  タグ付与部
１１０Ｃ  タグ伝搬部Ａ
１１０Ｄ  メモリタグ保存領域
１１０Ｅ  タグ伝搬部Ｂ
１１０Ｆ  レジスタタグ保存領域
１１１  命令監視部
１１２  改ざん検知部
１１３  識別情報ＤＢ
１１４  特定部
１１５  取得部
１１６  仮想ＨＷコントローラ
１１７  仮想メモリ
１１８  仮想ＣＰＵ
１１８Ｂ  仮想レジスタ
１１９Ａ  仮想ＮＩＣ
１１９Ｂ  仮想ディスク
１２  解析結果ＤＢ
１３  Ｃ＆Ｃサーバ識別情報ＤＢ
【図１】
0006258189.tif 000002
【図２】
0006258189.tif 000003
【図３】
0006258189.tif 000004
【図４】
0006258189.tif 000005
【図５】
0006258189.tif 000006
【図６】
0006258189.tif 000007
【図７】
0006258189.tif 000008