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

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

▶ フォーティネット インクの特許一覧

特許7027425クリプトウェアを検出するためのシステムおよび方法
<>
  • 特許-クリプトウェアを検出するためのシステムおよび方法 図1
  • 特許-クリプトウェアを検出するためのシステムおよび方法 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-18
(45)【発行日】2022-03-01
(54)【発明の名称】クリプトウェアを検出するためのシステムおよび方法
(51)【国際特許分類】
   G06F 21/56 20130101AFI20220221BHJP
   G06F 21/62 20130101ALI20220221BHJP
【FI】
G06F21/56 360
G06F21/62 318
【請求項の数】 28
(21)【出願番号】P 2019529936
(86)(22)【出願日】2017-12-11
(65)【公表番号】
(43)【公表日】2020-01-23
(86)【国際出願番号】 IB2017057785
(87)【国際公開番号】W WO2018104925
(87)【国際公開日】2018-06-14
【審査請求日】2020-10-06
(31)【優先権主張番号】62/432,596
(32)【優先日】2016-12-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520271861
【氏名又は名称】フォーティネット インク
【氏名又は名称原語表記】Fortinet Inc.
【住所又は居所原語表記】899 Kifer Road, Sunnyvale, CA, U.S.A.
(74)【代理人】
【識別番号】110002952
【氏名又は名称】特許業務法人鷲田国際特許事務所
(72)【発明者】
【氏名】ヤーヴォ ウディ
(72)【発明者】
【氏名】ビットン トメール
(72)【発明者】
【氏名】ケルソン イド
(72)【発明者】
【氏名】メッサーマン グレゴリー
【審査官】宮司 卓佳
(56)【参考文献】
【文献】米国特許出願公開第2015/0058987(US,A1)
【文献】特開2011-081652(JP,A)
【文献】特許第5996145(JP,B1)
【文献】米国特許出願公開第2016/0224788(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのコンピュータ実装方法であって、
前記少なくとも1つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも1つのファイルを監視するステップと、
前記上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするステップと、
悪意のあるコードとの関連を識別するために、前記メモリロケーションにおける前記上書き動作を分析するステップと、
前記悪意のあるコードによって前記少なくとも1つのファイルを上書きすることが試行されていることの通知を出力するステップと、
前記メモリロケーションにおいて前記少なくとも1つのファイルのミラーを作成するステップと、
前記上書き動作を前記少なくとも1つのファイルの前記ミラーへリダイレクトするステップと、
を含み、
前記少なくとも1つのファイルの前記ミラーは、少なくとも1つのファイルの、前記上書き動作によって上書きされることになると指定される部分のみを格納し、前記少なくとも1つのファイルの前記ミラーは、前記少なくとも1つのファイルの、前記上書き動作によって影響を受けない部分は含まない、コンピュータ実装方法。
【請求項2】
前記上書き動作を分析するステップは、所定のファイル構造に従って前記少なくとも1つのファイルの前記ミラーの前記ファイル構造を検証するステップを含む、請求項に記載のコンピュータ実装方法。
【請求項3】
前記上書き動作を分析するステップは、少なくとも1つのフィールドを識別するために前記ミラーをパースすることによって前記少なくとも1つのファイルの前記ミラーの暗号化を識別するステップと、前記ミラーの各識別されている少なくとも1つのフィールドの算出されるエントロピーと、前記記憶デバイスロケーションにある前記ファイルの対応する少なくとも1つのフィールドの算出されるエントロピーとの間の差を算出するステップと、前記算出されているエントロピー値の間の許容誤差を表す要件に従って、前記算出されている差を評価するステップと、を含む、請求項に記載のコンピュータ実装方法。
【請求項4】
前記上書き動作を分析するステップは、少なくとも1つのフィールドを識別するために前記ミラーをパースすることによって前記少なくとも1つのファイルの前記ミラーの暗号化を識別するステップと、前記ミラーの各識別されている少なくとも1つのフィールドの少なくとも1つの値を、前記記憶デバイスロケーションにある前記ファイルの少なくとも1つのフィールドの対応する少なくとも1つの値と比較することによって、前記少なくとも1つのフィールド内の少なくとも1つの不正な値を決定するステップと、所定の許容される値を表す要件に従って、前記比較されている差を評価するステップと、を含む、請求項に記載のコンピュータ実装方法。
【請求項5】
前記上書き動作を分析するステップは、前記記憶デバイスロケーションにおける前記少なくとも1つのファイルの対応する少なくとも1つのロケーションにあるテキストデータを含むように指定されている、前記少なくとも1つのファイルの前記ミラーの少なくとも1つのロケーションにある、非テキストデータを識別するステップを含む、請求項に記載のコンピュータ実装方法。
【請求項6】
ラーファイルを作成する前記ステップは、前記少なくとも1つのファイルの連続した部分に対して繰り返し実施され、各連続した部分は、それぞれの部分に対する書き込み動作によってトリガされて、前記ミラーファイルのケーションにコピーされ、前記分析するステップは、各連続した部分について繰り返し実施される、請求項に記載のコンピュータ実装方法。
【請求項7】
各連続した部分は、所定のサイズ閾値になるまで、前記ミラーファイルの前記ロケーションにコピーされる、請求項に記載のコンピュータ実装方法。
【請求項8】
前記上書き動作を分析するステップは、前記少なくとも1つのファイルの前記部分の前記上書き動作を実施することを求める前記要求の前に、前記少なくとも1つのファイルのデータの前記部分が読み出されるかどうかをチェックするステップを含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
悪意のあるコードとの関連性は、前記上書き動作が、少なくとも所定数のファイルを含む複数のファイルに対して実施されるものとして検出される場合に識別される、請求項1に記載のコンピュータ実装方法。
【請求項10】
悪意のあるコードとの関連性は、前記少なくとも1つのファイルの前記部分の前記上書き動作の後に、前記少なくとも1つのファイルの前記部分の削除動作が試行される場合に識別される、請求項1に記載のコンピュータ実装方法。
【請求項11】
前記上書き動作は、前記少なくとも1つのファイルの少なくとも前記部分の暗号化、前記少なくとも1つのファイルのリネーム、前記少なくとも1つのファイルの少なくとも前記部分の内容の無関係な値への変更、および、前記少なくとも1つのファイルの少なくとも前記部分の削除のうちの少なくとも1つを含む、請求項1に記載のコンピュータ実装方法。
【請求項12】
前記少なくとも1つのファイルが保護の対象として指定されているかどうかを決定するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項13】
決定するステップは、保護の対象として指定されている所定のファイルフォーマットに従って、前記少なくとも1つのファイルのフォーマットを分析するステップを含む、請求項12に記載のコンピュータ実装方法。
【請求項14】
前記所定のファイルフォーマットは、ワードプロセッシング文書ファイルフォーマット、スプレッドシートファイルフォーマット、PDFファイルフォーマット、およびプレゼンテーションファイルフォーマットからなるグループから選択されるファイルフォーマットである、請求項13に記載のコンピュータ実装方法。
【請求項15】
前記少なくとも1つのファイルのヘッダに対する上書きを識別するために前記上書き動作を分析するステップと、
前記ヘッダに対する前記上書きが識別された場合に前記上書き動作の前記リダイレクトをトリガするステップと、
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項16】
安全なコードとの関連性を識別するために、前記メモリロケーションにおける前記上書き動作を分析するステップと、
前記記憶デバイスロケーションにある前記少なくとも1つのファイルを、前記メモリロケーションにある前記上書きされたデータで上書きするステップと、
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項17】
前記分析するステップは、前記メモリロケーションにある損傷を受けていないファイルヘッダに基づいて前記安全なコードとの関連性を識別するステップを含む、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記記憶デバイスロケーションにある前記少なくとも1つのファイルは、前記メモリロケーションにおける前記上書き動作の間に損傷を受けていないままである、請求項1に記載のコンピュータ実装方法。
【請求項19】
前記分析が悪意のあるコードと関連付けられる前記上書き動作を識別した場合に、前記メモリロケーションにある前記上書きされたデータを削除するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項20】
前記上書き動作を分析するステップは、前記上書き動作が完了したとき、および、所定のサイズのデータが上書きされたときのうちの少なくとも1つに従って実施される、請求項1に記載のコンピュータ実装方法。
【請求項21】
前記上書き動作を分析するステップは、暗号化データを表すエントロピー要件に従って、前記メモリロケーションにおいて上書きされている前記データのエントロピーを算出することによって、暗号化を検出するステップを含む、請求項1に記載のコンピュータ実装方法。
【請求項22】
前記リダイレクトするステップは、前記上書き動作が、ディスプレイ上に提示されている可視ウィンドウのないアプリケーションと関連付けられる場合に実施される、請求項1に記載のコンピュータ実装方法。
【請求項23】
ユーザが前記上書き動作を安全なコードと関連付けられるものとして確認することを可能にするために、前記上書き動作を検出したことに応答してディスプレイ上にユーザインターフェースを提示するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項24】
前記ユーザが前記上書き動作を安全として確認した場合に、クリプトウェアのような挙動を呈する安全アプリケーションのホワイトリストに、前記上書き動作と関連付けられるアプリケーションを追加するステップをさらに含む、請求項23に記載のコンピュータ実装方法。
【請求項25】
前記上書き動作と関連付けられるアプリケーションが、クリプトウェアのような挙動を呈する安全アプリケーションのホワイトリスト内で識別されない場合に、前記リダイレクトを実施するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項26】
前記コンピュータ実装方法は、書き込み許可で少なくとも1つのファイルが開かれたこと、および/または、ファイル上書きに応答して前記分析を実施するステップをさらに含み、前記開かれた動作/上書き動作の前記分析は、前記少なくとも1つのファイルへのアクセスが許可されるか、または、前記少なくとも1つのファイルへのアクセスが拒絶されるかを決定するために、スタックトレースおよびフローデータのうちの少なくとも一方を分析することによって実施される、請求項1に記載のコンピュータ実装方法。
【請求項27】
少なくとも1つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのシステムであって、
コードを格納するプログラム記憶装置と、
前記格納されたコードを実行するために、前記プログラム記憶装置に結合されたプロセッサと、
を備え、前記コードは、
前記少なくとも1つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも1つのファイルを監視するステップと、前記上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするステップと、悪意のあるコードとの関連性を識別するために、前記メモリロケーションにおける前記上書き動作を分析するステップと、悪意のあるコードによって前記少なくとも1つのファイルを上書きすることが試行されていることの通知を出力するステップと、前記メモリロケーションにおいて前記少なくとも1つのファイルのミラーを作成するステップと、前記上書き動作を前記少なくとも1つのファイルの前記ミラーへリダイレクトするステップと、を行うためのコードを含
前記少なくとも1つのファイルの前記ミラーは、少なくとも1つのファイルの、前記上書き動作によって上書きされることになると指定される部分のみを格納し、前記少なくとも1つのファイルの前記ミラーは、前記少なくとも1つのファイルの、前記上書き動作によって影響を受けない部分は含まない、システム。
【請求項28】
少なくとも1つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのシステムのプロセッサによって実施するためのプログラムコードを含むコンピュータプログラムあって、
前記プログラムコードは、
前記少なくとも1つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも1つのファイルを監視するための命令と、
前記上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするための命令と、
悪意のあるコードとの関連を識別するために、前記メモリロケーションにおける前記上書き動作を分析するための命令と、
前記悪意のあるコードによって前記少なくとも1つのファイルを上書きすることが試行されていることの通知を出力するための命令と、
前記メモリロケーションにおいて前記少なくとも1つのファイルのミラーを作成する命令と、
前記上書き動作を前記少なくとも1つのファイルの前記ミラーへリダイレクトする命令と、
を含み、
前記少なくとも1つのファイルの前記ミラーは、少なくとも1つのファイルの、前記上書き動作によって上書きされることになると指定される部分のみを格納し、前記少なくとも1つのファイルの前記ミラーは、前記少なくとも1つのファイルの、前記上書き動作によって影響を受けない部分は含まない、コンピュータプログラム
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、そのいくつかの実施形態では、悪意のあるコードの検出に関し、より詳細には、しかし排他的ではなく、クリプトウェアを検出および/または防止するためのシステムおよび方法に関する。
【背景技術】
【0002】
例えば、クリプトウェアなどの、いくつかのタイプの悪意のあるコードは、格納されているデータを改変して、このデータをユーザにとってアクセスできないようにする。クリプトウェアマルウェアは、例えば、財務記録のような重要な情報を含む場合があるファイル、および/または、コンピュータの機能を制御するファイルシステムに関係するファイルなどの、格納されているファイルを暗号化する。ファイルを解読することと引き換えに、ユーザからのランサムが要求される。クリプトウェアは、強力な暗号アルゴリズムを用いて、格納されているファイルを暗号化することができ、ユーザが、ランサムを支払って暗号鍵を得ることなくデータを発見することを、実質的に不可能にする。
【0003】
悪意のあるコードの別の例は、格納されているデータを破壊する(すなわち、データを暗号化する代わりに)。例えば、悪意のあるコードは、格納されているファイルの内容にゼロ(0)の値を上書きする。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許出願第14/949,913号明細書
【発明の概要】
【課題を解決するための手段】
【0005】
第1の態様によれば、少なくとも1つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのコンピュータ実装方法は、少なくとも1つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも1つのファイルを監視するステップと、上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするステップと、悪意のあるコードとの関連を識別するために、メモリロケーションにおける上書き動作を分析するステップと、悪意のあるコードによって少なくとも1つのファイルを上書きすることが試行されていることの通知を出力するステップと、を含む。
【0006】
第2の態様によれば、少なくとも1つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのシステムは、コードを格納するプログラム記憶装置と、格納されたコードを実行するために、プログラム記憶装置に結合されたプロセッサと、を備え、コードは、少なくとも1つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも1つのファイルを監視するステップと、上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするステップと、悪意のあるコードとの関連性を識別するために、メモリロケーションにおける上書き動作を分析するステップと、悪意のあるコードによって少なくとも1つのファイルを上書きすることが試行されていることの通知を出力するステップと、を行うためのコードを含む。
【0007】
上書き動作を安全メモリロケーションへリダイレクトすることによって、例えば、ターゲットファイルに対する上書き動作の影響を分析し、上書き動作の影響を回復しまたは無効にするように試行するよりも、ターゲットファイルの完全性が保持される。上書き動作を安全メモリロケーションへリダイレクトすることによって、元のターゲットファイルを損なうことなく、上書き動作の影響を分析するのに安全なロケーションが提供される。例えば停電に起因して検証が行われない場合であっても、ファイルが保持されることに留意されたい。
【0008】
本明細書で説明するシステムおよび/または方法は、記憶デバイス(任意選択で、永続化記憶装置)ロケーション内に格納されているファイルを標的とする上書き動作を、安全であると指定される別のメモリロケーションへリダイレクトすることに関する。システムおよび/または方法は、上書き動作を安全メモリロケーションへリダイレクトすることによって、上書き動作の影響をターゲットファイルから分離する。ターゲットファイルをミラーリングするミラーファイルを、物理的な安全メモリロケーション内に作成することができる。ミラーファイルは、リダイレクトされた上書き動作によって上書きされ得る。上書きされたミラーファイルは、上書き動作が悪意のあるコードと関連付けられるかどうかを決定するために分析される。ターゲットファイルを悪意のあるコードによる上書き動作から保護することによってターゲットファイルの完全性を保持するために使用される新たなデータを、ミラーファイルの形態で作成することができる。
【0009】
本明細書で説明するシステムおよび/または方法は、例えば、重要なデータファイルおよび/またはコンピュータ機能を実施する役割を担うファイル(例えば、カーネルファイル、低レベル機能ドライバ、オペレーティングシステムファイル)などのファイルを、上書きされないように保護することによって、クライアント端末および/またはサーバのようなコンピュータの性能を改善する(例えば、プロセッサおよび/またはメモリ利用の改善)。ファイルを上書きすることによって、例えば、オペレーティングシステムがあるタスクを実施することが妨げられる、コンピュータが使用不可能になる、および/または、上書きされたファイルを復元するのに多大な労力を要するなど、コンピュータが損傷する可能性がある。上書きは、既存の利用可能な処理および/またはメモリリソースを利用し得る。
【0010】
第1の態様または第2の態様による方法またはシステムの第1の可能な実装形態において、方法は、メモリロケーションにおいて少なくとも1つのファイルのミラーを作成するステップと、上書き動作を少なくとも1つのファイルのミラーへリダイレクトするステップと、をさらに含み、かつ/または、システムは、上記ステップを行うためのコードをさらに含む。
【0011】
第1の態様または第2の態様の第1の実装形態による方法またはシステムの第2の可能な実装形態において、上書き動作を分析するステップは、所定のファイル構造に従って少なくとも1つのファイルのミラーのファイル構造を検証するステップを含む。
【0012】
第1の態様または第2の態様の第1の実装形態または第2の実装形態による方法またはシステムの第3の可能な実装形態において、上書き動作を分析するステップは、少なくとも1つのフィールドを識別するためにミラーをパースすることによって少なくとも1つのファイルのミラーの暗号化を識別するステップと、ミラーの各識別されている少なくとも1つのフィールドの算出されるエントロピーと、記憶デバイスロケーションにあるファイルの対応する少なくとも1つのフィールドの算出されるエントロピーとの間の差を算出するステップと、算出されているエントロピー値の間の許容誤差を表す要件に従って、算出されている差を評価するステップと、を含む。
【0013】
第1の態様または第2の態様の第1の実装形態、第2の実装形態、または第3の実装形態による方法またはシステムの第4の可能な実装形態において、上書き動作を分析するステップは、少なくとも1つのフィールドを識別するためにミラーをパースすることによって少なくとも1つのファイルのミラーの暗号化を識別するステップと、ミラーの各識別されている少なくとも1つのフィールドの少なくとも1つの値を、記憶デバイスロケーションにあるファイルの少なくとも1つのフィールドの対応する少なくとも1つの値と比較することによって、少なくとも1つのフィールド内の少なくとも1つの不正な値を決定するステップと、所定の許容される値を表す要件に従って、比較されている差を評価するステップと、を含む。
【0014】
第1の態様または第2の態様の第1の実装形態、第2の実装形態、第3の実装形態、または第4の実装形態による方法またはシステムの第5の可能な実装形態において、上書き動作を分析するステップは、記憶デバイスロケーションにおける少なくとも1つのファイルの対応する少なくとも1つのロケーションにあるテキストデータを含むように指定されている、少なくとも1つのファイルのミラーの少なくとも1つのロケーションにある、非テキストデータを識別するステップを含む。
【0015】
第1の態様または第2の態様の第1の実装形態、第2の実装形態、第3の実装形態、第4の実装形態、または第5の実装形態による方法またはシステムの第6の可能な実装形態において、少なくとも1つのファイルのミラーは、少なくとも1つのファイルの、上書き動作によって上書きされることになると指定される部分のみを格納し、少なくとも1つのファイルのミラーは、少なくとも1つのファイルの、上書き動作によって影響を受けない部分は含まない。
【0016】
第1の態様または第2の態様の第1の実装形態、第2の実装形態、第3の実装形態、第4の実装形態、第5の実装形態、または第6の実装形態による方法またはシステムの第7の可能な実装形態において、ミラーファイルを作成するステップは、少なくとも1つのファイルの連続した部分に対して繰り返し実施され、各連続した部分は、それぞれの部分に対する書き込み動作によってトリガされて、ミラーファイルのロケーションにコピーされ、分析するステップは、各連続した部分について繰り返し実施される。
【0017】
第1の態様または第2の態様の第7の実装形態による方法またはシステムの第8の可能な実装形態において、各連続した部分は、所定のサイズ閾値になるまで、ミラーファイルのロケーションにコピーされる。
【0018】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第8の実装形態のいずれかによる方法またはシステムの第9の可能な実装形態において、上書き動作を分析するステップは、少なくとも1つのファイルの部分の上書き動作を実施することを求める要求の前に、少なくとも1つのファイルのデータの部分が読み出されるかどうかをチェックするステップを含む。
【0019】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第9の実装形態のいずれかによる方法またはシステムの第10の可能な実装形態において、悪意のあるコードとの関連性は、上書き動作が、少なくとも所定数のファイルを含む複数のファイルに対して実施されるものとして検出される場合に識別される。
【0020】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第10の実装形態のいずれかによる方法またはシステムの第11の可能な実装形態において、悪意のあるコードとの関連性は、少なくとも1つのファイルの部分の上書き動作の後に、少なくとも1つのファイルの部分の削除動作が試行される場合に識別される。
【0021】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第11の実装形態のいずれかによる方法またはシステムの第12の可能な実装形態において、上書き動作は、少なくとも1つのファイルの少なくとも上記部分の暗号化、少なくとも1つのファイルのリネーム、少なくとも1つのファイルの少なくとも上記部分の内容の不正な値への変更、および、少なくとも1つのファイルの少なくとも上記部分の削除のうちの少なくとも1つを含む。
【0022】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第12の実装形態のいずれかによる方法またはシステムの第13の可能な実装形態において、方法および/またはシステムは、少なくとも1つのファイルが保護の対象として指定されているかどうかを決定するステップをさらに含む。
【0023】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第13の実装形態のいずれかによる方法またはシステムの第14の可能な実装形態において、決定するステップは、保護の対象として指定されている所定のファイルフォーマットに従って、少なくとも1つのファイルのフォーマットを分析するステップを含む。
【0024】
第1の態様または第2の態様の第14の実装形態による方法またはシステムの第15の可能な実装形態において、所定のファイルフォーマットは、ワードプロセッシング文書ファイルフォーマット、スプレッドシートファイルフォーマット、PDFファイルフォーマット、およびプレゼンテーションファイルフォーマットからなるグループから選択されるファイルフォーマットである。
【0025】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第15の実装形態のいずれかによる方法またはシステムの第16の可能な実装形態において、方法および/またはシステムは、少なくとも1つのファイルのヘッダに対する上書きを識別するために上書き動作を分析するステップと、ヘッダに対する上書きが識別された場合に上書き動作のリダイレクトをトリガするステップと、をさらに含む。
【0026】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第16の実装形態のいずれかによる方法またはシステムの第17の可能な実装形態において、方法および/またはシステムは、安全なコードとの関連性を識別するために、メモリロケーションにおける上書き動作を分析するステップと、記憶デバイスロケーションにある少なくとも1つのファイルを、メモリロケーションにある上書きされたデータで上書きするステップと、をさらに含む。
【0027】
第1の態様または第2の態様の第17の実装形態による方法またはシステムの第18の可能な実装形態において、分析するステップは、メモリロケーションにある損傷を受けていないファイルヘッダに基づいて安全なコードとの関連性を識別するステップを含む。
【0028】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第18の実装形態のいずれかによる方法またはシステムの第19の可能な実装形態において、記憶デバイスロケーションにある少なくとも1つのファイルは、メモリロケーションにおける上書き動作の間に損傷を受けていないままである。
【0029】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第19の実装形態のいずれかによる方法またはシステムの第20の可能な実装形態において、方法および/またはシステムは、分析が悪意のあるコードと関連付けられる上書き動作を識別した場合に、メモリロケーションにある上書きされたデータを削除するステップをさらに含む。
【0030】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第20の実装形態のいずれかによる方法またはシステムの第21の可能な実装形態において、上書き動作を分析するステップは、上書き動作が完了したとき、および、所定のサイズのデータが上書きされたときのうちの少なくとも1つに従って実施される。
【0031】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第21の実装形態のいずれかによる方法またはシステムの第22の可能な実装形態において、上書き動作を分析するステップは、暗号化データを表すエントロピー要件に従って、メモリロケーションにおいて上書きされているデータのエントロピーを算出することによって、暗号化を検出するステップを含む。
【0032】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第22の実装形態のいずれかによる方法またはシステムの第22の可能な実装形態において、リダイレクトするステップは、上書き動作が、ディスプレイ上に提示されている可視ウィンドウのないアプリケーションと関連付けられる場合に実施される。
【0033】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第22の実装形態のいずれかによる方法またはシステムの第23の可能な実装形態において、方法および/またはシステムは、ユーザが上書き動作を安全なコードと関連付けられるものとして確認することを可能にするために、上書き動作を検出したことに応答してディスプレイ上にユーザインターフェースを提示するステップをさらに含む。
【0034】
第1の態様または第2の態様の第23の実装形態による方法またはシステムの第24の可能な実装形態において、ユーザが上書き動作を安全として確認した場合に、クリプトウェアのような挙動を呈する安全アプリケーションのホワイトリストに、上書き動作と関連付けられるアプリケーションを追加するステップをさらに含む。
【0035】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第24の実装形態のいずれかによる方法またはシステムの第25の可能な実装形態において、方法および/またはシステムは、上書き動作と関連付けられるアプリケーションが、クリプトウェアのような挙動を呈する安全アプリケーションのホワイトリスト内で識別されない場合に、リダイレクトを実施するステップをさらに含む。
【0036】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第25の実装形態のいずれかによる方法またはシステムの第26の可能な実装形態において、方法および/またはシステムは、書き込み許可で少なくとも1つのファイルが開かれたこと、および/または、ファイル上書きに応答して分析を実施するステップをさらに含み、開かれた動作/上書き動作の分析は、少なくとも1つのファイルへのアクセスが許可されるか、または、少なくとも1つのファイルへのアクセスが拒絶されるかを決定するために、スタックトレースおよびフローデータのうちの少なくとも一方を分析することによって実施される。
【0037】
第1の態様または第2の態様そのものによる、または、第1の態様または第2の態様の第1の実装形態から第26の実装形態のいずれかによる方法またはシステムの第27の可能な実装形態において、コンピュータ可読媒体上に格納されているコンピュータプログラムが、1つまたは複数のコンピュータの1つまたは複数のプロセッサによって実行されるときに、上記方法を作動させる。
【0038】
特に定義しない限り、本明細書で使用する全ての技術および/または科学用語は、本発明が属する技術分野の当業者により通常理解されるものと同じ意味を有する。本明細書に記載のものと同様のまたは等価な方法および材料を、本発明の実施形態の実践または試験に使用することができるが、例示的な方法および/または材料を下記に記載する。矛盾する場合、定義を含む特許明細書が優先する。加えて、材料、方法、および実施例は単なる例示であり、必ずしも限定を意図するものではない。
【0039】
本発明のいくつかの実施形態について、その例示のみを目的として添付の図面を参照して本明細書に記載する。以下、特に図面を詳細に参照して示す細部は、例示を目的とし、また本発明の実施形態の詳細な説明を目的とすることを強調する。同様に、図面と共に説明を見ることで、本発明の実施形態をどのように実践し得るかが当業者には明らかとなる。
【図面の簡単な説明】
【0040】
図1】本発明のいくつかの実施形態による、記憶デバイス内に格納されているファイルを、悪意のあるコードによって上書きされないように保護するための方法のフローチャートである。
図2】本発明のいくつかの実施形態による、コンピューティングユニットの記憶デバイス内に格納されているファイルを、悪意のあるコードによって上書きされないように保護するシステムのブロック図である。
【発明を実施するための形態】
【0041】
本発明は、そのいくつかの実施形態では、悪意のあるコードの検出に関し、より詳細には、しかし排他的ではなく、クリプトウェアを検出および/または防止するためのシステムおよび方法に関する。
【0042】
本発明のいくつかの実施形態の一態様は、上書き動作をターゲットファイルから、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトすることによって、記憶デバイス(任意選択で、例えば、ハードドライブなどの永続化記憶装置)上に格納されている1つまたは複数のファイル(またはその部分)が、悪意のあるコードによって上書きされる(例えば、暗号化および/または削除、および/または、元のデータを回復するのに使用することができない無関係なデータによって上書きされる)ことを防止するシステムおよび/または方法(例えば、プロセッサによって実行されるコード命令)に関する。本明細書で使用する上書き動作が向けられる上書きされるのが安全であると指定されるメモリロケーションにあるデータは、本明細書ではミラーファイルとして参照される。上書き動作をミラーファイルへリダイレクトすることによって、上書き動作が認可された動作であり、かつ/または、悪意のあるコードと関連付けられていないことが確認される前に、永続化記憶装置によって格納されているファイルに変更が加えられることが防止(または低減)される。ミラーファイルは、上書き動作が実行されるときのファイルの実際の状態を表す。安全メモリロケーションにある上書きされたデータは、上書きされたデータが悪意のあるコードと関連付けられるかどうかを決定するために分析される。上書き動作を安全メモリロケーションへリダイレクトすることによって、例えば、ターゲットファイルに対する上書き動作の影響を分析し、上書き動作の影響を回復しまたは無効にするように試行するよりも、ターゲットファイルの完全性が保持される。上書き動作を安全メモリロケーションへリダイレクトすることによって、元のターゲットファイルを損なうことなく、上書き動作の影響を分析するのに安全なロケーションが提供される。例えば停電に起因して検証が行われない場合であっても、ファイルが保持されることに留意されたい。
【0043】
任意選択で、ターゲットファイルのミラーが、安全メモリロケーション内に作成される。上書き動作は、ターゲットファイルの代わりに、安全メモリロケーションにあるミラーターゲットファイルへリダイレクトされる。ミラーファイルに対する上書き動作の影響は、ターゲットファイルのデータを保持しながら、安全に分析することができる。上書き動作が悪意のあるコードまたは安全なコードと関連付けられるかを決定するために、ミラーファイルに基づいて、ファイル構造、ファイル(またはその部分)の暗号化、および/または、ファイルのテキストデータに対する上書き動作の影響を分析することができる。
【0044】
任意選択で、安全メモリにおける上書きの分析に基づいて、安全なコードが上書き動作と関連付けられるものとして識別される場合、安全メモリロケーションにある上書きされたデータ(任意選択で、上書きされたミラーファイル)が、元の記憶デバイスロケーションにあるターゲットファイルに書き込まれる。代替的に、安全メモリロケーションにおける上書き動作の分析に基づいて、悪意のあるコードが上書き動作と関連付けられるものとして識別される場合、安全なロケーションにある上書きされたデータを削除する(任意選択で、永続的に削除する)ことができ、かつ/または、悪意のあるコードとの関連性の通知(indication)を作成することができる(例えば、ポップアップメッセージが、クライアント端末のディスプレイ上に提示される)。代替または追加として、上書き動作によって作成される改変データが、異なる記憶ロケーション内に(例えば、記憶デバイス内に)格納されてもよい。格納された改変データは、上書き動作を発行するプロセスを分析するために使用することができ、かつ/または、上書き動作が偽陽性として識別される(例えば、上書きコマンドを発行するプロセスが実際は認可されたプロセスであった場合に、悪意のあるコードとして誤って識別される)場合に、改変データに従ってファイルを復元するために使用することができる。
【0045】
本明細書で説明するシステムおよび/または方法は、ファイルの内容を暗号化すること(例えば、クリプトウェア、ランサムウェア)、および/または、(例えば、元のデータを回復するのに使用することができない無関係なデータによってファイルを上書きすることによって)ファイルを削除することによって、コンピュータの記憶デバイス(任意選択で、永続化記憶装置)内に格納されているファイルを上書きする、コンピュータのメモリ上で実行している悪意のあるコードを識別するという技術的課題に対する技術的解決策を提供する。
【0046】
本明細書で説明するシステムおよび/または方法は、記憶デバイス(任意選択で、永続化記憶装置)ロケーション内に格納されているファイルを標的とする上書き動作を、安全であると指定される別のメモリロケーションへリダイレクトすることに関する。システムおよび/または方法は、上書き動作を安全メモリロケーションへリダイレクトすることによって、上書き動作の影響をターゲットファイルから分離する。ターゲットファイルをミラーリングするミラーファイルを、物理的な安全メモリロケーション内に作成することができる。ミラーファイルは、リダイレクトされた上書き動作によって上書きされ得る。上書きされたミラーファイルは、上書き動作が悪意のあるコードと関連付けられるかどうかを決定するために分析される。ターゲットファイルを悪意のあるコードによる上書き動作から保護することによってターゲットファイルの完全性を保持するために使用される新たなデータを、ミラーファイルの形態で作成することができる。
【0047】
本明細書で説明するシステムおよび/または方法は、例えば、重要なデータファイルおよび/またはコンピュータ機能を実施する役割を担うファイル(例えば、カーネルファイル、低レベル機能ドライバ、オペレーティングシステムファイル)などのファイルを、上書きされないように保護することによって、クライアント端末および/またはサーバのようなコンピュータの性能を改善する(例えば、プロセッサおよび/またはメモリ利用の改善)。ファイルを上書きすることによって、例えば、オペレーティングシステムがあるタスクを実施することが妨げられる、コンピュータが使用不可能になる、および/または、上書きされたファイルを復元するのに多大な労力を要するなど、コンピュータが損傷する可能性がある。上書きは、既存の利用可能な処理および/またはメモリリソースを利用し得る。
【0048】
したがって、本明細書で説明するシステムおよび/または方法は、記憶デバイス、任意選択で永続化記憶装置によるファイルの安全な記憶において生じる実際の技術的課題を克服するためのコンピュータ技術に密接に結びついている。
【0049】
本発明の少なくとも1つの実施形態を詳細に説明する前に、本発明は、その適用において、以下の説明に記載され、および/または図面および/または実施例に示される構成要素および/または方法の構築および配列の詳細に必ずしも限定されないことを理解されたい。本発明は、他の実施形態が可能であり、または様々な方法で実践もしくは実行することが可能である。
【0050】
本発明は、システム、方法、および/またはコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する1つのコンピュータ可読記憶媒体(または複数の媒体)を含むことができる。
【0051】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、磁気記憶デバイス、半導体記憶デバイス、または前述のものの任意の好適な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の包括的でないリストは、以下のものを含む:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、および前述のものの任意の好適な組合せ。本明細書で使用するコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波路または他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを通して伝送される電気信号などの一過性な信号自体であると解釈されるべきでない。
【0052】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはワイヤレスネットワークを介して外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むことができる。各コンピューティング/処理デバイスのネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0053】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk、C++などのようなオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、ユーザコンピュータで全面的に、ユーザコンピュータで部分的に、スタンドアロンソフトウェアパッケージとして、ユーザコンピュータで部分的におよびリモートコンピュータで部分的に、またはリモートコンピュータもしくはサーバで全面的に実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークによってユーザコンピュータに接続されてもよく、または外部コンピュータへの接続がなされてもよい(例えばインターネットサービスプロバイダーを使用するインターネットを通して)。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個人専用にすることができる。
【0054】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して本明細書で説明される。フローチャート図および/またはブロック図の各ブロック、およびフローチャート図および/またはブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装できることを理解されよう。
【0055】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されて、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサにより実行される命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに明記される機能/行為を実施するための手段を作成するように、機械を生成してもよい。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブルデータ処理装置、および/または他のデバイスに、特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に格納されてもよく、命令を格納したコンピュータ可読記憶媒体が、フローチャートおよび/またはブロック図の1つもしくは複数のブロックに明記される機能/行為の態様を実装する命令を組み込んだ製品を含むようにする。
【0056】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードされて、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実行させ、コンピュータまたは他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートおよび/またはブロック図の1つもしくは複数のブロックに明記される機能/行為を実施するように、コンピュータ実装プロセスを生成することもできる。
【0057】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがある。例えば、連続して示された2つのブロックは、関係する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および/またはフローチャート図の各ブロック、およびブロック図および/またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行するかまたは専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースシステムによって実装されてもよいことにも留意されたい。
【0058】
本明細書で使用するファイルという用語は、例えば、テキストファイル、データベースプログラムによって使用するためのデータベースファイル、ワードプロセッシング文書によって使用するための文書ファイル、表計算プログラムによって使用するためのスプレッドシートファイル、グラフィックプログラムによって使用するためのグラフィックファイル、コンパイラによって使用するためのライブラリファイル、カスタム設計されたプログラムによって使用するためのカスタマイズされたファイル、ユーザによって使用されるデータセット(すなわち、ユーザ定義のフォーマットに従う)、PDFリーダによって使用するためのポータブルドキュメントフォーマット(PDF)を使用して格納される文書、プレゼンテーションプログラムによって使用するためのプレゼンテーションファイル(例えば、スライドショー)、および、作動しているプログラムによって使用される一時ファイルなどの、あるフォーマットに従って格納することができるデータを意味する。
【0059】
例えば、ファイルの上書きおよび/または暗号化など、本明細書で使用するファイルに対する参照は、例えば、ファイルの1つまたは複数の部分の上書きおよび/または暗号化など、ファイルの部分を参照する場合があり得る。ファイルという用語は、ファイル全体、および/または、ファイルの1つもしくは複数の部分を参照する場合がある。
【0060】
本明細書において使用する(悪意のあるコードによって)上書きされた、という用語は、例えば、暗号化および/または削除など、元のデータを破壊し、かつ/または、元のデータを回復することを不可能もしくは困難にする他のメカニズムとの交換である場合があり得る。
【0061】
ここで、本発明のいくつかの実施形態による、記憶デバイス内に格納されているファイルを、悪意のあるコードによって上書きされないように保護するための方法のフローチャートである、図1を参照する。本方法は、悪意のあるものである可能性のあるコードによって発行される上書き動作を、安全メモリロケーションへリダイレクトする。上書き動作の影響は、上書き動作が悪意のあるコードと関連付けられるかどうかを決定するために分析される。本発明のいくつかの実施形態による、コンピューティングユニット204の記憶デバイス202内に格納されているファイルを、悪意のあるコードによって上書きされないように保護するシステム200のブロック図である、図2も参照する。システム200は、例えば、処理ユニット206がプログラム記憶装置208内に格納されているコード命令を実行することによって、図1を参照して説明する方法の行為を実行することができる。
【0062】
図1を参照して説明するシステム200および/または方法(すなわち、本方法に基づくコード命令が1つまたは複数のプロセッサによって実行される場合)は、ファイルを、例えば、クリプトウェア、ランサムウェア、ウイルス、ワーム、トロイの木馬、スパイウェア、およびアドウェアなどの悪意のあるコードによって破壊されないように保護する。悪意のあるコードは、実行可能コード、スクリプト、アプリケーション、および他のソフトウェアとしてインストールされる場合がある。
【0063】
コンピューティングユニット204は、例えば、クライアント端末、サーバ、移動デバイス、デスクトップコンピュータ、シンクライアント、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、ウェアラブルコンピュータ、メガネコンピュータ、およびウォッチコンピュータとして実装されてもよい。
【0064】
処理ユニット206は、例えば、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、および特定用途向け集積回路(ASIC)として実装されてもよい。処理ユニット206は、クラスタとしておよび/または1つもしくは複数のマルチコア処理ユニットとして、並列処理用に配置されてもよい1つもしくは複数のプロセッサ(ホモジニアスまたはヘテロジニアス)を含むことができる。
【0065】
プログラム記憶装置208は、例えば、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)など、処理ユニット206によって、ならびに/または、例えば、不揮発性メモリ、磁気メディア、半導体メモリデバイス、ハードドライブ、リムーバブルストレージ、および光メディア(例えば、DVD、CD-ROM)など、記憶デバイスなどによって実施可能なコード命令を格納する。
【0066】
コンピューティングユニット204は、例えば、クリプトウェアのような挙動を呈する安全なアプリケーションのホワイトリスト210Bなど、データを格納するためのデータリポジトリ210を含むことができる。データリポジトリ210は、例えば、メモリ、ローカルハードドライブ、リムーバブルストレージユニット、光ディスク、記憶デバイスとして、ならびに/または、リモートサーバおよび/もしくはコンピューティングクラウド(例えば、ネットワーク接続を使用してアクセスされる)として実装されてもよい。
【0067】
記憶デバイス202は、本明細書で説明するように、悪意のあるコードによって上書きされないように保護される1つまたは複数のターゲットファイル202Bを格納する。記憶デバイス202は、任意選択で、例えば、ハードディスク、および/またはフラッシュメモリなど、永続(すなわち、不揮発性)記憶装置として実装される。記憶デバイス202は、例えば、一時記憶装置、永続化記憶装置、高速メモリ、低速メモリ、コンピュータと一体化されたメモリデバイス、外部ストレージユニット(例えば、ケーブルによって、ワイヤレスリンクを介して、および/またはネットワーク接続を介してアクセスされる)、一次記憶装置、メインメモリ、半導体メモリ、ハードドライブ、光学ドライブ、ランダムアクセスメモリ、揮発性メモリ、不揮発性メモリ、中央処理ユニット(CPU)メモリ、キャッシュ、ソリッドステートドライブ、内蔵メモリ、リムーバブルメモリ、および/または他のデータ記憶ハードウェア実施態様として実装することができる。
【0068】
安全メモリロケーション212は、本明細書で説明するように、上書き動作を記憶デバイス202内に格納されているターゲットファイル202Bから安全メモリロケーション212へリダイレクトするために、任意選択でターゲットファイル202Bのミラーファイル212Bを上書きするために、指定される。安全メモリロケーション212は、メインメモリ、指定されたメモリ、指定された記憶デバイス、および/または記憶デバイス202のパーティションで区切られたかつ/または指定された領域であってもよい。
【0069】
任意選択で、記憶デバイス202内に格納されているファイル202Bに対する上書き動作を実施するように試行するコード(例えば、悪意のあるコード)は、安全メモリロケーション212内に格納されているミラーファイル212Bから分離される。分離は、望ましくない悪意のある活動を防止するために、上書き動作を実施するコードの挙動を制限し、安全に制御するように設計される。安全メモリロケーション212は、例えば、サンドボックス、または、悪意のあるプログラムの実行を制御するように設計されている他のアプリケーションを使用して実装することができる。別の実施態様において、安全メモリロケーション212は、カーネル空間内で実行することができ、記憶デバイス202内に格納されているファイル202Bを上書きするように試行するプロセスのコードは、ユーザモードで実行することができる。別の実施態様において、ハイパーバイザ/VMM(仮想マシンモニタ)を使用して、別個の仮想マシン内にミラーファイルを格納して、より大きい分離を達成することができる。
【0070】
コンピューティングユニット204は、例えば、ネットワークインターフェースカード、ワイヤレスネットワークに接続するためのワイヤレスインターフェース、ネットワーク接続のためのケーブルに接続するための物理インターフェース、ソフトウェアにおいて実装される仮想インターフェース、より上位層のネットワーク接続を提供するネットワーク通信ソフトウェア、および/または他の実施態様のうちの1つまたは複数など、ネットワーク216に接続するためのネットワークインターフェース214を含むことができる。コンピューティングユニット204は、例えば、ホワイトリスト210Bに対する更新をダウンロードし、ファイルの上書きを試行した悪意のあるコードを報告および/または識別するために、ネットワーク216を使用して1つまたは複数のリモートサーバ218にアクセスすることができる。
【0071】
記憶デバイス202および/または安全メモリ212は、例えば、プログラム記憶装置208内で、データリポジトリ210内で、外部(例えば、永続またはリムーバブル)記憶ユニット220によって、および/または、リモート記憶デバイス(例えば、ネットワークノードとしてかつ/またはコンピューティングクラウド内に配置される)として機能するサーバ218によって実装することができる。
【0072】
コンピューティングユニット204は、ユーザがデータを入力し、および/または、提示されているデータを閲覧することを可能にするユーザインターフェース222を含むか、または、ユーザインターフェース222と通信する。例示的なユーザインターフェース222は、例えば、タッチスクリーン、ディスプレイ、キーボード、マウス、ならびに、スピーカおよびマイクロフォンを使用する音声起動ソフトウェアのうちの1つまたは複数を含む。
【0073】
図1を参照して説明されている方法の行為のうちの1つまたは複数は、(例えば、プログラム記憶装置208によって)コード命令として記憶することができ、1つまたは複数のプロセッサ(例えば、コンピューティングユニット204の処理ユニット206)によって実行することができる。
【0074】
102において、記憶デバイス202に格納されているファイル202Bが、少なくとも1つのファイルの少なくとも一部分にアクセスすることを求める要求を検出するために監視される。任意選択で、要求は、ファイル202Bの少なくとも上記部分に対する上書き動作を含む。上書き動作は、元のファイル202B内の空でないロケーションに対する上書き動作、および/または、元のファイル202B内の空でないロケーションを変化させる動作に基づいて検出することができる。
【0075】
本明細書で使用するターゲットファイルという用語は、上書き動作を実施することを求める要求の標的であるファイルを意味する。
【0076】
監視は、例えば、オペレーティングシステムのカーネルモードコンポーネントであってもよいファイルシステムドライバ、および/または、上書き動作を実施するためにファイルにアクセスすることを求める、オペレーティングシステム(または他の下位システム)に対する要求を監視するように設計されている他のコード命令によって実施することができる。
【0077】
本明細書で使用する上書きという用語は、ターゲットファイルの内容を破壊することを意味し得る。単純な回復ツールを使用して、上書きされたファイルを復元することはできない。上書きという用語に含まれ得る例示的な動作は、ファイルの少なくとも上記部分を暗号化すること、(例えば、数ゼロなど、ファイルのデータの上に無関係な値を書き込むことによって)ファイルの少なくとも上記部分の内容を変化させること、および、ファイルの上記部分の削除(例えば、回復することが困難または不可能である永続的削除)のうちの1つまたは複数を含む。
【0078】
任意選択で、104において、1つまたは複数のプロセッサによって実行されるコード命令は、ターゲットファイルが保護の対象として指定されているかどうかを決定する。任意選択で、ターゲットファイルに対する上書き動作を実施することを求める要求と関連付けられる各ターゲットファイルを、保護の対象として指定することができる。代替的に、ターゲットファイルが保護の対象として指定されている場合、および、上書き動作が、ファイルを保護することなく進行することを可能にされている場合を決定するために、分析が実施される。分析は、悪意のあるコードによって破壊される危険性が最も高いターゲットファイル、および/または、悪意のあるコードによって破壊された場合に高い損失(例えば、財務上の損失)を引き起こすことになるファイルを保護するために利用可能な計算および/またはメモリリソースを使用することによって、トレードオフに基づいて設計することができる。
【0079】
任意選択で、保護の対象としてファイルを指定することは、例えば、ユーザがファイルを手動で規定することによって、および/または、所定の規則セットに基づいてファイルを自動的に指定するコードによって、ファイルを上書きすることを求める要求が検出される前に、前もって実施することができる。代替または追加として、保護の対象としてファイルを指定することは、ファイルの上書きを求める要求を検出したことに応答して、動的に実施されてもよい。各ターゲットファイルは、上書き動作が進行することを許可されているかどうか、または、ファイルが保護プロセスを受けているかどうかを決定するために、リアルタイムに分析することができる。
【0080】
任意選択で、保護の対象としてファイルを指定することは、例えば、保護すべきファイルを手動で選択(例えば、クリック)するためにユーザインターフェース(例えば、グラフィカルユーザインターフェース(GUI))を使用して、ユーザによって手動で実施される。別の例において、ユーザは、GUIを使用して、例えば、あるフォルダ内のすべてのファイル、あるファイル名を有するすべてのファイル、ファイルタイプもしくは拡張子(例えば.docで終わる)、および/または、あるファミリのファイル拡張子を含み得るあるタイプのすべてのファイル(例えば、Microsoft Word(登録商標)ファイル)など、いずれのファイルが保護されるべきかを規定する規則セットを入力することができる。
【0081】
代替的に、ファイルの指定は、任意選択で、所定の規則セット(例えば、データリポジトリ210内の規則セットリポジトリ内に格納されている)に基づいて、自動的に実施される。
【0082】
ファイルの指定は、保護の対象として指定される(例えば、規則セットによって規定される)所定のファイルフォーマットによるファイルのフォーマットの分析に従って自動的に実施することができる。ファイル構造および/またはファイルフォーマットは、ファイル構造および/またはフォーマットが、保護の対象として指定される構造および/またはフォーマットに対応する可動かを決定するために分析することができる。ファイルフォーマットは、例えば、財務記録、診療記録、個人記録、企業職務(corporate work assignment)、製品定義、および/または、破壊された場合に再現することが困難、不可能、かつ/もしくは財務的に費用がかかる場合がある他のデータなど、慎重に扱うべきおよび/または貴重なデータを格納するファイルに基づいて規定することができる。例示的なファイルフォーマットは、ワードプロセッシング文書ファイルフォーマット、スプレッドシートファイルフォーマット、PDFファイルフォーマット、動画フォーマット、ならびにカスタマイズされたファイルフォーマット(例えば、カスタマイズされたビジネスクリティカル(business critical)によって使用される)およびプレゼンテーションファイルフォーマットを含む。
【0083】
代替または追加として、ファイルは、要求の分析に基づいて、保護の対象として指定される。ファイルは、要求が、ファイルのヘッダに上書きする動作を含む場合に、保護の対象として指定することができる。ファイルのヘッダへの上書きは、悪意のあるコードと関連付けられる場合がある。
【0084】
代替または追加として、ファイルは、要求の分析に基づいて、保護の対象として指定される。ターゲットファイルを上書きすることを求める要求が、ディスプレイ上に提示される可視ウィンドウを有しないアプリケーションと関連付けられる場合、ターゲットファイルが、保護の対象として自動的に指定され得る。ユーザとのインターフェース(例えば、GUI)に対する関連性を有しないバックグラウンドで作動しているアプリケーションが、悪意のあるコードとして関連付けられ得る。
【0085】
代替または追加として、ターゲットファイルを上書きする要求が検出された場合、ユーザインターフェース(例えば、GUI)を、ユーザが上書き要求を安全として確認し(また、上書き動作を承認し)、および/または、上書き動作が進行するのを防止するための入力オプション(例えば、選択アイコン)とともに、ディスプレイ(例えば、ユーザインターフェース222)上に提示することができる。GUIは、上書き要求が悪意のあるコードと関連付けられるものとして識別されるたびに、および/または、例えば、指定されているファイルフォーマットに対する、当該ファイルフォーマットを無効にする上書き要求など、(例えば、規則セットによる)悪意のあるコードと関連付けられる危険性が高いある上書き要求について、提示され得る。ユーザが上書き要求を、安全アプリケーションに由来するものとして識別した場合、ユーザが規定するアプリケーションを、ファイルを上書きすることを許可された安全アプリケーションのホワイトリストに追加することができる。ホワイトリストは、例えば、ファイル暗号化プログラム(例えば、ファイルの安全性を増強するための)およびファイル圧縮プログラムなど、安全であるが、クリプトウェアのような挙動を呈するアプリケーションを記憶することができる。ホワイトリストは、例えば、データリポジトリ210内に格納されているホワイトリストリポジトリ内に格納することができる。
【0086】
いくつかの実施態様において、ブロック104は、例えば、いずれのファイルが保護の対象として指定されるかを規定し、保護されているファイルの監視を実施するために、ブロック102の前に実行されてもよい。
【0087】
任意選択で、106において、ターゲットファイルに対する上書き動作を実施することを求める要求と関連付けられるコード命令の1つまたは複数のスタックトレース内のレコードが、悪意のあるコードとの関連性を決定するために分析される。レコードは、スタックトレースを含むフローデータと、上書き動作要求と関連付けられるコード命令に関係するスレッドデータ、モジュールデータ、およびプロセスデータのうちの1つまたは複数を含むことができる。悪意のあるコードとの関連性を決定するためのスタックトレースおよび/またはフローデータを使用した分析は、ファイルがユーザによって開かれるときにトリガすることができる。開かれているファイルと関連付けられる悪意のあるコードが検出することによって、開かれているファイルのブロックがトリガされ得る。上書き保護メカニズム(本明細書で説明する)は、たとえスタックベースのアルゴリズムが悪意のある活動との関連性の検出に失敗した場合であっても、起動される。ファイルをホストするコンピューティングデバイスは、たとえユーザが悪意のあるコードの影響を受けたファイル(ユーザが、このファイルは正規のものであると考えて開き得るファイル)を開こうとしたときであっても、保護される。
【0088】
悪意のあるコードとの関連性を決定するためのスタックトレースおよび/またはフローデータの分析の追加の詳細は、同じ譲受人に譲渡され、同じ発明者らのうちの少なくとも1人によって成された、参照によりその全体が本明細書に組み込まれている、「悪意のあるコードの検出のためのシステムおよび方法(SYSTEMS AND METHODS FOR MALICIOUS CODE DETECTION)」と題する特許文献1(本明細書においては「’913」としても参照される)を参照して説明される。’913を参照して説明される方法は、書き込み許可でファイルが開かれたことに応答して、データを上書きする(例えば、データを暗号化および/または破壊する)悪意のあるコードを識別するように適合することができる。例えば、接続確立(’913を参照して説明するような)は、書き込み許可(本明細書で説明するような)を伴ってファイルを開くように適合することができる。’913を参照して説明される方法は、ファイルへのアクセスおよび/または上書きの試行を、接続確立試行として取り扱うことによって適合することができる。ファイルが書き込み許可で開かれているか、または、上書きされている場合、接続確立分析と同様の分析が、ファイルアクセスが許可されるべきであるかどうかを決定するために行われる。そうでない場合、ファイルへのアクセスは拒絶される。分析は1回だけ行われる。
【0089】
悪意のあるコードが識別された場合、例えば、上書き動作をブロックするために、ならびに/または、悪意のあるコードを分離および/もしくは除去するために、ブロック116を実行することができる。代替または追加として、悪意のあるコードが識別された場合、または、悪意のあるコードの可能性が識別される場合(例えば、悪意のあるコードが安全なコードである可能性がある)、ターゲットファイルを保護することができ(本明細書で説明するように)、上書き動作を、本明細書で説明するように安全メモリ212にリダイレクトすることができる。
【0090】
代替または追加として、上書き動作を実施することを求める要求と関連付けられるコード命令は、当該コード命令がクリプトウェアのような挙動を呈する安全アプリケーションのホワイトリスト内で識別されない場合には、悪意のあるコードと関連付けられると仮定される(それゆえ、ブロック110を参照して説明されるように、安全メモリ212において上書き動作を実施するようにリダイレクトされる)。
【0091】
108において、保護の対象として指定されているファイル202Bのミラーファイル212Bが、安全メモリロケーション212において作成される。ファイル212Bは、ファイル202の内容全体のミラーであってもよく、または、その部分(例えば、ファイルヘッダ、ファイルの最初の部分、ファイルの慎重に取り扱うべきデータ)のミラーであってもよい。
【0092】
任意選択で、ミラーファイル212Bは、ファイル202Bの、上書き動作によって上書きされるように指定される部分を含む。任意選択で、ミラーファイル212Bは、ファイル202Bの、上書き動作によって影響を受けない部分を含まない。ファイル202Bの、上書きされるように指定されている部分を格納すること、および/または、ファイル202Bの、上書き動作によって影響を受けない部分を格納しないことによって、ミラーファイル212Bを格納するための記憶容量が低減し、例えば、上書き動作がファイル202Bの小さい領域に影響を与える場合、ミラーファイル212Bは、ファイル202Bよりも記憶空間が大幅に小さいストレージであり得る。
【0093】
ミラーファイル212Bは、ファイル202Bの更新されたバージョンを表し、動作が進行することを許可された場合のファイル202Bの状態を表すことに留意されたい。ファイル202Bに影響を与える動作は、ミラーファイル212Bに転送(例えば、リダイレクト、マッピング)される。例えば、ファイル202Bを読み出そうと試行しているあるプロセス(ファイル202Bを上書きしようと試行している悪意のあるものである可能性のあるコードとは無関係であり得る)は、ファイル202Bの最新の更新された、一貫したバージョンを含むミラーファイル212Bから読み出すように方向付けられる。
【0094】
ミラーファイルの作成は、(例えば、ブロック102を参照して説明したように)ターゲットファイルを上書きすることを求める要求を識別したことに応答してトリガされて、リアルタイムで実施することができる。例えば、異なるターゲットファイルを上書きすることを求める新たな要求が検出されるとき、安全メモリ212の同じまたは同様のブロックを、異なるミラーファイルを作成するために再使用することができる。安全メモリ212のサイズは、相対的に小さくすることができ、例えば1つもしくは複数のファイル、またはファイルの部分を含むように選択することができる。ミラーファイルの作成は、(例えば、ブロック104を参照して説明したように)保護の対象としてファイルが指定されることを受けて、前もって実施することができる。いくつかの実施態様において、ブロック108は、ブロック102および/または104の前に実行されてもよいことに留意されたい。
【0095】
代替的に、ミラーファイル212Bは作成されない。安全メモリ212は、必ずしもミラーファイル212Bを作成せずに使用されてもよい。
【0096】
110において、任意選択で、ミラーファイル212Bを上書きするために、上書き動作が、安全メモリ212にリダイレクトされる。上書き動作をリダイレクトすることによって、記憶デバイス202にあるターゲットファイル202Bが、上書き動作によって上書きされないように保護される。ファイル202Bは、安全メモリ212において実施される上書き動作の間に損傷を受けていないままである。例えば、アプリケーションが、20バイト長のバッファ内に格納されている値を使用してオフセット50においてターゲットファイル202Bを上書きする、識別されている動作と関連付けられる場合、バッファの内容をミラーファイル212Bのオフセット50にコピーすることによって(すなわち、ターゲットファイル202Bを上書きするのではなく)、リダイレクトが実施される。代替または追加として、ファイル変更は、ファイルの修正を迅速に発見および管理するように設計されているデータ構造(例えば、赤黒領域木)内に格納することができる。ファイルの格納自体は、例えば、メモリを共有するのに使用されるコピーオンライトメカニズムと同様に管理することができる。例えば、ファイルメモリはページ(4キロバイト)サイズ部分に分割することができ、ページは、ファイルのそれぞれの部分への書き込みが検出されるときにコピーされる。
【0097】
任意選択で、ミラーファイルは、ファイルの連続した部分について連続的にコピーすることによって作成される。それぞれの連続した部分への書き込み動作によって、例えば、コピーオンライトメカニズムと同様に、ミラーファイルのロケーションへのコピーがトリガされる。各連続した部分は、所定のサイズ閾値に従って、ミラーファイルの対応するロケーションにコピーすることができる。
【0098】
リダイレクトは、記憶デバイス202内に格納されているターゲットファイル202Bではなく、ミラーファイル212B(または安全メモリ212内の別のロケーション)への書き込み動作のパラメータを修正することによって実施することができる。
【0099】
112において、安全メモリ212における(任意選択でミラーファイル212Bにおける)リダイレクトされた上書き動作の間に格納されたデータが分析される。安全メモリ212の内容に対する(任意選択で、ミラーファイル212Bの内容に対する)上書き動作の影響を分析することができる。分析は、上書き動作が悪意のあるコードと関連付けられるかどうか、または、上書き動作が安全なコードと関連付けられるかどうかを決定するために実施される。
【0100】
上書き動作の分析は、遅延および/またはトリガイベントの後、例えば、ある時間閾値が過ぎた後(例えば、上書きされているファイルにアクセスするプロセスが実行を完了するのに十分に長い)、および/または、開かれているファイルが閉じられるときに実施することができる。
【0101】
任意選択で、コンテンツミラーファイル212Bに対する上書き動作の影響の分析は、上書き動作を実施するように試行するプロセスがファイルを閉じる(例えば、ファイルハンドルを閉じる)ときにトリガされる。代替または追加として、コンテンツミラーファイル212Bに対する上書き動作の影響の分析は、ミラーファイル212Bがあるサイズ(例えば、所定の記憶容量)に達したときにトリガされる。所定の記憶容量は、例えば、ミラーファイル212Bを格納する安全メモリ212の記憶容量に基づいて、かつ/または、所望の処理速度に従って(すなわち、複数のより小さいチャンクは、1つのより大きいチャンクよりも高速に分析することができる)決定することができる。
【0102】
分析は、安全メモリ212の上書きされない部分を含み得る、安全メモリ212に(例えば、ミラーファイル212Bを介して)書き込まれるデータの分析を含み得る。例えば、ミラーファイル212Bは部分的に上書きされ得、例えば、上書きプロセスの一部としてフィールドが変更され得る。フィールドの新たに書き込まれた内容が分析されてもよく、かつ/または、当該フィールドを含むファイルの内容全体が分析されてもよい。
【0103】
分析は、ファイルが上書き命令によって上書きされる前に、上書き命令を実行するプロセスによってファイルが読み出されたかどうかをチェックすることを含むことができる。上書きされる前に、最初にファイルが読み出されたかどうかをチェックすることによって、悪意のあるコードが、(例えば、ユーザがランダムを支払うと)暗号化されたファイルを回復することを可能にするために、ファイルを暗号化する前に最初にファイルを読み出すという仮定に基づく偽陽性識別の可能性を低減する(すなわち、コードが実際は安全な認可されたコードである場合に悪意のあるコードが誤って識別される機会を低減する)ことができる。
【0104】
上書き動作の分析は、例えば、上書き動作の一部として所定のサイズのデータが格納された(例えば、所定のサイズのミラー212Bが上書きされた)ときなど、上書き動作の間に動的に分析することができる。所定のサイズのデータによって規定される閾値を使用することは、ミラーファイル212Bの当該サイズがメモリ212の大部分を消費することを防止することの助けとなる。分析は、分析されている各チャンクについてミラーファイル212Bを繰り返し作成することによって、ファイル202Bのチャンクに対して実施することができる。ファイル202Bのチャンクに基づく連続した作成されているミラーファイル212Bは、安全メモリ212の同じ(または同様のもしくは隣接する)ロケーションに上書きすることができる。安全なコードと関連付けられるものとして決定されているチャンクは、記憶装置202に働きかけることを許可され得る。悪意のあるコードと関連付けられるものとして決定されているチャンクは、以下の任意選択の特徴のうちの1つを使用して処理され得る、すなわち、記憶装置202に働きかけることを防止される、記憶装置202に働きかけることを許可するか、もしくは、チャンクが悪意のあるコードによって影響を受けるかどうかをユーザに尋ねるGUIを提示する、および/または、ミラーファイル212Bを除去する。代替または追加として、上書きプロセスの分析は、上書き動作が完了したときに分析されてもよい。
【0105】
分析は、ファイルに対する上書き動作を実行するプロセスが、1つまたは複数の他のファイルに対して追加の上書き動作を実施するかどうかをチェックすることによって実施することができる。上書き動作を実行するプロセスが、例えば、少なくとも2つ、5つ、10個、または他の数のファイルなどの、所定数のファイルに対して追加の上書き動作を実施した場合に、悪意のあるコードとの関連性を識別することができる。上書き動作が所定数のファイルに対して実施されることに基づいて悪意のあるコードとの関連性を識別することによって、悪意のあるコードが攻撃の一部として複数のファイルを上書き(例えば、暗号化)しようと試行するという仮定に基づく偽陽性識別の確率を低減することができる。
【0106】
分析は、ファイルの部分の上書き動作の後にファイルの部分を削除しようとする試行(例えば、削除動作)を検出することによって実施することができる。削除動作は、上書き動作を命令するプロセスによって命令され得る。悪意のあるコードの識別は、悪意のあるコードがファイルを上書き(例えば、ファイルを暗号化)した後に、悪意のあるコードがファイルを削除しようと試行し得るという観察に基づく。実際のファイル202Bは、上書き動作および/または削除動作によって消去されず、および/または、影響を受けないことに留意されたい。
【0107】
分析は、ファイルをリネームし、および/または、ファイルの拡張子を変更しようとする試行(または、リネームする命令および/または拡張子を変更する命令の実行)を検出することによって実施することができる。ファイルのリネームおよび/またはその拡張子の変更は、上書き動作の一部として、例えば、上書き動作の前に、上書き動作の少なくともいくつかと並行して、および/または、上書き動作の後に実施することができる。悪意のあるコードの識別は、ファイルのリネームおよび/またはその拡張子の変更の試行(またはその実行)の観測に基づくことができる。
【0108】
任意選択で、分析は、所定のファイル構造(例えば、ターゲットファイル202Bによって規定され得る)に従ってミラーファイル212Bのファイル構造を検証することによって実施される。ミラーファイル212Bは、ファイルフォーマットによって規定されているフィールドを識別するためにパースすることができる。それぞれのフィールド内に格納され得る許容可能な値(例えば、所定のファイル構造フォーマットによって、ユーザ定義の規則セット、もしくは他の所定の規則によって規定される)に基づいて、各フィールド内に格納されているデータの完全性を検証することができる。例えば、ターゲットファイル202Bのファイル作成日を格納するフィールドは、将来の日付を格納してはならない。上書き動作後にミラーファイル212Bのファイル作成フィールド内に将来の日付が存在する場合、これは、悪意のあるコードとの関連性を示唆する。
【0109】
別の例において、ミラーファイル212Bが悪意のあるコードと関連付けられる上書き動作によって暗号化または他の様態で破壊される場合を決定するために、ミラーファイル212Bのファイルフォーマットは、ターゲットイメージファイルフォーマット(TIFF:Target Image File Format)に基づく(例えば、ターゲットファイル202BのTIFFに基づく)ように決定される。ミラーファイル212Bの内容は、ミラーファイル212Bのヘッダが、以下のような、TIFFによって定義されるイメージファイルヘッダ(IFB)に従うかどうかを決定するために、分析される。
【0110】
typedef struct _TiffHeader

WORD Identifier; /* バイトオーダ識別子 */
WORD Version; /* TIFFバージョン数(常に2Ah) */
DWORD IFDOffset; /* 最初のイメージファイルディレクトリのオフセット*/
} TIFHEAD;
【0111】
Identifierフィールドは、IIまたはMMの2つの可能な値のうちの1つのみを含まなければならない。Versionフィールドは2Aに設定されなければならない。IFDOffsetフィールドは、別の構造の始まりに対するオフセットを格納し、それゆえ、IFDOffsetフィールド内に格納される値は、ミラーファイル212Bのサイズよりも小さくなければならない。
【0112】
代替または追加として、分析は、ミラーファイル212Bのデータが上書き動作によって暗号化されることを識別することによって実施される。ミラーファイル212Bの暗号化は、例えば、シャノンの方法(Shannon’s method)を使用してミラーファイル212Bのエントロピーを算出することによって検出することができる。算出されたエントロピー値は、暗号化との関連性(例えば、暗号化されている確率、または、暗号化されているまたは暗号化されていないという決定)を規定する要件(例えば、関数、閾値、範囲)を使用して評価することができる。フィールドはミラーファイル212B内で(例えば、ミラーファイル212Bをパース(parsing)することによって、および/または、ミラーファイル212Bのファイルタイプの定義によって)識別することができ、エントロピーは、各フィールドについて算出することができる。各フィールドは、フィールドごとに異なり、かつ/または、固有であり得るそれぞれの要件を使用して、暗号化された内容について評価することができる。例えば、ユーザ作成テキストを格納するフィールドは、ユーザによって手動で作成されるそのようなフィールド内のテキストは高度に編成されており、あまりランダムではないと予測されるため、暗号化を決定するための算出されるエントロピーの必要なレベルが相対的に低いものを要求し得る。自動作成データを格納するのに使用されるフィールドは、そのようなフィールド内のデータはあまり高度に編成されておらず、よりランダムであり得るため、暗号化を決定するための算出されるエントロピーの必要なレベルが相対的に高いものを要求し得る。代替または追加として、エントロピー値はファイル全体について、および/または、ファイルの1つもしくは複数の部分について算出され、上記要件を使用して評価される。
【0113】
代替または追加として、分析は、ミラーファイル212Bのデータが1つまたは複数の不正な値を含むことを識別することによって実施される。不正な値は、例えば、少なくとも、不正な値に対応する元のファイルのデータの暗号化など、ミラーファイルの暗号化の通知になり得る。ミラーファイルは、1つまたは複数の値を格納する1つまたは複数のフィールドを識別するためにパースすることができる。不正な値は、ミラーファイルの各識別されたフィールドの値を、記憶デバイスロケーションにあるファイルのフィールドの対応する値と比較することによって決定することができる。比較された差は、所定の許容される値を表す要件に従って評価することができる。例えば、上記の例において、フィールドIdentifierは、2つの可能な値のうちの1つのみを含まなければならない。任意選択で、元のファイルは、このファイルが不正な値も含んでいるかどうかをチェックすることによって、偽陽性を低減するために使用することができ、含んでいた場合、修正が有効であると仮定される。
【0114】
暗号化は、ミラーファイル212Bのエントロピーおよびターゲットファイル202Bの対応するデータを算出することによって検出することができ、任意選択で、エントロピー値は、1つまたは複数の対応するフィールドについて算出される。算出されたエントロピー値の間の差(例えば、フィールドごと、ファイルの部分ごと、かつ/または、ファイル全体についての)を、算出されたエントロピー値の間の許容誤差を表す別の要件を使用して評価することができる。ターゲットファイル202Bとミラーファイル212Bとの間の算出されたエントロピーの差が著しい場合、これは、ミラーファイル212Bが暗号化されていることを表す。
【0115】
代替または追加として、分析は、テキストヒューリスティクスに基づいて実施される。テキストヒューリスティック分析は、ミラーファイル212Bの1つまたは複数の所定のフィールドに対して実施することができる。ミラーファイル212Bと関連付けられるファイルフォーマットは、フィールドをテキストフィールドとして、かつ/または、例えばASCII値および/もしくはUNICODE暗号化タイプなど、テキストを含むことを許容されるものとして定義することができる。代替または追加として、テキストフィールド(またはミラーファイル212Bの領域)は、テキストのみを含むまたは大部分がテキストである部分および/またはフィールドを決定するためにターゲットファイル202Bを分析することによって識別することができる。テキストを含むと予測されるミラーファイル212Bのテキストフィールドおよび/または領域内で非テキスト値が識別された場合、非テキスト値は、上書き動作に起因して暗号化された値および/または破壊されたデータであると考えられる。例えば、ファイルが非テキストフォーマットに基づいて格納されている場合、テキストヒューリスティック分析は変更および/または停止することができることに留意されたい。未知のおよび/または分析困難なファイルフォーマットを分析するために、ディープラーニングニューラルネットワークを使用して、ファイルのタイプを識別し、および/または、上書き動作後にファイルタイプが有効であるかどうかを検証することができる。分析は、所与のファイルタイプラベルと関連付けられるファイルの大規模なコーパスに対してニューラルネットワークを訓練することによって実施することができる。
【0116】
分析は、ファイルの重要な部分および/または最も普遍的に影響を受けるファイル部分(例えば、フィールド)を表す可能性がある、ミラーファイル212Bのある部分について実施することができる。フィールドが悪意のあるコードによって暗号化、破壊、または他の様態で影響を受けるものとして識別されない場合、ファイルの残りの部分も、悪意のあるコードによって影響を受けないものと仮定することができる。例えば、ミラーファイル212Bのファイルヘッダが、上書き動作後に損傷を受けていないままであると識別される場合、ファイルの残りの部分は、悪意のあるコードによって影響を受けていないと仮定することができる。
【0117】
代替または追加として、保護されているターゲットファイル202Bに対する読み出し動作が(例えば、ファイルドライバによって)検出される場合、分析は、要求されているデータが上書きされたかどうかを検出するために、ミラーファイル212Bに対して実施することができる。読み出し動作は、例えば、上書きが成功したかを検証するために悪意のあるコードによって読み出しが実施されるという仮定に基づいて、ミラーファイル212Bの分析されるべき部分に分析を方向付けるために使用され得る。読み出し動作に返されるデータは、ターゲットファイル202Bの対応するロケーションから得られる、元の修正されていないデータであり得る。代替的に、読み出し動作に返されるデータは、ミラーファイル212Bから得られる、上書きされたデータであり得る。悪意のあるコードは、アンチマルウェアコードによって識別し、除去することができる。別の例において、元の修正されていないデータを再び受信する要求プロセスは、別の上書き要求を試行することができ、これによって、コードを悪意のあるコードとして識別することができる。
【0118】
114において、分析が上書き動作を悪意のあるコードと関連付けられるものとして識別した場合、ミラーファイル212B(および/または、ミラーファイルが作成されない場合は安全メモリ212の上書きされたロケーション)が、任意選択で永続的に、削除される。代替的に、ミラーファイル211Bは保持され、例えば、悪意のあるコードを決定する助けとなるような分析のために、リモートサーバに転送される。
【0119】
上書き動作は、ターゲットファイル202Bに対して動作することを許容されるのではなく、ミラーファイル212Bに方向付けられるため、ターゲットファイル202Bを復元する必要はないことに留意されたい。
【0120】
116において、悪意のあるコードによるターゲットファイルの上書きの試行の通知が出力され、例えば、警告メッセージがディスプレイ(例えば、ユーザインターフェース222)上でユーザに提示され、悪意のあるコードを試行および位置特定ならびに/または分離するためにアンチマルウェアアプリケーションを自動的にトリガすることができ、および/または、上書き試行の詳細を伴うレポートをサーバに(例えば、ネットワーク管理者に、または、アンチマルウェアアプリケーションに対する更新を設計する助けとなるように研究センターに)送信することができる。
【0121】
任意選択で、通知は、上書き動作のブロックをトリガする。
【0122】
任意選択で、悪意のあるコードによるターゲットファイルの上書きの試行の通知が識別される場合、ユーザが、悪意のあるコードとして上書き要求を確認し、上書き要求が進行するのを防止し、および/または、上書き要求を安全である(すなわち、悪意のない既知の安全なコード)として規定し、上書き動作が進行するのを許可するためのオプション(例えば、選択アイコン)を有するGUIを、ディスプレイ(例えば、ユーザインターフェース222)上に提示することができる。
【0123】
代替的に、118において、分析が、上書き要求の悪意のある挙動を識別することができない場合(例えば、暗号化の欠如および/またはデータの破壊の欠如)、上書き動作は、安全なコードと関連付けられると仮定される。
【0124】
120において、安全なコードと関連付けられる上書き動作の意図された上書き効果を達成するために、ミラーファイル212Bの修正バージョン(上書き動作によって修正されている)を使用して、ターゲットファイル202Bが上書きされる。
【0125】
本発明の様々な実施形態の説明を、例示の目的で提示したが、網羅的であること、または開示する実施形態に限定することを意図していない。説明した実施形態の範囲および趣旨を逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本明細書で使用する用語は、実施形態の原理、実際の応用、または市場で見つけられる技術に優る技術改善を最も良く説明するように、または、当業者が本明細書に開示する実施形態を理解できるように選択した。
【0126】
本出願から満期となる特許の存続期間の間に、多くの関連する上書き動作が開発されることが予測され、上書き動作という用語の範囲は、そのような新しい技術を事前にすべて含むものとする。
【0127】
本明細書で使用する「約」という用語は±10%を指す。
【0128】
「備える」、「備えている」、「含む」、「含んでいる」、「有している」、という用語およびそれらの活用形は、「限定はしないが、含む」を意味する。この用語は、「からなる」および「から基本的になる」という用語を包含する。
【0129】
「から基本的になる」という句は、組成または方法が、追加の成分および/またはステップを含む場合があることを意味するが、追加の成分および/またはステップが、特許請求する組成または方法の基本的および新規な特徴を物質的に変えない場合に限る。
【0130】
本明細書で使用する単数形「a」、「an」、および「the」は、文脈上別段明確に示されない限り複数の指示内容を含む。例えば、「化合物」または「少なくとも1つの化合物」という用語は、それらの混合物を含む複数の化合物を含むことができる。
【0131】
「例示的」という語は、本明細書では「例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として説明するいかなる実施形態も、他の実施形態と比べて好ましいもしくは有利であると必ずしも解釈されてはならず、かつ/または他の実施形態からの特徴の取入れを必ずしも排除してはならない。
【0132】
「任意選択で」という語は、本明細書では、「いくつかの実施形態では提供され、他の実施形態では提供されない」を意味するように使用される。本発明のいかなる特定の実施形態も、複数の「任意選択の」特徴を、そのような特徴が矛盾しない限り、含む場合がある。
【0133】
本出願の全体を通して、本発明の様々な実施形態は、範囲の形式で提示されることがある。範囲の形式での説明は、単に便宜および簡潔のためであり、本発明の範囲に対する柔軟性がない限定と解釈されるべきでないことを理解されたい。したがって、範囲の説明は、すべての可能な部分範囲ならびにその範囲内の個々の数値を具体的に開示したものと考えるべきである。例えば、1から6までなどの範囲の説明は、1から3まで、1から4まで、1から5まで、2から4まで、2から6まで、3から6まで等のような部分範囲、ならびにその範囲内の個々の数、例えば、1、2、3、4、5、および6を具体的に開示したものと考えるべきである。これは、範囲の広さに関係なく適用される。
【0134】
数の範囲が本明細書で示されるときは常に、数の範囲は、示された範囲内の任意の引用される数字(小数または整数)を含むように意図される。第1の表示数と第2の表示数との「間に及んでいる/及ぶ」、ならびに第1の表示数「から」第2の表示数「まで」「及んでいる/及ぶ」という語句は、本明細書では交換可能に使用され、第1および第2の表示された数、ならびにそれらの数の間のすべての小数および整数を含むことを意味する。
【0135】
明確にするために別々の実施形態の文脈で説明されている本発明の特定の特徴は、単一の実施形態において組み合わせて提供されることも可能であることが理解される。逆に、簡潔にするために単一の実施形態の文脈で説明されている本発明の様々な特徴は、本発明の任意の他の説明されている実施形態において、別々に、または任意の適切な部分的組合せで、または好適であるように提供されることも可能である。様々な実施形態の文脈で説明したいくつかの特徴は、それらの要素なしでは実施形態が動作不能である場合を除いて、それらの実施形態の必須の特徴と考えるべきではない。
【0136】
本発明を、その特定の実施形態とともに説明したが、多くの代替形態、変更形態、および変形形態が当業者には明らかとなることは明白である。したがって、添付の特許請求の範囲の趣旨および広い範囲内にあるこのような代替形態、変更形態、および変形形態をすべて包含するものとする。
【0137】
本明細書において言及したすべての公報、特許、および特許出願は、各個々の公報、特許、または特許出願が参照により本明細書に組み込まれるよう具体的かつ個別に示された場合と同じ程度に、それらの全体が参照により本明細書に組み込まれる。加えて、本出願におけるいかなる参照の引用または特定も、そのような参照が本発明に対する先行技術として利用可能であると認めるものとして解釈されてはならない。項目の見出しが使用される限りにおいて、項目の見出しは、必ずしも限定的であると解釈されるべきではない。
図1
図2