IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社フーバーブレインの特許一覧

<>
  • 特許-プログラム 図1
  • 特許-プログラム 図2
  • 特許-プログラム 図3
  • 特許-プログラム 図4
  • 特許-プログラム 図5
  • 特許-プログラム 図6
  • 特許-プログラム 図7
  • 特許-プログラム 図8
  • 特許-プログラム 図9
  • 特許-プログラム 図10
  • 特許-プログラム 図11
  • 特許-プログラム 図12
  • 特許-プログラム 図13
  • 特許-プログラム 図14
  • 特許-プログラム 図15
  • 特許-プログラム 図16
  • 特許-プログラム 図17
  • 特許-プログラム 図18
  • 特許-プログラム 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-28
(45)【発行日】2023-03-08
(54)【発明の名称】プログラム
(51)【国際特許分類】
   G06F 21/56 20130101AFI20230301BHJP
【FI】
G06F21/56 360
【請求項の数】 2
(21)【出願番号】P 2022021207
(22)【出願日】2022-02-15
(62)【分割の表示】P 2017222518の分割
【原出願日】2017-11-20
(65)【公開番号】P2022058997
(43)【公開日】2022-04-12
【審査請求日】2022-02-16
(73)【特許権者】
【識別番号】301039147
【氏名又は名称】株式会社フーバーブレイン
(74)【代理人】
【識別番号】110002354
【氏名又は名称】弁理士法人平和国際特許事務所
(72)【発明者】
【氏名】李 鵬
【審査官】平井 誠
(56)【参考文献】
【文献】特開2017-204173(JP,A)
【文献】Amin Kharraz et al.,UNVEIL: A Large-Scale, Automated Approach to Detecting Ransomware,25th USENIX Security Symposium,2016年08月10日,pp. 757-772,(https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_kharraz.pdf)
【文献】重田 貴成 TAKANARI SHIGETA,ランサムウェア検知のための特徴解析 Analysis of Ransomware Characteristics for Detection,CSS2017 コンピュータセキュリティシンポジウム2017 論文集 合同開催 マルウェア対策研究人,日本,一般社団法人情報処理学会 コンピュータセキュリティ,2017年10月16日,第2017巻,pp. 616-621
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
コンピュータを、
ユーザー空間において行われる所定の要求に対応したカーネル空間における特定の要求を検出可能な要求検出手段、及び
前記要求検出手段により前記特定の要求が所定の頻度で検出された場合に、前記コンピュータがランサムウェアに感染したと判断するランサムウェア感染判断手段、として機能させ、
前記特定の要求は、ファイルの読出し、新規作成、書込み、及び削除のうちの少なくともいずれかに関する要求であり、
前記ランサムウェア感染判断手段は、
前記ファイルの書込みの要求頻度が、前記ファイルの読出し、前記ファイルの新規作成、又は、前記ファイルの削除の要求頻度より多く検出された場合に前記コンピュータがランサムウェアに感染したと判断する
ことを特徴とするプログラム。
【請求項2】
コンピュータを、
ユーザー空間において行われる所定の要求に対応したカーネル空間における特定の要求を検出可能な要求検出手段、及び
前記要求検出手段により前記特定の要求が所定の頻度で検出された場合で、前記要求検出手段により前記特定の要求としてファイルの読出しと新規作成とがともに特定の時間帯において検出され、前記要求検出手段により前記特定の要求としてファイルの読出しの後に前記ファイルの削除が検出され、かつ、前記要求検出手段により前記特定の要求としてファイルの新規作成の後に前記ファイルの書込みが検出された場合に、前記コンピュータがランサムウェアに感染したと判断するランサムウェア感染判断手段、として機能させ、
前記所定の頻度は、
前記ファイルの書込みの要求頻度が、前記ファイルの読出し、前記ファイルの新規作成、又は、前記ファイルの削除の要求頻度より多い頻度である
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ランサムウェアの検出が可能なプログラムに関する。
【背景技術】
【0002】
近年、ランサムウェアと呼ばれる種類のマルウェアが世界的に流行している。
ランサムウェアは、他の一般的なマルウェアと同じく、インターネットやメール経由でパーソナルコンピュータなどの端末機器に感染する。
端末機器は、ランサムウェアに感染すると以下の振る舞いを行う。
まず、ランサムウェアは、端末機器に保存されているファイルを暗号化(ロック)し、これによりファイルを使用できなくする。
そのうえで、ランサムウェアは、暗号化されたファイルを復元することの見返りに身代金(ランサム,ransom)を要求する脅迫メッセージを端末機器に表示させる。
この種のランサムウェアは、感染すると直ちにファイルの暗号化を開始するとともに、複数のファイルの暗号化を段階的に行う特徴を有しており、従来の手法では、ランサムウェアによる被害を完全に防ぐことは困難である。
例えば、シグネチャ・マッチングなどの手法では未知のランサムウェアを検出できないため、ランサムウェアの侵入を常に監視するリアルタイム監視であっても侵入を許し感染することがある。
また、ランサムウェアの感染に早期に気付き、直ちに端末機器の電源を切るなどの処置をとったとしても、いくつかのファイルが暗号化されることは免れず、被害を完全に防ぐことは極めて困難である。
また、感染後の事後対策として、ファイルを感染前の状態に復元する方法もあるが、スナップショットや復元ポイントを破壊するランサムウェアに対しては無効である。
このような問題に対し、特許文献1には、ランサムウェアによる攻撃を阻止するためのプログラムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第5996145号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に開示されているプログラムは、ファイル読出関数などの関数(API:Application Programming Interface)の動作(呼出しなど)を、ランサムウェアを検出する際の必須の条件にしているため、例えば、「ファイルの読出し」に対応するAPIとして、想定しているAPIとは別のAPIが用いられた場合にランサムウェアを検出できない問題が生じる。
このように、ランサムウェアによる攻撃を阻止するための従来の手法には、解決すべき課題があった。
【0005】
本発明は、以上のような事情に鑑みなされたものであり、ランサムウェアを確実に検出することが可能なプログラム及び情報処理装置の提供を目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明のプログラムは、コンピュータを、ユーザー空間において行われる所定の要求に対応したカーネル空間における特定の要求を検出可能な要求検出手段、及び、前記特定の要求が所定の頻度で検出されたという第1の条件を満たす場合に、前記コンピュータがランサムウェアに感染したと判断するランサムウェア感染判断手段、として機能させるようにしてある。
【発明の効果】
【0007】
本発明によれば、ランサムウェアによる攻撃を効果的に防ぐことができる。
【図面の簡単な説明】
【0008】
図1】情報処理装置の一般的な構成を示すブロック図である。
図2】ユーザーがコンピュータを操作する際の命令の流れをユーザー空間とカーネル空間とに分けて模式的に示した図である。
図3図2において、特にカーネル空間における命令の流れを説明するための図である。
図4】ランサムウェア「WannaCry」に感染したときの動作を説明するための図である。
図5】ランサムウェア「WannaCry」の感染したときに呼び出されるAPIを説明するための図である。
図6】「WannaCry」により暗号化される前のファイルの状態を示す図であり、(a)はdesktopのdocsフォルダに5つのファイルが格納されている状態、(b)は、「20150728_hattori.pdf」ファイルのヘッダを示す図である。
図7】「WannaCry」の動作を説明するための図であり、(a)は「FindFirstFileW」を利用してdesktopからファイルを探す動作、(b)は「FindFirstFileW」を利用してdesktopのdocsフォルダからファイルを探す動作、(c)は「CreateFileW」を利用してdocsフォルダの「20150728_hattori.pdf」を開く動作を示す図である。
図8】「WannaCry」の動作を説明するための図であり、(a)は「CreateFileW」を利用してdocsフォルダに空のファイル「20150728_hattori.pdf.WNCRY」を新規作成する動作、(b)は「WriteFile」を利用して新規作成したファイル「20150728_hattori.pdf.WNCRY」を暗号化データを書込む動作、(c)は「WriteFile」を利用して元のファイル「20150728_hattori.pdf」に暗号化データを書込む動作を示す図である。
図9】「WannaCry」の動作を説明するための図であり、(a)は「20150728_hattori.pdf」(暗号化ファイル)のヘッダを示す図であり、(b)は新規作成した「20150728_hattori.pdf.WNCRY」(暗号化ファイル)のヘッダを示す図であり、(c)は「DeleteFileW」を利用して元のファイルが削除され、これにより、新規作成した暗号化ファイルのみが残った状態を示す図である。
図10】本発明のプログラムに基づいてコンピュータで行われるカーネルモードでの動作を説明するための図である。
図11】本発明のプログラムに基づきコンピュータに行わせる動作であって、ランサムウェア「WannaCry」の感染したときに呼び出されるAPIに対応したIRP要求をリストアップする動作を説明するための図である。
図12】IRPリストの一例を示す図である。
図13】時間情報及びファイルパスと関連付けたIRP要求からなるIRPリストの一例を示す図である。
図14】読出しと新規作成のIRP要求からなる第1合成IRPリストを示す図である。
図15】読出しと削除のIRP要求からなる第2合成IRPリストを示す図である。
図16】新規作成と書込みのIRP要求からなる第3合成IRPリストを示す図である。
図17】ランサムウェアの動作として、「vssadmin.exe Delete Shadows / All / Quiet」が実行された場合に、コンピュータのディスプレイに表示されるダイアログである。
図18】既知のファイルのヘッダ及び拡張子を構成に含むシグネチャーテーブルの一例を示す図である。
図19】暗号化判定を説明するための図である。
【発明を実施するための形態】
【0009】
以下、本発明の一実施形態について、図1図19を参照しながら説明する。
【0010】
まず、本発明のプログラムが動作する情報処理装置20について説明する。
図1は、情報処理装置20の一般的な構成を示すブロック図である。
情報処理装置20は、本発明のコンピュータであり、パーソナルコンピュータ(PC)やタブレットコンピュータなどを適用することができる。
図1に示すように、情報処理装置20は、命令を実行するCPU21と、ファイル(データ)およびプログラムを格納するハードディスク22と、データやプログラムをCPU21が読み込むためのメモリ23と、ユーザーの操作を受け付けるマウスやキーボードのような入出力装置24と、操作内容や処理結果等を表示するディスプレイ25と、メールやインターネットなどを通して外部との間で情報の送受信を可能とする通信インタフェース26等から構成されている。
このようなコンピュータには、基本ソフトウェアであるオペレーティングシステム(OS)がハードディスク22に格納されており、様々な動作を行うようになっている。
なお、本実施形態の情報処理装置20はOSとしてWindows(登録商標)を備えているものとして説明するが、他のOSを備える場合についても本発明を適用することができる。
【0011】
次に、このようなコンピュータの基本動作であるファイルシステム及びカーネルに関する動作について説明する。
「ファイルシステム」とは、ハードディスクなどのデバイスを操作するためのオペレーティングシステム(以下、OSという)が持つ機能をいい、デバイス内に格納されたデータ(ファイル)の操作・アクセス・検索のために実装されたものである。
図2は、ユーザーがコンピュータを操作する際の命令の流れを示す図である。
図2に示すように、ファイルシステムでは、「ユーザー空間」と「カーネル空間」といった2つの処理空間において各種処理が実行される。
「ユーザー空間」とは、ユーザーに近い処理空間であり、例えば、アプリケーションソフトウェアが稼働する空間のことをいう。
「カーネル空間」とは、カーネルが稼働する空間をいう。「カーネル」とは、OSの基幹部分であり、様々なリソースの管理を行い、抽象化することでハードウェアとソフトウェア間のやり取りを仲介する。
例えば、図2に示すように、ユーザーがコンピュータに対し「所定の操作」を行うと、ユーザー空間(ユーザーモード)では、ユーザーランドが操作に対応したWindows API関数(以下、APIという)を呼び出し、これをI/O要求(ユーザー空間において行われる所定の要求)としてカーネルに渡す。
カーネルは、カーネルモード(カーネル空間)において動作し、APIに対応した特定の要求(後記「IRP要求」:カーネル空間における特定の要求)に基づいてハードディスクなどのデバイスに対して各種処理を行う。
なお、上記「所定の操作」には、CUI(Character User Interface)やGUI(Grafical User Interface)を介した操作のほか、ライブラリやアプリケーションなどを介して行われる操作が含まれる。
【0012】
より具体的には、図3に示すように、ユーザーモード(ユーザー空間)では、ファイルの「新規作成」に対応した「CreateFile」、ファイルの「書込み」に対応した「WriteFile」、ファイルの「読出し」に対応した「ReadFile」、ファイルの「削除」に対応した「DeleteFile」などのAPIがI/O要求として呼び出される。
カーネルモード(カーネル空間)では、ユーザー空間におけるI/O要求に対応し、I/Oマネージャーが、「新規作成」、「書込み」、「読出し」、「削除」に対応した特定の要求を行う。
具体的には、I/Oマネージャーにより、I/O要求に対応したIRP要求が発行され、これらがフィルターマネージャーを介してファイルシステムドライバーやストレージドライバースタックに出力され、これにより、最終的にハードディスクにおける各種処理が行われる。
IRP要求には、例えば、「新規作成」に対応した「IRP_MJ_CREATE」、「書込み」に対応した「IRP_MJ_WRITE」、「読出し」に対応した「IRP_MJ_READ」、「削除」に対応した「IRP_MJ_CLEANUP」などがある。
このように、コンピュータでは、I/O要求としての各種APIがユーザー空間において呼び出され、カーネル空間では、I/O要求としてのIRP要求によってファイルの書込み、新規作成、読出し、削除等が行われる。
なお、フィルターマネージャーには、任意のIRP要求を登録可能であり、登録IRP要求に対する監視などの動作を、ミニフィルター(ミニフィルターAやB)に行わせることができるようになっている。
【0013】
次に、コンピュータが、ランサムウェアに感染したときの動作について説明する。
以下、ランサムウェアの一種である「WannaCry」に感染したときの動作について説明する。
なお、便宜上、「WannaCry」のことを「ランサムウェア」ともいう。
【0014】
ランサムウェアは、インターネットやメール経由でコンピュータに侵入すると、ハードディスク等の記憶手段に記憶され、メモリ上に所定のプロセスとして展開されて感染する。
「WannaCry」は、WindowsのSMBサーバにおける脆弱性(MS17-010)を利用したワーム機能を有するマルウェアであり、図4に示すように、リソースセクションにあるEXEファイルを実行することによりコンピュータに感染する(ドロッパー1の動作)。
ドロッパー1の動作に応じ、「tasksche.exe」(ドロッパー2)が自動的に起動される。
ドロッパー2は、脅迫文の画像や多国語により作られた脅迫情報をいわゆる壁紙として表示するとともに、組み込まれているDLLバイナリデータをメモリ内に復号(展開)する動作を行う。
これにより、ローカルフォルダや共有フォルダに保存されているファイルのデータ(以下、「ファイル」には当該ファイルのデータを含む)が暗号化される。
【0015】
このような「WannaCry」による暗号化は、コンピュータのファイルシステム、より具体的には、ユーザー空間における各種APIを利用して、以下のように行われる。
以下、「WannaCry」検体を用いて「Desktop」の「docs」フォルダ内のファイルが暗号化されることを検証した際のコンピュータ画面(図5~9)を参照しながら説明する。
【0016】
図5は、「WannaCry」検体を実行することでファイルが暗号化されるまでの流れを示す図である。
図6は、「WannaCry」により暗号化される前のファイルの状態を示す図であり、(a)はDesktopのdocsフォルダに5つのファイル(「20150728_hattori.pdf」、「Chrysanthemum.jpg(菊の写真)」、「desert.jpg(砂漠の写真)」、「hydrangeas.jpg(紫陽花の写真)」、「Jellyfish.jpg(クラゲの写真)」)が格納されている状態、(b)は、「20150728_hattori.pdf」ファイルのヘッダを示す図である。
図7図9は、「WannaCry」の動作を説明するためのデバッガの画面等である。
なお、各図において、APIの文字列末尾に付与されている"W"は、付与されていないものと同じ意味合いとする。例えば"FindFirstFileW"は"FindFirstFile"と同義である。
【0017】
図5に示すように、「WannaCry」検体が実行されると、「FindFirstFile」により所定のファイルが検索され(S1,S2)、「CreateFile」によりファイルが開かれ(S3)、「ReadFile」によりファイルデータが読出され(S4)、暗号化(S5)が行われる。
また、S1~S5の動作に並行してファイルの新規作成(S6)が行われる。
S5において暗号化されたファイルは、新規作成されたファイルに書き込まれるとともに、元のファイルにも書き込まれて上書きされる(S8)。
これにより、新規作成された暗号化ファイルと元のファイルデータを暗号化した暗号化ファイルの2つのファイルが生成される。
ただし、このうち、元のファイルデータの暗号化ファイルは削除される(S9)。
S1~S9の各動作についてデバッガの画面等を参照しながら説明する。
【0018】
「WannaCry」検体が実行されると、「FindFirstFile」が呼び出され、当該APIによって階層ごとに対象のファイルが検索される。
本実施例では、まず、図7(a)に示すように、「FindFirstFile」を利用することで「Desktop」を対象に検索が行われ(図5のS1)、次いで、図7(b)に示すように、「FindFirstFile」を利用することで「Desktop」配下の「docs」フォルダを対象に検索が行われる(図5のS2)。
次に、図7(c)に示すように、「CreateFile」により「docs」フォルダ配下の先頭に配置されている「20150728_hattori/pdf」ファイルが開かれる(図5のS3)。
【0019】
続いて、「ReadFile」により「20150728_hattori/pdf」ファイルのデータが読出される(図5のS4)。
次に、「20150728_hattori/pdf」ファイルのデータが暗号化され、メモリに展開される(図5のS5)。この暗号化により、ファイルデータがランダム化され、ランサムウェアの作成者のみが知っている復号キーでしか復号できない状態になる。
続いて、図8(a)に示すように、図5のS1~S5(特にS4)と並行して「CreateFile」が呼び出され、当該APIによって「Desktop」の「docs」フォルダに「20150728_hattori/pdf.WNCRY」というファイル名のファイル(空のファイル)が新規作成される(図5のS6)。
これにより、元のファイルに拡張子「.WNCRY」が付された空のファイルが新規に作成される。
【0020】
次に、図8(b)に示すように、「WriteFile」により「20150728_hattori/pdf」の暗号化データが、新規作成された空の「20150728_hattori/pdf.WNCRY」ファイルに書き込まれる(図5のS7)。なお、ファイルのヘッダは、「WANACRY!」とされる。
また、この動作と並行して、図8(c)に示すように、「WriteFile」により「20150728_hattori/pdf」の暗号化データが、元のファイル「20150728_hattori/pdf.」に書き込まれる(上書きされる)(図5のS8)。
これにより、図9(a),(b)に示すように、「docs」フォルダ内には、2つの暗号化ファイルが作成される。
なお、図9(a)は、「20150728_hattori/pdf」ファイル(暗号化ファイル)のヘッダを示す情報、矢印は、エディター(MadEdit)の表示画面であり、図9(b)は、「20150728_hattori/pdf.WNCRY」のヘッダを示す、エディターの表示画面である。
そして、「DeleteFile」が呼び出され、当該APIによって、「20150728_hattori/pdf」ファイル(図5のS8において暗号化データが上書きされたファイル)が削除される(図5のS9)。
これにより、新規作成した「20150728_hattori/pdf.WNCRY」ファイルのみが「desktop」フォルダ内に残る。
【0021】
上記S1~S9の動作による暗号化は、「docs」内のすべてのファイルに対し短時間に繰り返して行われる。
この結果、図9(c)に示すように、元のファイルに拡張子「.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」など)を閲覧・編集・印刷等ができない状態になる。
【0022】
以上の検証結果から、発明者は、ランサムウェアに感染したコンピュータにおいて、以下(1)~(4)の動作が行われることを突き止めた。
(1)複数のファイルに対する暗号化が短時間に行われること。例えば、60秒内に3個以上のファイルが暗号化されること。
これにより、「CreateFile」、「ReadFile」、「WriteFile」、「DeleteFile」が一定の頻度(60秒あたり3回以上)で呼び出されること。
(2)ファイルの「読出し」と「新規作成」が同じ時間帯に行われること。
(3)ファイルの「読出し」の後に、そのファイルの「削除」が行われること。
(4)ファイルの「新規作成」の後に、そのファイルに対し「書込み」が行われること。
【0023】
このようなランサムウェアの動作に対し、本発明のプログラムは、コンピュータに以下のような動作を行わせるように構成されている。
例えば、ハードディスク22に格納された本発明のプログラムを、CPU21が読み込むことで当該プログラムがメモリ23上に展開され、この結果、図10に示すミニフィルターBとして機能することで以下の動作を行う。
【0024】
本発明のプログラムは、コンピュータを、ユーザー空間における所定の要求(I/O要求に対応したAPI)に対応したカーネル空間における特定の要求(IRP要求)を検出する要求検出手段として機能させる。
具体的には、ミニフィルターとして機能することで、予めフィルターマネージャーに登録した各種IRP要求を検出する(図10参照)。
検出対象のIRP要求は、「IRP_MJ_CREATE」、「IRP_MJ_WRITE」、「IRP_MJ_CLEANUP」、「IRP_MJ_READ」を例示することができる。
これらのIRP要求を検出対象としたのは、図11に示すように、ランサムウェアに感染した場合には、「CreateFile」、「ReadFile」、「WriteFile」、「DeleteFile」といったI/O要求に対応したAPIが呼び出され、カーネル空間では、これらのI/O要求に対応して、「IRP_MJ_CREATE」、「IRP_MJ_WRITE」、「IRP_MJ_CLEANUP」、「IRP_MJ_READ」といったIRP要求が行われるからである。
これにより、ユーザーモードにおいて、各種APIが呼び出されるたびに、カーネルモードにおいて、各種APIに対応したIRP要求を検出することができる。
【0025】
また、本発明のプログラムは、コンピュータを、特定の要求(IRP要求)が所定の頻度で検出されたという第1の条件を満たす場合に、前記所定のプロセスをランサムウェアと判断するランサムウェア判断手段、として機能させる。
すなわち、IRP要求が一定時間内に所定回数以上行われている場合に、ランサムウェアに感染していると判断する。
これは、上記(1)にあるように、ランサムウェアに感染したときは、各種API(「CreateFile」、「ReadFile」、「WriteFile」、「DeleteFile」)が短期間に数多く呼び出され、これに対応して、IRP要求(「IRP_MJ_CREATE」、「IRP_MJ_READ」、「IRP_MJ_WRITE」、「IRP_MJ_CLEANUP」)が同様の頻度で行われるからである。
【0026】
IRP要求の頻度は、具体的には、IRP要求が検出されるたびに所定のリスト(以下、IRPリストという)を作成して算出することができる。
図12は、IRPリストの一例を示す図であり、(a)は「読出し」のIRPリスト、(b)は「新規作成」のIRPリスト、(c)は「書込み」のIRPリスト、(d)は「削除」のIRPリストである。
このようなIRPリストは、IRP要求が行われたことを示す情報を、当該IRP要求を検出するたびにメモリ上に種別ごとにリストアップすることで作成することができる。
また、図12に示すIRPリストは、一定時間ごと(例えば、60秒間隔)にリストアップした情報をメモリから削除(クリア)するようにする。
このようにすると、一定時間ごとにメモリに記憶されている種別ごとのリスト数を計数することで、各IRP要求の単位時間当たりの回数(IRP要求の頻度)を算出することができる。
なお、図11に示すように、ランサムウェアによる「書込み」は、新規作成したファイルに対する書込み(S7)と、元のファイルに対する書込み(S8)の2つあるため、「書込み」のIRP要求の頻度は、他のIRP要求の頻度に比べ多く設定した条件とすることが好ましい。
【0027】
また、図13に示すように、IRPリストに、IRP要求が行われた時間(年月日[yyyy-mm-dd]、時分秒[hh:mm:ss])を含めて作成することもできる。
このため、例えば、図13(a)に示す「読出し」のIRPリストからは、60秒間(11:22:00~11:23:00)に「読出し」のIRP要求「IRP_MJ_READ」を5回計数することにより、頻度5回/分を算出することができる。
そして、このようにして算出したIRP要求の頻度が所定の頻度(例えば、頻度3回/分)を超える場合を条件(第1の条件)に、コンピュータがランサムウェアに感染したものと判断することができる。
なお、第1の条件は、4つのIRP要求のうちの1つを判断対象にしてもよく、2つ、3つ、又は4つのIRP要求を判断対象にすることもできる。
すなわち、「読出し」や「書込み」のみならず、「新規作成」や「削除」のIRP要求の頻度に基づいて、ランサムウェアに感染したか否かの判断を行うことができる。
【0028】
このように、本発明のプログラムは、コンピュータがランサムウェアに感染したか否かをカーネル空間において行われるIRP要求に基づいて判断するようにしているため、当該判断を精度良く行うことができる。
これは、IRP要求が、ユーザーモードにおけるAPIと異なり、I/O要求に対し一意に定められているからである。
例えば、「書込み」に対応するAPIとして「WriteFile」や「ZwWriteFile」など複数のAPIが存在するが、同じ「書込み」に対応するIRP要求は「IRP_MJ_WRITE」のみである。
このため、APIをキーとしてランサムウェアの動作を検出する場合は漏れが生じ易いが、IRP要求をキーとすることにより、ランサムウェアの動作を漏れなく検出することができる。
このため、所定のIRP要求が一定の頻度で検出された場合は、ランサムウェアにより複数のファイルに対し短時間に暗号化を行っているものとして、これを、漏れなく検出することができる。
【0029】
また、本発明のプログラムは、ランサムウェア感染判断手段として、第1の条件(頻度)に加え、特定の要求(IRP要求)として、ファイルの「読出し」と「新規作成」とが、ともに特定の時間帯に検出されたという第2の条件(タイミング)を満たす場合に、コンピュータがランサムウェアに感染したと判断するように機能させることができる。
これは、上記(2)にあるように、コンピュータが、ランサムウェアに感染したときには、ファイルの「読出し」と「新規作成」とが同じ時間帯に行われるからである。
具体的には、ファイルの「読出し」とそのファイルに関する「新規作成」とが、おおよそ30秒以内に行われる。
このため、第1の条件に加え、同一のファイルに対する「読出し」と「新規作成」とが同じ時間帯内(例えば30秒以内)に行われる場合は、コンピュータがランサムウェアに感染している可能性がより高まる。
同一のファイルに対する「読出し」と「新規作成」とが同じ時間帯に行われたか否かは、ファイルパスを含むIRPリスト(図13、14参照)を用いて行うことができる。
「ファイルパス」は、「ファイル」を保存しているフォルダに辿り着くまでに階層を重ねたフォルダの「経路(path)」を含めた情報である。
例えば、ハードディスクの「Cドライブ」配下に階層的に格納された各フォルダ(階層順に「Users」-「rihou」-「Desktop」-「docs」)のうち最下層のフォルダ内にあるファイル「20150728_hattori.pdf」の「ファイルパス」は、次のように示すことができる。
C:\Users\rihou\Desktop\docs\20150728_hattori.pdf
【0030】
図14は、図13(a)に示す「読出し」のIRPリストと、図13(b)に示す「新規作成」のIRPリストを合成したIRPリスト(第1合成IRPリストという)である。
図14のIRPリストからは、path:「C:\Users\rihou\Desktop\docs\20150728_hattori.pdf」を含むファイルパスのファイルに対し、「11:22:00」に「読出し」のIPR要求が行われ、その後「11:22:01」に「新規作成」のIRP要求が行われており、時差は1秒(30秒以内)であることから、この場合、第2の条件を満たしていると判定することができる。
このため、第1の条件も満たせば、コンピュータがランサムウェアに感染していることを精度良く判断することができる。
例えば、「読出し」のIRP要求や「新規作成」のIRP要求が一定の頻度で行われ、かつ、その「読出し」のIRP要求と「新規作成」のIRP要求が同じ時間帯で行われた場合に、ランサムウェアに感染したと判断するようにすることができる。
なお、第2の条件は、第1の条件の判断対象のファイルと同じファイルを判断対象にするが、第1の条件の判断対象のファイルと異なるファイルを判断対象にすることもできる。
また、第2の条件は、「読出し」直前に行われる「開く」と、「新規作成」とを判断対象にすることもできる。
また、第2の条件は、1つのファイルに対する条件を満たす場合に肯定する判定を行ってもよく、複数のファイルに対する条件を満たす場合に肯定する判定を行ってもよい。
例えば、「読出し」のIRP要求や「新規作成」のIRP要求が一定の頻度で行われ、かつ、その「読出し」のIRP要求と「新規作成」のIRP要求が同じ時間帯で行われた場合で、さらに、それらが複数回または一定の頻度で行われた場合にランサムウェアに感染したと判断するようにすることができる。
【0031】
また、本発明のプログラムは、ランサムウェア感染判断手段として、第1の条件及び第2の条件に加え、特定の要求として、ファイルの「読出し」の後に前記ファイルの「削除」が検出されたという第3の条件を満たす場合に、コンピュータがランサムウェアに感染したと判断するように機能させることができる。
これは、上記(3)や図5,11にあるように、コンピュータがランサムウェアに感染したときには、ファイルの「読出し」の後に、そのファイルの「削除」が行われるからである。
このため、第1の条件や第2の条件に加え、ファイルの「読出し」の後にそのファイルの「削除」が行われた場合は、コンピュータがランサムウェアに感染している蓋然性が高いと判断できる。
例えば、図15は、図13(a)に示す「読出し」のIRPリストと、図13(d)に示す「削除」のIRPリストを合成したIRPリスト(第2合成IRPリストという)である。
【0032】
図15のIRPリストからは、同一ファイルパス「C:\Users\rihou\Desktop\docs\20150728_hattori.pdf」のファイルに対し、「11:22:00」に「読出し」のIPR要求が行われ、その後の「11:22:08」に「削除」のIRP要求が行われていることから、この場合、第3の条件を満たしていると判定することができる。
このため、加えて、第1の条件や第2の条件の一方又は双方をともに満たせば、コンピュータがランサムウェアに感染しているとして、感染を精度良く検出することができる。
例えば、「読出し」や「削除」のIRP要求が一定の頻度で行われ(第1条件)、かつ、それぞれの「読出し」のIRP要求の後に「削除」のIRP要求がある場合に、ランサムウェアに感染したと判断することができる。
また、「読出し」や「削除」のIRP要求が同じ時間帯で行われ(第2条件)、かつ、それぞれの「読出し」のIRP要求の後に「削除」のIRP要求がある場合に、ランサムウェアに感染したと判断することができる。
なお、第3の条件は、第1や第2の条件の判断対象のファイルと同じファイルを判断対象にしてもよく、第1や第2の条件の判断対象のファイルと異なるファイルを判断対象にすることもできる。
また、第3の条件は、「読出し」と「削除」の前後関係以外にも、「検索」→「開く」→「読出し」→「書込み」→「削除」のなかのいずれか2つ以上を組み合わせた前後関係を判断対象にすることもできる。
また、第3の条件は、1つのファイルに対して満たす場合に肯定する判定を行ってもよく、複数のファイルに対して満たす場合に肯定する判定を行ってもよい。
【0033】
また、本発明のプログラムは、ランサムウェア感染判断手段として、第1の条件及び第2の条件に加え、特定の要求として、ファイルの「新規作成」の後に前記ファイルの「書込み」が検出されたという第4の条件を満たす場合に、コンピュータがランサムウェアに感染したと判断するように機能させることができる。
これは、上記(4)や図5,11にあるように、コンピュータがランサムウェアに感染したときには、ファイルの「新規作成」の後に、そのファイルに対し「書込み」が行われるからである。
このため、第1の条件や第2の条件に加え、ファイルの「新規作成」の後にそのファイルの「書込み」が行われた場合は、コンピュータがランサムウェアに感染している蓋然性が高いと判断できる。
例えば、図16は、図13(b)に示す「新規作成」のIRPリストと、図13(d)に示す「書込み」のIRPリストを合成したIRPリスト(第2合成IRPリストという)である。
【0034】
図16のIRPリストからは、同一ファイルパス「C:\Users\rihou\Desktop\docs\20150728_hattori.pdf.WNCRY」のファイルに対し、「11:22:01」に「新規作成」のIPR要求が行われ、その後「11:22:07」に「書込み」のIRP要求が行われていることから、この場合、第4の条件は満たしていると判定することができる。
このため、加えて、第1の条件及び第2の条件をともに満たせば、コンピュータがランサムウェアに感染しているとして、感染を精度良く検出することができる。
例えば、「新規作成」や「書込み」のIRP要求が一定の頻度で行われ(第1条件)、かつ、それぞれの「新規作成」のIRP要求の後に「書込み」のIRP要求がある場合に、ランサムウェアに感染したと判断することができる。
また、「新規作成」や「書込み」のIRP要求が同じ時間帯で行われ(第2条件)、かつ、それぞれの「新規作成」のIRP要求の後に「書込み」のIRP要求がある場合に、ランサムウェアに感染したと判断することができる。
なお、第4の条件は、第1や第2の条件の判断対象のファイルと同じファイルを判断対象にしてもよく、第1や第2の条件の判断対象のファイルと異なるファイルを判断対象にすることもできる。
また、第4の条件は、「新規作成」と「書込み」の前後関係以外にも、第3の条件と重ならないことを前提に、「検索」→「開く」→「読出し」→「書込み」→「削除」のなかのいずれか2つ以上を組み合わせた前後関係を判断対象にすることもできる。
また、第4の条件は、1つのファイルに対して満たす場合に肯定する判定を行ってもよく、複数のファイルに対して満たす場合に肯定する判定を行ってもよい。
【0035】
さらに、発明者は、スナップショットや復元ポイントなどの復元関連情報を削除するランサムウェアがあることを突き止めた。
これに対し、本発明のプログラムは、復元情報削除検出手段として、スナップショットや復元ポイントといった過去に保存したファイル等のデータ(復元関連情報という)を削除する要求を検出し、ランサムウェア感染判断手段として、復元情報削除検出手段により復元関連情報を削除する要求が検出された場合は、コンピュータがランサムウェアに感染したと判断できるようにしている。
ここで、OSには、特定の時点(復元ポイント)におけるファイルの複製を自動的に作成し、専用の領域に保管するスナップショットやシャドウコピーと呼ばれる機能(「vssadmin.exeによるプロセス」)があるところ、発明者は、ランサムウェアには、コマンド「vssadmin.exe Delete Shadows / All / Quiet」を実行することによって上記復元関連情報を削除するものがあることを突き止めた。
このため、本発明のプログラムは、OSのユーザーアカウント制御機能を利用し、スナップショットや復元ポイントに対し上記「削除」のコマンドが発行された場合は、これを許可するか否かの確認のためのダイアログを表示させる。
【0036】
図17は、ランサムウェアの動作として、「vssadmin.exe Delete Shadows / All / Quiet」が実行された場合に、コンピュータのディスプレイに表示されるダイアログである。
このようにすると、ユーザーは、スナップショットや復元ポイントが削除される場合にはこれを事前に検知するとともに、このダイアログにおいて、「許可」をしないことで、削除されることを防ぐことができる。
すなわち、「vssadmin.exeによるプロセス」の起動を監視しつつ、上記コマンドが検出された場合にはそのプロセスの起動を止めることができるため、復元関連情報が削除される前にこれを検知することができる。
他方、ユーザー自身の操作によってスナップショットや復元ポイントを削除する場合には、上記ダイアログにおいて「許可」することができる。
【0037】
また、発明者は、ランサムウェアが対象のファイルを暗号化する際に、先に拡張子の変更を行い、その後にヘッダを変更するランサムウェアがあることを突き止めた。
これに対し、本発明のプログラムは、コンピュータを、既知のファイルの拡張子を含むファイル情報(以下、シグネチャーテーブルという)を記憶するファイル情報記憶手段、として機能させ、ランサムウェア判断手段として、ファイルの拡張子が、シグネチャーテーブルに含まれる拡張子と異なる場合にそのファイルを特定し、その後、特定されたファイルのヘッダが変更されたという条件を満たした場合に、コンピュータがランサムウェアに感染したと判断するように機能させることができる。
【0038】
具体的には、図18に示すように、既知のファイルのヘッダ及び拡張子を含むシグネチャーテーブルを用いて上記条件を満たすか否かを判断することができる。
例えば、ハードディスク等に記憶されている各ファイルとシグネチャーテーブルとを照合することで各ファイルの拡張子が変更されたか否かを常時監視し、拡張子の変更を検出した場合には、そのファイルを監視対象として特定する。
例えば、図18に示すシグネチャーテーブルとの照合によって所定のWORDファイル(ファイルAとする)の拡張子が変更されたことを検出した場合は、ファイルAを監視対象として特定する。
このとき、シグネチャーテーブルを参照することで、ファイルAのヘッダが、(50 4B 03 04 14 00 06 00)であることを特定することができる。
次いで、ファイルAのヘッダが変更されていないか否かを常時監視し、ヘッダが変更された場合には、コンピュータがランサムウェアに感染したと判断する。
これにより、対象のファイルを暗号化する際に、先に拡張子の変更を行い、その後にヘッダを変更するタイプのランサムウェアを検出することができる。
【0039】
また、対象のファイルが暗号化されたことを公知の演算方法等を用いて判定し、その判定結果を用いて、コンピュータがランサムウェアに感染したか否かの判断に役立てることもできる。
具体的には、ランサムウェアによってファイルが暗号化された場合、ファイルデータがランダム化されるため、例えば、カイ二乗分布やモンテカルロ法といった公知のアルゴリズムを利用することで暗号化を検出することができる。
例えば、ファイルサイズが2048バイトのファイルの場合、各2048個の情報は0~255の情報のいずれかが出現する可能性があるところ、その期待値(理論値)は、2048/256=8回となる。
この場合、下記不等式に示すように、左辺により求められるカイ二乗値が300未満である場合に、発明者は、ファイルが暗号化されている可能性が高いことを突き止めた。
このように、カイ二乗分布に関する演算を用いてファイルが暗号化されたか否か、あるいはその可能性を判断することができ、当該判断結果をファイルがランサムウェアに感染したか否かの判断要素に加えることができる。
例えば、上記不等式に基づき、暗号化されたとの判断結果と、上記各条件のいずれかをともに満たした場合に、ランサムウェアに感染したとの判断を行うようにすることができる。
このようにすると、ランサムウェアの検出精度を一層高めることができる。
また、暗号化ファイルが検出された場合には、他のファイル(未暗号化ファイル)をバックアップすることで、被害を最小限に抑えることができる。
また、図19に示すように、カイ二乗値に応じた暗号化率を算出することで、暗号化率に応じた処理(例えば、ランサムウェアの感染判断、ファイル削除、報知その他のランサムウェア対策等)を行うこともできる。
【0040】
以上説明したように、本発明の実施形態に係るプログラムによれば、カーネル空間における特定の要求(IRP要求)に基づいてランサムウェアに感染したか否かを判断するようにしている。
すなわち、ユーザー空間におけるファイル読出関数などの関数(API)の動作(呼出しなど)を、ランサムウェアを検出する際の必須の条件にしておらず、カーネル空間において検出されるIRP要求に基づいて上記判断を行うようにしているため、ランサムウェアが、例えば、「ファイルの読出し」を想定しているAPIとは別のAPIを用いて行ったとしても、これを確実に検出することができるため、ランサムウェアに感染したか否かを正確に検出することができる。
また、このように精度良い判断結果に基づいて、感染やその可能性の報知、対処方法などのサポート情報の提示を行うことができるため、信頼度や満足度の高いランサムウェア対策プログラムをユーザーに提供することができる。
【0041】
以上、本発明の好ましい実施形態について説明したが、本発明は、前述の実施形態に関わらず、様々な実施形態に適用することもできる。
例えば、シグネチャーテーブルを参照してヘッダや拡張子(ファイル名)の変更を監視し、いずれか一方が変更された場合に、ランサムウェアの対象となり得るファイルをバックアップするようにすることもできる。
これにより、ファイルが暗号化又は削除される前にバックアップできるため、ランサムウェアに感染したとしても、元のファイルを確実に復元することができる。
【産業上の利用可能性】
【0042】
本発明は、マルウェア、特に、ランサムウェアの対策に好適に用いることができる。
【符号の説明】
【0043】
20 情報処理装置(コンピュータ)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19