(57)【要約】  本明細書に説明される特定の実施形態は、コードの実行のとき、コードを監視するように構成され得る電子デバイスを提供する。コードは自己書き換えコードを含み得る。システムは、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録し得る。
2018519603.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサに、
コードの実行のとき、自己書き換えコードを含むコードを監視する手順と、
前記自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録する手順と、
を実行させるための、コンピュータプログラム。
【請求項２】
前記少なくとも１つのプロセッサに、
マルウェアに関する前記コードを分析する手順
を実行させるための、請求項１に記載のコンピュータプログラム。
【請求項３】
前記少なくとも１つのプロセッサに、
ポイズンＧｅｔＰＣアドレスを前記ＧｅｔＰＣアドレス領域にばらまく手順
を実行させるための、請求項１または２に記載のコンピュータプログラム。
【請求項４】
前記ポイズンＧｅｔＰＣアドレスがメモリ障害を引き起こす、請求項３に記載のコンピュータプログラム。
【請求項５】
前記少なくとも１つのプロセッサに、
メモリ障害例外が変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断される場合に前記イベントを記録する手順
を実行させるための、請求項１に記載のコンピュータプログラム。
【請求項６】
前記少なくとも１つのプロセッサに、
さらに、前記自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にセキュリティモジュールに前記コードを通信する手順
を実行させるための、請求項１に記載のコンピュータプログラム。
【請求項７】
前記少なくとも１つのプロセッサに、
さらに、前記コードの変換の最中に例外が生じたかどうか判断する手順と、
無効アドレスにおいて前記例外が生じた場合に前記イベントを記録する手順と
を実行させるための、請求項１に記載のコンピュータプログラム。
【請求項８】
前記少なくとも１つのプロセッサに、
さらに、前記コードが書き込み可能メモリ領域にある場合に前記コードをセキュリティモジュールに通信する手順、
を実行させるための、請求項１に記載のコンピュータプログラム。
【請求項９】
コードの実行のとき、自己書き換えコードを含む前記コードを監視し、
前記自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録する、
実行プロファイリングバイナリ変換モジュールを備える、装置。
【請求項１０】
前記装置が、
マルウェアに関する前記コードを分析する、
セキュリティモジュールをさらに含む、請求項９に記載の装置。
【請求項１１】
前記実行プロファイリングバイナリ変換モジュールが、
さらに、ポイズンＧｅｔＰＣアドレスを前記ＧｅｔＰＣアドレス領域にばらまく、
請求項９または１０に記載の装置。
【請求項１２】
前記ポイズンＧｅｔＰＣアドレスがメモリ障害を引き起こす、請求項１１に記載の装置。
【請求項１３】
前記実行プロファイリングバイナリ変換モジュールが、
さらに、メモリ障害例外が変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断される場合に前記イベントを記録する、
請求項９に記載の装置。
【請求項１４】
前記実行プロファイリングバイナリ変換モジュールが、
さらに、前記自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にセキュリティモジュールに前記コードを通信する、
請求項９に記載の装置。
【請求項１５】
前記実行プロファイリングバイナリ変換モジュールが、
さらに、前記コードの変換の最中に例外が生じたかどうか判断し、
無効アドレスにおいて前記例外が生じた場合に前記イベントを記録する、
請求項９に記載の装置。
【請求項１６】
前記実行プロファイリングバイナリ変換モジュールが、
さらに、前記コードが書き込み可能メモリ領域にある場合に前記コードをセキュリティモジュールに通信する、
請求項９に記載の装置。
【請求項１７】
コードの実行のとき、自己書き換えコードを含む前記コードを監視する段階と、
前記自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録することと
を備える、方法。
【請求項１８】
マルウェアに関する前記コードを分析する段階
をさらに備える、請求項１７に記載の方法。
【請求項１９】
ポイズンＧｅｔＰＣアドレスを前記ＧｅｔＰＣアドレス領域にばらまく段階
をさらに備える、請求項１７または１８に記載の方法。
【請求項２０】
前記ポイズンＧｅｔＰＣアドレスがメモリ障害を引き起こす、請求項１９に記載の方法。
【請求項２１】
メモリ障害例外が変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断された場合に前記イベントを記録する段階
をさらに備える、請求項１７に記載の方法。
【請求項２２】
前記自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にセキュリティモジュールに前記コードを通信する段階
をさらに備える、請求項１７に記載の方法。
【請求項２３】
前記コードの変換の最中に例外が生じたかどうか判断する段階と、
無効アドレスにおいて前記例外が生じた場合に前記イベントを記録する段階と
をさらに備える、請求項１７に記載の方法。
【請求項２４】
シェルコードを検知するためのシステムであって、前記システムは、実行プロファイリングバイナリ変換モジュールを備え、
前記実行プロファイリングバイナリ変換モジュールは、
コードの実行のとき、自己書き換えコードを含む前記コードを監視し、
前記自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録する、
システム。
【請求項２５】
前記実行プロファイリングバイナリ変換モジュールが、さらに、ポイズンＧｅｔＰＣアドレスを前記ＧｅｔＰＣアドレス領域にばらまく、
請求項２４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願への相互参照］
本出願は、２０１５年６月２７日に出願された、「シェルコードの検知」と題された米国仮特許出願第６２／１８５，６０４号、および、２０１５年９月２６日に出願された、「シェルコードの検知」と題された米国非仮特許出願第１４／８６６，８６０号の優先権の利益を主張し、その両者はその全体において参照によって本明細書に組み込まれる。
【０００２】
本開示は、概して、情報セキュリティの分野に関し、特に、マルウェアを特定するためのシェルコードの検知に関する。
【背景技術】
【０００３】
今日の社会において、ネットワークセキュリティの分野はますます重要となってきている。インターネットは、世界中の異なるコンピュータネットワークの相互接続を可能にしている。特に、インターネットは、様々なタイプのクライアントデバイスを介して、異なるコンピュータネットワークに接続された異なるユーザの間でデータを交換するための媒体を提供する。インターネットの使用が企業のコミュニケーションおよび個人のコミュニケーションを変えた一方、それは、また、悪意のある操作者がコンピュータおよびコンピュータネットワークへの不正アクセスを得るための、および、機密情報の意図的なまたは不注意による開示のための、手段として使用されている。
【０００４】
ホストコンピュータに感染する、悪意のあるソフトウェア（「マルウェア」）は、ホストコンピュータと関連づけられた企業または個人から機密情報を盗取する、他のホストコンピュータに伝播する、および／または、分散型サービス妨害攻撃を支援する、ホストコンピュータからのスパムまたは悪意のあるｅメールを送信する、などの、任意の数の悪意のある動作を実行することが可能であり得る。従って、コンピュータおよびコンピュータネットワークを、悪意のあるソフトウェアおよびデバイスによる、悪意のある、および不注意なエクスプロイトから保護するための、著しい管理課題が残っている。
【図面の簡単な説明】
【０００５】
本開示のより完全な理解、ならびにその特徴および利点を提供するように、添付の図面と共に用いられる以下の説明が参照される。同様の参照符号は同様の部分を表す。
【０００６】
【図１】本開示の一実施形態による、シェルコードの検知のための通信システムの簡略ブロック図である。
【０００７】
【図２】本開示の一実施形態による、シェルコードの検知のための通信システムの一部の簡略ブロック図である。
【０００８】
【図３】本開示の一実施形態による、シェルコードの検知のための通信システムの例示的な詳細の簡略ブロック図である。
【０００９】
【図４】本開示の一実施形態による、シェルコードの検知のための通信システムの例示的な詳細の簡略ブロック図である。
【００１０】
【図５】本開示の一実施形態による、シェルコードの検知のための通信システムの例示的な詳細の簡略ブロック図である。
【００１１】
【図６】本開示の一実施形態による通信システムに関連づけられ得る、潜在的な操作を示す簡略フローチャートである。
【００１２】
【図７】本開示の一実施形態による通信システムに関連づけられ得る、潜在的な操作を示す簡略フローチャートである。
【００１３】
【図８】本開示の一実施形態による通信システムに関連づけられ得る、潜在的な操作を示す簡略フローチャートである。
【００１４】
【図９】一実施形態によるポイントツーポイント構成に配置された、例示的なコンピューティングシステムを示すブロック図である。
【００１５】
【図１０】本開示の例示的なＡＲＭエコシステム・システムオンチップ（ＳｏＣ）に関連づけられる、簡略ブロック図である。
【００１６】
【図１１】一実施形態による例示的なプロセッサコアを示すブロック図である。
【００１７】
図面は、その寸法が本開示の範囲から大幅に逸脱することなく変わり得るので、必ずしも縮尺通りに描かれてはいない。
【発明を実施するための形態】
【００１８】
［例示的な実施形態］
図１は、本開示の一実施形態による、シェルコードの検知のための通信システム１００の簡略ブロック図である。図１に示されるように、通信システム１００は、電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６を含み得る。電子デバイス１０２は、プロセッサ１１０、メモリ１１２、セキュリティモジュール１１４、アプリケーション１１６、入力／出力ドライバ１１８、および実行プロファイリングバイナリ変換モジュール１２４を含み得る。メモリ１１２は、ＧｅｔＰＣアドレス領域１２０およびホワイトリスト１４６を含み得る。クラウドサービス１０４およびサーバ１０６は各々、ネットワークセキュリティモジュール１２２を含み得る。電子デバイス１０２と、クラウドサービス１０４と、サーバ１０６とは、ネットワーク１０８を用いて通信し得る。
【００１９】
例示的な実施形態において、通信システム１００は、本開示の一実施形態によるシェルコードを検知するように構成され得る。図１の複数の要素は、任意の好適な（有線または無線）接続を採用する１または複数のインタフェースを通じて互いに結合され得、それはネットワーク（例えば、ネットワーク１０８など）通信のための実行可能な経路を提供する。加えて、図１のそれらの要素の任意の１または複数は、特定の構成の必要性に基づいて、組み合わされ得、または、アーキテクチャから取り除かれ得る。通信システム１００は、ネットワークにおけるパケットの送信または受信のための、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信が可能な構成を含み得る。通信システム１００は、必要に応じて、および特定の必要性に基づいて、ユーザデータグラムプロトコル／ＩＰ（ＵＤＰ／ＩＰ）または任意の他の好適なプロトコルと共に、また動作し得る。
【００２０】
通信システム１００の特定の例の技術を示す目的で、ネットワーク環境をトラバースし得る通信を理解することが重要である。以下の基礎的情報は、本開示が適切に説明され得る基礎とみなされ得る。 
【００２１】
現在、攻撃を実施するために既存のアプリケーションまたはライブラリコードを使用する、リターン・オリエンテッド・プログラミング（ＲＯＰ）のエクスプロイト攻撃が、データ実行防止（ＤＥＰ）軽減策を回避するために普及している。多くのＲＯＰエクスプロイトは、攻撃の実施および完了のために、後にシェルコード（例えばマシンコードペイロード）の実行を伴う。そのようなシェルコードは、シグナチャベースのアンチウィルス検知技術を回避するために効果的であることが知られている、コード難読化をまた用いる。
【００２２】
マルウェアは、しばしば、それ自体をアンチウィルススキャナから隠すように、圧縮、暗号化など独占された方法などの、難読化技術を用いる。そのような難読化されたコードは、実行可能なマルウェア、およびエクスプロイトによって伝播されたマルウェアペイロードの多くにおいて見られる。難読化技術は、シグナチャベースのアンチウィルス検知技術の回避において効果的であることが知られている。
【００２３】
シグナチャベースの方法は通常、難読化されたマルウェアを検知可能ではないので、残念ながら、そのような難読化されたマルウェアコードのための大部分の現在の対策は、非常に限られたものである。必要とされることは、難読化されたマルウェアコードの動的なランタイム検知である。システムおよび方法が、自己復号コードシーケンスを検知し、アンチウィルスソフトウェアに、シグナチャベースの方法の動的適用を可能にし、難読化されたマルウェアコードの復号後にマルウェアの発見を可能にし得るのならば、有益であろう。
【００２４】
図１に概説されるような、シェルコードの検知のための通信システムが、これらの（および他の）課題を解決し得る。通信システム１００は、難読化されたマルウェアコードのランタイム検知を可能にし、自己復号コードシーケンスを検知し、アンチウィルスソフトウェアにシグナチャベースの方法の動的適用を可能にし、難読化されたマルウェアコードの復号後にマルウェアの特定を可能にするように構成され得る。難読化されたマルウェアまたはシェルコードは、通常は暗号化されており、実行前に自己復号される必要がある。マルウェアコードのこの自己復号処理は、難読化されたマルウェアコード本文のアドレスを位置決めするように用いられる、ＧｅｔＰＣまたはＧｅｔＥＩＰ操作で始まる。ひとたび、難読化されたコードのアドレスがＧｅｔＰＣ操作によって知られると、マルウェアは発見されたＧｅｔＰＣアドレスから、アンパック（解凍）および自己復号（デコード）操作を実行する。処理は、マルウェアコード実行前のそのコードの中の数バイトを書き換える、自己書き換えコード操作を伴い得る。
【００２５】
通常、自己復号処理は、ＧｅｔＰＣコードの実行、ＧｅｔＰＣアドレスの消費、および難読化されたマルウェアコードメモリに対する現実の復号（デコード）操作を含む。通信システム１００は、マルウェアによって一般にＧｅｔＰＣ操作に用いられる、命令シーケンスを特定するバイナリ変換技術を用い、ＧｅｔＰＣアドレスの消費を検知するようにポイズニングされたアドレスをばらまき（ｓｅｅｄ）、現実の復号（デコード）操作を検知するようにバイナリ変換システムの自己書き換えコード（ＳＭＣ）検知機構を用い得る。用語「ポイズニング」は、ポイズニングされたアドレスまたは領域がアクセスされた場合に、例外、障害、イベント、アラートなどの、いくつかの動作を引き起こすように、アドレスまたは領域を書き換えるために用いられる。１つより多い方法が、ポイズニングされたアドレスをばらまくように用いられ得ることに留意されたい。ＧｅｔＰＣアドレスが命令領域にあるか非命令領域にあるかを判断するための、転送コードフロー分析などのバイナリ変換技術を伴うこと、および、復号処理イベントのトラッキングおよび関連づけによって、誤検知の判断が回避され得る。さらに、マルウェアコードの最終判断を作成するための復号処理後に、難読化解除されたマルウェアコードにシグナチャベースのスキャン方法を適用することによって、誤検知イベントが回避され得る。加えて、マルウェアによって用いられる自己発見ＧｅｔＰＣコードシーケンスは、また非常に特殊である。
【００２６】
通信システム１００は、ＧｅｔＰＣ操作を含有するコード領域をデコードおよび分析し、ＧｅｔＰＣアドレスがコード領域に位置するか非コード領域に位置するかを区別するための、バイナリ変換器の先読みコードフロー分析を用いるようにまた構成され得る。通信システム１００は、イベントのこれらのシーケンスをトラッキングし、最終検知決定を行い、復号処理発見の誤検知を最小化するための、第３のイベントが生じるまで待機し得る。通信システム１００は、セキュリティモジュール１１４またはネットワークセキュリティモジュール１２２が、難読化されたマルウェアコードの復号の検知後に、シグナチャベースの方法を動的に適用することを、また可能にし得る。
【００２７】
多くの現在の、ランタイムマルウェア検知解決策およびシグナチャベースの検知方法は、マルウェアの難読化技術およびコード難読化を検知することが不可能である。コードは難読化解除されなければならず、マルウェア専門家たちが、マルウェアを分析するために多くの時間、多くの日数を費やし、しばしば数か月間をかけて徹底的な手動分析を行うことをしばしば必要とするので、難読化されたマルウェアコードの検知は困難である。処理メモリの周期的なスキャンは、コストが大きく、システムの性能に厳しい影響を与える。今日の解決策のそのような厳しい限界は、アンチウィルス業者が効果的な自動化マルウェア分析解決策を開発および展開すること、ならびに、そのような難読化されたマルウェアおよびマルウェアペイロードを検知するためのエンドポイントセキュリティを展開することを、妨げ得るか邪魔し得る。
【００２８】
通信システム１００は、難読化されたマルウェアコードおよびマルウェアペイロードのランタイム検知機構を提供し、バイナリ変換技術を用いて難読化されたマルウェアコードの復号処理を発見するように構成され得る。通信システム１００は、また、難読化されたマルウェアコードの自己復号後にコードスキャンを実行し得る既存のシグナチャベースの方法を、補完および改善し得る。
【００２９】
通信システム１００は、マルウェアコードの復号処理を検知することによって、難読化されたマルウェアコードまたは難読化されたペイロード（例えば、シェルコード）のための動的なランタイム検知機構を提供する。マルウェアコードの復号処理は、ＧｅｔＰＣ命令シーケンスの実行、発見されたＧｅｔＰＣアドレスの消費、および、発見されたＰＣアドレスから起動されたコード領域の自己書き換え操作を伴い得る。実行プロファイリングバイナリ変換モジュール１２４は、バイナリ分析、変換器、およびランタイム機能またはモジュールを含み得る。バイナリ分析モジュール（例えば、図２に示された変換器１２８）は、バイナリ分析を実行し、ＧｅｔＰＣ命令シーケンスを特定するように構成され得る。変換器モジュール（例えば、変換器１２８）は、セキュリティモジュールへのトラッキングおよびコールバックを可能にするためのＧｅｔＰＣコードシーケンスをインストルメント化するように、オリジナルのアプリケーションバイナリの変換済みバージョンを生成するように構成され得る。ランタイムモジュール（例えば、図２に示されたランタイム１３０）は、変換設備、削除、および不要データコレクションを含む変換の管理のために構成され得る。セキュリティモジュール（例えば、セキュリティモジュール１１４またはネットワークセキュリティモジュール１２２）は、オペレーティングシステムと相互作用し、ＯＳシステム呼び出しのエミュレーションおよび仮想化を実施するために構成され得る。
【００３０】
ｘ８６  ＩＳＡにおいて現在のＰＣアドレスの自己発見を実装する命令シーケンスには、多数の方法がある。しかしながら、誤検知が最低限であるマルウェアコードによって用いられるＧｅｔＰＣコードシーケンスを、ＢＴモジュールが特定することが起こり得る。一例は、ＧｅｔＰＣ操作を含有するコード領域をデコードおよび分析し、ＧｅｔＰＣアドレスが現実のコード領域に位置するか非コード領域に位置するかを区別するように、変換器の先読みコードフロー分析を用いることを含む。
【００３１】
例えば、ＰＯＰが後に続くＣＡＬＬ０は、ｘ８６コードにおいて現在のＰＣを取得する比較的単純な方法であり、いくらか正規のランタイムコードさえも、このコードシーケンスを用い得る。このコードシーケンスは、しかしながら、ヌルバイトを含有する。ヌルバイト挿入は、通常はホスト侵入アプリケーションによって監視され、検知可能であるので、マルウェアは、現在のＧｅｔＰＣアドレスの自己発見を実装するＰＯＰ命令が後に続く、ＦＳＴＥＮＶ命令をしばしば用いる。マルウェアによって一般に用いられる他のＧｅｔＰＣ命令シーケンスは、呼び出し対象アドレスをＣＡＬＬ命令自体の中央にポインティングしたＣＡＬＬ命令を含む。マルウェアのシェルコードによって用いられる他のコードシーケンスがあるが、バイナリ分析は、他のパターンを認識するように、ならびに、現在のＩＰアドレスの自己発見を実装するそのような不審な命令およびコードシーケンスを特定するように構成され得る。例えば、コードがＧｅｔＰＣ操作として特定される場合、通信システム１００は、それが誤検知をトラッキングおよび最小化する不審なＧｅｔＰＣ操作であるかどうかを裏付けるための、分析を実行するように構成され得る。分析は、コードが書き込み可能（ヒープ、スタックなど）なメモリ（実行可能かつ書き込み可能なメモリを含む）内にあるかどうか判断することを含み得、コードがＤＬＬなどの実行可能なモジュールによって裏打ちされているかどうか判断し得、コードが実行可能なモジュールによって裏打ちされており、かつモジュールが信頼されている（例えば、信頼されるソースによって署名された、他の手段によって検査された）かどうか判断し得る、などである。
【００３２】
ひとたびＧｅｔＰＣ命令シーケンスが発見されると、変換器は必要なインストルメンテーションによって、オリジナルのバイナリの変換バージョンを生成し得る。変換済みバージョンにおいて、ＧｅｔＰＣ命令シーケンスは、ＧｅｔＰＣアドレスを有するＧｅｔＰＣ実行イベントのログをとり、より深い分析のためにセキュリティモジュール１１４に（ＧｅｔＰＣイベントとして）通知を与え、ＧｅｔＰＣアドレスを特定可能な無効アドレスと置換することによってポイズンＧｅｔＰＣアドレスをばらまくように、インストルメント化される。セキュリティモジュール１１４へのトリガーとしてＧｅｔＰＣイベントを用いることは、既知のマルウェアパターンに関するスキャン、用いられた命令およびシーケンスを特定すること、などによって引き起こされる、コードのより深い分析を可能にする。
【００３３】
一意的に特定可能なポイズニングされたＧｅｔＰＣアドレスをばらまくことは、実行プロファイリングバイナリ変換モジュール１２４が、マルウェアコードによるＧｅｔＰＣアドレスの正確な消費ポイントを検知することを可能にする。ポイズンＧｅｔＰＣアドレスは、任意の無効アドレスであり得るが、アドレス値は、実行プロファイリングバイナリ変換モジュール１２４によって一意的に特定可能である必要がある。ＧｅｔＰＣアドレス消費の検知は、実行プロファイリングバイナリ変換モジュール１２４のシステム層モジュールを介してシェルコードによって引き起こされる、アクセス妨害例外を傍受することによって成され得、それは、ＯＳからの例外ディスパッチ呼び出しを傍受し、アプリケーションのＯＳ相互作用を仮想化する。真のアクセス妨害と、マルウェアの復号処理によるＧｅｔＰＣアドレスの消費との間の区別は、障害メモリアドレスを確認して、障害メモリアドレスが一意的なポイズンＧｅｔＰＣアドレスと一致するかどうかを発見することによって成され得る。随意に、実行プロファイリングバイナリ変換モジュール１２４は、シェルコードのアンパックコードにポイズンＧｅｔＰＣアドレスをばらまく代わりに、暗号化されたマルウェアコード本文の自己書き換え操作をマルウェアが実行するときのＧｅｔＰＣアドレスの消費を検知するために、ＧｅｔＰＣアドレス領域（ページ）にライトプロテクトをかけるように構成され得る。
【００３４】
復号処理の最終ステージにおいて、ＧｅｔＰＣメモリ領域におけるマルウェアの自己書き換え操作は、バイナリ変換システムの自己書き換えコード検知機構を用いることによって検知される。バイナリ変換システムの自己書き換えコード検知機構は、コードがまだ変換の時のバイトと同じかどうかを確かめるように変換の実行の最中にセルフチェックを実行するセルフチェック変換の生成か、または、実行プロファイリングバイナリ変換モジュール１２４のシステム層モジュールからの助けによってオリジナルのコードページをライトプロテクトすることか、のいずれかによって実装される。マルウェアの復号処理によって引き起こされる静的メモリコントローラ（ＳＭＣ）と、他のタイプのＳＭＣとの間の区別は、ＳＭＣメモリアドレスを確認して、ＳＭＣがＧｅｔＰＣアドレス領域内に生じるかどうか知ることによって成され得る。
【００３５】
実行プロファイリングバイナリ変換モジュール１２４によって提供される上記の検知機構は、セキュリティモジュール１１４が、マルウェアの復号処理に関連づけられたイベントのシーケンスを監視して正確にトラッキングすることを可能にする。セキュリティモジュール１１４は、マルウェア実行の存在を分析および判断するために、各個別のイベントを用い得、または、３つのイベント全てを用い得、これらのイベントをトラッキングし、および関連づけて、これが真の復号処理か誤検知かを判断し得る。
【００３６】
実行プロファイリングバイナリ変換モジュール１２４は、自己書き換えコード実行の実行の前に、セキュリティモジュール１１４に通知するようにまた構成され得る。これは、ＳＭＣ変換を実行する前に通知機構を追加するように、実行プロファイリングバイナリ変換モジュール１２４によって成され得る。ＳＭＣ変換は、ＳＭＣイベントまたは操作の結果として、実行プロファイリングバイナリ変換モジュール１２４によって生成された変換である。これは、セキュリティモジュール１１４が、既知のマルウェアシグナチャを発見するために、シグナチャベースのスキャン方法を難読化解除されたマルウェアコードに動的に適用することを可能にする。この最終段は、発見された復号処理が正規のものか悪意のものかを、セキュリティモジュール１１４が判断することに役立つ。
【００３７】
難読化解除の最中、マルウェアは最初に、オリジナルのコードを読むことを必要とする。これは、ポイズニングされたアドレス上で障害を起こして検知され得る。セキュリティモジュール１１４が、マルウェア実行の最後段（オリジナルのコードの難読化解除）は観測される必要があると判断するとき、セキュリティモジュール１１４は、ポイズニングされたアドレスをオリジナルのＧｅｔＰＣアドレスで置換し得る。最後段は、ＢＴモジュールによって提供されるＳＭＣ検知機構によって検知され得る。ＳＭＣ（例えば、難読化解除）の実行後、セキュリティモジュール１１４は、コードが悪意のものであるかどうかを判断するために、難読化解除されたコードを検査し得る。
【００３８】
ポイズニングは、ＧｅｔＰＣアドレスを用いてロード操作を傍受する方法である。例において、各ＧｅｔＰＣアドレスは、一意的な予約された無効アドレスに置換され得る。ロードがポイズニングされたアドレスによって生じるとき、障害が生成されるであろう。実行プロファイリングバイナリ変換モジュール１２４は、障害を検査して、障害アドレスが既に生成されたポイズニングされたアドレスのいずれかと一致するかどうかを判断し得る。例において、一意的なＧｅｔＰＣ操作が生じるとき、システムはＧｅｔＰＣアドレスを一意的なポイズニングされたアドレスに置換え得る。例えば、２つのＧｅｔＰＣ操作が２つの異なるＩＰロケーションで生じ、２つの異なるポイズンアドレスがＧｅｔＰＣアドレスの各々に割り当てられ得る。実行プロファイリングバイナリ変換モジュール１２４は、どのＧｅｔＰＣアドレスが、障害（例えば、ロード操作での消費時間）のあるポイズニングされたアドレスに対応するかを知り得る。
【００３９】
図１のインフラストラクチャに移ると、例示的な実施形態による通信システム１００が示される。概して、通信システム１００は、任意の種類またはトポロジのネットワークに実装され得る。ネットワーク１０８は、通信システム１００を通じて伝播する情報のパケットを受信および送信する、相互結合された通信経路の一連のポイントまたはノードを示す。ネットワーク１０８は、ノード間の通信インタフェースを提供し、任意のローカルエリアネットワーク（ＬＡＮ）、仮想ローカルエリアネットワーク（ＶＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ローカルエリアネットワーク（ＷＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、および、ネットワーク環境において通信を容易にする任意の他の適切なアーキテクチャまたはシステム、または、それらの任意の好適な組み合わせとして、有線および／または無線通信を含んで構成され得る。
【００４０】
通信システム１００において、パケット、フレーム、信号、データなどを含むネットワークトラフィックは、任意の好適な通信メッセージングプロトコルによって送信され得、および受信され得る。好適な通信メッセージングプロトコルは、開放型システム間相互接続（ＯＳＩ）モデル、または、それらの任意の派生または変形（例えば、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ユーザデータグラムプロトコル／ＩＰ（ＵＤＰ／ＩＰ））、などの多層スキームを含み得る。加えて、セルラネットワークにわたる無線信号通信もまた、通信システム１００において、提供されてよい。好適なインタフェースおよびインフラストラクチャが、セルラネットワークとの通信を可能にするように提供されてよい。
【００４１】
本明細書で用いられる用語「パケット」は、パケット交換ネットワーク上のソースノードと宛先ノードとの間でルーティングされ得るデータの単位を指す。パケットは、ソースネットワークアドレスおよび宛先ネットワークアドレスを含む。これらのネットワークアドレスは、ＴＣＰ／ＩＰメッセージングプロトコルにおけるインターネットプロトコル（ＩＰ）アドレスであり得る。本明細書で用いられる用語「データ」は、電子デバイスおよび／またはネットワークにおいて、１つのポイントから別のポイントへ通信され得る任意の適切なフォーマットの、任意の種類のバイナリ、数値、音声、ビデオ、テキスト、もしくはスクリプトデータ、もしくは、任意の種類のソースもしくはオブジェクトコード、または、任意の他の好適な情報を指す。加えて、メッセージ、要求、応答、およびクエリはネットワークトラフィックの形態であり、従って、パケット、フレーム、信号、データなどを備え得る。
【００４２】
例示的な実装において、電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６はネットワーク要素であり、それらは、ネットワーク環境において情報を交換するように操作可能な、ネットワーク機器、サーバ、ルータ、スイッチ、ゲートウェイ、ブリッジ、ロードバランサ、プロセッサ、モジュール、または、任意の他の好適なデバイス、コンポーネント、要素、もしくはオブジェクトを包含することが意図される。ネットワーク要素は、それらの操作を容易にする、任意の好適なハードウェア、ソフトウェア、コンポーネント、モジュール、または、オブジェクト、ならびに、ネットワーク環境においてデータまたは情報を受信、送信、および／または別の方法で通信するために好適なインタフェースを含み得る。これは、データまたは情報の効果的な交換を可能にする適切なアルゴリズムおよび通信プロトコルを含み得る。
【００４３】
通信システム１００に関連づけられた内部構造に関して、電子デバイス１０２、クラウドサービス１０４およびサーバ１０６の各々は、本明細書に概説される操作において用いられる情報を格納するための複数のメモリ要素を含み得る。電子デバイス１０２、クラウドサービス１０４およびサーバ１０６の各々は、任意の好適なメモリ要素（例えば、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、特定用途向け集積回路（ＡＳＩＣ）など）、ソフトウェア、ハードウェア、ファームウェア、または、必要に応じて、および特定の必要性に基づいて、任意の他の好適なコンポーネント、デバイス、要素、もしくはオブジェクトに、情報を保持し得る。本明細書で説明された任意のメモリアイテムは、広義の用語「メモリ要素」の中に包含されると解釈されるべきである。さらに、通信システム１００において用いられ、トラッキングされ、送信され、または受信される情報は、任意のデータベース、レジスタ、キュー、テーブル、キャッシュ、制御リスト、または他のストレージ構造において提供され得、それらの全ては、任意の好適な時間枠で参照され得る。任意のそのようなストレージの選択肢が、本明細書で用いられる広義の用語「メモリ要素」の中に、また含まれ得る。
【００４４】
特定の例示的な実装において、本明細書に概説される機能は、非一時的コンピュータ読み取り可能媒体を含み得る１または複数の有形媒体において符号化されるロジック（例えば、ＡＳＩＣに提供される組み込みロジック、デジタル信号プロセッサ（ＤＳＰ）命令、プロセッサまたは他の同様の機械によって実行されるソフトウェア（オブジェクトコードおよびソースコードを潜在的に含む）、など）によって実装され得る。これらの例のいくつかにおいて、メモリ要素は、本明細書に説明された操作のために用いられるデータを格納し得る。これは、本明細書に説明されたアクティビティを遂行するように実行される、ソフトウェア、ロジック、コード、またはプロセッサ命令を格納可能なメモリ要素を含む。
【００４５】
例示的な実装において、電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６などの通信システム１００のネットワーク要素は、本明細書に概説される操作を実現または促進する、ソフトウェアモジュール（例えば、セキュリティモジュール１１４、ネットワークセキュリティモジュール１２２、および実行プロファイリングバイナリ変換モジュール１２４）を含み得る。これらのモジュールは、特定の構成および／またはプロビジョニングの必要性に基づき得る、任意の適切な態様で好適に組み合わされ得る。例示的な実施形態において、そのような操作は、ハードウェアによって遂行され得、それらの要素の外部に実装され得、または、意図される機能を実現する何らかの他のネットワークデバイスに含まれ得る。さらに、モジュールは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の好適な組み合わせとして実装され得る。これらの要素は、本明細書に概説されるような操作を実現させるように、他のネットワーク要素と連携し得るソフトウェア（またはレシプロケーティングソフトウェア（ｒｅｃｉｐｒｏｃａｔｉｎｇ  ｓｏｆｔｗａｒｅ））をまた含み得る。
【００４６】
加えて、電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６の各々は、本明細書に説明されたようなアクティビティを実行するソフトウェアまたはアルゴリズムを実行可能なプロセッサを含み得る。プロセッサは、本明細書で詳述された操作を実現するように、データと関連づけられた任意の種類の命令を実行し得る。一例において、プロセッサは、要素または物品（例えば、データ）を、１つの状態または物から、別の状態または物に変換し得る。別の例において、本明細書に概説されるアクティビティは、固定されたロジックまたはプログラム可能なロジック（例えば、プロセッサによって実行されるソフトウェア／コンピュータ命令）によって実装され得、本明細書において特定される要素は、デジタルロジック、ソフトウェア、コード、電子命令、またはそれらの任意の好適な組み合わせを含む、何らかのタイプのプログラム可能なプロセッサ、プログラム可能なデジタルロジック（例えば、フィールドプログラマブルゲートアレー（ＦＰＧＡ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ）、またはＡＳＩＣであり得る。本明細書で説明される、任意の潜在的な処理要素、モジュールおよび機械は、広義の用語「プロセッサ」の中に包含されると解釈されるべきである。
【００４７】
電子デバイス１０２はネットワーク要素であり得、例えば、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、パーソナルデジタルアシスタント、スマートフォン、タブレット、または他の同様のデバイスを含む。クラウドサービス１０４は、クラウドサービスを電子デバイス１０２に提供するように構成される。クラウドサービス１０４は、インターネットなどのネットワークにわたるサービスとして供給されるコンピューティングリソースの使用として、概して定義され得る。通常、計算、ストレージ、およびネットワークリソースがクラウドインフラストラクチャにおいて提供され、ワークロードをローカルネットワークからクラウドネットワークに効果的にシフトする。サーバ１０６は、サーバまたは仮想サーバなどのネットワーク要素であり得、何らかのネットワーク（例えば、ネットワーク１０８）を介して通信システム１００において通信を開始することを所望しているクライアント、顧客、エンドポイント、またはエンドユーザに関連づけられ得る。用語「サーバ」は、通信システム１００の中のクライアントの要求を果たす、および／または、クライアントの代わりにいくらかの計算のタスクを実行するように用いられるデバイスを含む。セキュリティモジュール１１４が電子デバイス１０２に位置するものとして図１に表されているが、これは例示目的のみである。セキュリティモジュール１１４は、任意の好適な構成において組み合わされ、または分離され得る。例えば、セキュリティモジュール１１４のアクティビティはネットワークセキュリティモジュール１２２にシフトされ得る。
【００４８】
図２に移ると、図２は、本開示の一実施形態による、シェルコードの検知のための通信システムの例示的な詳細の簡略ブロック図である。図２に示されるように、実行プロファイリングバイナリ変換モジュール１２４は、実行プロファイリングモジュール１２６、変換器１２８、ランタイム１３０、バイナリ変換システム層１３２を含み得る。実行プロファイリングバイナリ変換モジュール１２４は、セキュリティモジュール１１４および変換済みコードキャッシュ１３４と通信し得る。実行プロファイリングバイナリ変換モジュール１２４は、セキュリティモジュール１１４と共に対象アプリケーション処理空間の中で実行されるように構成され得、アプリケーションの実行の動的な挙動の監視を可能にするようにセキュリティモジュール１１４によって動的にロードされ得る。
【００４９】
実行プロファイリングモジュール１２６は、セキュリティモジュール１１４と通信し、アプリケーションプログラムインタフェース（ＡＰＩｓ）の実行をさらすように構成され得る。変換器１２８は、バイナリ分析、変換、最適化、または、アプリケーションまたはコードに関連する、他の同様のアクティビティを提供するように構成され得る。ランタイム１３０は、変換キャッシュ管理、ルックアップテーブル管理、システム管理コントローラ（ＳＭＣ）処理などを提供するように構成され得る。バイナリ変換システム層１３２は、システム呼び出し、例外、非同期コールバック、処理、スレッド生成などの、仮想化オペレーティングシステムインタフェースを提供するように構成され得る。
【００５０】
図３に移ると、図３は、本開示の一実施形態によるシェルコードの検知のための通信システムの、例示的な詳細の簡略ブロック図である。図３に示されるように、アプリケーションからのオリジナルのコード１３６は、変換器１２８に送信され得る。変換器１２８は、オリジナルのコード１３６の部分を変換し得て、変換済みコードキャッシュ１３４の変換された部分を格納し得る。変換済みコードキャッシュ１３４の変換済みコードは、悪意のある、または不審なアクティビティの存在のためにセキュリティモジュール１１４によって分析され得る。
【００５１】
実行プロファイリングバイナリ変換モジュール１２４は、対象アプリケーションまたは処理に、ＤＬＬとして挿入され得、ポリシーは、セキュリティモジュール１１４によって構成され得る。実行プロファイリングバイナリ変換モジュール１２４は、変換キャッシュを生成し、ならびに、（ポリシーチェックおよび／またはポリシー埋め込みによる）変換および、対象アプリケーションまたは処理の再開ポイントから変換キャッシュへのジャストインタイム（ＪＩＴ'ｉｎｇ）を開始するように構成され得る。実行プロファイリングライフサイクル（図５に示される）のための停止ポイントが、セキュリティモジュール１１４によって指定され得る。変換器１２８およびランタイム１３０を用いて、実行プロファイリングバイナリ変換モジュール１２４がポリシー違反を検知したとき、違反を引き起こしたアプリケーションまたはコードが、さらなる分析のためにセキュリティモジュール１１４に通信され得る。
【００５２】
図４に移ると、図４は、本開示の一実施形態によるシェルコードの検知のための通信システムの、例示的な詳細の簡略ブロック図である。図４に示されるように、セキュリティモジュール１１４は初期化され得、実行プロファイリングバイナリ変換モジュール１２４を停止し得る。セキュリティモジュール１１４は、監視を開始し、コールバックのための条件を設定し、および、監視を停止するように、実行プロファイリングバイナリ変換モジュール１２４に、また命令し得る。
【００５３】
図５に移ると、図５は、本開示の一実施形態によるシェルコードの検知のための通信システムの、例示的な詳細の簡略ブロック図である。図５に示されるように、実行プロファイリングライフサイクル５００は、挿入およびポリシー設定ステージ１４０、動的バイナリ分析ステージ１４２、実行モニタリングステージ１４４、および報告ステージ１４５を含み得る。挿入およびポリシー設定ステージ１４０において、セキュリティモジュール１１４は、ポリシーを判断し、特定のアプリケーションのために監視するように構成され得る。プロファイリングおよび監視は、特定のイベントのときに、またはメモリのアドレスまたは領域がアクセスされたときに開始し得る。挿入およびポリシー設定ステージ１４０は、全体の処理として、またはスレッドレベルで実行し得る。挿入およびポリシー設定ステージ１４０から、セキュリティモジュール１１４はアプリケーションの監視のために、実行プロファイリングバイナリ変換モジュール１２４に要求を送信し得、実行プロファイリングライフサイクル５００は動的バイナリ分析ステージ１４２に入り得る。
【００５４】
動的バイナリ分析ステージ１４２において、実行プロファイリングバイナリ変換モジュール１２４は、コードの実行前のオリジナルのバイナリコードを分析し、コードおよびコードのアドレス範囲をホワイトリスト（例えば、ホワイトリスト１４６）によって確認するように構成され得る。動的バイナリ分析ステージ１４２において、実行プロファイリングバイナリ変換モジュール１２４は、コードに関する正規の呼び出し、戻り、およびジャンプの対象を特定するように、また構成され得る。変換器１２８は、実行モニタリングステージ１４４のためにコードを変換し得る。
【００５５】
実行モニタリングステージ１４４において、実行プロファイリングバイナリ変換モジュール１２４は、分岐監視およびプロファイリング、制御フローインテグリティ（例えば、呼び出しおよび戻りのマッチングなど）、特別または特定のアドレスおよび命令の監視、ならびにアプリケーションプログラムインタフェースポリシーの使用のために構成され得る。不審なアクティビティまたは事前に構成された条件のアクティベーションは、実行プロファイリングバイナリ変換モジュール１２４に、セキュリティモジュール１１４への通知を送信させる。例えば、コードが書き込み可能メモリ領域に位置する場合、その後、コードはマルウェアに関して分析されるべきである。セキュリティモジュール１１４は、疑わしいまたはプロファイリングされたデータを分析し得、マルウェアの防止または軽減のために必要な動作を取り得る。
【００５６】
図６に移ると、図６は、一実施形態による、シェルコードを検知することに関連づけられ得る、フロー６００の可能な操作を示す例示的なフローチャートである。実施形態において、フロー６００の１または複数の工程は、セキュリティモジュール１１４および実行プロファイリングバイナリ変換モジュール１２４によって実行され得る。６０２において、コードの変換が実行される。６０４において、システムは、変換が発見されたかどうか判断する。変換が発見された場合、６０６に示されるように、その後、変換が実行される。変換が発見されなかった場合、６２０に示されるように、その後、コードの変換のための（メモリの）領域が判断される。６２２において、システムは、コードの判断された領域がＧｅｔＰＣコードを含むかどうか判断する。判断された領域がＧｅｔＰＣコードを含む場合、６２８に示されるように、その後、ＧｅｔＰＣ実行イベントが記録される。６３０において、ＧｅｔＰＣ実行イベントに関連する通知が、セキュリティモジュールに通信される。６３２において、ポイズンＧｅｔＰＣアドレスがばらまかれる。ポイズンＧｅｔＰＣアドレスは、不審なアクティビティが生じたときに障害を引き起こすか、アラートを引き起こすようにばらまかれる。６２４において、変換が生成される。６２２に戻ると、判断された領域がＧｅｔＰＣコードを含まない場合、６２４に示されるように、その後に（コードに関する）変換が生成される。６０６において、変換が実行される。
【００５７】
６０８において、システムは、変換がＧｅｔＰＣコードに関連するかどうか判断する。変換がＧｅｔＰＣコードに関連しない場合、その後、さらなる動作はとられない。変換がＧｅｔＰＣコードに関連する場合、６１０に示されるように、その後、ＧｅｔＰＣ実行イベントが記録される。６１２において、システムは、報告が要求されたかどうか判断する。報告が要求された場合、６１４に示されるように、その後、ポイズンＧｅｔＰＣアドレスがばらまかれる。ポイズンＧｅｔＰＣアドレスは、不審なアクティビティが生じたときに障害を引き起こすか、アラートを引き起こすようにばらまかれ、報告の生成が引き起こされる。報告が要求されなかった場合、６１６に示されるように、その後、ＧｅｔＰＣ実行イベントが分析される。例において、ＧｅｔＰＣ実行イベントは、セキュリティモジュール１１４および／またはネットワークセキュリティモジュール１２２によって分析され得る。
【００５８】
図７に移ると、図７は、一実施形態による、シェルコードの検知に関連づけられ得る、フロー７００の可能な操作を示す例示的なフローチャートである。実施形態において、フロー７００の１または複数の工程は、セキュリティモジュール１１４および実行プロファイリングバイナリ変換モジュール１２４によって実行され得る。７０２において、変換済みコードが実行される。７０４において、システムは変換の最中に例外が生じたかどうか判断する。例えば、ポイズンＧｅｔＰＣアドレスは、例外を引き起こすようにばらまかれた可能性がある。例外が生じなかった場合、その後、さらなる動作はとられない。例外が生じた場合、７０６に示されるように、その後、例外ディスパッチフローが傍受される。７０８において、システムはトリガーイベントが生じたかどうか判断する。例えば、トリガーイベントは、例外メモリ障害（例えば、メモリ障害変換、ポイズニングされたアドレスによって引き起こされたメモリ障害）、または、不審な挙動をシグナリングするか示す、何らかの他の予め定められたイベントであり得る。トリガーイベントが生じなかった場合、その後、さらなる動作はとられない。トリガーイベントが生じた場合、７１０に示されるように、その後、システムは障害アドレスが無効アドレスと一致するかどうか判断する。障害アドレスが無効アドレスと一致しない場合、その後、さらなる動作はとられない。障害アドレスが無効アドレスと一致する場合、７１２に示されるように、その後、イベントが記録される。７１４において、システムは、報告が要求されるかどうか判断する。報告が要求されなかった場合、その後、さらなる動作はとられない。報告が要求された場合、７１４に示されるように、その後、イベントが分析され得る。例において、イベントは、セキュリティモジュール１１４および／またはネットワークセキュリティモジュール１２２によって分析され得る。
【００５９】
図８に移ると、図８は、一実施形態による、シェルコードの検知に関連し得る、フロー８００の可能な操作を示す例示的なフローチャートである。実施形態において、フロー８００の１または複数の工程は、セキュリティモジュール１１４および実行プロファイリングバイナリ変換モジュール１２４によって実行され得る。８０２において、ＧｅｔＰＣ命令が認識される。８０４において、システムは、自己書き換えコードが検知されたかどうか判断する。自己書き換えコードが検知されなかった場合、その後、さらなる動作はとられない。自己書き換えコードが検知された場合、８０６に示されるように、その後、システムは、自己書き換えコードが監視されたアドレス領域に生じたかどうか判断する。例において、監視されたアドレス領域は８０２で認識されたＧｅｔＰＣ命令、および、認識されたＧｅｔＰＣ命令から得られたＧｅｔＰＣアドレスから計算される。自己書き換えコードが監視されたアドレス領域に生じなかった場合、その後、さらなる動作はとられない。自己書き換えコードが書き換えられたアドレス領域に生じた場合、８０８に示されるように、その後、セキュリティイベントが生成される。８１０において、自己書き換えイベントが記録される。８１２において、システムは、報告が要求されたかどうか判断する。報告が要求されなかった場合、その後、さらなる動作はとられない。報告が要求された場合、８１４に示されるように、その後、記録されたイベントが分析され得る。例において、記録されたイベントは、セキュリティモジュール１１４および／またはネットワークセキュリティモジュール１２２によって分析され得る。
【００６０】
図９は、一実施形態による、ポイントツーポイント（ＰｔＰ）構成に配置された、コンピューティングシステム９００を示す。特に、図９は、プロセッサ、メモリ、および入力／出力デバイスが、複数のポイントツーポイントインタフェースによって相互結合されるシステムを示す。概して、通信システム１００のネットワーク要素の１または複数は、コンピューティングシステム９００と同じ、または同様の態様で構成され得る。
【００６１】
図９に示されるように、システム９００は、いくつかのプロセッサを含み得、明確さのために、それらのうちプロセッサ９７０および９８０の２つのみが示される。２つのプロセッサ９７０および９８０が示される一方、システム９００の実施形態は、また、そのようなプロセッサを１つのみ含み得ることが、理解されるべきである。プログラムの複数のスレッドを実行するように、プロセッサ９７０および９８０は各々、一組のコア（すなわち、プロセッサコア９７４Ａおよび９７４Ｂ、ならびにプロセッサコア９８４Ａおよび９８４Ｂ）を含み得る。コアは、図６から図９を参照して上に説明されたものと同様の態様で、命令コードを実行するように構成され得る。各プロセッサ９７０、９８０は、少なくとも１つの共有キャッシュ９７１、９８１を含み得る。共有キャッシュ９７１、９８１は、プロセッサコア９７４および９８４などの、プロセッサ９７０、９８０の１または複数のコンポーネントによって利用されるデータ（例えば、命令）を格納し得る。
【００６２】
プロセッサ９７０および９８０は各々、メモリ要素９３２および９３４と通信するための、統合されたメモリコントローラロジック（ＭＣ）９７２および９８２をまた含み得る。メモリ要素９３２および／または９３４は、プロセッサ９７０および９８０によって用いられる様々なデータを格納し得る。代替的な実施形態において、メモリコントローラロジック９７２および９８２は、プロセッサ９７０および９８０から独立した、個別のロジックであり得る。
【００６３】
プロセッサ９７０および９８０は、任意の種類のプロセッサであり得、ポイントツーポイントインタフェース回路９７８および９８８をそれぞれ用いて、ポイントツーポイント（ＰｔＰ）インタフェース９５０を介してデータを交換し得る。プロセッサ９７０および９８０は各々、ポイントツーポイントインタフェース回路９７６、９８６、９９４および９９８を用いて、個別のポイントツーポイントインタフェース９５２および９５４を介して、チップセット９９０とデータを交換し得る。チップセット９９０は、ＰｔＰインタフェース回路であり得るインタフェース回路９９２を用いて、高性能グラフィックインタフェース９３９を介して、高性能グラフィック回路９３８とデータをまた交換し得る。代替的な実施形態において、図９に示されたＰｔＰリンクのいずれかまたは全ては、ＰｔＰリンクではなくマルチドロップバスとして実装され得る。
【００６４】
チップセット９９０は、インタフェース回路９９６を介してバス９２０と通信し得る。バス９２０は、バスブリッジ９１８およびＩ／Ｏデバイス９１６などの、それを介して通信する１または複数のデバイスを有し得る。バス９１０を介して、バスブリッジ９１８は、キーボード／マウス９１２（または、タッチスクリーン、トラックボールなどの他の入力デバイス）、通信デバイス９２６（モデム、ネットワークインタフェースデバイス、または、コンピュータネットワーク９６０を通じて通信し得る他のタイプの通信デバイスなど）、オーディオＩ／Ｏデバイス９１４、および／またはデータストレージデバイス９２８などの、他のデバイスと通信し得る。データストレージデバイス９２８は、プロセッサ９７０および／または９８０によって実行され得る、コード９３０を格納し得る。代替的な実施形態において、バスアーキテクチャの任意の部分は、１または複数のＰｔＰリンクで実装され得る。
【００６５】
図９に図示されたコンピュータシステムは、本明細書に説明された様々な実施形態を実装するように利用され得るコンピューティングシステムの実施形態の、概略的な例示である。図９に図示されたシステムの様々なコンポーネントは、システムオンチップ（ＳｏＣ）アーキテクチャ、または任意の他の好適な構成で組み合わされ得ることが、理解されるであろう。例えば、本明細書に開示された実施形態は、スマートセルラ電話、タブレットコンピュータ、パーソナルデジタルアシスタント、携帯可能ゲームデバイスなどの、モバイルデバイスを含むシステム内に組み込まれ得る。これらのモバイルデバイスは、少なくともいくつかの実施形態において、ＳｏＣアーキテクチャを備え得ることが理解されるであろう。
【００６６】
図１０に移ると、図１０は、本開示の例示的なＡＲＭエコシステムＳｏＣ１０００と関連づけられた簡略ブロック図である。本開示の少なくとも１つの例示的な実装は、本明細書で説明されたシェルコード検知機能、およびＡＲＭコンポーネントを含み得る。例えば、図１０の例は、任意のＡＲＭコア（例えば、Ａ−９、Ａ−１５など）に関連づけられ得る。さらに、アーキテクチャは、任意の種類のタブレット、スマートフォン（Ａｎｄｒｏｉｄ（登録商標）  ｐｈｏｎｅ、ｉＰｈｏｎｅ（登録商標）、ｉＰａｄ（登録商標）、Ｇｏｏｇｌｅ  Ｎｅｘｕｓ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｓｕｒｆａｃｅ（商標）、パーソナルコンピュータ、サーバ、ビデオ処理コンポーネント、ラップトップコンピュータ（任意の種類のノートブックを含む）、Ｕｌｔｒａｂｏｏｋ（登録商標）システム、任意の種類のタッチ対応入力デバイスなどを含む）の一部であり得る。
【００６７】
図１０のこの例において、ＡＲＭエコシステムＳＯＣ１０００は、液晶ディスプレイ（ＬＣＤ）に結合するモバイルインダストリープロセッサインタフェース（ＭＩＰＩ）／高精細度マルチメディアインタフェース（ＨＤＭＩ（登録商標））リンクと関連づけられ得る、複数のコア１００６−１００７、Ｌ２キャッシュ制御１００８、バスインタフェースユニット１００９、Ｌ２キャッシュ１０１０、グラフィック処理ユニット（ＧＰＵ）１０１５、インターコネクト１００２、ビデオコーデック１０２０、およびＬＣＤ  Ｉ／Ｆ１０２５を含み得る。
【００６８】
ＡＲＭエコシステムＳＯＣ１０００は、加入者特定モジュール（ＳＩＭ）Ｉ／Ｆ１０３０、ブートリードオンリメモリ（ＲＯＭ）１０３５、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）コントローラ１０４０、フラッシュメモリコントローラ１０４５、シリアル周辺機器インタフェース（ＳＰＩ）マスター１０５０、好適な電力制御１０５５、ダイナミックＲＡＭ（ＤＲＡＭ）１０６０、およびフラッシュメモリ１０６５を、また含み得る。加えて、１または複数の例示的な実施形態は、１または複数の通信機能、インタフェース、ならびに、Ｂｌｕｅｔｏｏｔｈ（登録商標）１０７０、３Ｇモデム１０７５、全地球測位システム（ＧＰＳ）１０８０、および８０２．１１  Ｗｉ−Ｆｉ１０８５という例などの機能を含み得る。
【００６９】
操作において、図１０の例は、様々なタイプのコンピューティング（例えば、モバイルコンピューティング、ハイエンドデジタルホーム、サーバ、無線インフラストラクチャなど）を可能にする比較的低い電力消費と共に、処理機能を提供し得る。加えて、そのようなアーキテクチャは、任意の数のソフトウェアアプリケーション（例えば、Ａｎｄｒｏｉｄ（登録商標）、Ａｄｏｂｅ（商標）  Ｆｌａｓｈ（商標）プレーヤ、Ｊａｖａ（登録商標）プラットフォームスタンダードエディション（Ｊａｖａ（登録商標）ＳＥ）、Ｊａｖａ（登録商標）ＦＸ、Ｌｉｎｕｘ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）  Ｅｍｂｅｄｄｅｄ、ＳｙｍｂｉａｎおよびＵｂｕｎｔｕなど）を可能にし得る。少なくとも１つの例示的な実施形態において、コアプロセッサは、結合された低レイテンシのレベル２キャッシュを有するアウトオブオーダー・スーパースカラー・パイプラインを実装し得る。
【００７０】
図１１は、一実施形態によるプロセッサコア１１００を示す。プロセッサコア１１００は、マイクロプロセッサ、組み込まれたプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、またはコードを実行する他のデバイスなど、任意の種類のプロセッサのためのコアであり得る。１つのみのプロセッサコア１１００が図１１に示されているが、プロセッサは、図１１に示されたプロセッサコア１１００のうちの１つより多くを、代替的に含み得る。例えば、プロセッサコア１１００は、図９のプロセッサ９７０および９８０を参照して示されおよび説明された、プロセッサコア９７４ａ、９７４ｂ、９８４ａおよび９８４ｂの１つの例示的な実施形態を示す。プロセッサコア１１００は、シングルスレッドコアであり得、または、少なくとも１つの実施形態に関して、プロセッサコア１１００は、コア毎に１つより多いハードウェアスレッドコンテキスト（または「論理プロセッサ」）を含み得るという点で、マルチスレッドであり得る。
【００７１】
図１１は、一実施形態によるプロセッサコア１１００に結合されるメモリ１１０２を、また示す。メモリ１１０２は、知られているような、そうでなければ当業者に利用可能なような、任意の多種多様なメモリ（メモリ階層の様々な層を含む）であり得る。メモリ１１０２は、プロセッサコア１１００によって実行される、１または複数の命令であり得るコード１１０４を含み得る。プロセッサコア１１００は、コード１１０４によって示される命令のプログラムシーケンスをたどり得る。各命令はフロントエンドロジック１１０６に入り、１または複数のデコーダ１１０８によって処理される。デコーダは、その出力として、予め定義されたフォーマットの固定幅マイクロオペレーションなどの、マイクロオペレーションを生成し得、または、オリジナルのコード命令を反映する他の命令、マイクロ命令、または制御信号を生成し得る。フロントエンドロジック１１０６は、レジスタリネーミングロジック１１１０およびスケジューリングロジック１１１２をまた含み、それは概して、リソースを割り当て、実行のための命令に対応する操作をキューに登録する。
【００７２】
プロセッサコア１１００は、一組の実行ユニット１１１６−１から１１１６−Ｎを有する実行ロジック１１１４を、また含み得る。いくつかの実施形態は、特定の機能または機能の組に専用の、複数の実行ユニットを含み得る。他の実施形態は、１つの実行ユニットのみ、または、特定の機能を実行し得る１つの実行ユニットを含み得る。実行ロジック１１１４は、コード命令によって指定される操作を実行する。
【００７３】
コード命令によって指定される操作の実行の完了後、バックエンドロジック１１１８は、コード１１０４の命令をリタイアし得る。一実施形態において、プロセッサコア１１００は、アウトオブオーダー実行を可能にするが、命令のインオーダーリタイアメントを必要とする。リタイアメントロジック１１２０は、様々な知られている形態（例えば、リオーダーバッファまたは同様のもの）を取り得る。本態様において、プロセッサコア１１００は、少なくとも、デコーダによって生成される出力、レジスタリネーミングロジック１１１０によって利用されるハードウェアレジスタおよびテーブル、および実行ロジック１１１４によって書き換えられた任意のレジスタ（示されない）の観点から、コード１１０４の実行の最中に変換される。
【００７４】
図１１には示されないが、プロセッサは、プロセッサコア１１００を有するチップ上の他の要素を含み得、その少なくともいくらかが図１０を参照して本明細書で示されて説明される。例えば、図１０に示されるように、プロセッサは、プロセッサコア１１００と共にメモリ制御ロジックを含み得る。プロセッサは、Ｉ／Ｏ制御ロジックを含み得、および／または、メモリ制御ロジックと統合されたＩ／Ｏ制御ロジックを含み得る。
【００７５】
本明細書に提供された例と共に、相互作用は、２つ、３つ、またはより多くのネットワーク要素の観点から説明され得ることに留意する。しかしながら、これは、明確さおよび例示のみの目的で成されている。特定の場合には、限られた数のネットワーク要素を参照するのみによって、所与の組のフローの機能の１または複数の説明がより容易になり得る。通信システム１００およびその教示は、容易に拡張可能であり、多数のコンポーネント、ならびに、より複雑な／洗練された配置及び構成に対応し得ることが、理解されるべきである。従って、提供された例は、無数の他のアーキテクチャに潜在的に適用されるものとしての通信システム１００の、範囲を制限すべきではなく、または、広い教示を阻むべきではない。
【００７６】
前述のフロー図（すなわち、図６から図８）における操作は、通信システム１００によって、または通信システム１００の中で実行され得る、起こり得る相関するシナリオおよびパターンのいくつかのみを示すことに留意することが、また重要である。これらの操作のいくつかは、必要に応じて削除され得、または取り除かれ得、または、これらの操作は、本開示の範囲から逸脱することなく、大幅に書き換えられ得、または変更され得る。加えて、これらの操作の多数は、１または複数の追加の操作と同時に、またはそれと並行して実行されるものとして、説明されてきた。しかしながら、これらの操作のタイミングは大幅に変更され得る。前述の操作フローは、例示および説明の目的で提供されている。任意の好適な配置、時系列、構成、およびタイミング機構が、本開示の教示から逸脱することなく提供され得るという点で、かなりの柔軟性が、通信システム１００によって提供される。
【００７７】
本開示は特定の配置及び構成を参照して詳細に説明されているが、これらの例示的な構成および配置は、本開示の範囲から逸脱することなく、大幅に変更され得る。さらに、特定のコンポーネントが、特定の必要性および実装に基づいて、組み合わされ、分離され、除去され、または追加され得る。加えて、通信システム１００は、通信処理を容易にする特定の要素及び操作を参照して示されるが、これらの要素及び操作は、通信システム１００の意図される機能を実現する任意の好適なアーキテクチャ、プロトコル、および／または処理によって置換され得る。
【００７８】
数多くの他の変化、代替、変形、変更、および修正が、本分野の当業者に確認され得、本開示は、添付の特許請求の範囲の中に属するそのような変化、代替、変形、変更、および修正を、全て包含することが意図されている。米国特許商標庁（ＵＳＰＴＯ）、および加えて、本出願に関して発行される任意の特許の任意の読者の助力となるように、本明細書に添付の特許請求の範囲の解釈において、出願人は、以下に留意することを望む。（ａ）出願人は、添付のいかなる請求項も、文言「ための手段」または「ための段階」が特定の請求項において具体的に用いられない限り、本明細書の出願の日において存在する米国特許法第１１２条第６パラグラフを発動させる意図はない。（ｂ）出願人は、添付の特許請求の範囲に反映されない限り、本明細書におけるいかなる記述によっても、いかなる方法でも、本開示を限定する意図はない。
［他の注記および例］
【００７９】
例Ｃ１は、少なくとも１つのプロセッサによって実行された場合、少なくとも１つのプロセッサに、コードの実行のとき、自己書き換えコードを含むコードを監視させ、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録させる、１または複数の命令を有する少なくとも１つの機械可読媒体である。
【００８０】
例Ｃ２において、例Ｃ１の主題は、少なくとも１つのプロセッサによって実行された場合に、少なくとも１つのプロセッサに、マルウェアに関するコードを分析させる、１または複数の命令を随意に含み得る。
【００８１】
例Ｃ３において、例Ｃ１−Ｃ２のうちの任意の１つの主題は、少なくとも１つのプロセッサによって実行された場合に、少なくとも１つのプロセッサに、ポイズンＧｅｔＰＣアドレスをＧｅｔＰＣアドレス領域にばらまかせる、１または複数の命令を随意に含み得る。
【００８２】
例Ｃ４において、例Ｃ１−Ｃ３のうちの任意の１つの主題は、ポイズンＧｅｔＰＣアドレスがメモリ障害を引き起こすことを、随意に含み得る。
【００８３】
例Ｃ５において、例Ｃ１−Ｃ４のうちの任意の１つの主題は、少なくとも１つのプロセッサによって実行された場合、少なくとも１つのプロセッサに、メモリ障害例外が変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断された場合にイベントを記録させる１または複数の命令を、随意に含み得る。
【００８４】
例Ｃ６において、例Ｃ１−Ｃ５のうちの任意の１つの主題は、少なくとも１つのプロセッサによって実行された場合、少なくとも１つのプロセッサに、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にセキュリティモジュールにコードを通信させる１または複数の命令を、随意に含み得る。
【００８５】
例Ｃ７において、例Ｃ１−Ｃ６のうちの任意の１つの主題は、少なくとも１つのプロセッサによって実行された場合、少なくとも１つのプロセッサに、コードの変換の最中に例外が生じたかどうか判断させ、無効アドレスにおいて例外が生じた場合にイベントを記録させる１または複数の命令を、随意に含み得る。
【００８６】
例Ｃ８において、例Ｃ１−Ｃ７のうちの任意の１つの主題は、少なくとも１つのプロセッサによって実行された場合、少なくとも１つのプロセッサに、コードが書き込み可能メモリ領域にある場合にコードをセキュリティモジュールに通信させる１または複数の命令を、随意に含み得る。
【００８７】
例Ａ１において、電子デバイスは実行プロファイリングバイナリ変換モジュールを含み得、実行プロファイリングバイナリ変換モジュールは、コードの実行のとき、自己書き換えコードを含むコードを監視し、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録するように構成される。
【００８８】
例Ａ２において、例Ａ１の主題は、マルウェアに関するコードを分析するように構成されたセキュリティモジュールを、随意に含み得る。
【００８９】
例Ａ３において、例Ａ１−Ａ２のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールがポイズンＧｅｔＰＣアドレスをＧｅｔＰＣアドレス領域にばらまくようにさらに構成されることを、随意に含み得る。
【００９０】
例Ａ４において、例Ａ１−Ａ３のうちの任意の１つの主題は、ポイズンＧｅｔＰＣアドレスがメモリ障害を引き起こすことを、随意に含み得る。
【００９１】
例Ａ５において、例Ａ１−Ａ４のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールが、メモリ障害例外がコードの変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断された場合にイベントを記録するようにさらに構成されることを、随意に含み得る。
【００９２】
例Ａ６において、例Ａ１−Ａ５のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールが、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にセキュリティモジュールにコードを通信するようにさらに構成されることを、随意に含み得る。
【００９３】
例Ａ７において、例Ａ１−Ａ６のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールが、変換の最中に例外が生じたかどうか判断し、無効アドレスにおいて例外が生じた場合にイベントを記録するようにさらに構成されることを、随意に含み得る。
【００９４】
例Ａ８において、例Ａ１−Ａ７のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールが、コードが書き込み可能メモリ領域にある場合にコードをセキュリティモジュールに通信するようにさらに構成されることを、随意に含み得る。
【００９５】
例Ｍ１は、コードの実行のとき、自己書き換えコードを含むコードを監視することと、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録することとを含む、方法である。
【００９６】
例Ｍ２において、例Ｍ１の主題は、マルウェアに関するコードを分析することを、随意に含み得る。
【００９７】
例Ｍ３において、例Ｍ１−Ｍ２のうちの任意の１つの主題は、ポイズンＧｅｔＰＣアドレスをＧｅｔＰＣアドレス領域にばらまくことを、随意に含み得る。
【００９８】
例Ｍ４において、例Ｍ１−Ｍ３のうちの任意の１つの主題は、ポイズンＧｅｔＰＣアドレスがメモリ障害を引き起こすことを、随意に含み得る。
【００９９】
例Ｍ５において、例Ｍ１−Ｍ４のうちの任意の１つの主題は、メモリ障害例外がコードの変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断された場合にイベントを記録することを、随意に含み得る。
【０１００】
例Ｍ６において、例Ｍ１−Ｍ５のうちの任意の１つの主題は、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にセキュリティモジュールにコードを通信することを、随意に含み得る。
【０１０１】
例Ｍ７において、例Ｍ１−Ｍ６のうちの任意の１つの主題は、変換の最中に例外が生じたかどうか判断することと、無効アドレスにおいて例外が生じた場合にイベントを記録することとを随意に含み得る。
【０１０２】
例Ｓ１は、シェルコードを検知するためのシステムであり、システムは、コードの実行のとき、自己書き換えコードを含むコードを監視し、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録するように構成された、実行プロファイリングバイナリ変換モジュールを含む。
【０１０３】
例Ｓ２において、例Ｓ１の主題は、実行プロファイリングバイナリ変換モジュールが、ポイズンＧｅｔＰＣアドレスをＧｅｔＰＣアドレス領域にばらまくようにさらに構成されることを、随意に含み得る。
【０１０４】
例ＳＳ１は、シェルコードを検知するためのシステムであり、システムは、コードの実行のとき、自己書き換えコードを含むコードを監視し、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にイベントを記録するように構成される、実行プロファイリングバイナリ変換モジュールを含む。
【０１０５】
例ＳＳ２において、例Ｓ１の主題は、実行プロファイリングバイナリ変換モジュールがマルウェアに関するコードを分析するようにさらに構成されることを、随意に含み得る。
【０１０６】
例ＳＳ３において、例ＳＳ１−ＳＳ２のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールが、ポイズンＧｅｔＰＣアドレスをＧｅｔＰＣアドレス領域にばらまくようにさらに構成されることを、随意に含み得る。
【０１０７】
例ＳＳ４において、例ＳＳ１−ＳＳ３のうちの任意の１つの主題は、ポイズンＧｅｔＰＣアドレスがメモリ障害を引き起こすことを、随意に含み得る。
【０１０８】
例ＳＳ５において、例ＳＳ１−ＳＳ４のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールが、メモリ障害例外がコードの変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断される場合にイベントを記録するようにさらに構成されることを、随意に含み得る。
【０１０９】
例ＳＳ６において、例ＳＳ１−ＳＳ５のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールが、自己書き換えコードがＧｅｔＰＣアドレス領域に生じた場合にセキュリティモジュールにコードを通信するようにさらに構成されることを、随意に含み得る。
【０１１０】
例ＳＳ７において、例ＳＳ１−ＳＳ６のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールが、変換の最中に例外が生じたかどうか判断し、無効アドレスにおいて例外が生じた場合にイベントを記録するようにさらに構成されることを、随意に含み得る。
【０１１１】
例ＳＳ８において、例ＳＳ１−ＳＳ７のうちの任意の１つの主題は、実行プロファイリングバイナリ変換モジュールが、コードが書き込み可能メモリ領域にある場合にコードをセキュリティモジュールに通信させるようにさらに構成されることを、随意に含み得る。
【０１１２】
例Ｘ１は、例Ａ１−Ａ８、またはＭ１−Ｍ７のうちの任意の１つに示されるような方法を実装するか装置を実現するための機械可読命令を含む、機械可読記憶媒体である。例Ｙ１は、例の方法Ｍ１−Ｍ７のうちのいずれかを実行するための手段を含む装置である。例Ｙ２において、例Ｙ１の主題は、方法を実行するための、プロセッサおよびメモリを含む手段を随意に含み得る。例Ｙ３において、例Ｙ２の主題は、機械可読命令を含むメモリを随意に含み得る。
【図１】
2018519603.tif 000003
【図２】
2018519603.tif 000004
【図３】
2018519603.tif 000005
【図４】
2018519603.tif 000006
【図５】
2018519603.tif 000007
【図６】
2018519603.tif 000008
【図７】
2018519603.tif 000009
【図８】
2018519603.tif 000010
【図９】
2018519603.tif 000011
【図１０】
2018519603.tif 000012
【図１１】
2018519603.tif 000013
【国際調査報告】
2018519603.tif 000014
2018519603.tif 000015
2018519603.tif 000016