(57)【要約】【課題】マルウェアに暗号化されたデータを復元できるマルウェア検知装置、マルウェア検知方法およびマルウェア検知プログラムを提供する。【解決手段】マルウェア検知装置は、取得部と、判定部と、呼出部とを有する。取得部は、暗号化機能の呼び出しを監視し、暗号化機能の呼び出しがあった場合に、呼び出し元のプロセスを取得する。判定部は、取得された呼び出し元のプロセスを許可するか否かを判定する。呼出部は、判定部が呼び出し元のプロセスを許可しないと判定した場合に、呼び出し元のプロセスから受け取った暗号化に用いる鍵を別の鍵に置き換えて、暗号化機能を呼び出す。【選択図】図１
2019021131.tif 000002
【特許請求の範囲】
【請求項１】
暗号化機能の呼び出しを監視し、前記暗号化機能の呼び出しがあった場合に、呼び出し元のプロセスを取得する取得部と、
取得された前記呼び出し元のプロセスを許可するか否かを判定する判定部と、
前記呼び出し元のプロセスを許可しないと判定した場合に、前記呼び出し元のプロセスから受け取った暗号化に用いる鍵を別の鍵に置き換えて、前記暗号化機能を呼び出す呼出部と、
を有することを特徴とするマルウェア検知装置。
【請求項２】
前記取得部、前記判定部および前記呼出部は、オペレーティングシステムよりも上位の権限を有するハイパーバイザで動作する、
ことを特徴とする請求項１に記載のマルウェア検知装置。
【請求項３】
前記取得部は、前記暗号化機能の呼び出しがあった場合に、前記呼び出し元のプロセスに対応する実行ファイルのファイル名を取得し、
前記判定部は、取得された前記ファイル名が、暗号化を許可する実行ファイルのファイル名が格納された許可リストにない場合に、前記呼び出し元のプロセスを許可しないと判定する、
ことを特徴とする請求項２に記載のマルウェア検知装置。
【請求項４】
前記取得部は、前記暗号化機能の呼び出しがあった場合に、前記呼び出し元のプロセスに対応する実行ファイルのハッシュ値を取得し、
前記判定部は、取得された前記ハッシュ値が、暗号化を許可する実行ファイルのハッシュ値が格納された許可リストにない場合に、前記呼び出し元のプロセスを許可しないと判定する、
ことを特徴とする請求項２に記載のマルウェア検知装置。
【請求項５】
前記許可リストは、前記ハイパーバイザ内に記憶される、
ことを特徴とする請求項３または４に記載のマルウェア検知装置。
【請求項６】
前記許可リストは、前記オペレーティングシステム上でアクセス可能な記憶部に署名付きで記憶され、前記許可リストに前記ハッシュ値が格納されている前記実行ファイルが更新された際に、更新された前記実行ファイルに対応する前記ハッシュ値が更新され、
前記判定部は、前記許可リストの署名が確認できた場合に、取得された前記ハッシュ値が、前記許可リストにあるか否かを判定する、
ことを特徴とする請求項４に記載のマルウェア検知装置。
【請求項７】
暗号化機能の呼び出しを監視し、前記暗号化機能の呼び出しがあった場合に、呼び出し元のプロセスを取得し、
取得された前記呼び出し元のプロセスを許可するか否かを判定し、
前記呼び出し元のプロセスを許可しないと判定した場合に、前記呼び出し元のプロセスから受け取った暗号化に用いる鍵を別の鍵に置き換えて、前記暗号化機能を呼び出す、
処理をコンピュータが実行することを特徴とするマルウェア検知方法。
【請求項８】
暗号化機能の呼び出しを監視し、前記暗号化機能の呼び出しがあった場合に、呼び出し元のプロセスを取得し、
取得された前記呼び出し元のプロセスを許可するか否かを判定し、
前記呼び出し元のプロセスを許可しないと判定した場合に、前記呼び出し元のプロセスから受け取った暗号化に用いる鍵を別の鍵に置き換えて、前記暗号化機能を呼び出す、
処理をコンピュータに実行させることを特徴とするマルウェア検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルウェア検知装置、マルウェア検知方法およびマルウェア検知プログラムに関する。
【背景技術】
【０００２】
近年、ランサムウェアというマルウェアが顕在化してきている。ランサムウェアとは、感染した端末がアクセス可能なファイルを暗号化する等して読み取り不能にし、復号のための鍵と引き換えに対価を要求するマルウェアである。ランサムウェアは、例えば、ＣＰＵ（Central  Processing  Unit）の暗号化命令を用いたり、ＯＳ（Operating  System）の暗号化ＡＰＩ（Application  Programming  Interface）を用いたりすることで高速に暗号化を行う。また、マルウェアに対する対策としては、例えば、検出した暗号化通信の識別データが承認済みアプリケーションのリストにない場合に、検出した暗号化通信を未承認暗号化通信として識別することが提案されている。さらに、ランサムウェアの検出としては、例えば、ファイル書込関数とファイル読出関数との関係や、ファイルのヘッダの書き換えといった条件に基づいて、ランサムウェアと判定することが提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１２−５１１８４７号公報
【特許文献２】特開２０１４−０４８８６６号公報
【特許文献３】特許第５９９６１４５号公報
【特許文献４】特表２０１６−５２６７３０号公報
【特許文献５】特開２００８−０７１２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ランサムウェアは、暗号化ＡＰＩや暗号化命令を用いなくても、低速ではあるが独自に実装する暗号化関数を用いて暗号化を行う場合がある。このため、ランサムウェアに感染すると、ファイルの暗号化を阻止することが困難である。
【０００５】
一つの側面では、マルウェアに暗号化されたデータを復元できるマルウェア検知装置、マルウェア検知方法およびマルウェア検知プログラムを提供することにある。
【課題を解決するための手段】
【０００６】
一つの態様では、マルウェア検知装置は、取得部と、判定部と、呼出部とを有する。取得部は、暗号化機能の呼び出しを監視し、前記暗号化機能の呼び出しがあった場合に、呼び出し元のプロセスを取得する。判定部は、取得された前記呼び出し元のプロセスを許可するか否かを判定する。呼出部は、前記判定部が前記呼び出し元のプロセスを許可しないと判定した場合に、前記呼び出し元のプロセスから受け取った暗号化に用いる鍵を別の鍵に置き換えて、前記暗号化機能を呼び出す。
【発明の効果】
【０００７】
マルウェアに暗号化されたデータを復元できる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１の端末装置の階層構造の一例を示すブロック図である。
【図２】図２は、ランサムウェアの動作イメージの一例を示す図である。
【図３】図３は、ランサムウェアにおける鍵の関係の一例を示す図である。
【図４】図４は、暗号化命令および復号命令の一例を示す図である。
【図５】図５は、許可リスト記憶部の一例を示す図である。
【図６】図６は、実施例１における鍵の関係の一例を示す図である。
【図７】図７は、実施例１の検知処理の一例を示すフローチャートである。
【図８】図８は、実施例２の端末装置の階層構造の一例を示すブロック図である。
【図９】図９は、許可リスト記憶部の他の一例を示す図である。
【図１０】図１０は、実施例２の検知処理の一例を示すフローチャートである。
【図１１】図１１は、マルウェア検知プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて、本願の開示するマルウェア検知装置、マルウェア検知方法およびマルウェア検知プログラムの実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例１】
【００１０】
図１は、実施例１の端末装置の階層構造の一例を示すブロック図である。図１に示す端末装置１００は、ユーザが各種のアプリケーションを実行する情報処理装置であり、据置型や可搬型のパーソナルコンピュータを用いることができる。また、端末装置１００には、タブレット端末やスマートフォン等の移動体通信端末等を用いるようにしてもよい。
【００１１】
端末装置１００は、ＣＰＵの暗号化命令またはオペレーティングシステム上の暗号化ＡＰＩの呼び出しを監視し、暗号化命令または暗号化ＡＰＩの呼び出しがあった場合に、呼び出し元のプロセスを取得する。端末装置１００は、取得した呼び出し元のプロセスが、暗号化を許可する許可リストにあるか否かを判定する。端末装置１００は、呼び出し元のプロセスが許可リストにないと判定した場合に、暗号化命令または暗号化ＡＰＩにおいて暗号化に用いる鍵を別の鍵に置き換えて、暗号化命令または暗号化ＡＰＩを呼び出す。これにより、端末装置１００は、マルウェアに暗号化されたデータを復元できる。
【００１２】
次に、端末装置１００の階層構造について説明する。図１に示すように、端末装置１００は、アプリケーション層１１０、ＯＳ１２０、ＶＭＭ（Virtual  Machine  Monitor）１３０、ハードウェア１４０の順に階層化された構造を有する。なお、端末装置１００は、図１に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。
【００１３】
アプリケーション層１１０は、例えば、ウェブブラウザ等の暗号化処理を行うアプリケーションを含む階層である。アプリケーション層１１０では、ランサムウェア１１１や許可済み実行ファイル１１２が動作する。ランサムウェア１１１は、端末装置１００に侵入すると、端末装置１００内に記憶された各種ファイルや、ネットワークで接続されたファイルサーバ等に記憶された各種ファイルを暗号化しようと試みる。ランサムウェア１１１は、まず、ＣＰＵの暗号化命令、または、ＯＳの暗号化ＡＰＩを用いて暗号化を試みる。ランサムウェア１１１は、暗号化命令または暗号化ＡＰＩを用いることができない場合には、独自実装の暗号化関数を用いる。なお、ランサムウェア１１１は、暗号化命令または暗号化ＡＰＩを用いることができない場合に、データの削除を開始することも考えられる。
【００１４】
アプリケーション層１１０から利用できる暗号化命令は、例えば、ｘ８６命令セットの拡張機能であるＡＥＳ−ＮＩ（Advanced  Encryption  Standard  New  Instructions）等が挙げられる。また、アプリケーション層１１０から利用できる暗号化ＡＰＩは、例えば、Ｗｉｎｄｏｗｓ（登録商標）のCryptographic  APIや、ＣＮＧ（Cryptography  API：Next  Generation）等が挙げられる。ＡＥＳ−ＮＩは、暗号化をハードウェアに行わせるための命令であり、非常に高速である。また、ＣＰＵにＡＥＳ−ＮＩが未実装の場合やより手軽に暗号化を行いたい場合には、暗号化ＡＰＩが用いられる。
【００１５】
許可済み実行ファイル１１２は、例えば、電子メールのクライアントソフト、ウェブブラウザ、ワードプロセッサ、表計算ソフト等の暗号化が許可されたソフトウェアの実行ファイルである。許可済み実行ファイル１１２は、暗号化命令または暗号化ＡＰＩを用いることで、ファイルや通信に対して暗号化を行うことができる。
【００１６】
ここで、図２および図３を用いてランサムウェアの動作について説明する。図２は、ランサムウェアの動作イメージの一例を示す図である。図２に示すように、攻撃者１０は、例えば、電子メールにランサムウェア１１を仕込んで端末装置２０のユーザに送信する。端末装置２０のユーザは、例えば不用意に電子メールを開封してしまい、端末装置２０がランサムウェア１１に感染してしまう（ステップＳ１）。
【００１７】
ランサムウェア１１は、端末装置２０に感染すると、ファイルを暗号化するための鍵をランダムに生成する（ステップＳ２）。ランサムウェア１１は、生成した鍵を用いてファイル２１ｐを暗号化して暗号化ファイル２１ｃに置き換える（ステップＳ３）。ランサムウェア１１は、ネットワーク越しにアクセス可能なファイルについても暗号化を行う（ステップＳ４）。すなわち、ランサムウェア１１は、例えば、ネットワークで接続されたファイルサーバ３０に格納されたファイル３１ｐおよび３２ｐについても、生成した鍵を用いて暗号化し、暗号化ファイル３１ｃおよび３２ｃに置き換える。ランサムウェア１１は、アクセス可能なファイルの暗号化が完了すると、ファイルの暗号化に用いた鍵をランサムウェア１１の公開鍵で暗号化して攻撃者１０に送信する（ステップＳ５）。
【００１８】
図３は、ランサムウェアにおける鍵の関係の一例を示す図である。図３に示すように、図２のステップＳ３におけるファイルの暗号化では、ランサムウェア１１は、生成した鍵１２を用いてファイル２１ｐを暗号化して暗号化ファイル２１ｃに置き換える。また、図２のステップＳ５では、ランサムウェア１１は、鍵１２をランサムウェア１１の公開鍵１３を用いて暗号化し、暗号化された鍵１４を生成して攻撃者１０に送信する。すなわち、ユーザは、鍵１４の暗号化を解かない限り、暗号化ファイル２１ｃを復号することが出来なくなる。
【００１９】
図２の説明に戻って、ランサムウェア１１は、鍵１４を攻撃者１０に送信すると、暗号化に用いた鍵１２を消去し、身代金を要求するメッセージを端末装置２０に表示する（ステップＳ６）。つまり、ランサムウェア１１は、暗号化されたファイルの復号のための鍵１２と引き換えに対価を要求する。なお、攻撃者１０は、鍵１４を公開鍵１３に対応する秘密鍵で復号して鍵１２を得ることができる。端末装置２０のユーザは、表示されたメッセージを見ることで、ファイルが暗号化されたことに気付く。暗号化には、ＡＥＳ（Advanced  Encryption  Standard）２５６やＲＳＡ４０９６等の強固な現代暗号が使われており、暗号化されてしまったファイルを鍵１２なしで解読することは困難である。しかしながら、暗号化に用いられた鍵１２は、公開鍵１３で暗号化されているため、端末装置２０のユーザは、身代金の支払いなしに鍵１２を入手することはできない。このため、端末装置２０のユーザは、ファイルを諦めるか、身代金を支払って鍵１２を入手し、ファイルを復号することになる。なお、この様なランサムウェアとしては、例えば、「Ｃｒｙｐｔｏｗａｌｌ」、「ＴｅｓｌａＣｒｙｐｔ」、「ＣｒｙｐｔｏＬｏｃｋｅｒ」等が挙げられる。
【００２０】
図１の説明に戻って、ＯＳ１２０は、端末装置１００の各種制御を行うシステムソフトウェアである。ＯＳ１２０は、例えば、Ｗｉｎｄｏｗｓ（登録商標）を用いることができる。なお、ＯＳ１２０は、Ｗｉｎｄｏｗｓ（登録商標）に限定されず、暗号化ＡＰＩを有するＯＳであれば、例えば、Ｌｉｎｕｘ（登録商標）等の他のＯＳであってもよい。ＯＳ１２０は、例えば、ファイルシステム、メモリ、プロセス等の管理や、ユーザインタフェースの提供、ネットワークの制御等を行う。ＯＳ１２０は、アプリケーション層１１０の各種アプリケーションに対して、暗号化ＡＰＩ１２１を含む各種のＡＰＩを提供する。
【００２１】
暗号化ＡＰＩ１２１は、アプリケーション層１１０で動作する各種アプリケーションに対して、暗号化処理および復号処理を提供するＡＰＩである。暗号化ＡＰＩ１２１は、例えば、許可済み実行ファイル１１２から呼び出されることで、暗号化処理および復号処理を提供する。暗号化ＡＰＩ１２１は、例えば、引数として、暗号鍵と、暗号化対象のファイルやファイル名とを与えられる。なお、本実施例では、暗号化ＡＰＩ１２１に対する呼び出しは、ＶＭＭ１３０によって監視されてフック（割り込み）される。
【００２２】
ハードウェア１４０は、ＣＰＵ１４１、通信部１４２のほか、図示しないＲＡＭ（Random  Access  Memory）、フラッシュメモリおよびハードディスク装置等の記憶部、表示部、操作部等を有する。
【００２３】
ＣＰＵ１４１は、記憶部に記憶されているプログラムに従って、ＲＡＭを作業領域として各種処理を実行する。すなわち、ＣＰＵ１４１は、ＶＭＭ１３０やＯＳ１２０によって制御され、各種処理を実行する。ＣＰＵ１４１は、ＶＭＭ１３０から暗号化命令が入力されると、暗号化命令に含まれるデータを鍵で暗号化する。ＣＰＵ１４１は、ＶＭＭ１３０を介して、暗号化したデータをＯＳ１２０に出力する。また、ＣＰＵ１４１は、ＶＭＭ１３０を介して、ＯＳ１２０から復号命令が入力されると、復号命令に含まれるデータを鍵で復号する。ＣＰＵ１４１は、ＶＭＭ１３０を介して、復号したデータをＯＳ１２０に出力する。
【００２４】
ここで、図４を用いて暗号化命令および復号命令について説明する。図４は、暗号化命令および復号命令の一例を示す図である。図４に示す暗号化命令４０は、ＡＥＳ−ＮＩの暗号化を行うための命令、つまりオペランドであり、命令４１、鍵４２およびデータ４３を有する。命令４１は、暗号化のための各種の命令である。鍵４２は、暗号化に用いる鍵であり、例えば、ＡＥＳ２５６を用いる場合、鍵長は２５６ビットとなる。データ４３は、暗号化を行うデータのブロックであり、例えば、ブロック長は１２８ビットである。すなわち、ＯＳ１２０は、暗号化対象のファイルを１２８ビットずつに分割して暗号化命令４０を発行する。
【００２５】
復号命令４５は、ＡＥＳ−ＮＩの復号を行うための命令、つまりオペランドであり、命令４６、鍵４７およびデータ４８を有する。命令４６は、復号のための各種の命令である。鍵４７は、復号に用いる鍵であり、例えば、ＡＥＳ２５６を用いる場合、鍵長は２５６ビットとなる。データ４８は、暗号化されたデータのブロックであり、例えば、ブロック長は１２８ビットである。すなわち、ＯＳ１２０は、復号を行う暗号化ファイルを１２８ビットずつに分割して復号命令４５を発行する。
【００２６】
図１の説明に戻って、通信部１４２は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。通信部１４２は、図示しないネットワークを介して各種の情報処理装置と有線または無線で接続され、各種の情報処理装置との間で情報の通信を司る通信インタフェースである。通信部１４２は、ランサムウェア１１１の侵入経路や、攻撃者１０に対する鍵の送信経路となる。
【００２７】
ＶＭＭ１３０は、ハードウェア１４０等に対する制御について、ＯＳ１２０より上位の権限を有するハイパーバイザであり、いわゆるベアメタル型のハイパーバイザである。ＶＭＭ１３０は、許可リスト記憶部１３１と、取得部１３２と、判定部１３３と、呼出部１３４とを有し、以下に説明する情報処理の機能や作用を実現または実行する。すなわち、取得部１３２と、判定部１３３と、呼出部１３４とは、ＯＳ１２０よりも上位の権限を有するハイパーバイザで動作する機能部である。なお、ＶＭＭ１３０の各機能部は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。また、ＶＭＭ１３０の内部構成は、図１に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００２８】
許可リスト記憶部１３１は、暗号化命令４０または暗号化ＡＰＩ１２１の使用が許可されたソフトウェアの実行ファイルのファイル名、つまり許可リストを記憶する。図５は、許可リスト記憶部の一例を示す図である。図５に示すように、許可リスト記憶部１３１は、「項番」、「ファイル名」といった項目を有する。許可リスト記憶部１３１は、例えば、項番ごとに１レコードとして記憶する。
【００２９】
「項番」は、許可リストに登録されている実行ファイルのファイル名を識別する識別子である。「ファイル名」は、暗号化命令４０または暗号化ＡＰＩ１２１の使用が許可されたソフトウェアの実行ファイルのファイル名を示す情報である。「ファイル名」は、例えば、実行ファイルがあるディレクトリのフルパスで表してもよいし、実行ファイルのファイル名で表してもよい。なお、許可リスト記憶部１３１に記憶される許可リストは、例えば、端末装置１００の管理者が、図示しない管理用端末からＶＭＭ１３０にリモートアクセスすることで更新することができる。また、許可リストを更新可能とする場合には、許可リストは署名付きで許可リスト記憶部１３１に記憶されるようにするのが好ましい。すなわち、許可リストは、ハイパーバイザであるＶＭＭ１３０内に記憶される。
【００３０】
図１の説明に戻って、取得部１３２は、ＯＳ１２０上における暗号化命令４０または暗号化ＡＰＩ１２１の呼び出しを監視する。取得部１３２は、アプリケーション層１１０のランサムウェア１１１または許可済み実行ファイル１１２、あるいは、ＯＳ１２０から暗号化命令４０または暗号化ＡＰＩ１２１の呼び出しがあった場合に、当該呼び出しをフックする。取得部１３２は、フックした呼び出しの呼び出し元のプロセスを取得する。つまり、取得部１３２は、フックした呼び出しの呼び出し元のプロセスに対応する実行ファイルのファイル名を取得する。取得部１３２は、取得したファイル名と、フックした呼び出しとを判定部１３３に出力する。
【００３１】
判定部１３３は、取得部１３２からファイル名と、フックした呼び出しとが入力されると、許可リスト記憶部１３１を参照し、入力されたファイル名が許可リストにあるか否かを判定する。すなわち、判定部１３３は、取得された呼び出し元のプロセスが、暗号化を許可する許可リストにあるか否かを判定する。判定部１３３は、入力されたファイル名が許可リストにあると判定した場合には、フックした呼び出しを呼出部１３４に出力する。
【００３２】
判定部１３３は、入力されたファイル名が許可リストにないと判定した場合には、暗号鍵を既知の鍵に置き換える旨の置き換え指示とともに、フックした呼び出しを呼出部１３４に出力する。
【００３３】
呼出部１３４は、判定部１３３からフックした呼び出しが入力された場合、すなわち、ファイル名が許可リストにある場合には、フックした呼び出しの呼び出し先に応じて、フックした呼び出しをＣＰＵ１４１または暗号化ＡＰＩ１２１に出力する。つまり、呼出部１３４は、フックした呼び出しが暗号化命令４０の呼び出しである場合には、ＣＰＵ１４１に対してフックした呼び出しを出力する。また、呼出部１３４は、フックした呼び出しが暗号化ＡＰＩ１２１の呼び出しである場合には、ＯＳ１２０の暗号化ＡＰＩ１２１に対してフックした呼び出しを出力する。
【００３４】
呼出部１３４は、判定部１３３から置き換え指示と、フックした呼び出しとが入力された場合、すなわち、ファイル名が許可リストにない場合には、フックした呼び出しの暗号化命令４０または暗号化ＡＰＩ１２１に対応する暗号鍵を既知の鍵に置き換える。既知の鍵は、例えば、端末装置１００の管理者によって予め設定される任意の鍵である。既知の鍵は、例えば、オールゼロの鍵、つまり、ＡＥＳ２５６を用いる場合、鍵長２５６ビットの全てがゼロである鍵とすることができる。なお、既知の鍵は、暗号化に用いる鍵の別の鍵の一例である。また、呼出部１３４は、置き換え対象の暗号鍵、つまりランサムウェア１１１が生成した鍵については破棄しても構わない。
【００３５】
呼出部１３４は、暗号化命令４０または暗号化ＡＰＩ１２１に対応する暗号鍵が既知の鍵に置き換えられたフックした呼び出しに基づいて、暗号化命令４０または暗号化ＡＰＩ１２１を呼び出す。すなわち、呼出部１３４は、呼び出し元のプロセス、つまりファイル名が許可リストにないと判定された場合に、暗号化命令４０または暗号化ＡＰＩ１２１において暗号化に用いる鍵を別の鍵に置き換えて、暗号化命令４０または暗号化ＡＰＩ１２１を呼び出す。つまり、呼出部１３４は、フックした呼び出しが暗号化命令４０の呼び出しである場合には、ＣＰＵ１４１に対して鍵を置き換え済みのフックした呼び出しを出力する。また、呼出部１３４は、フックした呼び出しが暗号化ＡＰＩ１２１の呼び出しである場合には、ＯＳ１２０の暗号化ＡＰＩ１２１に対して鍵を置き換え済みのフックした呼び出しを出力する。
【００３６】
ここで、図６を用いて暗号鍵の置き換えについて説明する。図６は、実施例１における鍵の関係の一例を示す図である。図６に示すように、呼出部１３４は、ランサムウェア１１１が生成した鍵５１を用いてファイル５２ｐを暗号化しようとすると、鍵５１を既知の鍵５３に置き換える（ステップＳ１１）。ランサムウェア１１１には、鍵５１を用いてファイル５２ｐが暗号化ファイル５２ｃに置き換えられるように見える。しかし、実際には、ファイル５２ｐの暗号化には、鍵５３が用いられる。暗号化は、ＯＳ１２０やＣＰＵ１４１で実行されるため、ランサムウェアは鍵５３が暗号化に用いられたことを認識できない。ランサムウェア１１１は、暗号化された暗号化ファイル５２ｃをＯＳ１２０またはＣＰＵ１４１から入手すると、鍵５１をランサムウェア１１１の公開鍵５４を用いて暗号化し、暗号化された鍵５５を生成して攻撃者１０に送信する。その後、例えば、端末装置１００の管理者がランサムウェア１１１を除去し、鍵５３を用いて暗号化ファイル５２ｃを復号する（ステップＳ１２）。つまり、端末装置１００では、ファイル５２ｐを暗号化されてしまったとしても、既知の鍵５３を用いて復号することができる。
【００３７】
ランサムウェアによる暗号化を妨害する方法としては、許可リストに登録されていないファイル名の実行ファイルからの暗号化命令や暗号化ＡＰＩの呼び出しを却下することが考えられる。しかしながら、ランサムウェアは、低速ではあるが独自に暗号化関数を実装している場合がある。このようなランサムウェアからの暗号化命令や暗号化ＡＰＩの呼び出しを却下すると、ランサムウェアは独自の暗号化関数で暗号化を行うことが考えられる。本実施例は、ランサムウェアからの暗号化命令や暗号化ＡＰＩを受け入れるので、ランサムウェアが実装する暗号化関数が使用されることを回避できる。
【００３８】
次に、実施例１の端末装置１００の動作について説明する。図７は、実施例１の検知処理の一例を示すフローチャートである。
【００３９】
ＶＭＭ１３０の取得部１３２は、ＯＳ１２０上における暗号化命令４０または暗号化ＡＰＩ１２１の呼び出しを監視する（ステップＳ３１）。取得部１３２は、アプリケーション層１１０のアプリケーション、または、ＯＳ１２０から暗号化命令４０または暗号化ＡＰＩ１２１の呼び出しがあった場合に、当該呼び出しをフックする。取得部１３２は、フックした呼び出しの呼び出し元のプロセスに対応する実行ファイルのファイル名を取得する（ステップＳ３２）。取得部１３２は、取得したファイル名と、フックした呼び出しとを判定部１３３に出力する。
【００４０】
判定部１３３は、取得部１３２からファイル名と、フックした呼び出しとが入力されると、許可リスト記憶部１３１を参照し、入力されたファイル名が許可リストにあるか否かを判定する（ステップＳ３３）。判定部１３３は、入力されたファイル名が許可リストにあると判定した場合には（ステップＳ３３：肯定）、フックした呼び出しを呼出部１３４に出力し、ステップＳ３５に進む。
【００４１】
判定部１３３は、入力されたファイル名が許可リストにないと判定した場合には（ステップＳ３３：否定）、暗号鍵を既知の鍵に置き換える旨の置き換え指示とともに、フックした呼び出しを呼出部１３４に出力する。
【００４２】
呼出部１３４は、判定部１３３から置き換え指示と、フックした呼び出しとが入力されると、フックした呼び出しの暗号化命令４０または暗号化ＡＰＩ１２１に対応する暗号鍵を既知の鍵に置き換えて（ステップＳ３４）、ステップＳ３５に進む。
【００４３】
呼出部１３４は、フックした呼び出しに基づいて、暗号化命令４０または暗号化ＡＰＩ１２１を呼び出す（ステップＳ３５）。これにより、端末装置１００は、暗号化命令４０または暗号化ＡＰＩ１２１を呼び出した実行ファイルのファイル名が許可リストにない場合に、暗号鍵を既知の鍵に置き換えるので、マルウェア、つまりランサムウェアに暗号化されたデータを復元できる。すなわち、端末装置１００は、ランサムウェアを無力化できる。
【００４４】
このように、端末装置１００は、暗号化機能の呼び出しを監視し、暗号化機能の呼び出しがあった場合に、呼び出し元のプロセスを取得する。また、端末装置１００は、取得された呼び出し元のプロセスを許可するか否かを判定する。また、端末装置１００は、呼び出し元のプロセスを許可しないと判定した場合に、呼び出し元のプロセスから受け取った暗号化に用いる鍵を別の鍵に置き換えて、暗号化機能を呼び出す。その結果、端末装置１００は、マルウェアに暗号化されたデータを復元できる。
【００４５】
また、端末装置１００では、取得部１３２、判定部１３３および呼出部１３４は、ＯＳ１２０よりも上位の権限を有するハイパーバイザであるＶＭＭ１３０で動作する。その結果、端末装置１００は、ランサムウェア１１１がＣＰＵ１４１の暗号化命令を用いる場合であっても、暗号化されたデータを復元できる。
【００４６】
また、端末装置１００は、暗号化機能の呼び出しがあった場合に、呼び出し元のプロセスに対応する実行ファイルのファイル名を取得する。また、端末装置１００は、取得されたファイル名が、暗号化を許可する実行ファイルのファイル名が格納された許可リストにない場合に、呼び出し元のプロセスを許可しないと判定する。その結果、端末装置１００は、マルウェアに暗号化されたデータを復元できる。
【００４７】
また、端末装置１００では、許可リストは、ハイパーバイザであるＶＭＭ１３０内に記憶される。その結果、端末装置１００は、アプリケーション層１１０およびＯＳ１２０が変更されても、マルウェアに暗号化されたデータを復元できる。
【００４８】
また、端末装置１００では、別の鍵は、既知の暗号化に用いる鍵である。その結果、端末装置１００は、既知の暗号化に用いる鍵で暗号化されたデータを復元できる。
【実施例２】
【００４９】
上記実施例１では、許可リスト記憶部１３１に、許可済み実行ファイル１１２のファイル名を記憶したが、許可済み実行ファイル１１２のハッシュ値を記憶するようにしてもよく、この場合の実施の形態につき、実施例２として説明する。図８は、実施例２の端末装置の階層構造の一例を示すブロック図である。図８に示す端末装置２００は、実施例１の端末装置１００と同様に、アプリケーション層１１０、ＯＳ１２０、ＶＭＭ１３０およびハードウェア１４０といった階層構造を有する。なお、実施例１の端末装置１００と同一の構成には同一符号を付すことで、その重複する構成および動作の説明については省略する。
【００５０】
実施例２の端末装置２００は、実施例１の端末装置１００と比較して、許可リスト記憶部１３１に代えて、アプリケーション層１１０に許可リスト記憶部２３１を有する。また、実施例２の端末装置２００は、実施例１の端末装置１００と比較して、ＶＭＭ１３０内の取得部１３２および判定部１３３に代えて、取得部２３２および判定部２３３を有する。
【００５１】
許可リスト記憶部２３１は、暗号化命令４０または暗号化ＡＰＩ１２１の使用が許可されたソフトウェアの実行ファイルのハッシュ値、つまり許可リストを記憶する。図９は、許可リスト記憶部の他の一例を示す図である。図９に示すように、許可リスト記憶部２３１は、「項番」、「ハッシュ値」といった項目を有する。許可リスト記憶部２３１は、例えば、項番ごとに１レコードとして記憶する。
【００５２】
「項番」は、許可リストに登録されている実行ファイルのハッシュ値を識別する識別子である。「ハッシュ値」は、暗号化命令４０または暗号化ＡＰＩ１２１の使用が許可されたソフトウェアの実行ファイルのハッシュ値を示す情報である。「ハッシュ値」は、例えば、実行ファイルに対してＳＨＡ（Secure  Hash  Algorithm）−２５６を用いてハッシュ値を算出することで求められる。なお、ハッシュ値を算出するアルゴリズムは、他のアルゴリズムであってもよい。また、許可リスト記憶部２３１に記憶される許可リストには、デジタル署名が付され、改竄等があった場合に検出可能としている。
【００５３】
さらに、許可リスト記憶部２３１に記憶される許可リストは、当該許可リストにハッシュ値が格納されている許可済み実行ファイル１１２が更新された際に、更新された許可済み実行ファイル１１２に対応するハッシュ値で更新される。許可リスト記憶部２３１に記憶される許可リストの更新は、例えば、端末装置２００の管理者が、図示しない管理用端末からリモートアクセスすることで更新することができる。すなわち、許可リストは、ＯＳ１２０上でアクセス可能な許可リスト記憶部２３１に署名付きで記憶される。また、許可リストは、許可リストにハッシュ値が格納されている実行ファイルが更新された際に、更新された実行ファイルに対応するハッシュ値が更新される。
【００５４】
図８の説明に戻って、取得部２３２は、ＯＳ１２０上における暗号化命令４０または暗号化ＡＰＩ１２１の呼び出しを監視する。取得部２３２は、アプリケーション層１１０のランサムウェア１１１または許可済み実行ファイル１１２、あるいは、ＯＳ１２０から暗号化命令４０または暗号化ＡＰＩ１２１の呼び出しがあった場合に、当該呼び出しをフックする。取得部２３２は、フックした呼び出しの呼び出し元のプロセスに対応する実行ファイルのハッシュ値を算出して取得する。取得部２３２は、取得したハッシュ値と、フックした呼び出しとを判定部２３３に出力する。
【００５５】
判定部２３３は、取得部２３２からハッシュ値と、フックした呼び出しとが入力されると、許可リスト記憶部２３１を参照し、入力されたハッシュ値が許可リストにあるか否かを判定する。このとき、判定部２３３は、許可リスト記憶部２３１の許可リストの署名が確認できた場合に、入力されたハッシュ値が許可リストにあるか否かを判定する。判定部２３３は、許可リストの署名が確認でき、かつ、入力されたハッシュ値が許可リストにあると判定した場合には、フックした呼び出しを呼出部１３４に出力する。
【００５６】
判定部２３３は、入力されたハッシュ値が許可リストにないと判定した場合、または、許可リストの署名が確認できない場合には、暗号鍵を既知の鍵に置き換える旨の置き換え指示とともに、フックした呼び出しを呼出部１３４に出力する。なお、判定部２３３は、許可リストの署名の確認について、例えば、図示しない認証局に確認を行ってもよいし、ＶＭＭ１３０内に認証情報を格納して確認を行ってもよい。
【００５７】
次に、実施例２の端末装置２００の動作について説明する。図１０は、実施例２の検知処理の一例を示すフローチャートである。以下の説明では、検知処理のステップＳ３１，Ｓ３４，Ｓ３５の処理は、実施例１と同様であるので、その説明を省略する。
【００５８】
取得部２３２は、ステップＳ３１の処理に続いて、次の処理を実行する。取得部２３２は、アプリケーション層１１０のランサムウェア１１１または許可済み実行ファイル１１２、あるいは、ＯＳ１２０から暗号化命令４０または暗号化ＡＰＩ１２１の呼び出しがあった場合に、当該呼び出しをフックする。取得部２３２は、フックした呼び出しの呼び出し元のプロセスに対応する実行ファイルのハッシュ値を取得する（ステップＳ５２）。取得部２３２は、取得したハッシュ値と、フックした呼び出しとを判定部２３３に出力する。
【００５９】
判定部２３３は、取得部２３２からハッシュ値と、フックした呼び出しとが入力されると、許可リスト記憶部２３１を参照し、入力されたハッシュ値が許可リストにあるか否かを判定する（ステップＳ５３）。判定部２３３は、許可リストの署名が確認でき、かつ、入力されたハッシュ値が許可リストにあると判定した場合には（ステップＳ５３：肯定）、フックした呼び出しを呼出部１３４に出力し、ステップＳ３５に進む。
【００６０】
判定部２３３は、入力されたハッシュ値が許可リストにないと判定した場合、または、許可リストの署名が確認できない場合には（ステップＳ５３：否定）、暗号鍵を既知の鍵に置き換える旨の置き換え指示とともに、フックした呼び出しを呼出部１３４に出力する。判定部２３３は、置き換え指示と、フックした呼び出しとを呼出部１３４に出力すると、ステップＳ３４に進む。これにより、端末装置２００は、暗号化命令４０または暗号化ＡＰＩ１２１を呼び出した実行ファイルのハッシュ値が許可リストにない場合に、暗号鍵を既知の鍵に置き換えるので、マルウェア、つまりランサムウェアに暗号化されたデータを復元できる。
【００６１】
このように、端末装置２００は、暗号化機能の呼び出しがあった場合に、呼び出し元のプロセスに対応する実行ファイルのハッシュ値を取得する。また、端末装置２００は、取得したハッシュ値が、暗号化を許可する実行ファイルのハッシュ値が格納された許可リストにない場合に、呼び出し元のプロセスを許可しないと判定する。その結果、端末装置２００は、マルウェアに暗号化されたデータを復元できる。
【００６２】
また、端末装置２００では、許可リストは、ＯＳ１２０上でアクセス可能な許可リスト記憶部２３１に署名付きで記憶される。また、端末装置２００では、許可リストは、許可リストにハッシュ値が格納されている実行ファイルが更新された際に、更新された実行ファイルに対応するハッシュ値が更新される。また、端末装置２００は、許可リストの署名が確認できた場合に、取得されたハッシュ値が、許可リストにあるか否かを判定する。その結果、端末装置２００は、実行ファイルの更新に合わせて更新された許可リストのハッシュ値を用いるので、実行ファイルが頻繁にアップデートされる場合であっても、マルウェアに暗号化されたデータを復元できる。
【００６３】
なお、上記各実施例では、ＶＭＭ１３０上で１つのＯＳ１２０が動作する例を説明したが、これに限定されない。例えば、ＶＭＭ１３０上で複数のＯＳが動作し、それぞれの暗号化命令や暗号化ＡＰＩの呼び出しをＶＭＭ１３０がフックして暗号鍵を置き換えるようにしてもよい。
【００６４】
また、上記各実施例では、ランサムウェア１１１がファイルを暗号化した後に、暗号化出来ているか否かを確認しない場合について説明したが、ランサムウェア１１１が暗号化後のファイルを確認する場合には、復号時にも暗号鍵を置き換えることで対処できる。また、ランサムウェア１１１が複数の鍵で暗号化して結果が異なることを確認する様な場合には、置き換え用の既知の鍵も複数用意することで対処できる。
【００６５】
また、上記実施例２では、暗号化を許可する実行ファイルのハッシュ値を記憶した許可リスト記憶部２３１をアプリケーション層１１０に設けた場合を説明したが、これに限定されない。例えば、実施例１と同様に、ＶＭＭ１３０内に許可リスト記憶部２３１を設けてもよい。この場合、許可リストの更新は、実施例１と同様に、端末装置２００の管理者が、図示しない管理用端末からＶＭＭ１３０にリモートアクセスすることで行うことができる。また、上記各実施例における署名の認証については、ＶＭＭ１３０自体が行うようにしてもよい。
【００６６】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、判定部１３３と呼出部１３４とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものでなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
【００６７】
さらに、各装置で行われる各種処理機能は、ＣＰＵに限られず、ＭＰＵ（Micro  Processing  Unit）、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【００６８】
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の各実施例と同様の機能を有するプログラムを実行するコンピュータのハードウェア構成の一例を説明する。図１１は、マルウェア検知プログラムを実行するコンピュータの一例を示す図である。
【００６９】
図１１に示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、データ入力を受け付ける入力装置３０２と、モニタ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る媒体読取装置３０４と、各種装置と接続するためのインタフェース装置３０５と、他の情報処理装置等と有線または無線により接続するための通信装置３０６とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０７と、ハードディスク装置３０８とを有する。また、各装置３０１〜３０８は、バス３０９に接続される。すなわち、コンピュータ３００は、上記各実施例におけるハードウェア１４０に相当する。
【００７０】
ハードディスク装置３０８には、図１に示した取得部１３２、判定部１３３および呼出部１３４の各処理部と同様の機能を有するマルウェア検知プログラムが記憶される。また、ハードディスク装置３０８には、図８に示した取得部２３２、判定部２３３および呼出部１３４の各処理部と同様の機能を有するマルウェア検知プログラムが記憶されるようにしてもよい。また、ハードディスク装置３０８には、許可リスト記憶部１３１または許可リスト記憶部２３１、および、マルウェア検知プログラムを実現するための各種データが記憶される。入力装置３０２は、例えば、コンピュータ３００のユーザから操作情報等の各種情報の入力を受け付ける。モニタ３０３は、例えば、コンピュータ３００のユーザに対して表示画面等の各種画面を表示する。インタフェース装置３０５は、例えば印刷装置等が接続される。通信装置３０６は、例えば、図１または図８に示した通信部１４２と同様の機能を有し図示しないネットワークと接続され、各種の情報処理装置等と各種情報をやりとりする。
【００７１】
ＣＰＵ３０１は、例えば、図１または図８に示したＣＰＵ１４１と同様の機能を有し、ハードディスク装置３０８に記憶された各プログラムを読み出して、ＲＡＭ３０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ３００を図１に示した取得部１３２、判定部１３３および呼出部１３４として機能させることができる。また、これらのプログラムは、コンピュータ３００を図８に示した取得部２３２、判定部２３３および呼出部１３４として機能させることができるようにしてもよい。すなわち、これらのプログラムは、コンピュータ３００において図１または図８に示したＶＭＭ１３０と同等の機能を提供する。
【００７２】
なお、上記のマルウェア検知プログラムは、必ずしもハードディスク装置３０８に記憶されている必要はない。例えば、コンピュータ３００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ３００が読み出して実行するようにしてもよい。コンピュータ３００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこのマルウェア検知プログラムを記憶させておき、コンピュータ３００がこれらからマルウェア検知プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００７３】
１００，２００  端末装置
１１０  アプリケーション層
１１１  ランサムウェア
１１２  許可済み実行ファイル
１２０  ＯＳ
１２１  暗号化ＡＰＩ
１３０  ＶＭＭ
１３１，２３１  許可リスト記憶部
１３２，２３２  取得部
１３３，２３３  判定部
１３４  呼出部
１４０  ハードウェア
１４１  ＣＰＵ
１４２  通信部
【図１】
2019021131.tif 000003
【図２】
2019021131.tif 000004
【図３】
2019021131.tif 000005
【図４】
2019021131.tif 000006
【図５】
2019021131.tif 000007
【図６】
2019021131.tif 000008
【図７】
2019021131.tif 000009
【図８】
2019021131.tif 000010
【図９】
2019021131.tif 000011
【図１０】
2019021131.tif 000012
【図１１】
2019021131.tif 000013