(57)【要約】      （修正有）【課題】ランサムウェアを確実に検出することが可能なプログラム及び情報処理装置を提供する。【解決手段】ミニフィルターＢは、ユーザー空間において行われる所定の要求に対応したカーネル空間における特定の要求（ＩＲＰ要求）を検出可能な要求検出手段及び前記特定の要求が所定の頻度で検出されたという第１の条件を満たす場合に、コンピュータがランサムウェアに感染したと判断するランサムウェア感染判断手段として機能する。【選択図】図１０
2019095882.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
ユーザー空間において行われる所定の要求に対応したカーネル空間における特定の要求を検出可能な要求検出手段、及び
前記要求検出手段により前記特定の要求が所定の頻度で検出されたという第１の条件を満たす場合に、前記コンピュータがランサムウェアに感染したと判断するランサムウェア感染判断手段、として機能させる
ことを特徴とするプログラム。
【請求項２】
前記特定の要求は、ファイルの読出し、新規作成、書込み、及び削除のうちの少なくともいずれかに関する要求である
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
コンピュータを、
前記ランサムウェア感染判断手段は、
前記第１の条件に加え、前記要求検出手段により、前記特定の要求として、ファイルの読出しと新規作成とが、ともに特定の時間帯において検出されたという第２の条件を満たす場合に、前記コンピュータがランサムウェアに感染したと判断する
ことを特徴とする請求項１又は２に記載のプログラム。
【請求項４】
前記ランサムウェア感染判断手段は、
前記第１の条件及び前記第２の条件に加え、前記要求検出手段により、前記特定の要求として、ファイルの読出しの後に前記ファイルの削除が検出されたという第３の条件を満たす場合に、前記コンピュータがランサムウェアに感染したと判断する
ことを特徴とする請求項３に記載のプログラム。
【請求項５】
前記ランサムウェア感染判断手段は、
前記第１の条件及び前記第２の条件に加え、前記要求検出手段により、前記特定の要求として、ファイルの新規作成の後に前記ファイルの書込みが検出されたという第４の条件を満たす場合に、前記コンピュータがランサムウェアに感染したと判断する
ことを特徴とする請求項３に記載のプログラム。
【請求項６】
コンピュータからなる情報処理装置において、
ユーザー空間において行われる所定の要求に対応したカーネル空間における特定の要求を検出可能な要求検出手段と、
前記特定の要求が所定の頻度で検出されたという条件を満たす場合に、前記コンピュータがランサムウェアに感染したと判断するランサムウェア感染判断手段と、を備えた
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ランサムウェアの検出が可能なプログラム及び情報処理装置に関する。
【背景技術】
【０００２】
近年、ランサムウェアと呼ばれる種類のマルウェアが世界的に流行している。
ランサムウェアは、他の一般的なマルウェアと同じく、インターネットやメール経由でパーソナルコンピュータなどの端末機器に感染する。
端末機器は、ランサムウェアに感染すると以下の振る舞いを行う。
まず、ランサムウェアは、端末機器に保存されているファイルを暗号化（ロック）し、これによりファイルを使用できなくする。
そのうえで、ランサムウェアは、暗号化されたファイルを復元することの見返りに身代金（ランサム，ｒａｎｓｏｍ）を要求する脅迫メッセージを端末機器に表示させる。
この種のランサムウェアは、感染すると直ちにファイルの暗号化を開始するとともに、複数のファイルの暗号化を段階的に行う特徴を有しており、従来の手法では、ランサムウェアによる被害を完全に防ぐことは困難である。
例えば、シグネチャ・マッチングなどの手法では未知のランサムウェアを検出できないため、ランサムウェアの侵入を常に監視するリアルタイム監視であっても侵入を許し感染することがある。
また、ランサムウェアの感染に早期に気付き、直ちに端末機器の電源を切るなどの処置をとったとしても、いくつかのファイルが暗号化されることは免れず、被害を完全に防ぐことは極めて困難である。
また、感染後の事後対策として、ファイルを感染前の状態に復元する方法もあるが、スナップショットや復元ポイントを破壊するランサムウェアに対しては無効である。
このような問題に対し、特許文献１には、ランサムウェアによる攻撃を阻止するためのプログラムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５９９６１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示されているプログラムは、ファイル読出関数などの関数（API：Application  Programming  Interface）の動作（呼出しなど）を、ランサムウェアを検出する際の必須の条件にしているため、例えば、「ファイルの読出し」に対応するAPIとして、想定しているAPIとは別のAPIが用いられた場合にランサムウェアを検出できない問題が生じる。
このように、ランサムウェアによる攻撃を阻止するための従来の手法には、解決すべき課題があった。
【０００５】
本発明は、以上のような事情に鑑みなされたものであり、ランサムウェアを確実に検出することが可能なプログラム及び情報処理装置の提供を目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明のプログラムは、コンピュータを、ユーザー空間において行われる所定の要求に対応したカーネル空間における特定の要求を検出可能な要求検出手段、及び、前記特定の要求が所定の頻度で検出されたという第１の条件を満たす場合に、前記コンピュータがランサムウェアに感染したと判断するランサムウェア感染判断手段、として機能させるようにしてある。
【発明の効果】
【０００７】
本発明によれば、ランサムウェアによる攻撃を効果的に防ぐことができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置の一般的な構成を示すブロック図である。
【図２】ユーザーがコンピュータを操作する際の命令の流れをユーザー空間とカーネル空間とに分けて模式的に示した図である。
【図３】図２において、特にカーネル空間における命令の流れを説明するための図である。
【図４】ランサムウェア「WannaCry」に感染したときの動作を説明するための図である。
【図５】ランサムウェア「WannaCry」の感染したときに呼び出されるAPIを説明するための図である。
【図６】「WannaCry」により暗号化される前のファイルの状態を示す図であり、（ａ）はdesktopのdocsフォルダに５つのファイルが格納されている状態、（ｂ）は、「20150728_hattori.pdf」ファイルのヘッダを示す図である。
【図７】「WannaCry」の動作を説明するための図であり、（ａ）は「FindFirstFileW」を利用してdesktopからファイルを探す動作、（ｂ）は「FindFirstFileW」を利用してdesktopのdocsフォルダからファイルを探す動作、（ｃ）は「CreateFileW」を利用してdocsフォルダの「20150728_hattori.pdf」を開く動作を示す図である。
【図８】「WannaCry」の動作を説明するための図であり、（ａ）は「CreateFileW」を利用してdocsフォルダに空のファイル「20150728_hattori.pdf.WNCRY」を新規作成する動作、（ｂ）は「WriteFile」を利用して新規作成したファイル「20150728_hattori.pdf.WNCRY」を暗号化データを書込む動作、（ｃ）は「WriteFile」を利用して元のファイル「20150728_hattori.pdf」に暗号化データを書込む動作を示す図である。
【図９】「WannaCry」の動作を説明するための図であり、（ａ）は「20150728_hattori.pdf」（暗号化ファイル）のヘッダを示す図であり、（ｂ）は新規作成した「20150728_hattori.pdf.WNCRY」（暗号化ファイル）のヘッダを示す図であり、（ｃ）は「DeleteFileW」を利用して元のファイルが削除され、これにより、新規作成した暗号化ファイルのみが残った状態を示す図である。
【図１０】本発明のプログラムに基づいてコンピュータで行われるカーネルモードでの動作を説明するための図である。
【図１１】本発明のプログラムに基づきコンピュータに行わせる動作であって、ランサムウェア「WannaCry」の感染したときに呼び出されるAPIに対応したＩＲＰ要求をリストアップする動作を説明するための図である。
【図１２】ＩＲＰリストの一例を示す図である。
【図１３】時間情報及びファイルパスと関連付けたＩＲＰ要求からなるＩＲＰリストの一例を示す図である。
【図１４】読出しと新規作成のＩＲＰ要求からなる第１合成ＩＲＰリストを示す図である。
【図１５】読出しと削除のＩＲＰ要求からなる第２合成ＩＲＰリストを示す図である。
【図１６】新規作成と書込みのＩＲＰ要求からなる第３合成ＩＲＰリストを示す図である。
【図１７】ランサムウェアの動作として、「vssadmin.exe Delete Shadows / All / Quiet」が実行された場合に、コンピュータのディスプレイに表示されるダイアログである。
【図１８】既知のファイルのヘッダ及び拡張子を構成に含むシグネチャーテーブルの一例を示す図である。
【図１９】暗号化判定を説明するための図である。
【発明を実施するための形態】
【０００９】
以下、本発明の一実施形態について、図１〜図１９を参照しながら説明する。
【００１０】
まず、本発明のプログラムが動作する情報処理装置２０について説明する。
図１は、情報処理装置２０の一般的な構成を示すブロック図である。
情報処理装置２０は、本発明のコンピュータであり、パーソナルコンピュータ（ＰＣ）やタブレットコンピュータなどを適用することができる。
図１に示すように、情報処理装置２０は、命令を実行するＣＰＵ２１と、ファイル（データ）およびプログラムを格納するハードディスク２２と、データやプログラムをＣＰＵ２１が読み込むためのメモリ２３と、ユーザーの操作を受け付けるマウスやキーボードのような入出力装置２４と、操作内容や処理結果等を表示するディスプレイ２５と、メールやインターネットなどを通して外部との間で情報の送受信を可能とする通信インタフェース２６等から構成されている。
このようなコンピュータには、基本ソフトウェアであるオペレーティングシステム（ＯＳ）がハードディスク２２に格納されており、様々な動作を行うようになっている。
なお、本実施形態の情報処理装置２０はＯＳとしてWindows（登録商標）を備えているものとして説明するが、他のＯＳを備える場合についても本発明を適用することができる。
【００１１】
次に、このようなコンピュータの基本動作であるファイルシステム及びカーネルに関する動作について説明する。
「ファイルシステム」とは、ハードディスクなどのデバイスを操作するためのオペレーティングシステム（以下、ＯＳという）が持つ機能をいい、デバイス内に格納されたデータ（ファイル）の操作・アクセス・検索のために実装されたものである。
図２は、ユーザーがコンピュータを操作する際の命令の流れを示す図である。
図２に示すように、ファイルシステムでは、「ユーザー空間」と「カーネル空間」といった２つの処理空間において各種処理が実行される。
「ユーザー空間」とは、ユーザーに近い処理空間であり、例えば、アプリケーションソフトウェアが稼働する空間のことをいう。
「カーネル空間」とは、カーネルが稼働する空間をいう。「カーネル」とは、ＯＳの基幹部分であり、様々なリソースの管理を行い、抽象化することでハードウェアとソフトウェア間のやり取りを仲介する。
例えば、図２に示すように、ユーザーがコンピュータに対し「所定の操作」を行うと、ユーザー空間（ユーザーモード）では、ユーザーランドが操作に対応したWindows  API関数（以下、APIという）を呼び出し、これをＩ／Ｏ要求（ユーザー空間において行われる所定の要求）としてカーネルに渡す。
カーネルは、カーネルモード（カーネル空間）において動作し、APIに対応した特定の要求（後記「ＩＲＰ要求」：カーネル空間における特定の要求）に基づいてハードディスクなどのデバイスに対して各種処理を行う。
なお、上記「所定の操作」には、ＣＵＩ（Character  User  Interface）やＧＵＩ（Grafical  User  Interface）を介した操作のほか、ライブラリやアプリケーションなどを介して行われる操作が含まれる。
【００１２】
より具体的には、図３に示すように、ユーザーモード（ユーザー空間）では、ファイルの「新規作成」に対応した「CreateFile」、ファイルの「書込み」に対応した「WriteFile」、ファイルの「読出し」に対応した「ReadFile」、ファイルの「削除」に対応した「DeleteFile」などのAPIがＩ／Ｏ要求として呼び出される。
カーネルモード（カーネル空間）では、ユーザー空間におけるＩ／Ｏ要求に対応し、Ｉ／Ｏマネージャーが、「新規作成」、「書込み」、「読出し」、「削除」に対応した特定の要求を行う。
具体的には、Ｉ／Ｏマネージャーにより、Ｉ／Ｏ要求に対応したＩＲＰ要求が発行され、これらがフィルターマネージャーを介してファイルシステムドライバーやストレージドライバースタックに出力され、これにより、最終的にハードディスクにおける各種処理が行われる。
ＩＲＰ要求には、例えば、「新規作成」に対応した「IRP_MJ_CREATE」、「書込み」に対応した「IRP_MJ_WRITE」、「読出し」に対応した「IRP_MJ_READ」、「削除」に対応した「IRP_MJ_CLEANUP」などがある。
このように、コンピュータでは、Ｉ／Ｏ要求としての各種APIがユーザー空間において呼び出され、カーネル空間では、Ｉ／Ｏ要求としてのＩＲＰ要求によってファイルの書込み、新規作成、読出し、削除等が行われる。
なお、フィルターマネージャーには、任意のＩＲＰ要求を登録可能であり、登録ＩＲＰ要求に対する監視などの動作を、ミニフィルター（ミニフィルターＡやＢ）に行わせることができるようになっている。
【００１３】
次に、コンピュータが、ランサムウェアに感染したときの動作について説明する。
以下、ランサムウェアの一種である「WannaCry」に感染したときの動作について説明する。
なお、便宜上、「WannaCry」のことを「ランサムウェア」ともいう。
【００１４】
ランサムウェアは、インターネットやメール経由でコンピュータに侵入すると、ハードディスク等の記憶手段に記憶され、メモリ上に所定のプロセスとして展開されて感染する。
「WannaCry」は、WindowsのＳＭＢサーバにおける脆弱性（MS17-010）を利用したワーム機能を有するマルウェアであり、図４に示すように、リソースセクションにあるEXEファイルを実行することによりコンピュータに感染する（ドロッパー１の動作）。
ドロッパー１の動作に応じ、「tasksche.exe」（ドロッパー２）が自動的に起動される。
ドロッパー２は、脅迫文の画像や多国語により作られた脅迫情報をいわゆる壁紙として表示するとともに、組み込まれているＤＬＬバイナリデータをメモリ内に復号（展開）する動作を行う。
これにより、ローカルフォルダや共有フォルダに保存されているファイルのデータ（以下、「ファイル」には当該ファイルのデータを含む）が暗号化される。
【００１５】
このような「WannaCry」による暗号化は、コンピュータのファイルシステム、より具体的には、ユーザー空間における各種APIを利用して、以下のように行われる。
以下、「WannaCry」検体を用いて「Desktop」の「docs」フォルダ内のファイルが暗号化されることを検証した際のコンピュータ画面（図５〜９）を参照しながら説明する。
【００１６】
図５は、「WannaCry」検体を実行することでファイルが暗号化されるまでの流れを示す図である。
図６は、「WannaCry」により暗号化される前のファイルの状態を示す図であり、（ａ）はDesktopのdocsフォルダに５つのファイル（「20150728_hattori.pdf」、「Chrysanthemum.jpg（菊の写真）」、「desert.jpg（砂漠の写真）」、「hydrangeas.jpg（紫陽花の写真）」、「Jellyfish.jpg（クラゲの写真）」）が格納されている状態、（ｂ）は、「20150728_hattori.pdf」ファイルのヘッダを示す図である。
図７〜図９は、「WannaCry」の動作を説明するためのデバッガの画面等である。
なお、各図において、APIの文字列末尾に付与されている"W"は、付与されていないものと同じ意味合いとする。例えば"FindFirstFileW"は"FindFirstFile"と同義である。
【００１７】
図５に示すように、「WannaCry」検体が実行されると、「FindFirstFile」により所定のファイルが検索され（Ｓ１，Ｓ２）、「CreateFile」によりファイルが開かれ（Ｓ３）、「ReadFile」によりファイルデータが読出され（Ｓ４）、暗号化（Ｓ５）が行われる。
また、Ｓ１〜Ｓ５の動作に並行してファイルの新規作成（Ｓ６）が行われる。
Ｓ５において暗号化されたファイルは、新規作成されたファイルに書き込まれるとともに、元のファイルにも書き込まれて上書きされる（Ｓ８）。
これにより、新規作成された暗号化ファイルと元のファイルデータを暗号化した暗号化ファイルの２つのファイルが生成される。
ただし、このうち、元のファイルデータの暗号化ファイルは削除される（Ｓ９）。
Ｓ１〜Ｓ９の各動作についてデバッガの画面等を参照しながら説明する。
【００１８】
「WannaCry」検体が実行されると、「FindFirstFile」が呼び出され、当該APIによって階層ごとに対象のファイルが検索される。
本実施例では、まず、図７（ａ）に示すように、「FindFirstFile」を利用することで「Desktop」を対象に検索が行われ（図５のＳ１）、次いで、図７（ｂ）に示すように、「FindFirstFile」を利用することで「Desktop」配下の「docs」フォルダを対象に検索が行われる（図５のＳ２）。
次に、図７（ｃ）に示すように、「CreateFile」により「docs」フォルダ配下の先頭に配置されている「20150728_hattori/pdf」ファイルが開かれる（図５のＳ３）。
【００１９】
続いて、「ReadFile」により「20150728_hattori/pdf」ファイルのデータが読出される（図５のＳ４）。
次に、「20150728_hattori/pdf」ファイルのデータが暗号化され、メモリに展開される（図５のＳ５）。この暗号化により、ファイルデータがランダム化され、ランサムウェアの作成者のみが知っている復号キーでしか復号できない状態になる。
続いて、図８（ａ）に示すように、図５のＳ１〜Ｓ５（特にＳ４）と並行して「CreateFile」が呼び出され、当該APIによって「Desktop」の「docs」フォルダに「20150728_hattori/pdf.WNCRY」というファイル名のファイル（空のファイル）が新規作成される（図５のＳ６）。
これにより、元のファイルに拡張子「.WNCRY」が付された空のファイルが新規に作成される。
【００２０】
次に、図８（ｂ）に示すように、「WriteFile」により「20150728_hattori/pdf」の暗号化データが、新規作成された空の「20150728_hattori/pdf.WNCRY」ファイルに書き込まれる（図５のＳ７）。なお、ファイルのヘッダは、「WANACRY！」とされる。
また、この動作と並行して、図８（ｃ）に示すように、「WriteFile」により「20150728_hattori/pdf」の暗号化データが、元のファイル「20150728_hattori/pdf.」に書き込まれる（上書きされる）（図５のＳ８）。
これにより、図９（ａ），（ｂ）に示すように、「docs」フォルダ内には、２つの暗号化ファイルが作成される。
なお、図９（ａ）は、「20150728_hattori/pdf」ファイル（暗号化ファイル）のヘッダを示す情報、矢印は、エディター（MadEdit）の表示画面であり、図９（ｂ）は、「20150728_hattori/pdf.WNCRY」のヘッダを示す、エディターの表示画面である。
そして、「DeleteFile」が呼び出され、当該APIによって、「20150728_hattori/pdf」ファイル（図５のＳ８において暗号化データが上書きされたファイル）が削除される（図５のＳ９）。
これにより、新規作成した「20150728_hattori/pdf.WNCRY」ファイルのみが「desktop」フォルダ内に残る。
【００２１】
上記Ｓ１〜Ｓ９の動作による暗号化は、「docs」内のすべてのファイルに対し短時間に繰り返して行われる。
この結果、図９（ｃ）に示すように、元のファイルに拡張子「.WNCRY」が付されたファイルであって、データが元のファイルデータから暗号化されたファイルが複数生成される。
本例においては、「20150728_hattori.pdf.WNCRY」、「Chrysanthemum.jpg.WNCRY」、「desert.jpg.WNCRY」、「hydrangeas.jpg.WNCRY」、「Jellyfish.jpg.WNCRY」が「docs」フォルダ内に格納された状態となる。
これにより、ユーザーは、元のファイル（「20150728_hattori.pdf」、「Chrysanthemum.jpg」、「desert.jpg」、「hydrangeas.jpg」、「Jellyfish.jpg」など）を閲覧・編集・印刷等ができない状態になる。
【００２２】
以上の検証結果から、発明者は、ランサムウェアに感染したコンピュータにおいて、以下（１）〜（４）の動作が行われることを突き止めた。
（１）複数のファイルに対する暗号化が短時間に行われること。例えば、６０秒内に３個以上のファイルが暗号化されること。
これにより、「CreateFile」、「ReadFile」、「WriteFile」、「DeleteFile」が一定の頻度（６０秒あたり３回以上）で呼び出されること。
（２）ファイルの「読出し」と「新規作成」が同じ時間帯に行われること。
（３）ファイルの「読出し」の後に、そのファイルの「削除」が行われること。
（４）ファイルの「新規作成」の後に、そのファイルに対し「書込み」が行われること。
【００２３】
このようなランサムウェアの動作に対し、本発明のプログラムは、コンピュータに以下のような動作を行わせるように構成されている。
例えば、ハードディスク２２に格納された本発明のプログラムを、ＣＰＵ２１が読み込むことで当該プログラムがメモリ２３上に展開され、この結果、図１０に示すミニフィルターＢとして機能することで以下の動作を行う。
【００２４】
本発明のプログラムは、コンピュータを、ユーザー空間における所定の要求（Ｉ／Ｏ要求に対応したAPI）に対応したカーネル空間における特定の要求（ＩＲＰ要求）を検出する要求検出手段として機能させる。
具体的には、ミニフィルターとして機能することで、予めフィルターマネージャーに登録した各種ＩＲＰ要求を検出する（図１０参照）。
検出対象のＩＲＰ要求は、「IRP_MJ_CREATE」、「IRP_MJ_WRITE」、「IRP_MJ_CLEANUP」、「IRP_MJ_READ」を例示することができる。
これらのＩＲＰ要求を検出対象としたのは、図１１に示すように、ランサムウェアに感染した場合には、「CreateFile」、「ReadFile」、「WriteFile」、「DeleteFile」といったＩ／Ｏ要求に対応したAPIが呼び出され、カーネル空間では、これらのＩ／Ｏ要求に対応して、「IRP_MJ_CREATE」、「IRP_MJ_WRITE」、「IRP_MJ_CLEANUP」、「IRP_MJ_READ」といったＩＲＰ要求が行われるからである。
これにより、ユーザーモードにおいて、各種APIが呼び出されるたびに、カーネルモードにおいて、各種APIに対応したＩＲＰ要求を検出することができる。
【００２５】
また、本発明のプログラムは、コンピュータを、特定の要求（ＩＲＰ要求）が所定の頻度で検出されたという第１の条件を満たす場合に、前記所定のプロセスをランサムウェアと判断するランサムウェア判断手段、として機能させる。
すなわち、ＩＲＰ要求が一定時間内に所定回数以上行われている場合に、ランサムウェアに感染していると判断する。
これは、上記（１）にあるように、ランサムウェアに感染したときは、各種API（「CreateFile」、「ReadFile」、「WriteFile」、「DeleteFile」）が短期間に数多く呼び出され、これに対応して、ＩＲＰ要求（「IRP_MJ_CREATE」、「IRP_MJ_READ」、「IRP_MJ_WRITE」、「IRP_MJ_CLEANUP」）が同様の頻度で行われるからである。
【００２６】
ＩＲＰ要求の頻度は、具体的には、ＩＲＰ要求が検出されるたびに所定のリスト（以下、ＩＲＰリストという）を作成して算出することができる。
図１２は、ＩＲＰリストの一例を示す図であり、（ａ）は「読出し」のＩＲＰリスト、（ｂ）は「新規作成」のＩＲＰリスト、（ｃ）は「書込み」のＩＲＰリスト、（ｄ）は「削除」のＩＲＰリストである。
このようなＩＲＰリストは、ＩＲＰ要求が行われたことを示す情報を、当該ＩＲＰ要求を検出するたびにメモリ上に種別ごとにリストアップすることで作成することができる。
また、図１２に示すＩＲＰリストは、一定時間ごと（例えば、６０秒間隔）にリストアップした情報をメモリから削除（クリア）するようにする。
このようにすると、一定時間ごとにメモリに記憶されている種別ごとのリスト数を計数することで、各ＩＲＰ要求の単位時間当たりの回数（ＩＲＰ要求の頻度）を算出することができる。
なお、図１１に示すように、ランサムウェアによる「書込み」は、新規作成したファイルに対する書込み（Ｓ７）と、元のファイルに対する書込み（Ｓ８）の２つあるため、「書込み」のＩＲＰ要求の頻度は、他のＩＲＰ要求の頻度に比べ多く設定した条件とすることが好ましい。
【００２７】
また、図１３に示すように、ＩＲＰリストに、ＩＲＰ要求が行われた時間（年月日［yyyy-mm-dd］、時分秒［hh:mm:ss］）を含めて作成することもできる。
このため、例えば、図１３（ａ）に示す「読出し」のＩＲＰリストからは、６０秒間（11:22:00〜11:23:00）に「読出し」のＩＲＰ要求「IRP_MJ_READ」を５回計数することにより、頻度５回／分を算出することができる。
そして、このようにして算出したＩＲＰ要求の頻度が所定の頻度（例えば、頻度３回／分）を超える場合を条件（第１の条件）に、コンピュータがランサムウェアに感染したものと判断することができる。
なお、第１の条件は、４つのＩＲＰ要求のうちの１つを判断対象にしてもよく、２つ、３つ、又は４つのＩＲＰ要求を判断対象にすることもできる。
すなわち、「読出し」や「書込み」のみならず、「新規作成」や「削除」のＩＲＰ要求の頻度に基づいて、ランサムウェアに感染したか否かの判断を行うことができる。
【００２８】
このように、本発明のプログラムは、コンピュータがランサムウェアに感染したか否かをカーネル空間において行われるＩＲＰ要求に基づいて判断するようにしているため、当該判断を精度良く行うことができる。
これは、ＩＲＰ要求が、ユーザーモードにおけるAPIと異なり、Ｉ／Ｏ要求に対し一意に定められているからである。
例えば、「書込み」に対応するAPIとして「WriteFile」や「ZwWriteFile」など複数のAPIが存在するが、同じ「書込み」に対応するＩＲＰ要求は「IRP_MJ_WRITE」のみである。
このため、APIをキーとしてランサムウェアの動作を検出する場合は漏れが生じ易いが、ＩＲＰ要求をキーとすることにより、ランサムウェアの動作を漏れなく検出することができる。
このため、所定のＩＲＰ要求が一定の頻度で検出された場合は、ランサムウェアにより複数のファイルに対し短時間に暗号化を行っているものとして、これを、漏れなく検出することができる。
【００２９】
また、本発明のプログラムは、ランサムウェア感染判断手段として、第１の条件（頻度）に加え、特定の要求（ＩＲＰ要求）として、ファイルの「読出し」と「新規作成」とが、ともに特定の時間帯に検出されたという第２の条件（タイミング）を満たす場合に、コンピュータがランサムウェアに感染したと判断するように機能させることができる。
これは、上記（２）にあるように、コンピュータが、ランサムウェアに感染したときには、ファイルの「読出し」と「新規作成」とが同じ時間帯に行われるからである。
具体的には、ファイルの「読出し」とそのファイルに関する「新規作成」とが、おおよそ３０秒以内に行われる。
このため、第１の条件に加え、同一のファイルに対する「読出し」と「新規作成」とが同じ時間帯内（例えば３０秒以内）に行われる場合は、コンピュータがランサムウェアに感染している可能性がより高まる。
同一のファイルに対する「読出し」と「新規作成」とが同じ時間帯に行われたか否かは、ファイルパスを含むＩＲＰリスト（図１３、１４参照）を用いて行うことができる。
「ファイルパス」は、「ファイル」を保存しているフォルダに辿り着くまでに階層を重ねたフォルダの「経路（path）」を含めた情報である。
例えば、ハードディスクの「Ｃドライブ」配下に階層的に格納された各フォルダ（階層順に「Users」−「rihou」−「Desktop」−「docs」）のうち最下層のフォルダ内にあるファイル「20150728_hattori.pdf」の「ファイルパス」は、次のように示すことができる。
C:\Users\rihou\Desktop\docs\20150728_hattori.pdf
【００３０】
図１４は、図１３（ａ）に示す「読出し」のＩＲＰリストと、図１３（ｂ）に示す「新規作成」のＩＲＰリストを合成したＩＲＰリスト（第１合成ＩＲＰリストという）である。
図１４のＩＲＰリストからは、path：「C:\Users\rihou\Desktop\docs\20150728_hattori.pdf」を含むファイルパスのファイルに対し、「11:22:00」に「読出し」のＩＰＲ要求が行われ、その後「11:22:01」に「新規作成」のＩＲＰ要求が行われており、時差は１秒（３０秒以内）であることから、この場合、第２の条件を満たしていると判定することができる。
このため、第１の条件も満たせば、コンピュータがランサムウェアに感染していることを精度良く判断することができる。
例えば、「読出し」のＩＲＰ要求や「新規作成」のＩＲＰ要求が一定の頻度で行われ、かつ、その「読出し」のＩＲＰ要求と「新規作成」のＩＲＰ要求が同じ時間帯で行われた場合に、ランサムウェアに感染したと判断するようにすることができる。
なお、第２の条件は、第１の条件の判断対象のファイルと同じファイルを判断対象にするが、第１の条件の判断対象のファイルと異なるファイルを判断対象にすることもできる。
また、第２の条件は、「読出し」直前に行われる「開く」と、「新規作成」とを判断対象にすることもできる。
また、第２の条件は、１つのファイルに対する条件を満たす場合に肯定する判定を行ってもよく、複数のファイルに対する条件を満たす場合に肯定する判定を行ってもよい。
例えば、「読出し」のＩＲＰ要求や「新規作成」のＩＲＰ要求が一定の頻度で行われ、かつ、その「読出し」のＩＲＰ要求と「新規作成」のＩＲＰ要求が同じ時間帯で行われた場合で、さらに、それらが複数回または一定の頻度で行われた場合にランサムウェアに感染したと判断するようにすることができる。
【００３１】
また、本発明のプログラムは、ランサムウェア感染判断手段として、第１の条件及び第２の条件に加え、特定の要求として、ファイルの「読出し」の後に前記ファイルの「削除」が検出されたという第３の条件を満たす場合に、コンピュータがランサムウェアに感染したと判断するように機能させることができる。
これは、上記（３）や図５，１１にあるように、コンピュータがランサムウェアに感染したときには、ファイルの「読出し」の後に、そのファイルの「削除」が行われるからである。
このため、第１の条件や第２の条件に加え、ファイルの「読出し」の後にそのファイルの「削除」が行われた場合は、コンピュータがランサムウェアに感染している蓋然性が高いと判断できる。
例えば、図１５は、図１３（ａ）に示す「読出し」のＩＲＰリストと、図１３（ｄ）に示す「削除」のＩＲＰリストを合成したＩＲＰリスト（第２合成ＩＲＰリストという）である。
【００３２】
図１５のＩＲＰリストからは、同一ファイルパス「C:\Users\rihou\Desktop\docs\20150728_hattori.pdf」のファイルに対し、「11:22:00」に「読出し」のＩＰＲ要求が行われ、その後の「11:22:08」に「削除」のＩＲＰ要求が行われていることから、この場合、第３の条件を満たしていると判定することができる。
このため、加えて、第１の条件や第２の条件の一方又は双方をともに満たせば、コンピュータがランサムウェアに感染しているとして、感染を精度良く検出することができる。
例えば、「読出し」や「削除」のＩＲＰ要求が一定の頻度で行われ（第１条件）、かつ、それぞれの「読出し」のＩＲＰ要求の後に「削除」のＩＲＰ要求がある場合に、ランサムウェアに感染したと判断することができる。
また、「読出し」や「削除」のＩＲＰ要求が同じ時間帯で行われ（第２条件）、かつ、それぞれの「読出し」のＩＲＰ要求の後に「削除」のＩＲＰ要求がある場合に、ランサムウェアに感染したと判断することができる。
なお、第３の条件は、第１や第２の条件の判断対象のファイルと同じファイルを判断対象にしてもよく、第１や第２の条件の判断対象のファイルと異なるファイルを判断対象にすることもできる。
また、第３の条件は、「読出し」と「削除」の前後関係以外にも、「検索」→「開く」→「読出し」→「書込み」→「削除」のなかのいずれか２つ以上を組み合わせた前後関係を判断対象にすることもできる。
また、第３の条件は、１つのファイルに対して満たす場合に肯定する判定を行ってもよく、複数のファイルに対して満たす場合に肯定する判定を行ってもよい。
【００３３】
また、本発明のプログラムは、ランサムウェア感染判断手段として、第１の条件及び第２の条件に加え、特定の要求として、ファイルの「新規作成」の後に前記ファイルの「書込み」が検出されたという第４の条件を満たす場合に、コンピュータがランサムウェアに感染したと判断するように機能させることができる。
これは、上記（４）や図５，１１にあるように、コンピュータがランサムウェアに感染したときには、ファイルの「新規作成」の後に、そのファイルに対し「書込み」が行われるからである。
このため、第１の条件や第２の条件に加え、ファイルの「新規作成」の後にそのファイルの「書込み」が行われた場合は、コンピュータがランサムウェアに感染している蓋然性が高いと判断できる。
例えば、図１６は、図１３（ｂ）に示す「新規作成」のＩＲＰリストと、図１３（ｄ）に示す「書込み」のＩＲＰリストを合成したＩＲＰリスト（第２合成ＩＲＰリストという）である。
【００３４】
図１６のＩＲＰリストからは、同一ファイルパス「C:\Users\rihou\Desktop\docs\20150728_hattori.pdf.WNCRY」のファイルに対し、「11:22:01」に「新規作成」のＩＰＲ要求が行われ、その後「11:22:07」に「書込み」のＩＲＰ要求が行われていることから、この場合、第４の条件は満たしていると判定することができる。
このため、加えて、第１の条件及び第２の条件をともに満たせば、コンピュータがランサムウェアに感染しているとして、感染を精度良く検出することができる。
例えば、「新規作成」や「書込み」のＩＲＰ要求が一定の頻度で行われ（第１条件）、かつ、それぞれの「新規作成」のＩＲＰ要求の後に「書込み」のＩＲＰ要求がある場合に、ランサムウェアに感染したと判断することができる。
また、「新規作成」や「書込み」のＩＲＰ要求が同じ時間帯で行われ（第２条件）、かつ、それぞれの「新規作成」のＩＲＰ要求の後に「書込み」のＩＲＰ要求がある場合に、ランサムウェアに感染したと判断することができる。
なお、第４の条件は、第１や第２の条件の判断対象のファイルと同じファイルを判断対象にしてもよく、第１や第２の条件の判断対象のファイルと異なるファイルを判断対象にすることもできる。
また、第４の条件は、「新規作成」と「書込み」の前後関係以外にも、第３の条件と重ならないことを前提に、「検索」→「開く」→「読出し」→「書込み」→「削除」のなかのいずれか２つ以上を組み合わせた前後関係を判断対象にすることもできる。
また、第４の条件は、１つのファイルに対して満たす場合に肯定する判定を行ってもよく、複数のファイルに対して満たす場合に肯定する判定を行ってもよい。
【００３５】
さらに、発明者は、スナップショットや復元ポイントなどの復元関連情報を削除するランサムウェアがあることを突き止めた。
これに対し、本発明のプログラムは、復元情報削除検出手段として、スナップショットや復元ポイントといった過去に保存したファイル等のデータ（復元関連情報という）を削除する要求を検出し、ランサムウェア感染判断手段として、復元情報削除検出手段により復元関連情報を削除する要求が検出された場合は、コンピュータがランサムウェアに感染したと判断できるようにしている。
ここで、ＯＳには、特定の時点（復元ポイント）におけるファイルの複製を自動的に作成し、専用の領域に保管するスナップショットやシャドウコピーと呼ばれる機能（「vssadmin.exeによるプロセス」）があるところ、発明者は、ランサムウェアには、コマンド「vssadmin.exe Delete Shadows / All / Quiet」を実行することによって上記復元関連情報を削除するものがあることを突き止めた。
このため、本発明のプログラムは、ＯＳのユーザーアカウント制御機能を利用し、スナップショットや復元ポイントに対し上記「削除」のコマンドが発行された場合は、これを許可するか否かの確認のためのダイアログを表示させる。
【００３６】
図１７は、ランサムウェアの動作として、「vssadmin.exe Delete Shadows / All / Quiet」が実行された場合に、コンピュータのディスプレイに表示されるダイアログである。
このようにすると、ユーザーは、スナップショットや復元ポイントが削除される場合にはこれを事前に検知するとともに、このダイアログにおいて、「許可」をしないことで、削除されることを防ぐことができる。
すなわち、「vssadmin.exeによるプロセス」の起動を監視しつつ、上記コマンドが検出された場合にはそのプロセスの起動を止めることができるため、復元関連情報が削除される前にこれを検知することができる。
他方、ユーザー自身の操作によってスナップショットや復元ポイントを削除する場合には、上記ダイアログにおいて「許可」することができる。
【００３７】
また、発明者は、ランサムウェアが対象のファイルを暗号化する際に、先に拡張子の変更を行い、その後にヘッダを変更するランサムウェアがあることを突き止めた。
これに対し、本発明のプログラムは、コンピュータを、既知のファイルの拡張子を含むファイル情報（以下、シグネチャーテーブルという）を記憶するファイル情報記憶手段、として機能させ、ランサムウェア判断手段として、ファイルの拡張子が、シグネチャーテーブルに含まれる拡張子と異なる場合にそのファイルを特定し、その後、特定されたファイルのヘッダが変更されたという条件を満たした場合に、コンピュータがランサムウェアに感染したと判断するように機能させることができる。
【００３８】
具体的には、図１８に示すように、既知のファイルのヘッダ及び拡張子を含むシグネチャーテーブルを用いて上記条件を満たすか否かを判断することができる。
例えば、ハードディスク等に記憶されている各ファイルとシグネチャーテーブルとを照合することで各ファイルの拡張子が変更されたか否かを常時監視し、拡張子の変更を検出した場合には、そのファイルを監視対象として特定する。
例えば、図１８に示すシグネチャーテーブルとの照合によって所定のＷＯＲＤファイル（ファイルＡとする）の拡張子が変更されたことを検出した場合は、ファイルＡを監視対象として特定する。
このとき、シグネチャーテーブルを参照することで、ファイルＡのヘッダが、（50  4B  03  04  14  00  06  00）であることを特定することができる。
次いで、ファイルＡのヘッダが変更されていないか否かを常時監視し、ヘッダが変更された場合には、コンピュータがランサムウェアに感染したと判断する。
これにより、対象のファイルを暗号化する際に、先に拡張子の変更を行い、その後にヘッダを変更するタイプのランサムウェアを検出することができる。
【００３９】
また、対象のファイルが暗号化されたことを公知の演算方法等を用いて判定し、その判定結果を用いて、コンピュータがランサムウェアに感染したか否かの判断に役立てることもできる。
具体的には、ランサムウェアによってファイルが暗号化された場合、ファイルデータがランダム化されるため、例えば、カイ二乗分布やモンテカルロ法といった公知のアルゴリズムを利用することで暗号化を検出することができる。
例えば、ファイルサイズが２０４８バイトのファイルの場合、各２０４８個の情報は０〜２５５の情報のいずれかが出現する可能性があるところ、その期待値（理論値）は、２０４８／２５６＝８回となる。
この場合、下記不等式に示すように、左辺により求められるカイ二乗値が３００未満である場合に、発明者は、ファイルが暗号化されている可能性が高いことを突き止めた。
2019095882.tif 000003
このように、カイ二乗分布に関する演算を用いてファイルが暗号化されたか否か、あるいはその可能性を判断することができ、当該判断結果をファイルがランサムウェアに感染したか否かの判断要素に加えることができる。
例えば、上記不等式に基づき、暗号化されたとの判断結果と、上記各条件のいずれかをともに満たした場合に、ランサムウェアに感染したとの判断を行うようにすることができる。
このようにすると、ランサムウェアの検出精度を一層高めることができる。
また、暗号化ファイルが検出された場合には、他のファイル（未暗号化ファイル）をバックアップすることで、被害を最小限に抑えることができる。
また、図１９に示すように、カイ二乗値に応じた暗号化率を算出することで、暗号化率に応じた処理（例えば、ランサムウェアの感染判断、ファイル削除、報知その他のランサムウェア対策等）を行うこともできる。
【００４０】
以上説明したように、本発明の実施形態に係るプログラムによれば、カーネル空間における特定の要求（ＩＲＰ要求）に基づいてランサムウェアに感染したか否かを判断するようにしている。
すなわち、ユーザー空間におけるファイル読出関数などの関数（API）の動作（呼出しなど）を、ランサムウェアを検出する際の必須の条件にしておらず、カーネル空間において検出されるＩＲＰ要求に基づいて上記判断を行うようにしているため、ランサムウェアが、例えば、「ファイルの読出し」を想定しているAPIとは別のAPIを用いて行ったとしても、これを確実に検出することができるため、ランサムウェアに感染したか否かを正確に検出することができる。
また、このように精度良い判断結果に基づいて、感染やその可能性の報知、対処方法などのサポート情報の提示を行うことができるため、信頼度や満足度の高いランサムウェア対策プログラムをユーザーに提供することができる。
【００４１】
以上、本発明の好ましい実施形態について説明したが、本発明は、前述の実施形態に関わらず、様々な実施形態に適用することもできる。
例えば、シグネチャーテーブルを参照してヘッダや拡張子（ファイル名）の変更を監視し、いずれか一方が変更された場合に、ランサムウェアの対象となり得るファイルをバックアップするようにすることもできる。
これにより、ファイルが暗号化又は削除される前にバックアップできるため、ランサムウェアに感染したとしても、元のファイルを確実に復元することができる。
【産業上の利用可能性】
【００４２】
本発明は、マルウェア、特に、ランサムウェアの対策に好適に用いることができる。
【符号の説明】
【００４３】
２０  情報処理装置（コンピュータ）
【図１】
2019095882.tif 000004
【図２】
2019095882.tif 000005
【図３】
2019095882.tif 000006
【図４】
2019095882.tif 000007
【図５】
2019095882.tif 000008
【図６】
2019095882.tif 000009
【図７】
2019095882.tif 000010
【図８】
2019095882.tif 000011
【図９】
2019095882.tif 000012
【図１０】
2019095882.tif 000013
【図１１】
2019095882.tif 000014
【図１２】
2019095882.tif 000015
【図１３】
2019095882.tif 000016
【図１４】
2019095882.tif 000017
【図１５】
2019095882.tif 000018
【図１６】
2019095882.tif 000019
【図１７】
2019095882.tif 000020
【図１８】
2019095882.tif 000021
【図１９】
2019095882.tif 000022