(57)【要約】  少なくとも１つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのコンピュータ実装方法は、少なくとも１つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも１つのファイルを監視するステップと、上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするステップと、悪意のあるコードとの関連を識別するために、メモリロケーションにおける上書き動作を分析するステップと、悪意のあるコードによって少なくとも１つのファイルを上書きすることが試行されていることの通知を出力するステップと、を含む。【選択図】  図１
2020502648.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのコンピュータ実装方法であって、
前記少なくとも１つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも１つのファイルを監視するステップと、
前記上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするステップと、
悪意のあるコードとの関連を識別するために、前記メモリロケーションにおける前記上書き動作を分析するステップと、
前記悪意のあるコードによって前記少なくとも１つのファイルを上書きすることが試行されていることの通知を出力するステップと、
を含む、コンピュータ実装方法。
【請求項２】
前記メモリロケーションにおいて前記少なくとも１つのファイルのミラーを作成するステップと、前記上書き動作を前記少なくとも１つのファイルの前記ミラーへリダイレクトするステップと、をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記上書き動作を分析するステップは、所定のファイル構造に従って前記少なくとも１つのファイルの前記ミラーの前記ファイル構造を検証するステップを含む、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記上書き動作を分析するステップは、少なくとも１つのフィールドを識別するために前記ミラーをパースすることによって前記少なくとも１つのファイルの前記ミラーの暗号化を識別するステップと、前記ミラーの各識別されている少なくとも１つのフィールドの算出されるエントロピーと、前記記憶デバイスロケーションにある前記ファイルの対応する少なくとも１つのフィールドの算出されるエントロピーとの間の差を算出するステップと、前記算出されているエントロピー値の間の許容誤差を表す要件に従って、前記算出されている差を評価するステップと、を含む、請求項２に記載のコンピュータ実装方法。
【請求項５】
前記上書き動作を分析するステップは、少なくとも１つのフィールドを識別するために前記ミラーをパースすることによって前記少なくとも１つのファイルの前記ミラーの暗号化を識別するステップと、前記ミラーの各識別されている少なくとも１つのフィールドの少なくとも１つの値を、前記記憶デバイスロケーションにある前記ファイルの少なくとも１つのフィールドの対応する少なくとも１つの値と比較することによって、前記少なくとも１つのフィールド内の少なくとも１つの不正な値を決定するステップと、所定の許容される値を表す要件に従って、前記比較されている差を評価するステップと、を含む、請求項２に記載のコンピュータ実装方法。
【請求項６】
前記上書き動作を分析するステップは、前記記憶デバイスロケーションにおける前記少なくとも１つのファイルの対応する少なくとも１つのロケーションにあるテキストデータを含むように指定されている、前記少なくとも１つのファイルの前記ミラーの少なくとも１つのロケーションにある、非テキストデータを識別するステップを含む、請求項２に記載のコンピュータ実装方法。
【請求項７】
前記少なくとも１つのファイルの前記ミラーは、少なくとも１つのファイルの、前記上書き動作によって上書きされることになると指定される部分のみを格納し、前記少なくとも１つのファイルの前記ミラーは、前記少なくとも１つのファイルの、前記上書き動作によって影響を受けない部分は含まない、請求項２に記載のコンピュータ実装方法。
【請求項８】
前記ミラーファイルを作成する前記ステップは、前記少なくとも１つのファイルの連続した部分に対して繰り返し実施され、各連続した部分は、それぞれの部分に対する書き込み動作によってトリガされて、前記ミラーファイルの前記ロケーションにコピーされ、前記分析するステップは、各連続した部分について繰り返し実施される、請求項２に記載のコンピュータ実装方法。
【請求項９】
各連続した部分は、所定のサイズ閾値になるまで、前記ミラーファイルの前記ロケーションにコピーされる、請求項８に記載のコンピュータ実装方法。
【請求項１０】
前記上書き動作を分析するステップは、前記少なくとも１つのファイルの前記部分の前記上書き動作を実施することを求める前記要求の前に、前記少なくとも１つのファイルのデータの前記部分が読み出されるかどうかをチェックするステップを含む、請求項１に記載のコンピュータ実装方法。
【請求項１１】
悪意のあるコードとの関連性は、前記上書き動作が、少なくとも所定数のファイルを含む複数のファイルに対して実施されるものとして検出される場合に識別される、請求項１に記載のコンピュータ実装方法。
【請求項１２】
悪意のあるコードとの関連性は、前記少なくとも１つのファイルの前記部分の前記上書き動作の後に、前記少なくとも１つのファイルの前記部分の削除動作が試行される場合に識別される、請求項１に記載のコンピュータ実装方法。
【請求項１３】
前記上書き動作は、前記少なくとも１つのファイルの少なくとも前記部分の暗号化、前記少なくとも１つのファイルのリネーム、前記少なくとも１つのファイルの少なくとも前記部分の内容の無関係な値への変更、および、前記少なくとも１つのファイルの少なくとも前記部分の削除のうちの少なくとも１つを含む、請求項１に記載のコンピュータ実装方法。
【請求項１４】
前記少なくとも１つのファイルが保護の対象として指定されているかどうかを決定するステップをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項１５】
決定するステップは、保護の対象として指定されている所定のファイルフォーマットに従って、前記少なくとも１つのファイルのフォーマットを分析するステップを含む、請求項１４に記載のコンピュータ実装方法。
【請求項１６】
前記所定のファイルフォーマットは、ワードプロセッシング文書ファイルフォーマット、スプレッドシートファイルフォーマット、ＰＤＦファイルフォーマット、およびプレゼンテーションファイルフォーマットからなるグループから選択されるファイルフォーマットである、請求項１５に記載のコンピュータ実装方法。
【請求項１７】
前記少なくとも１つのファイルのヘッダに対する上書きを識別するために前記上書き動作を分析するステップと、
前記ヘッダに対する前記上書きが識別された場合に前記上書き動作の前記リダイレクトをトリガするステップと、
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項１８】
安全なコードとの関連性を識別するために、前記メモリロケーションにおける前記上書き動作を分析するステップと、
前記記憶デバイスロケーションにある前記少なくとも１つのファイルを、前記メモリロケーションにある前記上書きされたデータで上書きするステップと、
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項１９】
前記分析するステップは、前記メモリロケーションにある損傷を受けていないファイルヘッダに基づいて前記安全なコードとの関連性を識別するステップを含む、請求項１８に記載のコンピュータ実装方法。
【請求項２０】
前記記憶デバイスロケーションにある前記少なくとも１つのファイルは、前記メモリロケーションにおける前記上書き動作の間に損傷を受けていないままである、請求項１に記載のコンピュータ実装方法。
【請求項２１】
前記分析が悪意のあるコードと関連付けられる前記上書き動作を識別した場合に、前記メモリロケーションにある前記上書きされたデータを削除するステップをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項２２】
前記上書き動作を分析するステップは、前記上書き動作が完了したとき、および、所定のサイズのデータが上書きされたときのうちの少なくとも１つに従って実施される、請求項１に記載のコンピュータ実装方法。
【請求項２３】
前記上書き動作を分析するステップは、暗号化データを表すエントロピー要件に従って、前記メモリロケーションにおいて上書きされている前記データのエントロピーを算出することによって、暗号化を検出するステップを含む、請求項１に記載のコンピュータ実装方法。
【請求項２４】
前記リダイレクトするステップは、前記上書き動作が、ディスプレイ上に提示されている可視ウィンドウのないアプリケーションと関連付けられる場合に実施される、請求項１に記載のコンピュータ実装方法。
【請求項２５】
ユーザが前記上書き動作を安全なコードと関連付けられるものとして確認することを可能にするために、前記上書き動作を検出したことに応答してディスプレイ上にユーザインターフェースを提示するステップをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項２６】
前記ユーザが前記上書き動作を安全として確認した場合に、クリプトウェアのような挙動を呈する安全アプリケーションのホワイトリストに、前記上書き動作と関連付けられるアプリケーションを追加するステップをさらに含む、請求項２５に記載のコンピュータ実装方法。
【請求項２７】
前記上書き動作と関連付けられるアプリケーションが、クリプトウェアのような挙動を呈する安全アプリケーションのホワイトリスト内で識別されない場合に、前記リダイレクトを実施するステップをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項２８】
前記コンピュータ実装方法は、書き込み許可で少なくとも１つのファイルが開かれたこと、および／または、ファイル上書きに応答して前記分析を実施するステップをさらに含み、前記開かれた動作／上書き動作の前記分析は、前記少なくとも１つのファイルへのアクセスが許可されるか、または、前記少なくとも１つのファイルへのアクセスが拒絶されるかを決定するために、スタックトレースおよびフローデータのうちの少なくとも一方を分析することによって実施される、請求項１に記載のコンピュータ実装方法。
【請求項２９】
少なくとも１つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのシステムであって、
コードを格納するプログラム記憶装置と、
前記格納されたコードを実行するために、前記プログラム記憶装置に結合されたプロセッサと、
を備え、前記コードは、
前記少なくとも１つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも１つのファイルを監視するステップと、前記上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするステップと、悪意のあるコードとの関連性を識別するために、前記メモリロケーションにおける前記上書き動作を分析するステップと、悪意のあるコードによって前記少なくとも１つのファイルを上書きすることが試行されていることの通知を出力するステップと、を行うためのコードを含む、システム。
【請求項３０】
少なくとも１つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのシステムのプロセッサによって実施するためのプログラムコードを格納している非一過性のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、
前記少なくとも１つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも１つのファイルを監視するための命令と、
前記上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするための命令と、
悪意のあるコードとの関連を識別するために、前記メモリロケーションにおける前記上書き動作を分析するための命令と、
前記悪意のあるコードによって前記少なくとも１つのファイルを上書きすることが試行されていることの通知を出力するための命令と、
を含む、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、そのいくつかの実施形態では、悪意のあるコードの検出に関し、より詳細には、しかし排他的ではなく、クリプトウェアを検出および／または防止するためのシステムおよび方法に関する。
【背景技術】
【０００２】
例えば、クリプトウェアなどの、いくつかのタイプの悪意のあるコードは、格納されているデータを改変して、このデータをユーザにとってアクセスできないようにする。クリプトウェアマルウェアは、例えば、財務記録のような重要な情報を含む場合があるファイル、および／または、コンピュータの機能を制御するファイルシステムに関係するファイルなどの、格納されているファイルを暗号化する。ファイルを解読することと引き換えに、ユーザからのランサムが要求される。クリプトウェアは、強力な暗号アルゴリズムを用いて、格納されているファイルを暗号化することができ、ユーザが、ランサムを支払って暗号鍵を得ることなくデータを発見することを、実質的に不可能にする。
【０００３】
悪意のあるコードの別の例は、格納されているデータを破壊する（すなわち、データを暗号化する代わりに）。例えば、悪意のあるコードは、格納されているファイルの内容にゼロ（０）の値を上書きする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願第１４／９４９，９１３号明細書
【発明の概要】
【課題を解決するための手段】
【０００５】
第１の態様によれば、少なくとも１つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのコンピュータ実装方法は、少なくとも１つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも１つのファイルを監視するステップと、上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするステップと、悪意のあるコードとの関連を識別するために、メモリロケーションにおける上書き動作を分析するステップと、悪意のあるコードによって少なくとも１つのファイルを上書きすることが試行されていることの通知を出力するステップと、を含む。
【０００６】
第２の態様によれば、少なくとも１つのファイル内に格納されているデータを、悪意のあるコードによって上書きされないように保護するためのシステムは、コードを格納するプログラム記憶装置と、格納されたコードを実行するために、プログラム記憶装置に結合されたプロセッサと、を備え、コードは、少なくとも１つのファイルのデータの少なくとも一部分の上書き動作を実施することを求める要求を検出するために、記憶デバイスロケーション内に格納されている少なくとも１つのファイルを監視するステップと、上書き動作を、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトするステップと、悪意のあるコードとの関連性を識別するために、メモリロケーションにおける上書き動作を分析するステップと、悪意のあるコードによって少なくとも１つのファイルを上書きすることが試行されていることの通知を出力するステップと、を行うためのコードを含む。
【０００７】
上書き動作を安全メモリロケーションへリダイレクトすることによって、例えば、ターゲットファイルに対する上書き動作の影響を分析し、上書き動作の影響を回復しまたは無効にするように試行するよりも、ターゲットファイルの完全性が保持される。上書き動作を安全メモリロケーションへリダイレクトすることによって、元のターゲットファイルを損なうことなく、上書き動作の影響を分析するのに安全なロケーションが提供される。例えば停電に起因して検証が行われない場合であっても、ファイルが保持されることに留意されたい。
【０００８】
本明細書で説明するシステムおよび／または方法は、記憶デバイス（任意選択で、永続化記憶装置）ロケーション内に格納されているファイルを標的とする上書き動作を、安全であると指定される別のメモリロケーションへリダイレクトすることに関する。システムおよび／または方法は、上書き動作を安全メモリロケーションへリダイレクトすることによって、上書き動作の影響をターゲットファイルから分離する。ターゲットファイルをミラーリングするミラーファイルを、物理的な安全メモリロケーション内に作成することができる。ミラーファイルは、リダイレクトされた上書き動作によって上書きされ得る。上書きされたミラーファイルは、上書き動作が悪意のあるコードと関連付けられるかどうかを決定するために分析される。ターゲットファイルを悪意のあるコードによる上書き動作から保護することによってターゲットファイルの完全性を保持するために使用される新たなデータを、ミラーファイルの形態で作成することができる。
【０００９】
本明細書で説明するシステムおよび／または方法は、例えば、重要なデータファイルおよび／またはコンピュータ機能を実施する役割を担うファイル（例えば、カーネルファイル、低レベル機能ドライバ、オペレーティングシステムファイル）などのファイルを、上書きされないように保護することによって、クライアント端末および／またはサーバのようなコンピュータの性能を改善する（例えば、プロセッサおよび／またはメモリ利用の改善）。ファイルを上書きすることによって、例えば、オペレーティングシステムがあるタスクを実施することが妨げられる、コンピュータが使用不可能になる、および／または、上書きされたファイルを復元するのに多大な労力を要するなど、コンピュータが損傷する可能性がある。上書きは、既存の利用可能な処理および／またはメモリリソースを利用し得る。
【００１０】
第１の態様または第２の態様による方法またはシステムの第１の可能な実装形態において、方法は、メモリロケーションにおいて少なくとも１つのファイルのミラーを作成するステップと、上書き動作を少なくとも１つのファイルのミラーへリダイレクトするステップと、をさらに含み、かつ／または、システムは、上記ステップを行うためのコードをさらに含む。
【００１１】
第１の態様または第２の態様の第１の実装形態による方法またはシステムの第２の可能な実装形態において、上書き動作を分析するステップは、所定のファイル構造に従って少なくとも１つのファイルのミラーのファイル構造を検証するステップを含む。
【００１２】
第１の態様または第２の態様の第１の実装形態または第２の実装形態による方法またはシステムの第３の可能な実装形態において、上書き動作を分析するステップは、少なくとも１つのフィールドを識別するためにミラーをパースすることによって少なくとも１つのファイルのミラーの暗号化を識別するステップと、ミラーの各識別されている少なくとも１つのフィールドの算出されるエントロピーと、記憶デバイスロケーションにあるファイルの対応する少なくとも１つのフィールドの算出されるエントロピーとの間の差を算出するステップと、算出されているエントロピー値の間の許容誤差を表す要件に従って、算出されている差を評価するステップと、を含む。
【００１３】
第１の態様または第２の態様の第１の実装形態、第２の実装形態、または第３の実装形態による方法またはシステムの第４の可能な実装形態において、上書き動作を分析するステップは、少なくとも１つのフィールドを識別するためにミラーをパースすることによって少なくとも１つのファイルのミラーの暗号化を識別するステップと、ミラーの各識別されている少なくとも１つのフィールドの少なくとも１つの値を、記憶デバイスロケーションにあるファイルの少なくとも１つのフィールドの対応する少なくとも１つの値と比較することによって、少なくとも１つのフィールド内の少なくとも１つの不正な値を決定するステップと、所定の許容される値を表す要件に従って、比較されている差を評価するステップと、を含む。
【００１４】
第１の態様または第２の態様の第１の実装形態、第２の実装形態、第３の実装形態、または第４の実装形態による方法またはシステムの第５の可能な実装形態において、上書き動作を分析するステップは、記憶デバイスロケーションにおける少なくとも１つのファイルの対応する少なくとも１つのロケーションにあるテキストデータを含むように指定されている、少なくとも１つのファイルのミラーの少なくとも１つのロケーションにある、非テキストデータを識別するステップを含む。
【００１５】
第１の態様または第２の態様の第１の実装形態、第２の実装形態、第３の実装形態、第４の実装形態、または第５の実装形態による方法またはシステムの第６の可能な実装形態において、少なくとも１つのファイルのミラーは、少なくとも１つのファイルの、上書き動作によって上書きされることになると指定される部分のみを格納し、少なくとも１つのファイルのミラーは、少なくとも１つのファイルの、上書き動作によって影響を受けない部分は含まない。
【００１６】
第１の態様または第２の態様の第１の実装形態、第２の実装形態、第３の実装形態、第４の実装形態、第５の実装形態、または第６の実装形態による方法またはシステムの第７の可能な実装形態において、ミラーファイルを作成するステップは、少なくとも１つのファイルの連続した部分に対して繰り返し実施され、各連続した部分は、それぞれの部分に対する書き込み動作によってトリガされて、ミラーファイルのロケーションにコピーされ、分析するステップは、各連続した部分について繰り返し実施される。
【００１７】
第１の態様または第２の態様の第７の実装形態による方法またはシステムの第８の可能な実装形態において、各連続した部分は、所定のサイズ閾値になるまで、ミラーファイルのロケーションにコピーされる。
【００１８】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第８の実装形態のいずれかによる方法またはシステムの第９の可能な実装形態において、上書き動作を分析するステップは、少なくとも１つのファイルの部分の上書き動作を実施することを求める要求の前に、少なくとも１つのファイルのデータの部分が読み出されるかどうかをチェックするステップを含む。
【００１９】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第９の実装形態のいずれかによる方法またはシステムの第１０の可能な実装形態において、悪意のあるコードとの関連性は、上書き動作が、少なくとも所定数のファイルを含む複数のファイルに対して実施されるものとして検出される場合に識別される。
【００２０】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第１０の実装形態のいずれかによる方法またはシステムの第１１の可能な実装形態において、悪意のあるコードとの関連性は、少なくとも１つのファイルの部分の上書き動作の後に、少なくとも１つのファイルの部分の削除動作が試行される場合に識別される。
【００２１】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第１１の実装形態のいずれかによる方法またはシステムの第１２の可能な実装形態において、上書き動作は、少なくとも１つのファイルの少なくとも上記部分の暗号化、少なくとも１つのファイルのリネーム、少なくとも１つのファイルの少なくとも上記部分の内容の不正な値への変更、および、少なくとも１つのファイルの少なくとも上記部分の削除のうちの少なくとも１つを含む。
【００２２】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第１２の実装形態のいずれかによる方法またはシステムの第１３の可能な実装形態において、方法および／またはシステムは、少なくとも１つのファイルが保護の対象として指定されているかどうかを決定するステップをさらに含む。
【００２３】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第１３の実装形態のいずれかによる方法またはシステムの第１４の可能な実装形態において、決定するステップは、保護の対象として指定されている所定のファイルフォーマットに従って、少なくとも１つのファイルのフォーマットを分析するステップを含む。
【００２４】
第１の態様または第２の態様の第１４の実装形態による方法またはシステムの第１５の可能な実装形態において、所定のファイルフォーマットは、ワードプロセッシング文書ファイルフォーマット、スプレッドシートファイルフォーマット、ＰＤＦファイルフォーマット、およびプレゼンテーションファイルフォーマットからなるグループから選択されるファイルフォーマットである。
【００２５】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第１５の実装形態のいずれかによる方法またはシステムの第１６の可能な実装形態において、方法および／またはシステムは、少なくとも１つのファイルのヘッダに対する上書きを識別するために上書き動作を分析するステップと、ヘッダに対する上書きが識別された場合に上書き動作のリダイレクトをトリガするステップと、をさらに含む。
【００２６】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第１６の実装形態のいずれかによる方法またはシステムの第１７の可能な実装形態において、方法および／またはシステムは、安全なコードとの関連性を識別するために、メモリロケーションにおける上書き動作を分析するステップと、記憶デバイスロケーションにある少なくとも１つのファイルを、メモリロケーションにある上書きされたデータで上書きするステップと、をさらに含む。
【００２７】
第１の態様または第２の態様の第１７の実装形態による方法またはシステムの第１８の可能な実装形態において、分析するステップは、メモリロケーションにある損傷を受けていないファイルヘッダに基づいて安全なコードとの関連性を識別するステップを含む。
【００２８】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第１８の実装形態のいずれかによる方法またはシステムの第１９の可能な実装形態において、記憶デバイスロケーションにある少なくとも１つのファイルは、メモリロケーションにおける上書き動作の間に損傷を受けていないままである。
【００２９】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第１９の実装形態のいずれかによる方法またはシステムの第２０の可能な実装形態において、方法および／またはシステムは、分析が悪意のあるコードと関連付けられる上書き動作を識別した場合に、メモリロケーションにある上書きされたデータを削除するステップをさらに含む。
【００３０】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第２０の実装形態のいずれかによる方法またはシステムの第２１の可能な実装形態において、上書き動作を分析するステップは、上書き動作が完了したとき、および、所定のサイズのデータが上書きされたときのうちの少なくとも１つに従って実施される。
【００３１】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第２１の実装形態のいずれかによる方法またはシステムの第２２の可能な実装形態において、上書き動作を分析するステップは、暗号化データを表すエントロピー要件に従って、メモリロケーションにおいて上書きされているデータのエントロピーを算出することによって、暗号化を検出するステップを含む。
【００３２】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第２２の実装形態のいずれかによる方法またはシステムの第２２の可能な実装形態において、リダイレクトするステップは、上書き動作が、ディスプレイ上に提示されている可視ウィンドウのないアプリケーションと関連付けられる場合に実施される。
【００３３】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第２２の実装形態のいずれかによる方法またはシステムの第２３の可能な実装形態において、方法および／またはシステムは、ユーザが上書き動作を安全なコードと関連付けられるものとして確認することを可能にするために、上書き動作を検出したことに応答してディスプレイ上にユーザインターフェースを提示するステップをさらに含む。
【００３４】
第１の態様または第２の態様の第２３の実装形態による方法またはシステムの第２４の可能な実装形態において、ユーザが上書き動作を安全として確認した場合に、クリプトウェアのような挙動を呈する安全アプリケーションのホワイトリストに、上書き動作と関連付けられるアプリケーションを追加するステップをさらに含む。
【００３５】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第２４の実装形態のいずれかによる方法またはシステムの第２５の可能な実装形態において、方法および／またはシステムは、上書き動作と関連付けられるアプリケーションが、クリプトウェアのような挙動を呈する安全アプリケーションのホワイトリスト内で識別されない場合に、リダイレクトを実施するステップをさらに含む。
【００３６】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第２５の実装形態のいずれかによる方法またはシステムの第２６の可能な実装形態において、方法および／またはシステムは、書き込み許可で少なくとも１つのファイルが開かれたこと、および／または、ファイル上書きに応答して分析を実施するステップをさらに含み、開かれた動作／上書き動作の分析は、少なくとも１つのファイルへのアクセスが許可されるか、または、少なくとも１つのファイルへのアクセスが拒絶されるかを決定するために、スタックトレースおよびフローデータのうちの少なくとも一方を分析することによって実施される。
【００３７】
第１の態様または第２の態様そのものによる、または、第１の態様または第２の態様の第１の実装形態から第２６の実装形態のいずれかによる方法またはシステムの第２７の可能な実装形態において、コンピュータ可読媒体上に格納されているコンピュータプログラムが、１つまたは複数のコンピュータの１つまたは複数のプロセッサによって実行されるときに、上記方法を作動させる。
【００３８】
特に定義しない限り、本明細書で使用する全ての技術および／または科学用語は、本発明が属する技術分野の当業者により通常理解されるものと同じ意味を有する。本明細書に記載のものと同様のまたは等価な方法および材料を、本発明の実施形態の実践または試験に使用することができるが、例示的な方法および／または材料を下記に記載する。矛盾する場合、定義を含む特許明細書が優先する。加えて、材料、方法、および実施例は単なる例示であり、必ずしも限定を意図するものではない。
【００３９】
本発明のいくつかの実施形態について、その例示のみを目的として添付の図面を参照して本明細書に記載する。以下、特に図面を詳細に参照して示す細部は、例示を目的とし、また本発明の実施形態の詳細な説明を目的とすることを強調する。同様に、図面と共に説明を見ることで、本発明の実施形態をどのように実践し得るかが当業者には明らかとなる。
【図面の簡単な説明】
【００４０】
【図１】本発明のいくつかの実施形態による、記憶デバイス内に格納されているファイルを、悪意のあるコードによって上書きされないように保護するための方法のフローチャートである。
【図２】本発明のいくつかの実施形態による、コンピューティングユニットの記憶デバイス内に格納されているファイルを、悪意のあるコードによって上書きされないように保護するシステムのブロック図である。
【発明を実施するための形態】
【００４１】
本発明は、そのいくつかの実施形態では、悪意のあるコードの検出に関し、より詳細には、しかし排他的ではなく、クリプトウェアを検出および／または防止するためのシステムおよび方法に関する。
【００４２】
本発明のいくつかの実施形態の一態様は、上書き動作をターゲットファイルから、上書きされるのが安全であると指定されるメモリロケーションへリダイレクトすることによって、記憶デバイス（任意選択で、例えば、ハードドライブなどの永続化記憶装置）上に格納されている１つまたは複数のファイル（またはその部分）が、悪意のあるコードによって上書きされる（例えば、暗号化および／または削除、および／または、元のデータを回復するのに使用することができない無関係なデータによって上書きされる）ことを防止するシステムおよび／または方法（例えば、プロセッサによって実行されるコード命令）に関する。本明細書で使用する上書き動作が向けられる上書きされるのが安全であると指定されるメモリロケーションにあるデータは、本明細書ではミラーファイルとして参照される。上書き動作をミラーファイルへリダイレクトすることによって、上書き動作が認可された動作であり、かつ／または、悪意のあるコードと関連付けられていないことが確認される前に、永続化記憶装置によって格納されているファイルに変更が加えられることが防止（または低減）される。ミラーファイルは、上書き動作が実行されるときのファイルの実際の状態を表す。安全メモリロケーションにある上書きされたデータは、上書きされたデータが悪意のあるコードと関連付けられるかどうかを決定するために分析される。上書き動作を安全メモリロケーションへリダイレクトすることによって、例えば、ターゲットファイルに対する上書き動作の影響を分析し、上書き動作の影響を回復しまたは無効にするように試行するよりも、ターゲットファイルの完全性が保持される。上書き動作を安全メモリロケーションへリダイレクトすることによって、元のターゲットファイルを損なうことなく、上書き動作の影響を分析するのに安全なロケーションが提供される。例えば停電に起因して検証が行われない場合であっても、ファイルが保持されることに留意されたい。
【００４３】
任意選択で、ターゲットファイルのミラーが、安全メモリロケーション内に作成される。上書き動作は、ターゲットファイルの代わりに、安全メモリロケーションにあるミラーターゲットファイルへリダイレクトされる。ミラーファイルに対する上書き動作の影響は、ターゲットファイルのデータを保持しながら、安全に分析することができる。上書き動作が悪意のあるコードまたは安全なコードと関連付けられるかを決定するために、ミラーファイルに基づいて、ファイル構造、ファイル（またはその部分）の暗号化、および／または、ファイルのテキストデータに対する上書き動作の影響を分析することができる。
【００４４】
任意選択で、安全メモリにおける上書きの分析に基づいて、安全なコードが上書き動作と関連付けられるものとして識別される場合、安全メモリロケーションにある上書きされたデータ（任意選択で、上書きされたミラーファイル）が、元の記憶デバイスロケーションにあるターゲットファイルに書き込まれる。代替的に、安全メモリロケーションにおける上書き動作の分析に基づいて、悪意のあるコードが上書き動作と関連付けられるものとして識別される場合、安全なロケーションにある上書きされたデータを削除する（任意選択で、永続的に削除する）ことができ、かつ／または、悪意のあるコードとの関連性の通知（ｉｎｄｉｃａｔｉｏｎ）を作成することができる（例えば、ポップアップメッセージが、クライアント端末のディスプレイ上に提示される）。代替または追加として、上書き動作によって作成される改変データが、異なる記憶ロケーション内に（例えば、記憶デバイス内に）格納されてもよい。格納された改変データは、上書き動作を発行するプロセスを分析するために使用することができ、かつ／または、上書き動作が偽陽性として識別される（例えば、上書きコマンドを発行するプロセスが実際は認可されたプロセスであった場合に、悪意のあるコードとして誤って識別される）場合に、改変データに従ってファイルを復元するために使用することができる。
【００４５】
本明細書で説明するシステムおよび／または方法は、ファイルの内容を暗号化すること（例えば、クリプトウェア、ランサムウェア）、および／または、（例えば、元のデータを回復するのに使用することができない無関係なデータによってファイルを上書きすることによって）ファイルを削除することによって、コンピュータの記憶デバイス（任意選択で、永続化記憶装置）内に格納されているファイルを上書きする、コンピュータのメモリ上で実行している悪意のあるコードを識別するという技術的課題に対する技術的解決策を提供する。
【００４６】
本明細書で説明するシステムおよび／または方法は、記憶デバイス（任意選択で、永続化記憶装置）ロケーション内に格納されているファイルを標的とする上書き動作を、安全であると指定される別のメモリロケーションへリダイレクトすることに関する。システムおよび／または方法は、上書き動作を安全メモリロケーションへリダイレクトすることによって、上書き動作の影響をターゲットファイルから分離する。ターゲットファイルをミラーリングするミラーファイルを、物理的な安全メモリロケーション内に作成することができる。ミラーファイルは、リダイレクトされた上書き動作によって上書きされ得る。上書きされたミラーファイルは、上書き動作が悪意のあるコードと関連付けられるかどうかを決定するために分析される。ターゲットファイルを悪意のあるコードによる上書き動作から保護することによってターゲットファイルの完全性を保持するために使用される新たなデータを、ミラーファイルの形態で作成することができる。
【００４７】
本明細書で説明するシステムおよび／または方法は、例えば、重要なデータファイルおよび／またはコンピュータ機能を実施する役割を担うファイル（例えば、カーネルファイル、低レベル機能ドライバ、オペレーティングシステムファイル）などのファイルを、上書きされないように保護することによって、クライアント端末および／またはサーバのようなコンピュータの性能を改善する（例えば、プロセッサおよび／またはメモリ利用の改善）。ファイルを上書きすることによって、例えば、オペレーティングシステムがあるタスクを実施することが妨げられる、コンピュータが使用不可能になる、および／または、上書きされたファイルを復元するのに多大な労力を要するなど、コンピュータが損傷する可能性がある。上書きは、既存の利用可能な処理および／またはメモリリソースを利用し得る。
【００４８】
したがって、本明細書で説明するシステムおよび／または方法は、記憶デバイス、任意選択で永続化記憶装置によるファイルの安全な記憶において生じる実際の技術的課題を克服するためのコンピュータ技術に密接に結びついている。
【００４９】
本発明の少なくとも１つの実施形態を詳細に説明する前に、本発明は、その適用において、以下の説明に記載され、および／または図面および／または実施例に示される構成要素および／または方法の構築および配列の詳細に必ずしも限定されないことを理解されたい。本発明は、他の実施形態が可能であり、または様々な方法で実践もしくは実行することが可能である。
【００５０】
本発明は、システム、方法、および／またはコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する１つのコンピュータ可読記憶媒体（または複数の媒体）を含むことができる。
【００５１】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、磁気記憶デバイス、半導体記憶デバイス、または前述のものの任意の好適な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の包括的でないリストは、以下のものを含む：ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、および前述のものの任意の好適な組合せ。本明細書で使用するコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波路または他の伝送媒体を通って伝搬する電磁波（例えば、光ファイバケーブルを通過する光パルス）、またはワイヤを通して伝送される電気信号などの一過性な信号自体であると解釈されるべきでない。
【００５２】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、またはネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および／またはワイヤレスネットワークを介して外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および／またはエッジサーバを含むことができる。各コンピューティング／処理デバイスのネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【００５３】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ、Ｃ＋＋などのようなオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、ユーザコンピュータで全面的に、ユーザコンピュータで部分的に、スタンドアロンソフトウェアパッケージとして、ユーザコンピュータで部分的におよびリモートコンピュータで部分的に、またはリモートコンピュータもしくはサーバで全面的に実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意のタイプのネットワークによってユーザコンピュータに接続されてもよく、または外部コンピュータへの接続がなされてもよい（例えばインターネットサービスプロバイダーを使用するインターネットを通して）。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個人専用にすることができる。
【００５４】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータプログラム製品のフローチャート図および／またはブロック図を参照して本明細書で説明される。フローチャート図および／またはブロック図の各ブロック、およびフローチャート図および／またはブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装できることを理解されよう。
【００５５】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されて、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサにより実行される命令が、フローチャートおよび／またはブロック図の１つまたは複数のブロックに明記される機能／行為を実施するための手段を作成するように、機械を生成してもよい。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブルデータ処理装置、および／または他のデバイスに、特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に格納されてもよく、命令を格納したコンピュータ可読記憶媒体が、フローチャートおよび／またはブロック図の１つもしくは複数のブロックに明記される機能／行為の態様を実装する命令を組み込んだ製品を含むようにする。
【００５６】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードされて、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実行させ、コンピュータまたは他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートおよび／またはブロック図の１つもしくは複数のブロックに明記される機能／行為を実施するように、コンピュータ実装プロセスを生成することもできる。
【００５７】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための１つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがある。例えば、連続して示された２つのブロックは、関係する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および／またはフローチャート図の各ブロック、およびブロック図および／またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行するかまたは専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースシステムによって実装されてもよいことにも留意されたい。
【００５８】
本明細書で使用するファイルという用語は、例えば、テキストファイル、データベースプログラムによって使用するためのデータベースファイル、ワードプロセッシング文書によって使用するための文書ファイル、表計算プログラムによって使用するためのスプレッドシートファイル、グラフィックプログラムによって使用するためのグラフィックファイル、コンパイラによって使用するためのライブラリファイル、カスタム設計されたプログラムによって使用するためのカスタマイズされたファイル、ユーザによって使用されるデータセット（すなわち、ユーザ定義のフォーマットに従う）、ＰＤＦリーダによって使用するためのポータブルドキュメントフォーマット（ＰＤＦ）を使用して格納される文書、プレゼンテーションプログラムによって使用するためのプレゼンテーションファイル（例えば、スライドショー）、および、作動しているプログラムによって使用される一時ファイルなどの、あるフォーマットに従って格納することができるデータを意味する。
【００５９】
例えば、ファイルの上書きおよび／または暗号化など、本明細書で使用するファイルに対する参照は、例えば、ファイルの１つまたは複数の部分の上書きおよび／または暗号化など、ファイルの部分を参照する場合があり得る。ファイルという用語は、ファイル全体、および／または、ファイルの１つもしくは複数の部分を参照する場合がある。
【００６０】
本明細書において使用する（悪意のあるコードによって）上書きされた、という用語は、例えば、暗号化および／または削除など、元のデータを破壊し、かつ／または、元のデータを回復することを不可能もしくは困難にする他のメカニズムとの交換である場合があり得る。
【００６１】
ここで、本発明のいくつかの実施形態による、記憶デバイス内に格納されているファイルを、悪意のあるコードによって上書きされないように保護するための方法のフローチャートである、図１を参照する。本方法は、悪意のあるものである可能性のあるコードによって発行される上書き動作を、安全メモリロケーションへリダイレクトする。上書き動作の影響は、上書き動作が悪意のあるコードと関連付けられるかどうかを決定するために分析される。本発明のいくつかの実施形態による、コンピューティングユニット２０４の記憶デバイス２０２内に格納されているファイルを、悪意のあるコードによって上書きされないように保護するシステム２００のブロック図である、図２も参照する。システム２００は、例えば、処理ユニット２０６がプログラム記憶装置２０８内に格納されているコード命令を実行することによって、図１を参照して説明する方法の行為を実行することができる。
【００６２】
図１を参照して説明するシステム２００および／または方法（すなわち、本方法に基づくコード命令が１つまたは複数のプロセッサによって実行される場合）は、ファイルを、例えば、クリプトウェア、ランサムウェア、ウイルス、ワーム、トロイの木馬、スパイウェア、およびアドウェアなどの悪意のあるコードによって破壊されないように保護する。悪意のあるコードは、実行可能コード、スクリプト、アプリケーション、および他のソフトウェアとしてインストールされる場合がある。
【００６３】
コンピューティングユニット２０４は、例えば、クライアント端末、サーバ、移動デバイス、デスクトップコンピュータ、シンクライアント、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、ウェアラブルコンピュータ、メガネコンピュータ、およびウォッチコンピュータとして実装されてもよい。
【００６４】
処理ユニット２０６は、例えば、中央処理ユニット（ＣＰＵ）、グラフィック処理ユニット（ＧＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、および特定用途向け集積回路（ＡＳＩＣ）として実装されてもよい。処理ユニット２０６は、クラスタとしておよび／または１つもしくは複数のマルチコア処理ユニットとして、並列処理用に配置されてもよい１つもしくは複数のプロセッサ（ホモジニアスまたはヘテロジニアス）を含むことができる。
【００６５】
プログラム記憶装置２０８は、例えば、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）など、処理ユニット２０６によって、ならびに／または、例えば、不揮発性メモリ、磁気メディア、半導体メモリデバイス、ハードドライブ、リムーバブルストレージ、および光メディア（例えば、ＤＶＤ、ＣＤ−ＲＯＭ）など、記憶デバイスなどによって実施可能なコード命令を格納する。
【００６６】
コンピューティングユニット２０４は、例えば、クリプトウェアのような挙動を呈する安全なアプリケーションのホワイトリスト２１０Ｂなど、データを格納するためのデータリポジトリ２１０を含むことができる。データリポジトリ２１０は、例えば、メモリ、ローカルハードドライブ、リムーバブルストレージユニット、光ディスク、記憶デバイスとして、ならびに／または、リモートサーバおよび／もしくはコンピューティングクラウド（例えば、ネットワーク接続を使用してアクセスされる）として実装されてもよい。
【００６７】
記憶デバイス２０２は、本明細書で説明するように、悪意のあるコードによって上書きされないように保護される１つまたは複数のターゲットファイル２０２Ｂを格納する。記憶デバイス２０２は、任意選択で、例えば、ハードディスク、および／またはフラッシュメモリなど、永続（すなわち、不揮発性）記憶装置として実装される。記憶デバイス２０２は、例えば、一時記憶装置、永続化記憶装置、高速メモリ、低速メモリ、コンピュータと一体化されたメモリデバイス、外部ストレージユニット（例えば、ケーブルによって、ワイヤレスリンクを介して、および／またはネットワーク接続を介してアクセスされる）、一次記憶装置、メインメモリ、半導体メモリ、ハードドライブ、光学ドライブ、ランダムアクセスメモリ、揮発性メモリ、不揮発性メモリ、中央処理ユニット（ＣＰＵ）メモリ、キャッシュ、ソリッドステートドライブ、内蔵メモリ、リムーバブルメモリ、および／または他のデータ記憶ハードウェア実施態様として実装することができる。
【００６８】
安全メモリロケーション２１２は、本明細書で説明するように、上書き動作を記憶デバイス２０２内に格納されているターゲットファイル２０２Ｂから安全メモリロケーション２１２へリダイレクトするために、任意選択でターゲットファイル２０２Ｂのミラーファイル２１２Ｂを上書きするために、指定される。安全メモリロケーション２１２は、メインメモリ、指定されたメモリ、指定された記憶デバイス、および／または記憶デバイス２０２のパーティションで区切られたかつ／または指定された領域であってもよい。
【００６９】
任意選択で、記憶デバイス２０２内に格納されているファイル２０２Ｂに対する上書き動作を実施するように試行するコード（例えば、悪意のあるコード）は、安全メモリロケーション２１２内に格納されているミラーファイル２１２Ｂから分離される。分離は、望ましくない悪意のある活動を防止するために、上書き動作を実施するコードの挙動を制限し、安全に制御するように設計される。安全メモリロケーション２１２は、例えば、サンドボックス、または、悪意のあるプログラムの実行を制御するように設計されている他のアプリケーションを使用して実装することができる。別の実施態様において、安全メモリロケーション２１２は、カーネル空間内で実行することができ、記憶デバイス２０２内に格納されているファイル２０２Ｂを上書きするように試行するプロセスのコードは、ユーザモードで実行することができる。別の実施態様において、ハイパーバイザ／ＶＭＭ（仮想マシンモニタ）を使用して、別個の仮想マシン内にミラーファイルを格納して、より大きい分離を達成することができる。
【００７０】
コンピューティングユニット２０４は、例えば、ネットワークインターフェースカード、ワイヤレスネットワークに接続するためのワイヤレスインターフェース、ネットワーク接続のためのケーブルに接続するための物理インターフェース、ソフトウェアにおいて実装される仮想インターフェース、より上位層のネットワーク接続を提供するネットワーク通信ソフトウェア、および／または他の実施態様のうちの１つまたは複数など、ネットワーク２１６に接続するためのネットワークインターフェース２１４を含むことができる。コンピューティングユニット２０４は、例えば、ホワイトリスト２１０Ｂに対する更新をダウンロードし、ファイルの上書きを試行した悪意のあるコードを報告および／または識別するために、ネットワーク２１６を使用して１つまたは複数のリモートサーバ２１８にアクセスすることができる。
【００７１】
記憶デバイス２０２および／または安全メモリ２１２は、例えば、プログラム記憶装置２０８内で、データリポジトリ２１０内で、外部（例えば、永続またはリムーバブル）記憶ユニット２２０によって、および／または、リモート記憶デバイス（例えば、ネットワークノードとしてかつ／またはコンピューティングクラウド内に配置される）として機能するサーバ２１８によって実装することができる。
【００７２】
コンピューティングユニット２０４は、ユーザがデータを入力し、および／または、提示されているデータを閲覧することを可能にするユーザインターフェース２２２を含むか、または、ユーザインターフェース２２２と通信する。例示的なユーザインターフェース２２２は、例えば、タッチスクリーン、ディスプレイ、キーボード、マウス、ならびに、スピーカおよびマイクロフォンを使用する音声起動ソフトウェアのうちの１つまたは複数を含む。
【００７３】
図１を参照して説明されている方法の行為のうちの１つまたは複数は、（例えば、プログラム記憶装置２０８によって）コード命令として記憶することができ、１つまたは複数のプロセッサ（例えば、コンピューティングユニット２０４の処理ユニット２０６）によって実行することができる。
【００７４】
１０２において、記憶デバイス２０２に格納されているファイル２０２Ｂが、少なくとも１つのファイルの少なくとも一部分にアクセスすることを求める要求を検出するために監視される。任意選択で、要求は、ファイル２０２Ｂの少なくとも上記部分に対する上書き動作を含む。上書き動作は、元のファイル２０２Ｂ内の空でないロケーションに対する上書き動作、および／または、元のファイル２０２Ｂ内の空でないロケーションを変化させる動作に基づいて検出することができる。
【００７５】
本明細書で使用するターゲットファイルという用語は、上書き動作を実施することを求める要求の標的であるファイルを意味する。
【００７６】
監視は、例えば、オペレーティングシステムのカーネルモードコンポーネントであってもよいファイルシステムドライバ、および／または、上書き動作を実施するためにファイルにアクセスすることを求める、オペレーティングシステム（または他の下位システム）に対する要求を監視するように設計されている他のコード命令によって実施することができる。
【００７７】
本明細書で使用する上書きという用語は、ターゲットファイルの内容を破壊することを意味し得る。単純な回復ツールを使用して、上書きされたファイルを復元することはできない。上書きという用語に含まれ得る例示的な動作は、ファイルの少なくとも上記部分を暗号化すること、（例えば、数ゼロなど、ファイルのデータの上に無関係な値を書き込むことによって）ファイルの少なくとも上記部分の内容を変化させること、および、ファイルの上記部分の削除（例えば、回復することが困難または不可能である永続的削除）のうちの１つまたは複数を含む。
【００７８】
任意選択で、１０４において、１つまたは複数のプロセッサによって実行されるコード命令は、ターゲットファイルが保護の対象として指定されているかどうかを決定する。任意選択で、ターゲットファイルに対する上書き動作を実施することを求める要求と関連付けられる各ターゲットファイルを、保護の対象として指定することができる。代替的に、ターゲットファイルが保護の対象として指定されている場合、および、上書き動作が、ファイルを保護することなく進行することを可能にされている場合を決定するために、分析が実施される。分析は、悪意のあるコードによって破壊される危険性が最も高いターゲットファイル、および／または、悪意のあるコードによって破壊された場合に高い損失（例えば、財務上の損失）を引き起こすことになるファイルを保護するために利用可能な計算および／またはメモリリソースを使用することによって、トレードオフに基づいて設計することができる。
【００７９】
任意選択で、保護の対象としてファイルを指定することは、例えば、ユーザがファイルを手動で規定することによって、および／または、所定の規則セットに基づいてファイルを自動的に指定するコードによって、ファイルを上書きすることを求める要求が検出される前に、前もって実施することができる。代替または追加として、保護の対象としてファイルを指定することは、ファイルの上書きを求める要求を検出したことに応答して、動的に実施されてもよい。各ターゲットファイルは、上書き動作が進行することを許可されているかどうか、または、ファイルが保護プロセスを受けているかどうかを決定するために、リアルタイムに分析することができる。
【００８０】
任意選択で、保護の対象としてファイルを指定することは、例えば、保護すべきファイルを手動で選択（例えば、クリック）するためにユーザインターフェース（例えば、グラフィカルユーザインターフェース（ＧＵＩ））を使用して、ユーザによって手動で実施される。別の例において、ユーザは、ＧＵＩを使用して、例えば、あるフォルダ内のすべてのファイル、あるファイル名を有するすべてのファイル、ファイルタイプもしくは拡張子（例えば．ｄｏｃで終わる）、および／または、あるファミリのファイル拡張子を含み得るあるタイプのすべてのファイル（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）ファイル）など、いずれのファイルが保護されるべきかを規定する規則セットを入力することができる。
【００８１】
代替的に、ファイルの指定は、任意選択で、所定の規則セット（例えば、データリポジトリ２１０内の規則セットリポジトリ内に格納されている）に基づいて、自動的に実施される。
【００８２】
ファイルの指定は、保護の対象として指定される（例えば、規則セットによって規定される）所定のファイルフォーマットによるファイルのフォーマットの分析に従って自動的に実施することができる。ファイル構造および／またはファイルフォーマットは、ファイル構造および／またはフォーマットが、保護の対象として指定される構造および／またはフォーマットに対応する可動かを決定するために分析することができる。ファイルフォーマットは、例えば、財務記録、診療記録、個人記録、企業職務（ｃｏｒｐｏｒａｔｅ  ｗｏｒｋ  ａｓｓｉｇｎｍｅｎｔ）、製品定義、および／または、破壊された場合に再現することが困難、不可能、かつ／もしくは財務的に費用がかかる場合がある他のデータなど、慎重に扱うべきおよび／または貴重なデータを格納するファイルに基づいて規定することができる。例示的なファイルフォーマットは、ワードプロセッシング文書ファイルフォーマット、スプレッドシートファイルフォーマット、ＰＤＦファイルフォーマット、動画フォーマット、ならびにカスタマイズされたファイルフォーマット（例えば、カスタマイズされたビジネスクリティカル（ｂｕｓｉｎｅｓｓ  ｃｒｉｔｉｃａｌ）によって使用される）およびプレゼンテーションファイルフォーマットを含む。
【００８３】
代替または追加として、ファイルは、要求の分析に基づいて、保護の対象として指定される。ファイルは、要求が、ファイルのヘッダに上書きする動作を含む場合に、保護の対象として指定することができる。ファイルのヘッダへの上書きは、悪意のあるコードと関連付けられる場合がある。
【００８４】
代替または追加として、ファイルは、要求の分析に基づいて、保護の対象として指定される。ターゲットファイルを上書きすることを求める要求が、ディスプレイ上に提示される可視ウィンドウを有しないアプリケーションと関連付けられる場合、ターゲットファイルが、保護の対象として自動的に指定され得る。ユーザとのインターフェース（例えば、ＧＵＩ）に対する関連性を有しないバックグラウンドで作動しているアプリケーションが、悪意のあるコードとして関連付けられ得る。
【００８５】
代替または追加として、ターゲットファイルを上書きする要求が検出された場合、ユーザインターフェース（例えば、ＧＵＩ）を、ユーザが上書き要求を安全として確認し（また、上書き動作を承認し）、および／または、上書き動作が進行するのを防止するための入力オプション（例えば、選択アイコン）とともに、ディスプレイ（例えば、ユーザインターフェース２２２）上に提示することができる。ＧＵＩは、上書き要求が悪意のあるコードと関連付けられるものとして識別されるたびに、および／または、例えば、指定されているファイルフォーマットに対する、当該ファイルフォーマットを無効にする上書き要求など、（例えば、規則セットによる）悪意のあるコードと関連付けられる危険性が高いある上書き要求について、提示され得る。ユーザが上書き要求を、安全アプリケーションに由来するものとして識別した場合、ユーザが規定するアプリケーションを、ファイルを上書きすることを許可された安全アプリケーションのホワイトリストに追加することができる。ホワイトリストは、例えば、ファイル暗号化プログラム（例えば、ファイルの安全性を増強するための）およびファイル圧縮プログラムなど、安全であるが、クリプトウェアのような挙動を呈するアプリケーションを記憶することができる。ホワイトリストは、例えば、データリポジトリ２１０内に格納されているホワイトリストリポジトリ内に格納することができる。
【００８６】
いくつかの実施態様において、ブロック１０４は、例えば、いずれのファイルが保護の対象として指定されるかを規定し、保護されているファイルの監視を実施するために、ブロック１０２の前に実行されてもよい。
【００８７】
任意選択で、１０６において、ターゲットファイルに対する上書き動作を実施することを求める要求と関連付けられるコード命令の１つまたは複数のスタックトレース内のレコードが、悪意のあるコードとの関連性を決定するために分析される。レコードは、スタックトレースを含むフローデータと、上書き動作要求と関連付けられるコード命令に関係するスレッドデータ、モジュールデータ、およびプロセスデータのうちの１つまたは複数を含むことができる。悪意のあるコードとの関連性を決定するためのスタックトレースおよび／またはフローデータを使用した分析は、ファイルがユーザによって開かれるときにトリガすることができる。開かれているファイルと関連付けられる悪意のあるコードが検出することによって、開かれているファイルのブロックがトリガされ得る。上書き保護メカニズム（本明細書で説明する）は、たとえスタックベースのアルゴリズムが悪意のある活動との関連性の検出に失敗した場合であっても、起動される。ファイルをホストするコンピューティングデバイスは、たとえユーザが悪意のあるコードの影響を受けたファイル（ユーザが、このファイルは正規のものであると考えて開き得るファイル）を開こうとしたときであっても、保護される。
【００８８】
悪意のあるコードとの関連性を決定するためのスタックトレースおよび／またはフローデータの分析の追加の詳細は、同じ譲受人に譲渡され、同じ発明者らのうちの少なくとも１人によって成された、参照によりその全体が本明細書に組み込まれている、「悪意のあるコードの検出のためのシステムおよび方法（ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＦＯＲ  ＭＡＬＩＣＩＯＵＳ  ＣＯＤＥ  ＤＥＴＥＣＴＩＯＮ）」と題する特許文献１（本明細書においては「’９１３」としても参照される）を参照して説明される。’９１３を参照して説明される方法は、書き込み許可でファイルが開かれたことに応答して、データを上書きする（例えば、データを暗号化および／または破壊する）悪意のあるコードを識別するように適合することができる。例えば、接続確立（’９１３を参照して説明するような）は、書き込み許可（本明細書で説明するような）を伴ってファイルを開くように適合することができる。’９１３を参照して説明される方法は、ファイルへのアクセスおよび／または上書きの試行を、接続確立試行として取り扱うことによって適合することができる。ファイルが書き込み許可で開かれているか、または、上書きされている場合、接続確立分析と同様の分析が、ファイルアクセスが許可されるべきであるかどうかを決定するために行われる。そうでない場合、ファイルへのアクセスは拒絶される。分析は１回だけ行われる。
【００８９】
悪意のあるコードが識別された場合、例えば、上書き動作をブロックするために、ならびに／または、悪意のあるコードを分離および／もしくは除去するために、ブロック１１６を実行することができる。代替または追加として、悪意のあるコードが識別された場合、または、悪意のあるコードの可能性が識別される場合（例えば、悪意のあるコードが安全なコードである可能性がある）、ターゲットファイルを保護することができ（本明細書で説明するように）、上書き動作を、本明細書で説明するように安全メモリ２１２にリダイレクトすることができる。
【００９０】
代替または追加として、上書き動作を実施することを求める要求と関連付けられるコード命令は、当該コード命令がクリプトウェアのような挙動を呈する安全アプリケーションのホワイトリスト内で識別されない場合には、悪意のあるコードと関連付けられると仮定される（それゆえ、ブロック１１０を参照して説明されるように、安全メモリ２１２において上書き動作を実施するようにリダイレクトされる）。
【００９１】
１０８において、保護の対象として指定されているファイル２０２Ｂのミラーファイル２１２Ｂが、安全メモリロケーション２１２において作成される。ファイル２１２Ｂは、ファイル２０２の内容全体のミラーであってもよく、または、その部分（例えば、ファイルヘッダ、ファイルの最初の部分、ファイルの慎重に取り扱うべきデータ）のミラーであってもよい。
【００９２】
任意選択で、ミラーファイル２１２Ｂは、ファイル２０２Ｂの、上書き動作によって上書きされるように指定される部分を含む。任意選択で、ミラーファイル２１２Ｂは、ファイル２０２Ｂの、上書き動作によって影響を受けない部分を含まない。ファイル２０２Ｂの、上書きされるように指定されている部分を格納すること、および／または、ファイル２０２Ｂの、上書き動作によって影響を受けない部分を格納しないことによって、ミラーファイル２１２Ｂを格納するための記憶容量が低減し、例えば、上書き動作がファイル２０２Ｂの小さい領域に影響を与える場合、ミラーファイル２１２Ｂは、ファイル２０２Ｂよりも記憶空間が大幅に小さいストレージであり得る。
【００９３】
ミラーファイル２１２Ｂは、ファイル２０２Ｂの更新されたバージョンを表し、動作が進行することを許可された場合のファイル２０２Ｂの状態を表すことに留意されたい。ファイル２０２Ｂに影響を与える動作は、ミラーファイル２１２Ｂに転送（例えば、リダイレクト、マッピング）される。例えば、ファイル２０２Ｂを読み出そうと試行しているあるプロセス（ファイル２０２Ｂを上書きしようと試行している悪意のあるものである可能性のあるコードとは無関係であり得る）は、ファイル２０２Ｂの最新の更新された、一貫したバージョンを含むミラーファイル２１２Ｂから読み出すように方向付けられる。
【００９４】
ミラーファイルの作成は、（例えば、ブロック１０２を参照して説明したように）ターゲットファイルを上書きすることを求める要求を識別したことに応答してトリガされて、リアルタイムで実施することができる。例えば、異なるターゲットファイルを上書きすることを求める新たな要求が検出されるとき、安全メモリ２１２の同じまたは同様のブロックを、異なるミラーファイルを作成するために再使用することができる。安全メモリ２１２のサイズは、相対的に小さくすることができ、例えば１つもしくは複数のファイル、またはファイルの部分を含むように選択することができる。ミラーファイルの作成は、（例えば、ブロック１０４を参照して説明したように）保護の対象としてファイルが指定されることを受けて、前もって実施することができる。いくつかの実施態様において、ブロック１０８は、ブロック１０２および／または１０４の前に実行されてもよいことに留意されたい。
【００９５】
代替的に、ミラーファイル２１２Ｂは作成されない。安全メモリ２１２は、必ずしもミラーファイル２１２Ｂを作成せずに使用されてもよい。
【００９６】
１１０において、任意選択で、ミラーファイル２１２Ｂを上書きするために、上書き動作が、安全メモリ２１２にリダイレクトされる。上書き動作をリダイレクトすることによって、記憶デバイス２０２にあるターゲットファイル２０２Ｂが、上書き動作によって上書きされないように保護される。ファイル２０２Ｂは、安全メモリ２１２において実施される上書き動作の間に損傷を受けていないままである。例えば、アプリケーションが、２０バイト長のバッファ内に格納されている値を使用してオフセット５０においてターゲットファイル２０２Ｂを上書きする、識別されている動作と関連付けられる場合、バッファの内容をミラーファイル２１２Ｂのオフセット５０にコピーすることによって（すなわち、ターゲットファイル２０２Ｂを上書きするのではなく）、リダイレクトが実施される。代替または追加として、ファイル変更は、ファイルの修正を迅速に発見および管理するように設計されているデータ構造（例えば、赤黒領域木）内に格納することができる。ファイルの格納自体は、例えば、メモリを共有するのに使用されるコピーオンライトメカニズムと同様に管理することができる。例えば、ファイルメモリはページ（４キロバイト）サイズ部分に分割することができ、ページは、ファイルのそれぞれの部分への書き込みが検出されるときにコピーされる。
【００９７】
任意選択で、ミラーファイルは、ファイルの連続した部分について連続的にコピーすることによって作成される。それぞれの連続した部分への書き込み動作によって、例えば、コピーオンライトメカニズムと同様に、ミラーファイルのロケーションへのコピーがトリガされる。各連続した部分は、所定のサイズ閾値に従って、ミラーファイルの対応するロケーションにコピーすることができる。
【００９８】
リダイレクトは、記憶デバイス２０２内に格納されているターゲットファイル２０２Ｂではなく、ミラーファイル２１２Ｂ（または安全メモリ２１２内の別のロケーション）への書き込み動作のパラメータを修正することによって実施することができる。
【００９９】
１１２において、安全メモリ２１２における（任意選択でミラーファイル２１２Ｂにおける）リダイレクトされた上書き動作の間に格納されたデータが分析される。安全メモリ２１２の内容に対する（任意選択で、ミラーファイル２１２Ｂの内容に対する）上書き動作の影響を分析することができる。分析は、上書き動作が悪意のあるコードと関連付けられるかどうか、または、上書き動作が安全なコードと関連付けられるかどうかを決定するために実施される。
【０１００】
上書き動作の分析は、遅延および／またはトリガイベントの後、例えば、ある時間閾値が過ぎた後（例えば、上書きされているファイルにアクセスするプロセスが実行を完了するのに十分に長い）、および／または、開かれているファイルが閉じられるときに実施することができる。
【０１０１】
任意選択で、コンテンツミラーファイル２１２Ｂに対する上書き動作の影響の分析は、上書き動作を実施するように試行するプロセスがファイルを閉じる（例えば、ファイルハンドルを閉じる）ときにトリガされる。代替または追加として、コンテンツミラーファイル２１２Ｂに対する上書き動作の影響の分析は、ミラーファイル２１２Ｂがあるサイズ（例えば、所定の記憶容量）に達したときにトリガされる。所定の記憶容量は、例えば、ミラーファイル２１２Ｂを格納する安全メモリ２１２の記憶容量に基づいて、かつ／または、所望の処理速度に従って（すなわち、複数のより小さいチャンクは、１つのより大きいチャンクよりも高速に分析することができる）決定することができる。
【０１０２】
分析は、安全メモリ２１２の上書きされない部分を含み得る、安全メモリ２１２に（例えば、ミラーファイル２１２Ｂを介して）書き込まれるデータの分析を含み得る。例えば、ミラーファイル２１２Ｂは部分的に上書きされ得、例えば、上書きプロセスの一部としてフィールドが変更され得る。フィールドの新たに書き込まれた内容が分析されてもよく、かつ／または、当該フィールドを含むファイルの内容全体が分析されてもよい。
【０１０３】
分析は、ファイルが上書き命令によって上書きされる前に、上書き命令を実行するプロセスによってファイルが読み出されたかどうかをチェックすることを含むことができる。上書きされる前に、最初にファイルが読み出されたかどうかをチェックすることによって、悪意のあるコードが、（例えば、ユーザがランダムを支払うと）暗号化されたファイルを回復することを可能にするために、ファイルを暗号化する前に最初にファイルを読み出すという仮定に基づく偽陽性識別の可能性を低減する（すなわち、コードが実際は安全な認可されたコードである場合に悪意のあるコードが誤って識別される機会を低減する）ことができる。
【０１０４】
上書き動作の分析は、例えば、上書き動作の一部として所定のサイズのデータが格納された（例えば、所定のサイズのミラー２１２Ｂが上書きされた）ときなど、上書き動作の間に動的に分析することができる。所定のサイズのデータによって規定される閾値を使用することは、ミラーファイル２１２Ｂの当該サイズがメモリ２１２の大部分を消費することを防止することの助けとなる。分析は、分析されている各チャンクについてミラーファイル２１２Ｂを繰り返し作成することによって、ファイル２０２Ｂのチャンクに対して実施することができる。ファイル２０２Ｂのチャンクに基づく連続した作成されているミラーファイル２１２Ｂは、安全メモリ２１２の同じ（または同様のもしくは隣接する）ロケーションに上書きすることができる。安全なコードと関連付けられるものとして決定されているチャンクは、記憶装置２０２に働きかけることを許可され得る。悪意のあるコードと関連付けられるものとして決定されているチャンクは、以下の任意選択の特徴のうちの１つを使用して処理され得る、すなわち、記憶装置２０２に働きかけることを防止される、記憶装置２０２に働きかけることを許可するか、もしくは、チャンクが悪意のあるコードによって影響を受けるかどうかをユーザに尋ねるＧＵＩを提示する、および／または、ミラーファイル２１２Ｂを除去する。代替または追加として、上書きプロセスの分析は、上書き動作が完了したときに分析されてもよい。
【０１０５】
分析は、ファイルに対する上書き動作を実行するプロセスが、１つまたは複数の他のファイルに対して追加の上書き動作を実施するかどうかをチェックすることによって実施することができる。上書き動作を実行するプロセスが、例えば、少なくとも２つ、５つ、１０個、または他の数のファイルなどの、所定数のファイルに対して追加の上書き動作を実施した場合に、悪意のあるコードとの関連性を識別することができる。上書き動作が所定数のファイルに対して実施されることに基づいて悪意のあるコードとの関連性を識別することによって、悪意のあるコードが攻撃の一部として複数のファイルを上書き（例えば、暗号化）しようと試行するという仮定に基づく偽陽性識別の確率を低減することができる。
【０１０６】
分析は、ファイルの部分の上書き動作の後にファイルの部分を削除しようとする試行（例えば、削除動作）を検出することによって実施することができる。削除動作は、上書き動作を命令するプロセスによって命令され得る。悪意のあるコードの識別は、悪意のあるコードがファイルを上書き（例えば、ファイルを暗号化）した後に、悪意のあるコードがファイルを削除しようと試行し得るという観察に基づく。実際のファイル２０２Ｂは、上書き動作および／または削除動作によって消去されず、および／または、影響を受けないことに留意されたい。
【０１０７】
分析は、ファイルをリネームし、および／または、ファイルの拡張子を変更しようとする試行（または、リネームする命令および／または拡張子を変更する命令の実行）を検出することによって実施することができる。ファイルのリネームおよび／またはその拡張子の変更は、上書き動作の一部として、例えば、上書き動作の前に、上書き動作の少なくともいくつかと並行して、および／または、上書き動作の後に実施することができる。悪意のあるコードの識別は、ファイルのリネームおよび／またはその拡張子の変更の試行（またはその実行）の観測に基づくことができる。
【０１０８】
任意選択で、分析は、所定のファイル構造（例えば、ターゲットファイル２０２Ｂによって規定され得る）に従ってミラーファイル２１２Ｂのファイル構造を検証することによって実施される。ミラーファイル２１２Ｂは、ファイルフォーマットによって規定されているフィールドを識別するためにパースすることができる。それぞれのフィールド内に格納され得る許容可能な値（例えば、所定のファイル構造フォーマットによって、ユーザ定義の規則セット、もしくは他の所定の規則によって規定される）に基づいて、各フィールド内に格納されているデータの完全性を検証することができる。例えば、ターゲットファイル２０２Ｂのファイル作成日を格納するフィールドは、将来の日付を格納してはならない。上書き動作後にミラーファイル２１２Ｂのファイル作成フィールド内に将来の日付が存在する場合、これは、悪意のあるコードとの関連性を示唆する。
【０１０９】
別の例において、ミラーファイル２１２Ｂが悪意のあるコードと関連付けられる上書き動作によって暗号化または他の様態で破壊される場合を決定するために、ミラーファイル２１２Ｂのファイルフォーマットは、ターゲットイメージファイルフォーマット（ＴＩＦＦ：Ｔａｒｇｅｔ  Ｉｍａｇｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ）に基づく（例えば、ターゲットファイル２０２ＢのＴＩＦＦに基づく）ように決定される。ミラーファイル２１２Ｂの内容は、ミラーファイル２１２Ｂのヘッダが、以下のような、ＴＩＦＦによって定義されるイメージファイルヘッダ（ＩＦＢ）に従うかどうかを決定するために、分析される。
【０１１０】
ｔｙｐｅｄｅｆ  ｓｔｒｕｃｔ  ＿ＴｉｆｆＨｅａｄｅｒ
｛
ＷＯＲＤ    Ｉｄｅｎｔｉｆｉｅｒ；    ／＊  バイトオーダ識別子  ＊／
ＷＯＲＤ    Ｖｅｒｓｉｏｎ；          ／＊  ＴＩＦＦバージョン数（常に２Ａｈ）  ＊／
ＤＷＯＲＤ  ＩＦＤＯｆｆｓｅｔ；      ／＊  最初のイメージファイルディレクトリのオフセット＊／
｝  ＴＩＦＨＥＡＤ；
【０１１１】
Ｉｄｅｎｔｉｆｉｅｒフィールドは、ＩＩまたはＭＭの２つの可能な値のうちの１つのみを含まなければならない。Ｖｅｒｓｉｏｎフィールドは２Ａに設定されなければならない。ＩＦＤＯｆｆｓｅｔフィールドは、別の構造の始まりに対するオフセットを格納し、それゆえ、ＩＦＤＯｆｆｓｅｔフィールド内に格納される値は、ミラーファイル２１２Ｂのサイズよりも小さくなければならない。
【０１１２】
代替または追加として、分析は、ミラーファイル２１２Ｂのデータが上書き動作によって暗号化されることを識別することによって実施される。ミラーファイル２１２Ｂの暗号化は、例えば、シャノンの方法（Ｓｈａｎｎｏｎ’ｓ  ｍｅｔｈｏｄ）を使用してミラーファイル２１２Ｂのエントロピーを算出することによって検出することができる。算出されたエントロピー値は、暗号化との関連性（例えば、暗号化されている確率、または、暗号化されているまたは暗号化されていないという決定）を規定する要件（例えば、関数、閾値、範囲）を使用して評価することができる。フィールドはミラーファイル２１２Ｂ内で（例えば、ミラーファイル２１２Ｂをパース（ｐａｒｓｉｎｇ）することによって、および／または、ミラーファイル２１２Ｂのファイルタイプの定義によって）識別することができ、エントロピーは、各フィールドについて算出することができる。各フィールドは、フィールドごとに異なり、かつ／または、固有であり得るそれぞれの要件を使用して、暗号化された内容について評価することができる。例えば、ユーザ作成テキストを格納するフィールドは、ユーザによって手動で作成されるそのようなフィールド内のテキストは高度に編成されており、あまりランダムではないと予測されるため、暗号化を決定するための算出されるエントロピーの必要なレベルが相対的に低いものを要求し得る。自動作成データを格納するのに使用されるフィールドは、そのようなフィールド内のデータはあまり高度に編成されておらず、よりランダムであり得るため、暗号化を決定するための算出されるエントロピーの必要なレベルが相対的に高いものを要求し得る。代替または追加として、エントロピー値はファイル全体について、および／または、ファイルの１つもしくは複数の部分について算出され、上記要件を使用して評価される。
【０１１３】
代替または追加として、分析は、ミラーファイル２１２Ｂのデータが１つまたは複数の不正な値を含むことを識別することによって実施される。不正な値は、例えば、少なくとも、不正な値に対応する元のファイルのデータの暗号化など、ミラーファイルの暗号化の通知になり得る。ミラーファイルは、１つまたは複数の値を格納する１つまたは複数のフィールドを識別するためにパースすることができる。不正な値は、ミラーファイルの各識別されたフィールドの値を、記憶デバイスロケーションにあるファイルのフィールドの対応する値と比較することによって決定することができる。比較された差は、所定の許容される値を表す要件に従って評価することができる。例えば、上記の例において、フィールドＩｄｅｎｔｉｆｉｅｒは、２つの可能な値のうちの１つのみを含まなければならない。任意選択で、元のファイルは、このファイルが不正な値も含んでいるかどうかをチェックすることによって、偽陽性を低減するために使用することができ、含んでいた場合、修正が有効であると仮定される。
【０１１４】
暗号化は、ミラーファイル２１２Ｂのエントロピーおよびターゲットファイル２０２Ｂの対応するデータを算出することによって検出することができ、任意選択で、エントロピー値は、１つまたは複数の対応するフィールドについて算出される。算出されたエントロピー値の間の差（例えば、フィールドごと、ファイルの部分ごと、かつ／または、ファイル全体についての）を、算出されたエントロピー値の間の許容誤差を表す別の要件を使用して評価することができる。ターゲットファイル２０２Ｂとミラーファイル２１２Ｂとの間の算出されたエントロピーの差が著しい場合、これは、ミラーファイル２１２Ｂが暗号化されていることを表す。
【０１１５】
代替または追加として、分析は、テキストヒューリスティクスに基づいて実施される。テキストヒューリスティック分析は、ミラーファイル２１２Ｂの１つまたは複数の所定のフィールドに対して実施することができる。ミラーファイル２１２Ｂと関連付けられるファイルフォーマットは、フィールドをテキストフィールドとして、かつ／または、例えばＡＳＣＩＩ値および／もしくはＵＮＩＣＯＤＥ暗号化タイプなど、テキストを含むことを許容されるものとして定義することができる。代替または追加として、テキストフィールド（またはミラーファイル２１２Ｂの領域）は、テキストのみを含むまたは大部分がテキストである部分および／またはフィールドを決定するためにターゲットファイル２０２Ｂを分析することによって識別することができる。テキストを含むと予測されるミラーファイル２１２Ｂのテキストフィールドおよび／または領域内で非テキスト値が識別された場合、非テキスト値は、上書き動作に起因して暗号化された値および／または破壊されたデータであると考えられる。例えば、ファイルが非テキストフォーマットに基づいて格納されている場合、テキストヒューリスティック分析は変更および／または停止することができることに留意されたい。未知のおよび／または分析困難なファイルフォーマットを分析するために、ディープラーニングニューラルネットワークを使用して、ファイルのタイプを識別し、および／または、上書き動作後にファイルタイプが有効であるかどうかを検証することができる。分析は、所与のファイルタイプラベルと関連付けられるファイルの大規模なコーパスに対してニューラルネットワークを訓練することによって実施することができる。
【０１１６】
分析は、ファイルの重要な部分および／または最も普遍的に影響を受けるファイル部分（例えば、フィールド）を表す可能性がある、ミラーファイル２１２Ｂのある部分について実施することができる。フィールドが悪意のあるコードによって暗号化、破壊、または他の様態で影響を受けるものとして識別されない場合、ファイルの残りの部分も、悪意のあるコードによって影響を受けないものと仮定することができる。例えば、ミラーファイル２１２Ｂのファイルヘッダが、上書き動作後に損傷を受けていないままであると識別される場合、ファイルの残りの部分は、悪意のあるコードによって影響を受けていないと仮定することができる。
【０１１７】
代替または追加として、保護されているターゲットファイル２０２Ｂに対する読み出し動作が（例えば、ファイルドライバによって）検出される場合、分析は、要求されているデータが上書きされたかどうかを検出するために、ミラーファイル２１２Ｂに対して実施することができる。読み出し動作は、例えば、上書きが成功したかを検証するために悪意のあるコードによって読み出しが実施されるという仮定に基づいて、ミラーファイル２１２Ｂの分析されるべき部分に分析を方向付けるために使用され得る。読み出し動作に返されるデータは、ターゲットファイル２０２Ｂの対応するロケーションから得られる、元の修正されていないデータであり得る。代替的に、読み出し動作に返されるデータは、ミラーファイル２１２Ｂから得られる、上書きされたデータであり得る。悪意のあるコードは、アンチマルウェアコードによって識別し、除去することができる。別の例において、元の修正されていないデータを再び受信する要求プロセスは、別の上書き要求を試行することができ、これによって、コードを悪意のあるコードとして識別することができる。
【０１１８】
１１４において、分析が上書き動作を悪意のあるコードと関連付けられるものとして識別した場合、ミラーファイル２１２Ｂ（および／または、ミラーファイルが作成されない場合は安全メモリ２１２の上書きされたロケーション）が、任意選択で永続的に、削除される。代替的に、ミラーファイル２１１Ｂは保持され、例えば、悪意のあるコードを決定する助けとなるような分析のために、リモートサーバに転送される。
【０１１９】
上書き動作は、ターゲットファイル２０２Ｂに対して動作することを許容されるのではなく、ミラーファイル２１２Ｂに方向付けられるため、ターゲットファイル２０２Ｂを復元する必要はないことに留意されたい。
【０１２０】
１１６において、悪意のあるコードによるターゲットファイルの上書きの試行の通知が出力され、例えば、警告メッセージがディスプレイ（例えば、ユーザインターフェース２２２）上でユーザに提示され、悪意のあるコードを試行および位置特定ならびに／または分離するためにアンチマルウェアアプリケーションを自動的にトリガすることができ、および／または、上書き試行の詳細を伴うレポートをサーバに（例えば、ネットワーク管理者に、または、アンチマルウェアアプリケーションに対する更新を設計する助けとなるように研究センターに）送信することができる。
【０１２１】
任意選択で、通知は、上書き動作のブロックをトリガする。
【０１２２】
任意選択で、悪意のあるコードによるターゲットファイルの上書きの試行の通知が識別される場合、ユーザが、悪意のあるコードとして上書き要求を確認し、上書き要求が進行するのを防止し、および／または、上書き要求を安全である（すなわち、悪意のない既知の安全なコード）として規定し、上書き動作が進行するのを許可するためのオプション（例えば、選択アイコン）を有するＧＵＩを、ディスプレイ（例えば、ユーザインターフェース２２２）上に提示することができる。
【０１２３】
代替的に、１１８において、分析が、上書き要求の悪意のある挙動を識別することができない場合（例えば、暗号化の欠如および／またはデータの破壊の欠如）、上書き動作は、安全なコードと関連付けられると仮定される。
【０１２４】
１２０において、安全なコードと関連付けられる上書き動作の意図された上書き効果を達成するために、ミラーファイル２１２Ｂの修正バージョン（上書き動作によって修正されている）を使用して、ターゲットファイル２０２Ｂが上書きされる。
【０１２５】
本発明の様々な実施形態の説明を、例示の目的で提示したが、網羅的であること、または開示する実施形態に限定することを意図していない。説明した実施形態の範囲および趣旨を逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本明細書で使用する用語は、実施形態の原理、実際の応用、または市場で見つけられる技術に優る技術改善を最も良く説明するように、または、当業者が本明細書に開示する実施形態を理解できるように選択した。
【０１２６】
本出願から満期となる特許の存続期間の間に、多くの関連する上書き動作が開発されることが予測され、上書き動作という用語の範囲は、そのような新しい技術を事前にすべて含むものとする。
【０１２７】
本明細書で使用する「約」という用語は±１０％を指す。
【０１２８】
「備える」、「備えている」、「含む」、「含んでいる」、「有している」、という用語およびそれらの活用形は、「限定はしないが、含む」を意味する。この用語は、「からなる」および「から基本的になる」という用語を包含する。
【０１２９】
「から基本的になる」という句は、組成または方法が、追加の成分および／またはステップを含む場合があることを意味するが、追加の成分および／またはステップが、特許請求する組成または方法の基本的および新規な特徴を物質的に変えない場合に限る。
【０１３０】
本明細書で使用する単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈上別段明確に示されない限り複数の指示内容を含む。例えば、「化合物」または「少なくとも１つの化合物」という用語は、それらの混合物を含む複数の化合物を含むことができる。
【０１３１】
「例示的」という語は、本明細書では「例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として説明するいかなる実施形態も、他の実施形態と比べて好ましいもしくは有利であると必ずしも解釈されてはならず、かつ／または他の実施形態からの特徴の取入れを必ずしも排除してはならない。
【０１３２】
「任意選択で」という語は、本明細書では、「いくつかの実施形態では提供され、他の実施形態では提供されない」を意味するように使用される。本発明のいかなる特定の実施形態も、複数の「任意選択の」特徴を、そのような特徴が矛盾しない限り、含む場合がある。
【０１３３】
本出願の全体を通して、本発明の様々な実施形態は、範囲の形式で提示されることがある。範囲の形式での説明は、単に便宜および簡潔のためであり、本発明の範囲に対する柔軟性がない限定と解釈されるべきでないことを理解されたい。したがって、範囲の説明は、すべての可能な部分範囲ならびにその範囲内の個々の数値を具体的に開示したものと考えるべきである。例えば、１から６までなどの範囲の説明は、１から３まで、１から４まで、１から５まで、２から４まで、２から６まで、３から６まで等のような部分範囲、ならびにその範囲内の個々の数、例えば、１、２、３、４、５、および６を具体的に開示したものと考えるべきである。これは、範囲の広さに関係なく適用される。
【０１３４】
数の範囲が本明細書で示されるときは常に、数の範囲は、示された範囲内の任意の引用される数字（小数または整数）を含むように意図される。第１の表示数と第２の表示数との「間に及んでいる／及ぶ」、ならびに第１の表示数「から」第２の表示数「まで」「及んでいる／及ぶ」という語句は、本明細書では交換可能に使用され、第１および第２の表示された数、ならびにそれらの数の間のすべての小数および整数を含むことを意味する。
【０１３５】
明確にするために別々の実施形態の文脈で説明されている本発明の特定の特徴は、単一の実施形態において組み合わせて提供されることも可能であることが理解される。逆に、簡潔にするために単一の実施形態の文脈で説明されている本発明の様々な特徴は、本発明の任意の他の説明されている実施形態において、別々に、または任意の適切な部分的組合せで、または好適であるように提供されることも可能である。様々な実施形態の文脈で説明したいくつかの特徴は、それらの要素なしでは実施形態が動作不能である場合を除いて、それらの実施形態の必須の特徴と考えるべきではない。
【０１３６】
本発明を、その特定の実施形態とともに説明したが、多くの代替形態、変更形態、および変形形態が当業者には明らかとなることは明白である。したがって、添付の特許請求の範囲の趣旨および広い範囲内にあるこのような代替形態、変更形態、および変形形態をすべて包含するものとする。
【０１３７】
本明細書において言及したすべての公報、特許、および特許出願は、各個々の公報、特許、または特許出願が参照により本明細書に組み込まれるよう具体的かつ個別に示された場合と同じ程度に、それらの全体が参照により本明細書に組み込まれる。加えて、本出願におけるいかなる参照の引用または特定も、そのような参照が本発明に対する先行技術として利用可能であると認めるものとして解釈されてはならない。項目の見出しが使用される限りにおいて、項目の見出しは、必ずしも限定的であると解釈されるべきではない。
【図１】
2020502648.tif 000003
【図２】
2020502648.tif 000004
【国際調査報告】
2020502648.tif 000005
2020502648.tif 000006
2020502648.tif 000007