(57)【要約】  コンピューティングデバイス上の悪意のあるプロセスを検出するための開示されるコンピュータ実装方法は、（ｉ）メモリの制限されていないセクションに記憶され、コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、コンピューティングデバイス上のデータの部分を識別することと、（ｉｉ）コンピューティングデバイス内にメモリの制限されているセクションを割り当て、データの部分が、メモリの制限されているセクションに位置していることを示すことと、（ｉｉｉ）予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようとする、コンピューティングデバイス上で実行されているプロセスによる試行を検出することと、（ｉｖ）予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようと試行しているプロセスに少なくとも部分的に基づいて、プロセスが悪意のあるものであると判定することと、（ｖ）悪意のあるプロセスがコンピューティングデバイスに有害となることを防止するために、コンピューティングデバイスに対してセキュリティ措置を実施することと、を含み得る。
2019532405.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上の悪意のあるプロセスを検出するためのコンピュータ実装方法であって、前記方法の少なくとも一部分が、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実行され、前記方法が、
メモリの制限されていないセクションに記憶され、前記コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、前記コンピューティングデバイス上のデータの部分を識別することと、
前記コンピューティングデバイス内にメモリの制限されているセクションを割り当て、前記データの部分が、前記データの部分を実際に記憶する前記メモリの制限されていないセクションの代わりに、前記メモリの制限されているセクションに位置していることを示すことと、
予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようとする、前記コンピューティングデバイス上で実行されているプロセスによる試行を検出することと、
前記予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようと試行している前記プロセスに少なくとも部分的に基づいて、前記プロセスが悪意のあるものであると判定することと、
前記悪意のあるプロセスが前記コンピューティングデバイスに有害となることを防止するために、前記コンピューティングデバイスに対してセキュリティ措置を実施することと、を含む、コンピュータ実装方法。
【請求項２】
前記コンピューティングデバイス上の前記データの部分を識別することが、前記プロセスが実行を開始した直後に初期タスクを実行するために、前記コンピューティングデバイス上の前記プロセスによってアクセスされる共有ライブラリを識別することを含む、請求項１に記載の方法。
【請求項３】
前記共有ライブラリを識別することが、前記共有ライブラリのベースメモリアドレスを識別するために、プロセス環境ブロックデータ構造を検索することを含む、請求項２に記載の方法。
【請求項４】
前記データの部分が前記メモリの制限されているセクションに位置していることを示すことが、前記プロセス環境ブロックデータ構造内の前記共有ライブラリの前記ベースメモリアドレスを、前記メモリの制限されているセクションのメモリアドレスで上書きすることを含む、請求項３に記載の方法。
【請求項５】
前記メモリの制限されているセクションへアクセスしようとする、前記プロセスによる前記試行を検出することが、前記メモリの制限されているセクションへアクセスしようとする、前記コンピューティングデバイス上で実行されている前記プロセスによるいかなる試行も傍受するように、ベクトル化例外ハンドラを登録することを含む、請求項１に記載の方法。
【請求項６】
前記予想されないアクセス方法を使用して、前記メモリの制限されているセクションにアクセスしようとする、前記プロセスによる前記試行を検出することが、前記プロセスが、悪意のないプロセスによって使用されるアプリケーションプログラムインターフェースとして記録されていないアプリケーションプログラムインターフェースを使用して、前記メモリの制限されているセクションにアクセスしようと試行していると判定することを含む、請求項１に記載の方法。
【請求項７】
予想されるアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようとする、前記コンピューティングデバイス上で実行されている追加のプロセスによる試行を検出することと、
前記予想されるアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようと試行している、前記追加のプロセスに少なくとも部分的に基づいて、前記追加のプロセスが悪意のないものであると判定することと、
前記悪意のないプロセスが、前記メモリの制限されていないセクション内の前記データの部分にアクセスすることを許可することと、を更に含む、請求項１に記載の方法。
【請求項８】
前記予想されるアクセス方法を使用して、前記メモリの制限されているセクションへアクセスしようとする、前記追加のプロセスによる前記試行を検出することが、前記追加のプロセスが、悪意のないプロセスによって使用されるアプリケーションプログラムインターフェースとして記録されているアプリケーションプログラムインターフェースを使用して、前記メモリの制限されているセクションにアクセスしようと試行していると判定することを含む、請求項７に記載の方法。
【請求項９】
前記悪意のないプロセスが、前記メモリの制限されていないセクション内の前記データの部分にアクセスすることを許可することが、
前記データの部分が前記メモリの制限されているセクションに位置していることを示す前に、前記メモリの制限されていないセクションのメモリアドレスを識別及び記憶することと、
前記メモリの制限されているセクション内の前記データの部分へアクセスしようとする、前記悪意のないプロセスによる試行を検出した後に、前記悪意のないプロセスに、前記メモリの制限されていないセクションの前記メモリアドレスを示すことと、を含む、請求項７に記載の方法。
【請求項１０】
前記セキュリティ措置が、
前記悪意のあるプロセスを終了させることと、
前記悪意のあるプロセスについて前記コンピューティングデバイスの管理者に警告することと、のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項１１】
コンピューティングデバイス上の悪意のあるプロセスを検出するためのシステムであって、前記システムが、
メモリに記憶されており、メモリの制限されていないセクションに記憶され、コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、前記コンピューティングデバイス上のデータの部分を識別する、識別モジュールと、
メモリに記憶されており、前記コンピューティングデバイス内にメモリの制限されているセクションを割り当て、前記データの部分が、前記データの部分を実際に記憶する前記メモリの制限されていないセクションの代わりに、前記メモリの制限されているセクションに位置していることを示す、割り当てモジュールと、
メモリに記憶されており、予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようとする、前記コンピューティングデバイス上で実行されているプロセスによる試行を検出する、検出モジュールと、
メモリに記憶されており、前記予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようと試行している前記プロセスに少なくとも部分的に基づいて、前記プロセスが悪意のあるものであると判定する、判定モジュールと、
メモリに記憶されており、前記悪意のあるプロセスが前記コンピューティングデバイスに有害となることを防止するために、前記コンピューティングデバイスに対してセキュリティ措置を実施する、セキュリティモジュールと、
前記識別モジュール、前記割り当てモジュール、前記検出モジュール、前記判定モジュール、及び前記セキュリティモジュールを実行するように構成されている、少なくとも１つのハードウェアプロセッサと、を備える、システム。
【請求項１２】
前記識別モジュールが、前記プロセスが実行を開始した直後に初期タスクを実行するために、前記コンピューティングデバイス上の前記プロセスによってアクセスされる共有ライブラリを識別することによって、前記コンピューティングデバイス上の前記データの部分を識別する、請求項１１に記載のシステム。
【請求項１３】
前記識別モジュールが、前記共有ライブラリのベースメモリアドレスを識別するために、プロセス環境ブロックデータ構造を検索することによって、前記共有ライブラリを識別する、請求項１２に記載のシステム。
【請求項１４】
前記割り当てモジュールが、前記プロセス環境ブロックデータ構造内の前記共有ライブラリの前記ベースメモリアドレスを、前記メモリの制限されているセクションのメモリアドレスで上書きすることによって、前記データの部分が前記メモリの制限されているセクションに位置していることを示す、請求項１３に記載のシステム。
【請求項１５】
前記検出モジュールが、前記メモリの制限されているセクションへアクセスしようとする、前記コンピューティングデバイス上で実行されている前記プロセスによるいかなる試行も傍受するベクトル化例外ハンドラを登録することによって、前記メモリの制限されているセクションへアクセスしようとする、前記プロセスによる前記試行を検出する、請求項１１に記載のシステム。
【請求項１６】
前記検出モジュールが、前記プロセスが悪意のないプロセスによって使用されるアプリケーションプログラムインターフェースとして記録されていないアプリケーションプログラムインターフェースを使用して、前記メモリの制限されているセクションにアクセスしようと試行していると判定することによって、前記予想されないアクセス方法を使用して、前記メモリの制限されているセクションにアクセスしようとする、前記プロセスによる前記試行を検出する、請求項１１に記載のシステム。
【請求項１７】
前記検出モジュールが、予想されるアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようとする、前記コンピューティングデバイス上で実行されている追加のプロセスによる試行を更に検出し、
前記判定モジュールが、前記予想されるアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようと試行している前記追加のプロセスに少なくとも部分的に基づいて、前記追加のプロセスが悪意のないものであると更に判定し、
前記セキュリティモジュールが、前記悪意のないプロセスがメモリの制限されていないセクション内の前記データの部分にアクセスすることを更に許可する、請求項１１に記載のシステム。
【請求項１８】
前記検出モジュールが、前記追加のプロセスが悪意のないプロセスによって使用されるアプリケーションプログラムインターフェースとして記録されているアプリケーションプログラムインターフェースを使用して、前記メモリの制限されているセクションにアクセスしようと試行していると判定することによって、前記予想されるアクセス方法を使用して、前記メモリの制限されているセクションへアクセスしようとする、前記追加のプロセスによる前記試行を検出する、請求項１７に記載のシステム。
【請求項１９】
前記セキュリティ措置が、
前記悪意のあるプロセスを終了させることと、
前記悪意のあるプロセスについて前記コンピューティングデバイスの管理者に警告することと、のうちの少なくとも１つを含む、請求項１１に記載のシステム。
【請求項２０】
１つ以上のコンピュータ可読命令を含む非一時的コンピュータ可読媒体であって、前記命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
メモリの制限されていないセクションに記憶され、前記コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、前記コンピューティングデバイス上のデータの部分を識別することと、
前記コンピューティングデバイス内にメモリの制限されているセクションを割り当て、前記データの部分が、前記データの部分を実際に記憶する前記メモリの制限されていないセクションの代わりに、前記メモリの制限されているセクションに位置していることを示すことと、
予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようとする、前記コンピューティングデバイス上で実行されているプロセスによる試行を検出することと、
前記予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようと試行している前記プロセスに少なくとも部分的に基づいて、前記プロセスが悪意のあるものであると判定することと、
前記悪意のあるプロセスが前記コンピューティングデバイスに有害となることを防止するために、前記コンピューティングデバイスに対してセキュリティ措置を実施することと、を行わせる、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
攻撃者は、少量のコード（例えば、シェルコード）をデバイス上で実行されているプロセスに注入することによって、コンピューティングデバイスをハイジャック又は利得制御することができる。例えば、攻撃者は、デバイスのセキュリティ上の欠陥を悪用してコマンドシェルを開く実行可能ファイルにコードの一部を挿入することができ、これは、攻撃者がデバイスを制御するために使用される可能性がある。これらの攻撃の潜在的に有害な結果（例えば、機密データの不正な配布及び／又はユーザによるコンピューティングデバイスの制御不能）により、セキュリティシステムは、コンピューティングデバイス上の悪意を持ってエクスプロイトされたプロセスを検出及び防止しようと試行することがある。
【０００２】
残念ながら、エクスプロイトされたか、又は別様に悪意のあるプロセスを検出するための従来のセキュリティサービスは、それらがすでにコンピューティングデバイスを危険にさらすまで、これらのプロセスを識別することができない可能性がある。例えば、従来のセキュリティ技術は、プロセスが１つ以上の疑わしい又は危険な挙動を実行した後にはじめて、プロセスが悪意を持ってエクスプロイトされたと判定することがある。したがって、本開示は、コンピューティンググデバイス上の悪意のあるプロセスを検出するためのシステム及び方法に対するニーズを特定し、それに対処する。
【発明の概要】
【０００３】
より詳細に後述するように、本開示は、コンピューティングデバイス上の悪意のあるプロセスを検出するための様々なシステム及び方法を説明する。一実施例では、かかるタスクを実施するための方法は、（ｉ）メモリの制限されていないセクションに記憶され、コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、コンピューティングデバイス上のデータの部分を識別することと、（ｉｉ）コンピューティングデバイス内にメモリの制限されているセクションを割り当て、データの部分が、データの部分を実際に記憶するメモリの制限されていないセクションの代わりに、メモリの制限されているセクションに位置していることを示すことと、（ｉｉｉ）予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようとする、コンピューティングデバイス上で実行されているプロセスによる試行を検出することと、（ｉｖ）予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようと試行しているプロセスに少なくとも部分的に基づいて、プロセスが悪意のあるものであると判定することと、そして（ｖ）悪意のあるプロセスがコンピューティングデバイスに有害となることを防止するために、コンピューティングデバイスに対してセキュリティ措置を実施することと、を含み得る。一部の実施形態では、セキュリティ措置は、悪意のあるプロセスを終了させること、及び／又は悪意のあるプロセスについてコンピューティングデバイスの管理者に警告することを含み得る。
【０００４】
一部の実施例では、コンピューティングデバイス上のデータの部分を識別することは、プロセスが実行を開始した直後に初期タスクを実行するために、コンピューティングデバイス上のプロセスによってアクセスされる共有ライブラリを識別することを含み得る。これらの実施例では、共有ライブラリを識別することは、共有ライブラリのベースメモリアドレスを識別するために、プロセス環境ブロック（Process Environment Block、ＰＥＢ）データ構造を検索することを含み得る。加えて、これらの実施例では、データの部分がメモリの制限されているセクションに位置していることを示すことは、プロセス環境ブロックデータ構造内の共有ライブラリのベースメモリアドレスを、メモリの制限されているセクションのメモリアドレスで上書きすることを含み得る。
【０００５】
一部の実施形態では、メモリの制限されているセクションへアクセスしようとする、プロセスによる試行を検出することが、メモリの制限されているセクションへアクセスしようとする、コンピューティングデバイス上で実行されているプロセスによるいかなる試行も傍受するベクトル化例外ハンドラを登録することを含み得る。それに加えて、一部の実施例では、予想されないアクセス方法を使用して、メモリの制限されているセクションにアクセスしようとする、プロセスによる試行を検出することは、プロセスが悪意のないプロセスによって使用されるアプリケーションプログラムインターフェース（Application Program Interface、ＡＰＩ）として記録されていないＡＰＩを使用して、メモリの制限されているセクションにアクセスしようと試行していると判定することを含み得る。
【０００６】
一部の実施形態では、方法は、予想されるアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようとする、コンピューティングデバイス上で実行されている追加のプロセスによる試行を検出することを更に含み得る。一実施例では、予想されるアクセス方法は、悪意のないプロセスによって使用されると記録されているＡＰＩを含み得る。一部の実施例では、方法はまた、メモリの制限されているセクション内のデータの部分にアクセスしようと試行しながら、予想されるアクセス方法を使用する追加のプロセスに少なくとも部分的に基づいて、追加のプロセスは悪意のないものであると判定することも含み得る。これらの実施例では、方法は、（ｉ）データの部分がメモリの制限されているセクションに位置していることを示す前に、メモリの制限されていないセクションのメモリアドレスを識別及び記憶することと、（ｉｉ）メモリの制限されているセクション内のデータの部分へアクセスしようとする、悪意のないプロセスによる試行を検出した後に、悪意のないプロセスに、メモリの制限されていないセクションのメモリアドレスを示すことと、によって、悪意のないプロセスがメモリの制限されていないセクション内のデータの部分にアクセスすることを許可することを含み得る。
【０００７】
一実施形態では、コンピューティングデバイス上の悪意のあるプロセスを検出するためのシステムは、メモリに記憶されており、（ｉ）メモリの制限されていないセクションに記憶され、コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、コンピューティングデバイス上のデータの部分を識別する、識別モジュールと、（ｉｉ）コンピューティングデバイス内にメモリの制限されているセクションを割り当て、データの部分が、データの部分を実際に記憶するメモリの制限されていないセクションの代わりに、メモリの制限されているセクションに位置していることを示す、割り当てモジュールと、（ｉｉｉ）予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようとする、コンピューティングデバイス上で実行されているプロセスによる試行を検出する、検出モジュールと、（ｉｖ）予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようと試行しているプロセスに少なくとも部分的に基づいて、プロセスが悪意のあるものであると判定する、判定モジュールと、（ｖ）悪意のあるプロセスがコンピューティングデバイスに有害となることを防止するために、コンピューティングデバイスに対してセキュリティ措置を実施する、セキュリティモジュールと、を含む、いくつかのモジュールを含み得る。それに加えて、システムは、識別モジュール、割り当てモジュール、検出モジュール、判定モジュール、及びセキュリティモジュールを実行するように構成されている、少なくとも１つのハードウェアプロセッサを含み得る。
【０００８】
一部の実施例では、上述の方法は、非一時的コンピュータ可読媒体上のコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイスに、（ｉ）メモリの制限されていないセクションに記憶され、コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、コンピューティングデバイス上のデータの部分を識別することと、（ｉｉ）コンピューティングデバイス内にメモリの制限されているセクションを割り当て、データの部分が、データの部分を実際に記憶するメモリの制限されていないセクションの代わりに、メモリの制限されているセクションに位置していることを示すことと、（ｉｉｉ）予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようとする、コンピューティングデバイス上で実行されているプロセスによる試行を検出することと、（ｉｖ）予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようと試行しているプロセスに少なくとも部分的に基づいて、プロセスが悪意のあるものであると判定することと、次いで、（ｖ）悪意のあるプロセスがコンピューティングデバイスに有害となることを防止するために、コンピューティングデバイスに対してセキュリティ措置を実施することと、を行わせる、１つ以上のコンピュータ実行可能命令を含み得る。
【０００９】
上述の実施形態のいずれかによる特徴は、本明細書に記載される一般原理に従って、互いに組み合わせて使用されてもよい。これら及び他の実施形態、特徴、及び利点は、添付の図面及び特許請求の範囲と併せて以下の発明を実施するための形態を読むことによって更に十分に理解されるだろう。
【図面の簡単な説明】
【００１０】
添付の図面は、いくつかの例示的な実施形態を図示するものであり、本明細書の一部である。以下の説明と併せて、これらの図面は、本開示の様々な原理を実証及び説明する。
【図１】コンピューティングデバイス上の悪意のあるプロセスを検出するための例示的なシステムのブロック図である。
【図２】コンピューティングデバイス上の悪意のあるプロセスを検出するための追加の例示的なシステムのブロック図である。
【図３】コンピューティングデバイス上の悪意のあるプロセスを検出するための例示的な方法の流れ図である。
【図４】共有ライブラリのベースメモリアドレスを識別するためにＰＥＢデータ構造を検索することの図示である。
【図５】本明細書に記載及び／又は図示される実施形態のうちの１つ以上を実装することができる例示的なコンピューティングシステムのブロック図である。
【図６】本明細書に記載及び／又は図示される実施形態のうちの１つ以上を実装することができる例示的なコンピューティングネットワークのブロック図である。
【００１１】
図面を通して、同一の参照符号及び記述は、必ずしも同一ではないが、類似の要素を示す。本明細書で説明される例示的実施形態は、様々な修正物及び代替的な形態が可能であるが、特定の実施形態が例として図面に示されており、本明細書に詳細に記載される。しかしながら、本明細書に記載される例示的実施形態は、開示される特定の形態に限定されることを意図しない。むしろ、本開示は、添付の特許請求の範囲内にある全ての修正物、等価物、及び代替物を網羅する。
【発明を実施するための形態】
【００１２】
本開示は、概して、コンピューティングデバイス上の悪意のあるプロセスを検出するためのシステム及び方法を対象とする。より詳細に後述するように、実行するためにプロセスによって必要とされるデータの部分（例えば、共有ライブラリのベースアドレス）がメモリの制限又は保護されているセクション内に位置していることを示すことによって、本明細書に記載のシステム及び方法は、データへアクセスしようと試行している悪意のあるプロセスを検出することができる。例えば、開示されたシステム及び方法は、メモリの保護されているセクション内に位置するように見えているデータにアクセスする予想されないか又は記録されていない方法が、悪意を持ってエクスプロイトされたプロセスによって実施される可能性が高いと判定する。したがって、本明細書に記載のシステム及び方法は、プロセスが何らかの有害な挙動（例えば、コンピューティングデバイスのハイジャック又は制御）を実施することができる前に、エクスプロイトされたプロセスを終了させることがある。
【００１３】
加えて、本明細書に記載のシステム及び方法は、悪意のあるプロセスが、プロセスがコンピューティングデバイスを危険にさらす可能性があるデータの重要な部分にアクセスすることを防ぐことによって、コンピューティングデバイスの機能を改善することができる。これらのシステム及び方法はまた、悪意を持ってエクスプロイトされたプロセスを従来のセキュリティサービスよりも少ないコンピューティングリソースでより迅速に検出することによって、コンピューティングセキュリティの分野（特に、エクスプロイト防止の分野）を改善することもできる。更に、（制限されているメモリ内にデータのうちの全部又は一部を実際に記憶するのではなく）データの一部がメモリの制限されているセクションに記憶されることを示すことによって、開示されるシステム及び方法は、合法的な目的のためにデータにアクセスしようと試行する、悪意のないプロセスの妨害を防止し得る。
【００１４】
以下、図１及び図２を参照して、コンピューティングデバイス上の悪意のあるプロセスを検出するための例示的なシステムの詳細な説明が提供されるであろう。対応するコンピュータ実装方法の詳細な説明も図３に関連して提供される。加えて、共有ライブラリのベースメモリアドレスを識別するために、ＰＥＢデータ構造を検索することについての詳細な説明は、図４に関連して提供されるであろう。最後に、本明細書に記載の実施形態のうちの１つ以上を実装することができる例示的なコンピューティングシステム及びネットワークアーキテクチャの詳細な説明が、それぞれ、図５及び図６に関連して提供される。
【００１５】
図１は、コンピューティングデバイス上の悪意のあるプロセスを検出するための例示的なシステム１００のブロック図である。この図に図示されるように、例示的なシステム１００は、１つ以上のタスクを実施するための１つ以上のモジュール１０２を含み得る。より詳細に後述するように、システム１００は、メモリの制限されていないセクションに記憶され、コンピューティングデバイス上で実行されている間にプロセスによってアクセスされるコンピューティングデバイス上のデータの部分を識別する、識別モジュール１０４を含み得る。加えて、例示的システム１００は、コンピューティングデバイス内にメモリの制限されているセクションを割り当て、データの部分が、データの部分を実際に記憶するメモリの制限されていないセクションの代わりに、メモリの制限されているセクションに位置していることを示す割り当てモジュール１０６を含み得る。システム１００はまた、予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようとする、コンピューティングデバイス上で実行されているプロセスによる試行を検出する、検出モジュール１０８も含み得る。
【００１６】
より詳細に後述するように、それに加えて、システム１００は、予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようと試行しているプロセスに少なくとも部分的に基づいて、プロセスが悪意のあるものであると判定する、判定モジュール１１０も含み得る。最後に、システム１００は、悪意のあるプロセスがコンピューティングデバイスに有害となることを防止するために、コンピューティングデバイス上でセキュリティ措置を実施するセキュリティモジュール１１２を含み得る。別々の要素として図示されるが、図１のモジュール１０２のうちの１つ以上は、単一のモジュール又はアプリケーションの部分を表してもよい。
【００１７】
特定の実施形態では、図１のモジュール１０２のうちの１つ以上は、コンピューティングデバイスによって実行されると、コンピューティングデバイスに１つ以上のタスクを実施させ得る、１つ以上のソフトウェアアプリケーション又はプログラムを表し得る。例えば、より詳細に後述するように、モジュール１０２のうちの１つ以上は、図２に示されるデバイス（例えば、コンピューティングデバイス２０２及び／又はサーバ２０６）、などの１つ以上のコンピューティングデバイスに記憶され、その上で作動するように構成されている、ソフトウェアモジュールを表してもよい。図１のモジュール１０２のうちの１つ以上はまた、１つ以上のタスクを実施するように構成されている１つ以上の専用コンピュータの全て又は一部を表し得る。
【００１８】
図１に示すように、例示的なシステム１００はまた、メモリ１４０などの１つ以上のメモリデバイスも含み得る。メモリ１４０は、一般に、データ及び／又はコンピュータ可読命令を記憶することができる任意のタイプ又は形態の揮発性又は不揮発性の記憶デバイス又は媒体を表す。一実施例では、メモリ１４０は、モジュール１０２のうちの１つ以上を記憶、ロード、及び／又は維持してもよい。メモリ１４０の例としては、非限定的に、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、光ディスクドライブ、キャッシュ、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他の好適な記憶メモリが挙げられる。
【００１９】
図１に示すように、例示的システム１００はまた、メモリ１２０の制限されているセクションも含み得る。より詳細に後述するように、メモリ１２０の制限されているセクションは、一般に、悪意を持ってエクスプロイトされたプロセスを検出するために、セキュリティサービスによって生成されるか又は割り当てられる任意のタイプ又は形態の記憶デバイス又は媒体を表す。一部の実施例では、メモリ１２０の制限されているセクションは、メモリ１４０の専用部分を表し得る。他の実施例では、メモリ１２０のセクションは、コンピューティングデバイス２０２内のメモリの代替セクション内など、メモリ１４０の外部に存在してもよい。
【００２０】
加えて、図１に示すように、例示的システム１００はまた、物理プロセッサ１３０などの１つ以上の物理プロセッサも含み得る。物理プロセッサ１３０は、一般に、コンピュータ可読命令を解釈及び／又は実行することができる任意のタイプ又は形態のハードウェア実装処理ユニットを表す。一実施例では、物理プロセッサ１３０は、メモリ１４０に記憶されているモジュール１０２のうちの１つ以上にアクセスし、かつ／又はそれを変更することができる。それに加えて、又は代替的に、物理プロセッサ１３０は、コンピューティングデバイス上の悪意のあるプロセスの検出を容易にするために、モジュール１０２のうちの１つ以上を実行し得る。物理プロセッサ１３０の例としては、非限定的に、マイクロプロセッサ、マイクロコントローラ、中央処理装置（ＣＰＵ）、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、それらのうちの１つ以上の部分、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他の好適な物理プロセッサが挙げられる。
【００２１】
図１の例示的なシステム１００は、様々な方法で実装され得る。例えば、例示的なシステム１００のうちの全て又は一部は、図２における例示的なシステム２００の部分を表してもよい。図２に示されるように、システム２００は、ネットワーク２０４を介してサーバ２０６と通信するコンピューティングデバイス２０２を含んでもよい。一実施例では、モジュール１０２の機能のうちの全て又は一部は、コンピューティングデバイス２０２、サーバ２０６、及び／又は任意の他の好適なコンピューティングシステムによって実施され得る。
【００２２】
より詳細に後述するように、図１によるモジュール１０２のうちの１つ以上は、コンピューティングデバイス２０２及び／又はサーバ２０６のうちの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイス２０２及び／又はサーバ２０６がコンピューティングデバイス上の悪意のあるプロセスを検出することを可能にすることができる。例えば、より詳細に後述するように、識別モジュール１０４は、コンピューティングデバイス２０２及び／又はサーバ２０６に、メモリの制限されていないセクション２０８に記憶されているコンピューティングデバイス２０２上のデータの部分２１０を識別させてもよい。次に、割り当てモジュール１０６は、コンピューティングデバイス２０２及び／又はサーバ２０６に、コンピューティングデバイス２０２内のメモリの制限されているセクション１２０を割り当てさせ、データの部分２１０がメモリの制限されていないセクション２０８の代わりに、メモリの制限されているセクション１２０にあることを示させてもよい。次いで、検出モジュール１０８は、コンピューティングデバイス２０２及び／又はサーバ２０６に、予想されないアクセス方法２１４を使用して、メモリの制限されているセクション１２０内のデータの部分２１０へアクセスしようとする、プロセス２１２による試行を検出させてもよい。それに加えて、判定モジュール１１０は、コンピューティングデバイス２０２及び／又はサーバ２０６に、予想されないアクセス方法２１４を使用して、メモリの制限されているセクション１２０内のデータの部分２１０にアクセスしようとする、プロセス２１２による試行に基づいて、プロセス２１２は悪意のあるものであると判定させてもよい。最後に、セキュリティモジュール１１２は、プロセス２１２がコンピューティングデバイス２０２に有害となることを防止するために、コンピューティングデバイス２０２及び／又はサーバ２０６に、コンピューティングデバイス２０２上でセキュリティ措置２１６を実施させてもよい。
【００２３】
コンピューティングデバイス２０２は、一般に、コンピュータ実行可能命令を読み取ることができる任意のタイプ又は形態のコンピューティングデバイスを表す。例えば、コンピューティングデバイス２０２は、クライアント側セキュリティソフトウェアを実行しているエンドポイントデバイス（例えば、携帯電話又はユーザのデスクトップコンピュータ）を表してもよい。コンピューティングデバイス２０２の追加の例としては、非限定的に、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、携帯情報端末（ＰＤＡ）、マルチメディアプレーヤー、埋め込みシステム、ウェアラブルデバイス（例えば、スマートウォッチ、スマートグラスなど）、ゲーム機、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は他の任意の好適なコンピューティングデバイスが挙げられる。
【００２４】
サーバ２０６は、一般に、コンピューティングデバイス上で実行されているプロセスの挙動を監視及び／又は分析することができる任意のタイプ又は形態のコンピューティングデバイスを表す。サーバ２０６の追加の例としては、非限定的に、特定のソフトウェアアプリケーションを実行する、並びに／あるいは様々なセキュリティサービス、ウェブサービス、ストレージサービス、及び／又はデータベースサービスを提供するように構成された、セキュリティサーバ、アプリケーションサーバ、ウェブサーバ、ストレージサーバ、及び／又はデータベースサーバが挙げられる。図２では単一のエンティティとして示されているが、サーバ２０６は、互いに連携して作動及び／又は動作する複数のサーバを含み、かつ／又はそれらを表してもよい。
【００２５】
ネットワーク２０４は、一般に、通信若しくはデータ転送を容易にすることが可能な、任意の媒体又はアーキテクチャを表す。一実施例では、ネットワーク２０４は、コンピューティングデバイス２０２とサーバ２０６との間の通信を容易にしてもよい。この実施例では、ネットワーク２０４は、無線接続及び／又は有線接続を使用して、通信又はデータ転送を容易にしてもよい。ネットワーク２０４の例としては、非限定的に、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、インターネット、電力線通信（ＰＬＣ）、セルラーネットワーク（例えば、Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ（ＧＳＭ（登録商標））ネットワーク）、それらのうちの１つ以上の部分、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他の好適なネットワークが挙げられる。
【００２６】
図３は、コンピューティングデバイス上の悪意のあるプロセスを検出するための例示的なコンピュータ実装方法３００の流れ図である。図３に示されるステップは、図１のシステム１００、図２のシステム２００、及び／又はそれらのうちの１つ以上の変形形態若しくは組み合わせを含む、任意の好適なコンピュータ実行可能コード及び／又はコンピューティングシステムによって実施され得る。一実施例では、図３に示されるステップの各々は、アルゴリズムを表してもよく、そのアルゴリズムの構造は、複数のサブステップを含み、かつ／又はそれらによって表され、それらの実施例が以下により詳細に提供される。
【００２７】
図３に示されるように、ステップ３０２において、本明細書に記載のシステムのうちの１つ以上は、メモリの制限されていないセクションに記憶され、コンピューティングデバイス上で実行されている間にプロセスによってアクセスされるコンピューティングデバイス上のデータの部分を識別してもよい。例えば、識別モジュール１０４は、図２のコンピューティングデバイス２０２の一部として、メモリの制限されていない部分２０８に記憶されているデータの部分２１０を識別してもよい。
【００２８】
本明細書で使用される「プロセス」という用語は、一般に、コンピューティングデバイスによって実行又は作動され得る任意のタイプ又は形態のプログラム、アプリケーション、又は実行可能コードの一部を指す。より詳細に後述するように、本明細書に記載のシステムは、プロセスが悪意のあるものであるのか、又は悪意のないものであるのかを判定することができる。本明細書で使用する「悪意のないプロセス」という用語は、一般に、信頼され検証された挙動のみを実施し、コンピューティングデバイスのセキュリティ状態を危険にさらさない任意のプロセスを指す。対照的に、本明細書で使用する「悪意のあるプロセス」という用語は、一般に、有害なコンピューティング挙動を実施するように設計された、かつ／又は有害なコンピューティング挙動を実施するためにエクスプロイトされることができる任意のプロセスを指す。一実施形態では、本明細書に記載のシステムは、悪意を持ってエクスプロイトされるガジェット及びウィジェットなどの悪意のあるプロセス、及び／又はゼロデイエクスプロイトを実施することができるプロセスを検出するように構成され得る。
【００２９】
加えて、本明細書で使用する「データの部分」という用語は、一般に、１つ以上のタスクを実行するためにプロセスによってリクエスト又は要求される、コンピューティングデバイス内に記憶される任意のタイプ又は形態の情報、ファイル、実行可能コード、又はリソースを指す。一実施例では、共有ライブラリ（例えば、ＷＩＮＤＯＷＳ（登録商標、以下同じ）オペレーティングシステムにおけるダイナミックリンクライブラリ（Dynamic−Linked Library、ＤＬＬ））は、そのようなデータの部分を表し得る。一部の実施形態では、プロセスは、ＡＰＩの解決、メモリの割り当て、ファイルのダウンロードなどのタスクを実施するために共有ライブラリにアクセスし得る。共有ライブラリは、コンピューティングデバイス上の複数のプロセスによって同時にアクセスされ得、悪意のあるプロセスと悪意のないプロセスとの両方の実行に重要な情報を含み得る。
【００３０】
本明細書に記載のシステムは、様々な方法でコンピューティングデバイス上で実行されている間にプロセスによって使用されるデータの部分を識別し得る。一部の実施例では、識別モジュール１０４は、初期タスク（例えば、プロセスが実行を開始した直後に実施されるタスク）を実施するためにプロセスによってアクセスされるデータの部分を識別してもよい。例えば、識別モジュール１０４は、プロセスが実行のために十分なメモリ空間を割り当てることを可能にするＤＬＬを識別してもよい。プロセスが実行を開始又は継続するために必要なデータの重要な部分を識別することによって、開示されたセキュリティサービスは、プロセスがコンピューティングデバイスに有害となる挙動を実施することができる前に、コンピューティングデバイス上で実行される悪意のあるプロセスを検出し得る。
【００３１】
一部の実施形態では、プロセスは、データの部分にアクセスしてそれを利用することができる前に、データの部分のベース（例えば、初期）メモリアドレスを識別してもよい。例えば、ＤＬＬ内の情報にアクセスするためには、ＤＬＬのベースメモリアドレスを識別するために、悪意のあるプロセスと悪意のないプロセスとの両方が必要とされることがある。したがって、識別モジュール１０４はまた、ＤＬＬにアクセスしようとする、プロセスによる試行を監視するために、ＤＬＬのベースメモリアドレスを識別し得る。一実施例では、識別モジュール１０４は、ＤＬＬに関連付けられている１つ以上のＰＥＢデータ構造に従うことによって、ＤＬＬのベースメモリアドレスを識別し得る。
【００３２】
図４は、ＰＥＢローダチェーンに従ってＤＬＬのベースメモリアドレスを識別するプロセスを示す。この実施例では、識別モジュール１０４は、１つ以上のＤＬＬに関連付けられているファイル又はデータへのリンク又はポインタを含む、ＰＥＢ４０２を識別することができる。ＰＥＢ４０２で始まる矢印によって示されるように、識別モジュール１０４は、ＰＥＢ４０２内の位置０ｘ０Ｃでエントリ「ローダデータ」を識別し、そのエントリを使用してＰＥＢローダデータ４０４を識別することができる。次いで、識別モジュール１０４は、位置０ｘ１Ｃで「ＩｎＩｎｉｔｉａｌｉｚａｔｉｏｎＯｒｄｅｒＭｏｄｕｌｅＬｉｓｔ」とラベル付けされたエントリを識別するまで、ＰＥＢローダデータ４０４を検索してもよい。図４に示すように、このエントリは、リンクリストを含んでもよく、これはプロセスが特定のＤＬＬについての情報を含む追加のデータ構造に出入りすることを可能にする順方向リンク及び逆方向リンクを含む。図４の実施例では、識別モジュール１０４は、ＰＥＢローダデータ４０４内の順方向リンクに従ってローダモジュール４０６に進むことができる。識別モジュール１０４がローダモジュール４０６にアクセスすると、識別モジュール１０４は、位置０ｘ１８の「ベースアドレス」エントリがＤＬＬ４０８へのポインタを表すと判定することができる。したがって、識別モジュール１０４は、ベースメモリアドレスの示された値を識別及び記録することができる。
【００３３】
図３に戻ると、ステップ３０４において、本明細書に記載のシステムのうちの１つ以上は、コンピューティングデバイス内にメモリの制限されているセクションを割り当て、データの部分が、データの部分を実際に記憶するメモリの制限されていないセクションの代わりに、メモリの制限されているセクションに位置していることを示してもよい。例えば、割り当てモジュール１０６は、コンピューティングデバイス２０２の一部として、メモリの制限されているセクション１２０を割り当て、データの部分２１０がメモリの制限されていないセクション２０８の代わりに、メモリの制限されているセクション１２０内にあることを示してもよい。
【００３４】
本明細書で使用する「メモリのセクション」という用語は、一般に、特定のタイプ及び／又は量のデータを記憶することに専用のメモリの任意の部分を指す。メモリのセクションは、例えば単一ビットから複数バイトまでの範囲の任意のサイズであり得る。加えて、本明細書で使用する「メモリの制限されているセクション」という用語は、一般に、１つ以上のプロセス、ユーザ、又は他のエンティティによるアクセスから保護されているメモリの任意のセクションを指す。例えば、メモリの制限されているセクションは、管理者特権を有しないいかなるプロセスによっても、上書き及び／又は読み取りを行うことができないメモリの専用セクションを表してもよい。それに加えて、又は代替的に、メモリの制限されているセクションは、特定のプロセスから隠されているか、又は別様にアクセスできないことがある。対照的に、本明細書で使用する「メモリの制限されていないセクション」という用語は、アクセス制限がほとんど又は全くないメモリの任意のセクション（例えば、任意のプロセスがメモリのセクション内のデータにアクセスすることを許可するメモリのセクション）を指す。一部の実施例では、オペレーティングシステムは、よくアクセスされるデータの部分（ＤＬＬ及び他の共有ライブラリなど）をメモリの制限されていないセクションに記憶してもよい。
【００３５】
本明細書に記載のシステムは、様々な方法でコンピューティングデバイス内のメモリの制限されているセクションを割り当ててもよい。一部の実施例では、割り当てモジュール１０６は、メモリの制限されているセクションを割り当てるために、コンピューティングデバイス内の管理者権限又は特権を引き受け得るか又は付与され得る。加えて、一部の実施形態では、割り当てモジュール１０６は、所定のサイズのメモリの制限されているセクションを割り当ててもよい。例えば、割り当てモジュール１０６は、各々が所定数のバイトを含む制限されているメモリページを割り当ててもよい。
【００３６】
メモリの制限されているセクションを割り当てた後、割り当てモジュール１０６は、メモリの制限されているセクションが識別モジュール１０４によって識別されたデータの部分を記憶することを示してもよい。例えば、割り当てモジュール１０６は、データの部分のベースメモリアドレスを示すデータ構造内で、データの実際のベースメモリアドレスをメモリの制限されているセクションのメモリアドレスで置き換えてもよい。一部の実施例では、割り当てモジュール１０６はまた、この新しいメモリアドレスがメモリの制限されているセクションに関連付けられていることも示し得る。
【００３７】
図４の実施例では、識別モジュール１０４がＤＬＬ４０８へのポインタに基づいてＤＬＬのベースメモリアドレスを識別した後、割り当てモジュール１０６は、メモリの制限されているページを割り当て、次にＤＬＬ４０８へのポインタをメモリの制限されているページにつながるポインタで置き換えてもよい。そのため、ＤＬＬのベースアドレスを識別しようと試行しているあらゆるプロセスは、ベースアドレスが、実際のメモリアドレスではなく、メモリの制限されているページのメモリアドレスに位置していると判定する可能性がある。
【００３８】
データの部分の実際のメモリアドレスをメモリの制限されているセクションのメモリアドレスで置き換えることによって、割り当てモジュール１０６は、データの部分を単に記憶しているように見える、おとりメモリアドレスを作成することができる。より詳細に後述するように、そのようなおとりアドレスを使用して、コンピューティングデバイス上の悪意のあるプロセスを検出し、また悪意のあるプロセスがデータの重要な部分にアクセスし、それを使用して有害となるコンピューティング挙動を実施することを防止することができる。
【００３９】
図３に戻ると、ステップ３０６において、本明細書に記載のシステムのうちの１つ以上は、予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようとする、コンピューティングデバイス上で実行されているプロセスによる試行を検出することができる。例えば、検出モジュール１０８は、図２のコンピューティングデバイス２０２の一部として、予想されないアクセス方法２１４を使用して、メモリの制限されているセクション１２０内のデータの部分２１０にアクセスしようとする、プロセス２１２による試行を検出してもよい。
【００４０】
本明細書で使用する「アクセス方法」という用語は、一般に、プロセスがデータの部分を読み取り、位置を特定し、又は開くことを試行する任意のタイプ又は形態の技法又はプロトコルを指す。アクセス方法の例としては、非限定的に、メモリからのデータのロード、読み取り、及び取り出しに関する実行可能命令及びＡＰＩが挙げられる。
【００４１】
本明細書に記載のシステムは、メモリの制限されているセクションにアクセスしようとする、プロセスによる試行を様々な方法で検出することができる。一部の実施例では、検出モジュール１０８は、メモリの制限されているセクションにアクセスしようとする、コンピューティングデバイス上で実行されているプロセスによる各試行を検出するために、割り当てモジュール１０６が示したメモリの制限されているセクションが、データの部分を記憶することを監視してもよい。一実施形態では、検出モジュール１０８は、メモリの制限されているセクションにアクセスしようとするプロセスによる呼び出し又は他の要求をフック又は傍受することができる。特に、検出モジュール１０８は、プロセスがメモリの制限されているセクションにアクセスしようと試行している各インスタンスを検出するために、例外ハンドラ（例えば、ベクトル化された例外ハンドラ）を登録することができる。例外ハンドラは、検出された各アクセス試行の後に、本明細書に記載のシステムに警告し、またアクセス試行を永久的又は一時的にブロックすることができる。
【００４２】
一部の実施例では、検出モジュール１０８は、検出されたアクセス試行を分析して、そのアクセス試行が予想されるか又は予想されないアクセス方法を使用して実行されたかどうかを判定してもよい。本明細書で使用する「予想されるアクセス方法」という用語は、一般に、予測可能、既知、又は記録されている任意のタイプ又は形態のアクセス方法を指す。例えば、予想されるアクセス方法は、正当なプロセスがデータ又はメモリアドレスの特定の部分にアクセスするために利用するように構成されている特定のＡＰＩを含み得る。一部の実施形態では、メモリの制限されているセクションにアクセスしようとする予想されるアクセス方法は、メモリの制限されていないセクションにアクセスしようとする予想されるアクセス方法とは異なり得る。他の実施形態では、プロセス又はオペレーティングシステムは、メモリの制限されているセクションにアクセスしようとする任意の予想されるアクセス方法を有していないか、又はそれに関連付けられないことがある。
【００４３】
対照的に、本明細書で使用する「予想されないアクセス方法」という用語は、一般に、正当なプロセスによって使用されること、又はそれに関連付けられていることが知られていない任意のタイプ又は形態のアクセス方法を指す。一部の実施例では、（例えば、記録されていないＡＰＩを含む）予想されないアクセス方法は、プロセスが、データの部分に悪意を持ってアクセスすること及び／又はセキュリティサービスによる検出を回避することを試行していることを示し得る。
【００４４】
一部の実施形態では、検出モジュール１０８は、アクセス試行に含まれる１つ以上のプロトコル又は技法（例えばＡＰＩ）を予想されるアクセス方法のリスト又はデータベースと比較することによって、アクセス試行が予想されるか又は予想されないかを判定し得る。一実施例では、そのようなリストは、オペレーティングシステムの開発者によって生成され得る。検出されたアクセス方法が予想されるアクセス方法のいずれとも一致しない場合、検出モジュール１０８は、アクセス試行が予想されないものであると判定し得る。
【００４５】
図３に戻って、ステップ３０８において、本明細書に記載のシステムのうちの１つ以上は、予想されないアクセス方法を使用して、メモリの制限されているセクション内のデータの部分にアクセスしようと試行しているプロセスに少なくとも部分的に基づいて、プロセスが悪意のあるものであると判定し得る。例えば、判定モジュール１１０は、図２のコンピューティングデバイス２０２の一部として、予想されないアクセス方法２１４を使用して、メモリの制限されているセクション１２０内のデータの部分２１０にアクセスしようとする、プロセス２１２による試行を検出することに少なくとも部分的に基づいて、プロセス２１２が悪意のあるものであると判定し得る。
【００４６】
本明細書に記載のシステムは、様々な方法で実施されたプロセスによるアクセス試行に基づいて、プロセスが悪意のあるものであるかどうかを判定し得る。一部の実施例では、判定モジュール１１０は、記録されていないかつ／又は疑わしいアクセス方法（例えば、異常な又は未検証のＡＰＩ）を使用して、メモリの制限されているセクションにアクセスしょうと試行したプロセスが悪意のある可能性が高いと判定し得る。例えば、悪意のないプロセスは、一般に異なるタイプのアクセス方法を実装するように構成され得るので、判定モジュール１１０は、悪意のあるプロセスのみがそのような挙動を実施するであろうと判定し得る。したがって、判定モジュール１１０は、記録されていないか又は予想されないアクセス方法を使用しているプロセスが、プロセスがコンピューティングデバイス上で有害な挙動（悪意のあるシェルコードの実行など）を実施することを可能にするデータに悪意を持ってアクセスしようとしていると判定し得る。対照的に、判定モジュール１１０は、予想されるアクセス方法を使用して、メモリの制限されているセクションにアクセスしようと試行したいかなるプロセスもおそらく悪意のないものであると判定し得る。
【００４７】
図３に戻ると、ステップ３１０で、本明細書に記載のシステムのうちの１つ以上は、悪意のあるプロセスがコンピューティングデバイスに有害となることを防止するために、コンピューティングデバイスに対してセキュリティ措置を実施し得る。例えば、セキュリティモジュール１１２は、図２のコンピューティングデバイス２０２の一部として、プロセス２１２がコンピューティングデバイス２０２に有害となることを防止するために、コンピューティングデバイス２０２に対してセキュリティ措置２１６を実施し得る。
【００４８】
本明細書に記載のシステムは、悪意のあるプロセスが様々な方法でコンピューティングデバイスに有害となることを防止するために、セキュリティ措置を実施し得る。一部の実施例では、セキュリティモジュール１１２は、判定モジュール１１０が悪意のあるものであると判定したプロセスを終了させ得る。特に、セキュリティモジュール１１２は、プロセスがコンピューティングデバイス上で何らかの悪意のある挙動を実施する機会を得る前に（例えば、プロセスが予想されないアクセス方法を使用して、メモリの制限されているセクションにアクセスしようと試行した直後に）、悪意のあるプロセスを終了させ得る。他の実施例では、セキュリティモジュール１１２は、悪意のある特徴についてプロセスを更に分析するために、追加のリソースを割り当て得る。例えば、セキュリティモジュール１１２は、プロセスがコンピューティングデバイス上で実行されるべきかどうかを判定する前に、潜在的に悪意のあるプロセスを区分又は制御されたコンピューティング環境内で実行して、プロセスの異常又は危険な挙動を識別することを許可し得る。
【００４９】
それに加えて、又は代替的に、セキュリティモジュール１１２は、コンピューティングデバイス上で検出された悪意のあるプロセスについて、コンピューティングデバイスに関連付けられているユーザ、管理者、又はセキュリティサービスに警告し得る。例えば、開示されるセキュリティサービスがバックエンドセキュリティサーバと通信するクライアント側デバイス内で実装される場合には、セキュリティモジュール１１２は、検出された悪意のあるプロセスに関する報告をセキュリティサーバに送信し得る。
【００５０】
上記で説明したように、一部の実施例では、開示されるシステムは、悪意のないプロセスがメモリの制限されているセクション内のデータの部分にアクセスしようと試行していると判定し得る。これらの例では、セキュリティモジュール１１２は、実際にデータを記憶するメモリの制限されていないセクション内のデータに悪意のないプロセスがアクセスすることを許可し、それによって悪意のないプロセスの実行の中断を防止し得る。一実施例では、セキュリティモジュール１１２は、データの部分を記憶するメモリの制限されていないセクションのメモリアドレスを悪意のないプロセスに提供することによって、悪意のないプロセスがデータの部分にアクセスすることを許可し得る。具体的には、セキュリティモジュール１１２は、データの部分に関連付けられているＰＥＢローダチェーン内のデータの部分のベースメモリアドレスを一時的に復元し得る。
【００５１】
図４の実施例では、セキュリティモジュール１１２は、（メモリの制限されているセクションにつながるようにステップ３０４で変更された）ＤＬＬ４０８へのポインタの元の値を、一時的に復元し得る。更に、識別された悪意のないプロセスがＤＬＬにアクセスすると、セキュリティモジュール１１２は、ＤＬＬ４０８へのポインタを戻して、メモリの制限されているセクションに戻り得る。
【００５２】
図３に関連して上述したように、セキュリティサービスは、コンピューティングデバイス上で実行されている悪意のあるプロセスを識別及びブロックし得る。例えば、セキュリティサービスは、コンピューティングデバイス上で特定のタスクを実行するためにプロセスによって一般にアクセスされるデータの部分（例えば、共有又はリンクされたライブラリ）を識別し得る。次いで、セキュリティサービスは、データの部分のベースメモリアドレスがメモリの制限されているセクション内にあることを示し得る。悪意のあるプロセスは、悪意のないプロセスとは異なる方法で、メモリの制限されているセクションにアクセスしようと試行する可能性があるので、セキュリティサービスは、データの部分にアクセスしようと試行しているプロセスが悪意のあるものであるか又は悪意のないものであるかを判定し得る。悪意のないプロセスによるデータの部分へのアクセス試行を検出したことに応答して、セキュリティサービスは、（例えば、データの実際のメモリ位置をプロセスに提供することによって）プロセスにデータへのアクセスを許可し得る。しかしながら、セキュリティサービスが悪意のあるプロセスによるデータへのアクセスの試行を検出した場合、セキュリティサービスは悪意のあるプロセスがコンピューティングデバイスのセキュリティ状態を危険にさらすことを防止するために、１つ以上のセキュリティ措置を実施し得る。
【００５３】
図５は、本明細書に記載及び／又は図示される実施形態のうちの１つ以上を実装することができる例示的なコンピューティングシステム５１０のブロック図である。例えば、コンピューティングシステム５１０のうちの全て又は一部は、単独で又は他の要素と組み合わせてのいずれかで、（図３に示されるステップのうち１つ以上などの）本明細書に記載するステップのうち１つ以上を実施してもよく、かつ／又はそれを実施するための手段となってもよい。コンピューティングシステム５１０のうちの全て又は一部はまた、本明細書に記載及び／又は図示される他の任意のステップ、方法、若しくは処理を実施してもよく、かつ／又はそれを実施するための手段であってもよい。
【００５４】
コンピューティングシステム５１０は、コンピュータ可読命令を実行することができる任意のシングル若しくはマルチプロセッサのコンピューティングデバイス又はシステムを幅広く表す。コンピューティングシステム５１０の例としては、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、ハンドヘルドデバイス、又は他の任意のコンピューティングシステム若しくはデバイスが挙げられるが、これらに限定されない。その最も基本的な構成において、コンピューティングシステム５１０は、少なくとも１つのプロセッサ５１４及びシステムメモリ５１６を含んでもよい。
【００５５】
プロセッサ５１４は、一般に、データの処理又は命令の解釈及び実行が可能な任意のタイプ又は形態の物理的処理ユニット（例えば、ハードウェア実装型中央処理ユニット）を表す。特定の実施形態では、プロセッサ５１４は、ソフトウェアアプリケーション又はモジュールから命令を受信し得る。これらの命令は、プロセッサ５１４に、本明細書に記載及び／又は図示される例示的な実施形態のうちの１つ以上の機能を実施させ得る。
【００５６】
システムメモリ５１６は、一般に、データ及び／又は他のコンピュータ可読命令を格納することができる任意のタイプ又は形態の揮発性又は不揮発性の記憶デバイス又は媒体を表す。システムメモリ５１６の例としては、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、又は他の任意の好適なメモリデバイスが挙げられるが、これらに限定されない。必須ではないが、特定の実施形態では、コンピューティングシステム５１０は、揮発性メモリユニット（例えば、システムメモリ５１６など）、及び不揮発性記憶デバイス（例えば、詳細に後述するような、一次記憶デバイス５３２など）の両方を含んでもよい。一実施例では、図１のモジュール１０２のうちの１つ以上が、システムメモリ５１６内にロードされてもよい。
【００５７】
一部の実施例では、システムメモリ５１６は、プロセッサ５１４による実行のために、オペレーティングシステム５２４を記憶及び／又はロードし得る。一実施例では、オペレーティングシステム５２４は、コンピュータハードウェア及びソフトウェアリソースを管理し、かつ／又はコンピューティングシステム５１０上のコンピュータプログラム及び／又はアプリケーションに共通のサービスを提供するソフトウェアを含み、かつ／又はそれを表し得る。オペレーティングシステム６２４の例としては、非限定的に、ＬＩＮＵＸ、ＪＵＮＯＳ、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ、ＷＩＮＤＯＷＳ  ＭＯＢＩＬＥ、ＭＡＣ  ＯＳ、ＡＰＰＬＥの  ＩＯＳ、ＵＮＩＸ（登録商標）、ＧＯＯＧＬＥ  ＣＨＲＯＭＥ  ＯＳ、ＧＯＯＧＬＥの  ＡＮＤＲＯＩＤ（登録商標）、ＳＯＬＡＲＩＳ、それらのうちの１つ以上の変形形態、及び／又は任意の他の好適なオペレーティングシステムが挙げられる。
【００５８】
特定の実施形態では、例示的なコンピューティングシステム５１０はまた、プロセッサ５１４及びシステムメモリ５１６に加えて、１つ以上の構成要素又は要素を含んでもよい。例えば、図５に示されるように、コンピューティングシステム５１０は、メモリコントローラ５１８、入力／出力（Ｉ／Ｏ）コントローラ５２０、及び通信インターフェース５２２を含んでもよく、それらはそれぞれ通信基盤５１２を介して相互接続されてもよい。通信基盤５１２は、一般に、コンピューティングデバイスの１つ以上の構成要素間の通信を容易にすることができる、任意のタイプ又は形態の基盤を表す。通信基盤５１２の例としては、通信バス（産業標準構成（ＩＳＡ）、周辺装置相互接続（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）、又は類似のバスなど）、及びネットワークが挙げられるが、これらに限定されない。
【００５９】
メモリコントローラ５１８は、一般に、メモリ若しくはデータを扱うこと、又はコンピューティングシステム５１０の１つ以上の構成要素間の通信を制御することができる、任意のタイプ又は形態のデバイスを表す。例えば、特定の実施形態では、メモリコントローラ５１８は、通信基盤５１２を介して、プロセッサ５１４、システムメモリ５１６、及びＩ／Ｏコントローラ５２０の間の通信を制御してもよい。
【００６０】
Ｉ／Ｏコントローラ５２０は、一般に、コンピューティングデバイスの入出力機能を調整及び／又は制御することができる、任意のタイプ又は形態のモジュールを表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ５２０は、プロセッサ５１４、システムメモリ５１６、通信インターフェース５２２、ディスプレイアダプタ５２６、入力インターフェース５３０、及び記憶インターフェース５３４などの、コンピューティングシステム５１０の１つ以上の要素間におけるデータの転送を制御し、又はそれを容易にしてもよい。
【００６１】
図５に示すように、コンピューティングシステム５１０はまた、ディスプレイアダプタ５２６を介してＩ／Ｏコントローラ５２０に連結される少なくとも１つのディスプレイデバイス５２４も含んでもよい。ディスプレイデバイス５２４は、一般に、ディスプレイアダプタ５２６によって送付される情報を視覚的に表示することができる、任意のタイプ又は形態のデバイスを表す。同様に、ディスプレイアダプタ５２６は、一般に、ディスプレイデバイス５２４上に表示するために、通信基盤５１２から（又は当該技術分野において既知であるように、フレームバッファから）グラフィックス、テキスト、及び他のデータを送付するように構成された、任意のタイプ又は形態のデバイスを表す。
【００６２】
図５に示すように、例示的なコンピューティングシステム５１０はまた、入力インターフェース５３０を介してＩ／Ｏコントローラ５２０に連結される少なくとも１つの入力デバイス５２８を含んでもよい。入力デバイス５２８は、一般に、コンピュータ又は人間のいずれかが生成した入力を、例示的なコンピューティングシステム５１０に提供することができる、任意のタイプ又は形態の入力デバイスを表す。入力デバイス５２８の例としては、非限定的に、キーボード、ポインティングデバイス、音声認識デバイス、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他の入力デバイスが挙げられる。
【００６３】
それに加えて、又は代替的に、例示的コンピューティングシステム５１０は、追加のＩ／Ｏデバイスを含んでもよい。例えば、例示的なコンピューティングシステム５１０は、Ｉ／Ｏデバイス５３６を含んでもよい。この実施例では、Ｉ／Ｏデバイス５３６は、コンピューティングシステム５１０との人間の対話を容易にするユーザインターフェースを含み、かつ／又はそれを表し得る。Ｉ／Ｏデバイス５３６の例としては、非限定的に、コンピュータマウス、キーボード、モニタ、プリンタ、モデム、カメラ、スキャナ、マイクロフォン、タッチスクリーンデバイス、それらのうちの１つ以上の変形形態若しくは組み合わせ、及び／又は任意の他のＩ／Ｏデバイスが挙げられる。
【００６４】
通信インターフェース５２２は、例示的なコンピューティングシステム５１０と１つ以上の追加のデバイスとの間の通信を容易にすることができる、任意のタイプ又は形態の通信デバイス又はアダプタを幅広く表す。例えば、特定の実施形態では、通信インターフェース５２２は、コンピューティングシステム５１０と、追加のコンピューティングシステムを含む私設又は公衆ネットワークとの間の通信を容易にしてもよい。通信インターフェース５２２の例としては、有線ネットワークインターフェース（ネットワークインターフェースカードなど）、無線ネットワークインターフェース（無線ネットワークインターフェースカードなど）、モデム、及び他の任意の好適なインターフェースが挙げられるが、これらに限定されない。少なくとも１つの実施形態では、通信インターフェース５２２は、インターネットなどのネットワークへの直接リンクを介して、リモートサーバへの直接接続を提供してもよい。通信インターフェース５２２はまた、例えば、ローカルエリアネットワーク（イーサネット（登録商標）ネットワークなど）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラー電話接続、衛星データ接続、又は他の任意の好適な接続を通して、このような接続を間接的に提供してもよい。
【００６５】
特定の実施形態では、通信インターフェース５２２はまた、外部バス又は通信チャネルを介して、コンピューティングシステム５１０と１つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成された、ホストアダプタを表してもよい。ホストアダプタの例としては、非限定的に、小型コンピュータシステムインターフェース（ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（ＵＳＢ）ホストアダプタ、米国電気電子学会（ＩＥＥＥ）１３９４ホストアダプタ、アドバンストテクノロジーアタッチメント（ＡＴＡ）、パラレルＡＴＡ（ＰＡＴＡ）、シリアルＡＴＡ（ＳＡＴＡ）、及び外部ＳＡＴＡ（ｅＳＡＴＡ）ホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネット（登録商標）アダプタなどが挙げられる。通信インターフェース５２２はまた、コンピューティングシステム５１０が分散型又はリモートコンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース５２２は、実行のためにリモートデバイスから命令を受信し、又はリモートデバイスに命令を送信してもよい。
【００６６】
一部の実施例では、システムメモリ５１６は、プロセッサ５１４による実行のために、ネットワーク通信プログラム５３８を記憶及び／又はロードしてもよい。一実施例では、ネットワーク通信プログラム５３８は、コンピューティングシステム５１０が別のコンピューティングシステム（図５には図示せず）とのネットワーク接続５４２を確立し、かつ／又は通信インターフェース５２２を介して他のコンピューティングシステムと通信することを可能にするソフトウェアを含み得る。この実施例では、ネットワーク通信プログラム５３８は、ネットワーク接続５４２を介して他のコンピューティングシステムに送信される発信トラフィックの流れを指示することができる。それに加えて、又は代替的に、ネットワーク通信プログラム５３８は、プロセッサ５１４と関連してネットワーク接続５４２を介して他のコンピューティングシステムから受信された着信トラフィックの処理を命令してもよい。
【００６７】
図５にはこのようには示されていないが、ネットワーク通信プログラム５３８は、代替的に、通信インターフェース５２２に記憶及び／又はロードされてもよい。例えば、ネットワーク通信プログラム５３８は、通信インターフェース５２２に組み込まれたプロセッサ及び／又は特定用途向け集積回路（ＡＳＩＣ）によって実行されるソフトウェア及び／又はファームウェアの少なくとも一部を含みかつ／又は表し得る。
【００６８】
図５に示すように、例示的なコンピューティングシステム５１０はまた、記憶インターフェース５３４を介して通信基盤５１２に連結される、一次記憶デバイス５３２及びバックアップ記憶デバイス５３３を含んでもよい。記憶デバイス５３２及び５３３は、一般に、データ及び／又は他のコンピュータ可読命令を格納することができる、任意のタイプ又は形態の記憶デバイス又は媒体を表す。例えば、記憶デバイス５３２及び５３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであってもよい。記憶インターフェース５３４は、一般に、記憶デバイス５３２及び５３３とコンピューティングシステム５１０の他の構成要素との間でデータを転送するための、任意のタイプ又は形態のインターフェース又はデバイスを表す。一実施例では、図１のメモリの制限されているセクション１２０は、一次記憶デバイス５３２内に記憶及び／又はロードされてもよい。
【００６９】
特定の実施形態では、記憶デバイス５３２及び５３３は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を格納するように構成された取り外し可能な記憶ユニットから読み取り、かつ／又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、非限定的に、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。記憶デバイス５３２及び５３３はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令がコンピューティングシステム５１０内にロードされることを可能にする、他の同様の構造体又はデバイスを含んでもよい。例えば、記憶デバイス５３２及び５３３は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、かつ書き込むように構成されてもよい。記憶デバイス５３２及び５３３はまた、コンピューティングシステム５１０の一部であってもよく、又は他のインターフェースシステムを通してアクセスされる別個のデバイスであってもよい。
【００７０】
他の多くのデバイス又はサブシステムが、コンピューティングシステム５１０に接続されてもよい。反対に、図５に示す構成要素及びデバイスの全てが、本明細書に記載及び／又は図示される実施形態を実践するために存在する必要があるわけではない。上記で言及したデバイス及びサブシステムはまた、図５に示されるものとは異なる方法で相互接続されてもよい。コンピューティングシステム５１０はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を用いてもよい。例えば、本明細書で開示する例示的な実施形態のうちの１つ以上は、コンピュータ可読媒体上で、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される）としてコード化されてもよい。「コンピュータ可読媒体」という用語は、本明細書で使用するとき、一般に、コンピュータ可読命令を格納又は保有することができる、任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、非限定的に、搬送波などの伝送型媒体、並びに磁気記憶媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光学記憶媒体（例えば、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、及びブルーレイ（ＢＬＵ−ＲＡＹ（登録商標））ディスク）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュメディア）、並びに他の分散システムなどの非一時的媒体が挙げられる。
【００７１】
コンピュータプログラムを包含するコンピュータ可読媒体は、コンピューティングシステム５１０内にロードされてもよい。コンピュータ可読媒体に格納されたコンピュータプログラムのうちの全て又は一部は、次いで、システムメモリ５１６内に、及び／又は記憶デバイス５３２及び５３３の様々な部分内に格納されてもよい。プロセッサ５１４によって実行されるとき、コンピューティングシステム５１０内にロードされたコンピュータプログラムは、プロセッサ５１４に、本明細書に記載及び／又は図示される例示的な実施形態のうちの１つ以上の機能を実施させてもよく、かつ／又はそれらを実施するための手段とならせてもよい。それに加えて、又は代替的に、本明細書に記載及び／又は図示される例示的な実施形態のうちの１つ以上は、ファームウェア及び／又はハードウェアに実装されてもよい。例えば、コンピューティングシステム５１０は、本明細書で開示する例示的な実施形態のうちの１つ以上を実装するように適合された特定用途向け集積回路（ＡＳＩＣ）として構成されてもよい。
【００７２】
図６は、クライアントシステム６１０、６２０、及び６３０、並びにサーバ６４０及び６４５がネットワーク６５０に連結されてもよい、例示的なネットワークアーキテクチャ６００のブロック図である。上記に詳述したように、ネットワークアーキテクチャ６００のうちの全て又は一部は、単独で又は他の要素と組み合わせてのいずれかで、（図３に示されるステップのうち１つ以上などの）本明細書で開示するステップのうち１つ以上を実施してもよく、かつ／又はそれを実施するための手段となってもよい。ネットワークアーキテクチャ６００のうちの全て又は一部はまた、本開示に記載される他のステップ及び特徴を実施するために使用されてもよく、かつ／又はそれを実施するための手段となってもよい。
【００７３】
クライアントシステム６１０、６２０、及び６３０は、一般に、図５の例示的なコンピューティングシステム５１０などの、任意のタイプ又は形態のコンピューティングデバイス又はシステムを表す。同様に、サーバ６４０及び６４５は、一般に、様々なデータベースサービスを提供し、かつ／又は特定のソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバ又はデータベースサーバなどのコンピューティングデバイス又はシステムを表す。ネットワーク６５０は、一般に、例えばイントラネット、ＷＡＮ、ＬＡＮ、ＰＡＮ、又はインターネットを含む、任意の電気通信ネットワーク又はコンピュータネットワークを表す。一実施例では、クライアントシステム６１０、６２０、及び／若しくは６３０、並びに／又はサーバ６４０及び／若しくは６４５は、図１からのシステム１００のうちの全て又は一部を含んでもよい。
【００７４】
図６に示すように、１つ以上の記憶デバイス６６０（１）〜（Ｎ）は、サーバ６４０に直接取り付けられてもよい。同様に、１つ以上の記憶デバイス６７０（１）〜（Ｎ）は、サーバ６４５に直接取り付けられてもよい。記憶デバイス６６０（１）〜（Ｎ）及び記憶デバイス６７０（１）〜（Ｎ）は、一般に、データ及び／又は他のコンピュータ可読命令を格納することができる、任意のタイプ又は形態の記憶デバイス又は媒体を表す。特定の実施形態では、記憶デバイス６６０（１）〜（Ｎ）及び記憶デバイス６７０（１）〜（Ｎ）は、ネットワークファイルシステム（ＮＦＳ）、サーバメッセージブロック（ＳＭＢ）、又は共通インターネットファイルシステム（ＣＩＦＳ）などの、様々なプロトコルを使用して、サーバ６４０及び６４５と通信するように構成された、ネットワーク接続ストレージ（ＮＡＳ）デバイスを表してもよい。
【００７５】
サーバ６４０及び６４５はまた、ストレージエリアネットワーク（ＳＡＮ）ファブリック６８０に接続されてもよい。ＳＡＮファブリック６８０は、一般に、複数の記憶デバイス間の通信を容易にすることができる、任意のタイプ又は形態のコンピュータネットワーク又はアーキテクチャを表す。ＳＡＮファブリック６８０は、サーバ６４０及び６４５と、複数の記憶デバイス６９０（１）〜（Ｎ）及び／又はインテリジェント記憶アレイ６９５との間の通信を容易にしてもよい。ＳＡＮファブリック６８０はまた、記憶デバイス６９０（１）〜（Ｎ）及びインテリジェント記憶アレイ６９５が、クライアントシステム６１０、６２０、及び６３０にローカルで取り付けられたデバイスとして現れるような方式で、ネットワーク６５０並びにサーバ６４０及び６４５を介して、クライアントシステム６１０、６２０、及び６３０と、記憶デバイス６９０（１）〜（Ｎ）及び／又はインテリジェント記憶アレイ６９５との間の通信を容易にしてもよい。記憶デバイス６６０（１）〜（Ｎ）及び記憶デバイス６７０（１）〜（Ｎ）と同様に、記憶デバイス６９０（１）〜（Ｎ）及びインテリジェント記憶アレイ６９５は、一般に、データ及び／又は他のコンピュータ可読命令を格納することができる任意のタイプ又は形態の記憶デバイス又は媒体を表す。
【００７６】
特定の実施形態では、また図５の例示的なコンピューティングシステム５１０を参照すると、図５の通信インターフェース５２２などの通信インターフェースは、それぞれのクライアントシステム６１０、６２０、及び６３０とネットワーク６５０との間の接続を提供するために使用されてもよい。クライアントシステム６１０、６２０、及び６３０は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ６４０又は６４５上の情報にアクセスすることができてもよい。かかるソフトウェアは、クライアントシステム６１０、６２０、及び６３０が、サーバ６４０、サーバ６４５、記憶デバイス６６０（１）〜（Ｎ）、記憶デバイス６７０（１）〜（Ｎ）、記憶デバイス６９０（１）〜（Ｎ）、又はインテリジェント記憶アレイ６９５によってホストされるデータにアクセスすることを可能にしてもよい。図６は、データを交換するために（インターネットなどの）ネットワークを使用することを示しているが、本明細書に記載及び／又は図示される実施形態は、インターネット又は任意の特定のネットワークベースの環境に限定されない。
【００７７】
少なくとも１つの実施形態では、本明細書で開示する例示的な実施形態のうちの１つ以上のうちの全て又は一部は、コンピュータプログラムとしてコード化され、サーバ６４０、サーバ６４５、記憶デバイス６６０（１）〜（Ｎ）、記憶デバイス６７０（１）〜（Ｎ）、記憶デバイス６９０（１）〜（Ｎ）、インテリジェント記憶アレイ６９５、又はこれらの任意の組み合わせ上にロードされ、これらによって実行されてもよい。本明細書に開示される例示的な実施形態のうちの１つ以上のうちの全て又は一部は、コンピュータプログラムとして符号化され、サーバ６４０に記憶され、サーバ６４５によって実行され、ネットワーク６５０を通じてクライアントシステム６１０、６２０、及び６３０に分散され得る。
【００７８】
上で詳述されたように、コンピューティングシステム５１０及び／又はネットワークアーキテクチャ６００のうちの１つ以上の構成要素は、それぞれ単独で、又は他の要素と組み合わせてのいずれかで、コンピューティングデバイス上の悪意のあるプロセスを検出する例示的な方法の１つ以上のステップを実施し得るか、及び／又は実施するための手段であり得る。
【００７９】
前述の開示は、特定のブロック図、フローチャート、及び実施例を使用して様々な実施形態を記載しているが、本明細書に記載及び／又は図示されるそれぞれのブロック図の構成要素、フローチャートのステップ、動作、及び／又は構成要素は、個別にかつ／又は集合的に、広範なハードウェア、ソフトウェア、又はファームウェア（若しくはそれらの任意の組み合わせ）の構成を使用して実装されてもよい。それに加えて、同じ機能性を達成するように他の多くのアーキテクチャを実装することができるので、他の構成要素内に包含される構成要素のいかなる開示も、本質的に例示と見なされるべきである。
【００８０】
一部の実施例では、図１の例示的なシステム１００のうちの全て又は一部は、クラウドコンピューティング環境又はネットワークベースの環境の一部を表してもよい。クラウドコンピューティング環境は、インターネットを介して、様々なサービス及びアプリケーションを提供してもよい。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしての基盤など）は、ウェブブラウザ又は他のリモートインターフェースを通してアクセス可能であってもよい。本明細書に記載する様々な機能は、リモートデスクトップ環境又は他の任意のクラウドベースのコンピューティング環境を通して提供されてもよい。
【００８１】
様々な実施形態では、図１の例示的なシステム１００のうちの全て又は一部は、クラウドベースのコンピューティング環境内におけるマルチテナンシーを容易にしてもよい。換言すれば、本明細書に記載するソフトウェアモジュールは、本明細書に記載する機能のうちの１つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム（例えば、サーバ）を構成してもよい。例えば、本明細書に記載するソフトウェアモジュールのうちの１つ以上は、２つ以上のクライアント（例えば、顧客）がサーバ上で作動しているアプリケーションを共有するのを可能にするように、サーバをプログラムしてもよい。このようにプログラムされたサーバは、複数の顧客（即ち、テナント）の間で、アプリケーション、オペレーティングシステム、処理システム、及び／又は記憶システムを共有してもよい。本明細書に記載するモジュールのうちの１つ以上はまた、ある顧客が別の顧客のデータ及び／又は設定情報にアクセスできないように、顧客ごとにマルチテナントアプリケーションのデータ及び／又は設定情報を分割してもよい。
【００８２】
様々な実施形態によれば、図１の例示的なシステム１００のうちの全て又は一部は、仮想環境内で実装されてもよい。例えば、本明細書に記載するモジュール及び／又はデータは、仮想機械内で常駐及び／又は実行してもよい。本明細書で使用するとき、「仮想機械」という用語は、一般に、仮想機械マネージャ（例えば、ハイパーバイザ）によってコンピューティングハードウェアから抽出される、任意のオペレーティングシステム環境を指す。それに加えて、又は代替的に、本明細書に記載するモジュール及び／又はデータは、仮想化層内で常駐及び／又は実行してもよい。本明細書で使用するとき、「仮想化層」という用語は、一般に、オペレーティングシステム環境にオーバーレイする、並びに／あるいはそこから抽出される、任意のデータ層及び／又はアプリケーション層を指す。仮想化層は、基礎となる基本オペレーティングシステムの一部であるかのように仮想化層を提示する、ソフトウェア仮想化ソリューション（例えば、ファイルシステムフィルタ）によって管理されてもよい。例えば、ソフトウェア仮想化ソリューションは、最初に基本ファイルシステム及び／又はレジストリ内の場所に方向付けられる呼び出しを、仮想化層内の場所にリダイレクトしてもよい。
【００８３】
一部の実施例では、図１の例示的なシステム１００のうちの全て又は一部は、モバイルコンピューティング環境の部分を表してもよい。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子ブックリーダ、携帯情報端末、ウェアラブルコンピューティングデバイス（例えば、ヘッドマウントディスプレイを備えたコンピューティングデバイス、スマートウォッチなど）などを含む、広範なモバイルコンピューティングデバイスによって実装されてもよい。一部の実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間での１つのみのフォアグラウンドアプリケーションの提示、リモート管理特性、タッチスクリーン特性、位置及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、及び／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力を限定する制限されたプラットフォーム、アプリケーションのインストールを（例えば、認可されたアプリケーションストアからのみ生じるように）制限する制御などを含む、１つ以上の個別の特性を有することができる。本明細書で説明される様々な機能は、モバイルコンピューティング環境に対して提供され得る、及び／又はモバイルコンピューティング環境と相互作用し得る。
【００８４】
それに加えて、図１の例示的なシステム１００のうちの全て又は一部は、情報管理のための１つ以上のシステムの部分を表してもよく、それと相互作用してもよく、それによって生成されるデータを消費してもよく、かつ／又はそれによって消費されるデータを生成してもよい。本明細書で使用するとき、「情報管理」という用語は、データの保護、組織化、及び／又は記憶を指してもよい。情報管理のためのシステムの例としては、非限定的に、記憶システム、バックアップシステム、アーカイブシステム、複製システム、高可用性システム、データ検索システム、仮想化システムなどを挙げることができる。
【００８５】
一部の実施形態では、図１の例示的なシステム１００のうちの全て又は一部は、情報セキュリティのための１つ以上のシステムの部分を表してもよく、それによって保護されるデータを生成してもよく、かつ／又はそれと通信してもよい。本明細書で使用するとき、「情報セキュリティ」という用語は、保護されたデータに対するアクセスの制御を指してもよい。情報セキュリティのためのシステムの例としては、非限定的に、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、本人認証システム、アクセス制御システム、暗号化システム、ポリシー遵守システム、侵入検出及び防止システム、電子証拠開示システムなどを挙げることができる。
【００８６】
一部の実施例によれば、図１の例示的なシステム１００のうちの全て又は一部は、エンドポイントセキュリティのための１つ以上のシステムの部分を表してもよく、それと通信してもよく、かつ／又はそれから保護を受けてもよい。本明細書で使用するとき、「エンドポイントセキュリティ」という用語は、不正及び／若しくは違法な使用、アクセス、並びに／又は制御からのエンドポイントシステムの保護を指してもよい。エンドポイント保護のためのシステムの例としては、非限定的に、アンチマルウェアシステム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどを挙げることができる。
【００８７】
本明細書に記載及び／又は図示されるプロセスパラメータ及びステップの順序は、単なる例として与えられるものであり、所望に応じて変更することができる。例えば、本明細書に図示及び／又は記載されるステップは特定の順序で図示又は考察されることがあるが、これらのステップは、必ずしも図示又は考察される順序で実施される必要はない。本明細書に記載される及び／又は図示される様々な例示的な方法はまた、本明細書に記載される及び／又は図示される工程のうちの１つ以上を省略してもよく、又は開示されるものに加えて追加の工程を含んでもよい。
【００８８】
種々の実施形態が、完全に機能的なコンピューティングシステムに関連して本明細書に記載され及び／又は図示されているが、これら例示的な実施形態のうちの１つ以上は、実際に配布を行うために使用されるコンピュータ可読記憶媒体の特定のタイプに関わらず、多様な形態のプログラム製品として配布され得る。本明細書に開示される実施形態はまた、特定のタスクを実施するソフトウェアモジュールを使用して実装されてもよい。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体又はコンピューティングシステムに格納されてもよい、スクリプト、バッチ、若しくは他の実行可能ファイルを含んでもよい。一部の実施形態では、これらのソフトウェアモジュールは、本明細書に開示される例示的な実施形態のうちの１つ以上を実施するようにコンピューティングシステムを構成してもよい。
【００８９】
それに加えて、本明細書に記載するモジュールのうちの１つ以上は、データ、物理的デバイス、及び／又は物理的デバイスの表現を、１つの形態から別の形態へと変換してもよい。例えば、本明細書に記載のモジュールのうちの１つ以上は、データの部分を含むように見えるメモリの制限されているセクションにアクセスしようとする、コンピューティングデバイス上で実行されているプロセスによる試行を受信し、アクセス試行をプロセスが悪意のあるものであることの指標に変換し、変換の結果をコンピューティングデバイスのユーザ又は管理者に出力し、悪意のあるプロセスがコンピューティングデバイスに有害となることを防止するために、変換の結果を使用し、変換の結果をサーバ又はデータベースに記憶してもよい。それに加えて、又は代替的に、本明細書に列挙されるモジュールのうちの１つ以上は、コンピューティングデバイス上で実行し、コンピューティングデバイスにデータを格納し、並びに／あるいは別の方法でコンピューティングデバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び／又は物理的コンピューティングデバイスの他の任意の部分を、１つの形態から別の形態へと変換してもよい。
【００９０】
上述の記載は、本明細書に開示される例示的な実施形態の様々な態様を他の当業者が最良に利用するのを可能にするために提供されてきた。この例示的な記載は、網羅的であることを意図するものではなく、又は開示される任意の正確な形態に限定することを意図するものではない。本開示の趣旨及び範囲から逸脱することなく、多くの修正及び変形が可能である。本明細書に開示される実施形態は、あらゆる点で例示的であり、限定的ではないものと見なされるべきである。本開示の範囲を決定する際に、添付の特許請求の範囲及びそれらの等価物を参照するべきである。
【００９１】
別途記載のない限り、「〜に接続される」及び「〜に連結される」という用語（並びにそれらの派生語）は、本明細書及び特許請求の範囲で使用するとき、直接的接続及び間接的接続（即ち、他の要素若しくは構成要素を介する）の両方を許容するものとして解釈されるものである。それに加えて、「ａ」又は「ａｎ」という用語は、本明細書及び特許請求の範囲で使用するとき、「〜のうち少なくとも１つ」を意味するものとして解釈されるものである。最後に、簡潔にするため、「含む」及び「有する」という用語（並びにそれらの派生語）は、本明細書及び特許請求の範囲で使用するとき、「備える」という単語と互換性があり、同じ意味を有する。
【図１】
2019532405.tif 000003
【図２】
2019532405.tif 000004
【図３】
2019532405.tif 000005
【図４】
2019532405.tif 000006
【図５】
2019532405.tif 000007
【図６】
2019532405.tif 000008
【手続補正書】
【提出日】平成31年2月28日(2019.2.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上の悪意のあるプロセスを検出するためのコンピュータ実装方法であって、前記方法の少なくとも一部分が、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実行され、前記方法が、
メモリの制限されていないセクションに記憶され、前記コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、前記コンピューティングデバイス上のデータの部分を識別することと、
前記コンピューティングデバイス内にメモリの制限されているセクションを割り当て、前記データの部分が、前記データの部分を実際に記憶する前記メモリの制限されていないセクションの代わりに、前記メモリの制限されているセクションに位置していることを示すことと、
予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようとする、前記コンピューティングデバイス上で実行されているプロセスによる試行を検出することと、
前記予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようと試行している前記プロセスに少なくとも部分的に基づいて、前記プロセスが悪意のあるものであると判定することと、
前記悪意のあるプロセスが前記コンピューティングデバイスに有害となることを防止するために、前記コンピューティングデバイスに対してセキュリティ措置を実施することと、を含む、コンピュータ実装方法。
【請求項２】
前記コンピューティングデバイス上の前記データの部分を識別することが、前記プロセスが実行を開始した直後に初期タスクを実行するために、前記コンピューティングデバイス上の前記プロセスによってアクセスされる共有ライブラリを識別することを含む、請求項１に記載の方法。
【請求項３】
前記共有ライブラリを識別することが、前記共有ライブラリのベースメモリアドレスを識別するために、プロセス環境ブロックデータ構造を検索することを含む、請求項１又は２に記載の方法。
【請求項４】
前記データの部分が前記メモリの制限されているセクションに位置していることを示すことが、前記プロセス環境ブロックデータ構造内の前記共有ライブラリの前記ベースメモリアドレスを、前記メモリの制限されているセクションのメモリアドレスで上書きすることを含む、請求項１又は３に記載の方法。
【請求項５】
前記メモリの制限されているセクションへアクセスしようとする、前記プロセスによる前記試行を検出することが、前記メモリの制限されているセクションへアクセスしようとする、前記コンピューティングデバイス上で実行されている前記プロセスによるいかなる試行も傍受するように、ベクトル化例外ハンドラを登録することを含む、請求項１に記載の方法。
【請求項６】
前記予想されないアクセス方法を使用して、前記メモリの制限されているセクションにアクセスしようとする、前記プロセスによる前記試行を検出することが、前記プロセスが、悪意のないプロセスによって使用されるアプリケーションプログラムインターフェースとして記録されていないアプリケーションプログラムインターフェースを使用して、前記メモリの制限されているセクションにアクセスしようと試行していると判定することを含む、請求項１に記載の方法。
【請求項７】
予想されるアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようとする、前記コンピューティングデバイス上で実行されている追加のプロセスによる試行を検出することと、
前記予想されるアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようと試行している、前記追加のプロセスに少なくとも部分的に基づいて、前記追加のプロセスが悪意のないものであると判定することと、
前記悪意のないプロセスが、前記メモリの制限されていないセクション内の前記データの部分にアクセスすることを許可することと、を更に含む、請求項１に記載の方法。
【請求項８】
前記予想されるアクセス方法を使用して、前記メモリの制限されているセクションへアクセスしようとする、前記追加のプロセスによる前記試行を検出することが、前記追加のプロセスが、悪意のないプロセスによって使用されるアプリケーションプログラムインターフェースとして記録されているアプリケーションプログラムインターフェースを使用して、前記メモリの制限されているセクションにアクセスしようと試行していると判定することを含む、請求項１又は７に記載の方法。
【請求項９】
前記悪意のないプロセスが、前記メモリの制限されていないセクション内の前記データの部分にアクセスすることを許可することが、
前記データの部分が前記メモリの制限されているセクションに位置していることを示す前に、前記メモリの制限されていないセクションのメモリアドレスを識別及び記憶することと、
前記メモリの制限されているセクション内の前記データの部分へアクセスしようとする、前記悪意のないプロセスによる試行を検出した後に、前記悪意のないプロセスに、前記メモリの制限されていないセクションの前記メモリアドレスを示すことと、を含む、請求項１又は７に記載の方法。
【請求項１０】
前記セキュリティ措置が、
前記悪意のあるプロセスを終了させることと、
前記悪意のあるプロセスについて前記コンピューティングデバイスの管理者に警告することと、のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項１１】
コンピューティングデバイス上の悪意のあるプロセスを検出するためのシステムであって、前記システムが、
メモリに記憶されており、メモリの制限されていないセクションに記憶され、コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、前記コンピューティングデバイス上のデータの部分を識別する、識別モジュールと、
メモリに記憶されており、前記コンピューティングデバイス内にメモリの制限されているセクションを割り当て、前記データの部分が、前記データの部分を実際に記憶する前記メモリの制限されていないセクションの代わりに、前記メモリの制限されているセクションに位置していることを示す、割り当てモジュールと、
メモリに記憶されており、予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようとする、前記コンピューティングデバイス上で実行されているプロセスによる試行を検出する、検出モジュールと、
メモリに記憶されており、前記予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようと試行している前記プロセスに少なくとも部分的に基づいて、前記プロセスが悪意のあるものであると判定する、判定モジュールと、
メモリに記憶されており、前記悪意のあるプロセスが前記コンピューティングデバイスに有害となることを防止するために、前記コンピューティングデバイスに対してセキュリティ措置を実施する、セキュリティモジュールと、
前記識別モジュール、前記割り当てモジュール、前記検出モジュール、前記判定モジュール、及び前記セキュリティモジュールを実行するように構成されている、少なくとも１つのハードウェアプロセッサと、を備える、システム。
【請求項１２】
前記識別モジュールが、前記プロセスが実行を開始した直後に初期タスクを実行するために、前記コンピューティングデバイス上の前記プロセスによってアクセスされる共有ライブラリを識別することによって、前記コンピューティングデバイス上の前記データの部分を識別する、請求項１１に記載のシステム。
【請求項１３】
前記識別モジュールが、前記共有ライブラリのベースメモリアドレスを識別するために、プロセス環境ブロックデータ構造を検索することによって、前記共有ライブラリを識別する、請求項１１又は１２に記載のシステム。
【請求項１４】
前記割り当てモジュールが、前記プロセス環境ブロックデータ構造内の前記共有ライブラリの前記ベースメモリアドレスを、前記メモリの制限されているセクションのメモリアドレスで上書きすることによって、前記データの部分が前記メモリの制限されているセクションに位置していることを示す、請求項１１又は１３に記載のシステム。
【請求項１５】
１つ以上のコンピュータ可読命令を含む非一時的コンピュータ可読媒体であって、前記命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
メモリの制限されていないセクションに記憶され、前記コンピューティングデバイス上で実行されている間にプロセスによってアクセスされる、前記コンピューティングデバイス上のデータの部分を識別することと、
前記コンピューティングデバイス内にメモリの制限されているセクションを割り当て、前記データの部分が、前記データの部分を実際に記憶する前記メモリの制限されていないセクションの代わりに、前記メモリの制限されているセクションに位置していることを示すことと、
予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようとする、前記コンピューティングデバイス上で実行されているプロセスによる試行を検出することと、
前記予想されないアクセス方法を使用して、前記メモリの制限されているセクション内の前記データの部分にアクセスしようと試行している前記プロセスに少なくとも部分的に基づいて、前記プロセスが悪意のあるものであると判定することと、
前記悪意のあるプロセスが前記コンピューティングデバイスに有害となることを防止するために、前記コンピューティングデバイスに対してセキュリティ措置を実施することと、を行わせる、非一時的コンピュータ可読媒体。
【国際調査報告】
2019532405.tif 000009
2019532405.tif 000010