JP2018519603A - シェルコードの検知 - Google Patents

シェルコードの検知 Download PDF

Info

Publication number
JP2018519603A
JP2018519603A JP2017566758A JP2017566758A JP2018519603A JP 2018519603 A JP2018519603 A JP 2018519603A JP 2017566758 A JP2017566758 A JP 2017566758A JP 2017566758 A JP2017566758 A JP 2017566758A JP 2018519603 A JP2018519603 A JP 2018519603A
Authority
JP
Japan
Prior art keywords
code
getpc
address
self
event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017566758A
Other languages
English (en)
Inventor
康一 山田
康一 山田
ラジャン シャンミュガヴェラユサム、パラニヴェル
ラジャン シャンミュガヴェラユサム、パラニヴェル
ダブリュー. ダルシャー、グレッグ
ダブリュー. ダルシャー、グレッグ
コンダ、スラヴァーニ
Original Assignee
マカフィー,エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マカフィー,エルエルシー filed Critical マカフィー,エルエルシー
Publication of JP2018519603A publication Critical patent/JP2018519603A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)

Abstract

本明細書に説明される特定の実施形態は、コードの実行のとき、コードを監視するように構成され得る電子デバイスを提供する。コードは自己書き換えコードを含み得る。システムは、自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録し得る。

Description

[関連出願への相互参照]
本出願は、2015年6月27日に出願された、「シェルコードの検知」と題された米国仮特許出願第62/185,604号、および、2015年9月26日に出願された、「シェルコードの検知」と題された米国非仮特許出願第14/866,860号の優先権の利益を主張し、その両者はその全体において参照によって本明細書に組み込まれる。
本開示は、概して、情報セキュリティの分野に関し、特に、マルウェアを特定するためのシェルコードの検知に関する。
今日の社会において、ネットワークセキュリティの分野はますます重要となってきている。インターネットは、世界中の異なるコンピュータネットワークの相互接続を可能にしている。特に、インターネットは、様々なタイプのクライアントデバイスを介して、異なるコンピュータネットワークに接続された異なるユーザの間でデータを交換するための媒体を提供する。インターネットの使用が企業のコミュニケーションおよび個人のコミュニケーションを変えた一方、それは、また、悪意のある操作者がコンピュータおよびコンピュータネットワークへの不正アクセスを得るための、および、機密情報の意図的なまたは不注意による開示のための、手段として使用されている。
ホストコンピュータに感染する、悪意のあるソフトウェア(「マルウェア」)は、ホストコンピュータと関連づけられた企業または個人から機密情報を盗取する、他のホストコンピュータに伝播する、および/または、分散型サービス妨害攻撃を支援する、ホストコンピュータからのスパムまたは悪意のあるeメールを送信する、などの、任意の数の悪意のある動作を実行することが可能であり得る。従って、コンピュータおよびコンピュータネットワークを、悪意のあるソフトウェアおよびデバイスによる、悪意のある、および不注意なエクスプロイトから保護するための、著しい管理課題が残っている。
本開示のより完全な理解、ならびにその特徴および利点を提供するように、添付の図面と共に用いられる以下の説明が参照される。同様の参照符号は同様の部分を表す。
本開示の一実施形態による、シェルコードの検知のための通信システムの簡略ブロック図である。
本開示の一実施形態による、シェルコードの検知のための通信システムの一部の簡略ブロック図である。
本開示の一実施形態による、シェルコードの検知のための通信システムの例示的な詳細の簡略ブロック図である。
本開示の一実施形態による、シェルコードの検知のための通信システムの例示的な詳細の簡略ブロック図である。
本開示の一実施形態による、シェルコードの検知のための通信システムの例示的な詳細の簡略ブロック図である。
本開示の一実施形態による通信システムに関連づけられ得る、潜在的な操作を示す簡略フローチャートである。
本開示の一実施形態による通信システムに関連づけられ得る、潜在的な操作を示す簡略フローチャートである。
本開示の一実施形態による通信システムに関連づけられ得る、潜在的な操作を示す簡略フローチャートである。
一実施形態によるポイントツーポイント構成に配置された、例示的なコンピューティングシステムを示すブロック図である。
本開示の例示的なARMエコシステム・システムオンチップ(SoC)に関連づけられる、簡略ブロック図である。
一実施形態による例示的なプロセッサコアを示すブロック図である。
図面は、その寸法が本開示の範囲から大幅に逸脱することなく変わり得るので、必ずしも縮尺通りに描かれてはいない。
[例示的な実施形態]
図1は、本開示の一実施形態による、シェルコードの検知のための通信システム100の簡略ブロック図である。図1に示されるように、通信システム100は、電子デバイス102、クラウドサービス104、およびサーバ106を含み得る。電子デバイス102は、プロセッサ110、メモリ112、セキュリティモジュール114、アプリケーション116、入力/出力ドライバ118、および実行プロファイリングバイナリ変換モジュール124を含み得る。メモリ112は、GetPCアドレス領域120およびホワイトリスト146を含み得る。クラウドサービス104およびサーバ106は各々、ネットワークセキュリティモジュール122を含み得る。電子デバイス102と、クラウドサービス104と、サーバ106とは、ネットワーク108を用いて通信し得る。
例示的な実施形態において、通信システム100は、本開示の一実施形態によるシェルコードを検知するように構成され得る。図1の複数の要素は、任意の好適な(有線または無線)接続を採用する1または複数のインタフェースを通じて互いに結合され得、それはネットワーク(例えば、ネットワーク108など)通信のための実行可能な経路を提供する。加えて、図1のそれらの要素の任意の1または複数は、特定の構成の必要性に基づいて、組み合わされ得、または、アーキテクチャから取り除かれ得る。通信システム100は、ネットワークにおけるパケットの送信または受信のための、伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信が可能な構成を含み得る。通信システム100は、必要に応じて、および特定の必要性に基づいて、ユーザデータグラムプロトコル/IP(UDP/IP)または任意の他の好適なプロトコルと共に、また動作し得る。
通信システム100の特定の例の技術を示す目的で、ネットワーク環境をトラバースし得る通信を理解することが重要である。以下の基礎的情報は、本開示が適切に説明され得る基礎とみなされ得る。
現在、攻撃を実施するために既存のアプリケーションまたはライブラリコードを使用する、リターン・オリエンテッド・プログラミング(ROP)のエクスプロイト攻撃が、データ実行防止(DEP)軽減策を回避するために普及している。多くのROPエクスプロイトは、攻撃の実施および完了のために、後にシェルコード(例えばマシンコードペイロード)の実行を伴う。そのようなシェルコードは、シグナチャベースのアンチウィルス検知技術を回避するために効果的であることが知られている、コード難読化をまた用いる。
マルウェアは、しばしば、それ自体をアンチウィルススキャナから隠すように、圧縮、暗号化など独占された方法などの、難読化技術を用いる。そのような難読化されたコードは、実行可能なマルウェア、およびエクスプロイトによって伝播されたマルウェアペイロードの多くにおいて見られる。難読化技術は、シグナチャベースのアンチウィルス検知技術の回避において効果的であることが知られている。
シグナチャベースの方法は通常、難読化されたマルウェアを検知可能ではないので、残念ながら、そのような難読化されたマルウェアコードのための大部分の現在の対策は、非常に限られたものである。必要とされることは、難読化されたマルウェアコードの動的なランタイム検知である。システムおよび方法が、自己復号コードシーケンスを検知し、アンチウィルスソフトウェアに、シグナチャベースの方法の動的適用を可能にし、難読化されたマルウェアコードの復号後にマルウェアの発見を可能にし得るのならば、有益であろう。
図1に概説されるような、シェルコードの検知のための通信システムが、これらの(および他の)課題を解決し得る。通信システム100は、難読化されたマルウェアコードのランタイム検知を可能にし、自己復号コードシーケンスを検知し、アンチウィルスソフトウェアにシグナチャベースの方法の動的適用を可能にし、難読化されたマルウェアコードの復号後にマルウェアの特定を可能にするように構成され得る。難読化されたマルウェアまたはシェルコードは、通常は暗号化されており、実行前に自己復号される必要がある。マルウェアコードのこの自己復号処理は、難読化されたマルウェアコード本文のアドレスを位置決めするように用いられる、GetPCまたはGetEIP操作で始まる。ひとたび、難読化されたコードのアドレスがGetPC操作によって知られると、マルウェアは発見されたGetPCアドレスから、アンパック(解凍)および自己復号(デコード)操作を実行する。処理は、マルウェアコード実行前のそのコードの中の数バイトを書き換える、自己書き換えコード操作を伴い得る。
通常、自己復号処理は、GetPCコードの実行、GetPCアドレスの消費、および難読化されたマルウェアコードメモリに対する現実の復号(デコード)操作を含む。通信システム100は、マルウェアによって一般にGetPC操作に用いられる、命令シーケンスを特定するバイナリ変換技術を用い、GetPCアドレスの消費を検知するようにポイズニングされたアドレスをばらまき(seed)、現実の復号(デコード)操作を検知するようにバイナリ変換システムの自己書き換えコード(SMC)検知機構を用い得る。用語「ポイズニング」は、ポイズニングされたアドレスまたは領域がアクセスされた場合に、例外、障害、イベント、アラートなどの、いくつかの動作を引き起こすように、アドレスまたは領域を書き換えるために用いられる。1つより多い方法が、ポイズニングされたアドレスをばらまくように用いられ得ることに留意されたい。GetPCアドレスが命令領域にあるか非命令領域にあるかを判断するための、転送コードフロー分析などのバイナリ変換技術を伴うこと、および、復号処理イベントのトラッキングおよび関連づけによって、誤検知の判断が回避され得る。さらに、マルウェアコードの最終判断を作成するための復号処理後に、難読化解除されたマルウェアコードにシグナチャベースのスキャン方法を適用することによって、誤検知イベントが回避され得る。加えて、マルウェアによって用いられる自己発見GetPCコードシーケンスは、また非常に特殊である。
通信システム100は、GetPC操作を含有するコード領域をデコードおよび分析し、GetPCアドレスがコード領域に位置するか非コード領域に位置するかを区別するための、バイナリ変換器の先読みコードフロー分析を用いるようにまた構成され得る。通信システム100は、イベントのこれらのシーケンスをトラッキングし、最終検知決定を行い、復号処理発見の誤検知を最小化するための、第3のイベントが生じるまで待機し得る。通信システム100は、セキュリティモジュール114またはネットワークセキュリティモジュール122が、難読化されたマルウェアコードの復号の検知後に、シグナチャベースの方法を動的に適用することを、また可能にし得る。
多くの現在の、ランタイムマルウェア検知解決策およびシグナチャベースの検知方法は、マルウェアの難読化技術およびコード難読化を検知することが不可能である。コードは難読化解除されなければならず、マルウェア専門家たちが、マルウェアを分析するために多くの時間、多くの日数を費やし、しばしば数か月間をかけて徹底的な手動分析を行うことをしばしば必要とするので、難読化されたマルウェアコードの検知は困難である。処理メモリの周期的なスキャンは、コストが大きく、システムの性能に厳しい影響を与える。今日の解決策のそのような厳しい限界は、アンチウィルス業者が効果的な自動化マルウェア分析解決策を開発および展開すること、ならびに、そのような難読化されたマルウェアおよびマルウェアペイロードを検知するためのエンドポイントセキュリティを展開することを、妨げ得るか邪魔し得る。
通信システム100は、難読化されたマルウェアコードおよびマルウェアペイロードのランタイム検知機構を提供し、バイナリ変換技術を用いて難読化されたマルウェアコードの復号処理を発見するように構成され得る。通信システム100は、また、難読化されたマルウェアコードの自己復号後にコードスキャンを実行し得る既存のシグナチャベースの方法を、補完および改善し得る。
通信システム100は、マルウェアコードの復号処理を検知することによって、難読化されたマルウェアコードまたは難読化されたペイロード(例えば、シェルコード)のための動的なランタイム検知機構を提供する。マルウェアコードの復号処理は、GetPC命令シーケンスの実行、発見されたGetPCアドレスの消費、および、発見されたPCアドレスから起動されたコード領域の自己書き換え操作を伴い得る。実行プロファイリングバイナリ変換モジュール124は、バイナリ分析、変換器、およびランタイム機能またはモジュールを含み得る。バイナリ分析モジュール(例えば、図2に示された変換器128)は、バイナリ分析を実行し、GetPC命令シーケンスを特定するように構成され得る。変換器モジュール(例えば、変換器128)は、セキュリティモジュールへのトラッキングおよびコールバックを可能にするためのGetPCコードシーケンスをインストルメント化するように、オリジナルのアプリケーションバイナリの変換済みバージョンを生成するように構成され得る。ランタイムモジュール(例えば、図2に示されたランタイム130)は、変換設備、削除、および不要データコレクションを含む変換の管理のために構成され得る。セキュリティモジュール(例えば、セキュリティモジュール114またはネットワークセキュリティモジュール122)は、オペレーティングシステムと相互作用し、OSシステム呼び出しのエミュレーションおよび仮想化を実施するために構成され得る。
x86 ISAにおいて現在のPCアドレスの自己発見を実装する命令シーケンスには、多数の方法がある。しかしながら、誤検知が最低限であるマルウェアコードによって用いられるGetPCコードシーケンスを、BTモジュールが特定することが起こり得る。一例は、GetPC操作を含有するコード領域をデコードおよび分析し、GetPCアドレスが現実のコード領域に位置するか非コード領域に位置するかを区別するように、変換器の先読みコードフロー分析を用いることを含む。
例えば、POPが後に続くCALL0は、x86コードにおいて現在のPCを取得する比較的単純な方法であり、いくらか正規のランタイムコードさえも、このコードシーケンスを用い得る。このコードシーケンスは、しかしながら、ヌルバイトを含有する。ヌルバイト挿入は、通常はホスト侵入アプリケーションによって監視され、検知可能であるので、マルウェアは、現在のGetPCアドレスの自己発見を実装するPOP命令が後に続く、FSTENV命令をしばしば用いる。マルウェアによって一般に用いられる他のGetPC命令シーケンスは、呼び出し対象アドレスをCALL命令自体の中央にポインティングしたCALL命令を含む。マルウェアのシェルコードによって用いられる他のコードシーケンスがあるが、バイナリ分析は、他のパターンを認識するように、ならびに、現在のIPアドレスの自己発見を実装するそのような不審な命令およびコードシーケンスを特定するように構成され得る。例えば、コードがGetPC操作として特定される場合、通信システム100は、それが誤検知をトラッキングおよび最小化する不審なGetPC操作であるかどうかを裏付けるための、分析を実行するように構成され得る。分析は、コードが書き込み可能(ヒープ、スタックなど)なメモリ(実行可能かつ書き込み可能なメモリを含む)内にあるかどうか判断することを含み得、コードがDLLなどの実行可能なモジュールによって裏打ちされているかどうか判断し得、コードが実行可能なモジュールによって裏打ちされており、かつモジュールが信頼されている(例えば、信頼されるソースによって署名された、他の手段によって検査された)かどうか判断し得る、などである。
ひとたびGetPC命令シーケンスが発見されると、変換器は必要なインストルメンテーションによって、オリジナルのバイナリの変換バージョンを生成し得る。変換済みバージョンにおいて、GetPC命令シーケンスは、GetPCアドレスを有するGetPC実行イベントのログをとり、より深い分析のためにセキュリティモジュール114に(GetPCイベントとして)通知を与え、GetPCアドレスを特定可能な無効アドレスと置換することによってポイズンGetPCアドレスをばらまくように、インストルメント化される。セキュリティモジュール114へのトリガーとしてGetPCイベントを用いることは、既知のマルウェアパターンに関するスキャン、用いられた命令およびシーケンスを特定すること、などによって引き起こされる、コードのより深い分析を可能にする。
一意的に特定可能なポイズニングされたGetPCアドレスをばらまくことは、実行プロファイリングバイナリ変換モジュール124が、マルウェアコードによるGetPCアドレスの正確な消費ポイントを検知することを可能にする。ポイズンGetPCアドレスは、任意の無効アドレスであり得るが、アドレス値は、実行プロファイリングバイナリ変換モジュール124によって一意的に特定可能である必要がある。GetPCアドレス消費の検知は、実行プロファイリングバイナリ変換モジュール124のシステム層モジュールを介してシェルコードによって引き起こされる、アクセス妨害例外を傍受することによって成され得、それは、OSからの例外ディスパッチ呼び出しを傍受し、アプリケーションのOS相互作用を仮想化する。真のアクセス妨害と、マルウェアの復号処理によるGetPCアドレスの消費との間の区別は、障害メモリアドレスを確認して、障害メモリアドレスが一意的なポイズンGetPCアドレスと一致するかどうかを発見することによって成され得る。随意に、実行プロファイリングバイナリ変換モジュール124は、シェルコードのアンパックコードにポイズンGetPCアドレスをばらまく代わりに、暗号化されたマルウェアコード本文の自己書き換え操作をマルウェアが実行するときのGetPCアドレスの消費を検知するために、GetPCアドレス領域(ページ)にライトプロテクトをかけるように構成され得る。
復号処理の最終ステージにおいて、GetPCメモリ領域におけるマルウェアの自己書き換え操作は、バイナリ変換システムの自己書き換えコード検知機構を用いることによって検知される。バイナリ変換システムの自己書き換えコード検知機構は、コードがまだ変換の時のバイトと同じかどうかを確かめるように変換の実行の最中にセルフチェックを実行するセルフチェック変換の生成か、または、実行プロファイリングバイナリ変換モジュール124のシステム層モジュールからの助けによってオリジナルのコードページをライトプロテクトすることか、のいずれかによって実装される。マルウェアの復号処理によって引き起こされる静的メモリコントローラ(SMC)と、他のタイプのSMCとの間の区別は、SMCメモリアドレスを確認して、SMCがGetPCアドレス領域内に生じるかどうか知ることによって成され得る。
実行プロファイリングバイナリ変換モジュール124によって提供される上記の検知機構は、セキュリティモジュール114が、マルウェアの復号処理に関連づけられたイベントのシーケンスを監視して正確にトラッキングすることを可能にする。セキュリティモジュール114は、マルウェア実行の存在を分析および判断するために、各個別のイベントを用い得、または、3つのイベント全てを用い得、これらのイベントをトラッキングし、および関連づけて、これが真の復号処理か誤検知かを判断し得る。
実行プロファイリングバイナリ変換モジュール124は、自己書き換えコード実行の実行の前に、セキュリティモジュール114に通知するようにまた構成され得る。これは、SMC変換を実行する前に通知機構を追加するように、実行プロファイリングバイナリ変換モジュール124によって成され得る。SMC変換は、SMCイベントまたは操作の結果として、実行プロファイリングバイナリ変換モジュール124によって生成された変換である。これは、セキュリティモジュール114が、既知のマルウェアシグナチャを発見するために、シグナチャベースのスキャン方法を難読化解除されたマルウェアコードに動的に適用することを可能にする。この最終段は、発見された復号処理が正規のものか悪意のものかを、セキュリティモジュール114が判断することに役立つ。
難読化解除の最中、マルウェアは最初に、オリジナルのコードを読むことを必要とする。これは、ポイズニングされたアドレス上で障害を起こして検知され得る。セキュリティモジュール114が、マルウェア実行の最後段(オリジナルのコードの難読化解除)は観測される必要があると判断するとき、セキュリティモジュール114は、ポイズニングされたアドレスをオリジナルのGetPCアドレスで置換し得る。最後段は、BTモジュールによって提供されるSMC検知機構によって検知され得る。SMC(例えば、難読化解除)の実行後、セキュリティモジュール114は、コードが悪意のものであるかどうかを判断するために、難読化解除されたコードを検査し得る。
ポイズニングは、GetPCアドレスを用いてロード操作を傍受する方法である。例において、各GetPCアドレスは、一意的な予約された無効アドレスに置換され得る。ロードがポイズニングされたアドレスによって生じるとき、障害が生成されるであろう。実行プロファイリングバイナリ変換モジュール124は、障害を検査して、障害アドレスが既に生成されたポイズニングされたアドレスのいずれかと一致するかどうかを判断し得る。例において、一意的なGetPC操作が生じるとき、システムはGetPCアドレスを一意的なポイズニングされたアドレスに置換え得る。例えば、2つのGetPC操作が2つの異なるIPロケーションで生じ、2つの異なるポイズンアドレスがGetPCアドレスの各々に割り当てられ得る。実行プロファイリングバイナリ変換モジュール124は、どのGetPCアドレスが、障害(例えば、ロード操作での消費時間)のあるポイズニングされたアドレスに対応するかを知り得る。
図1のインフラストラクチャに移ると、例示的な実施形態による通信システム100が示される。概して、通信システム100は、任意の種類またはトポロジのネットワークに実装され得る。ネットワーク108は、通信システム100を通じて伝播する情報のパケットを受信および送信する、相互結合された通信経路の一連のポイントまたはノードを示す。ネットワーク108は、ノード間の通信インタフェースを提供し、任意のローカルエリアネットワーク(LAN)、仮想ローカルエリアネットワーク(VLAN)、ワイドエリアネットワーク(WAN)、無線ローカルエリアネットワーク(WLAN)、メトロポリタンエリアネットワーク(MAN)、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、および、ネットワーク環境において通信を容易にする任意の他の適切なアーキテクチャまたはシステム、または、それらの任意の好適な組み合わせとして、有線および/または無線通信を含んで構成され得る。
通信システム100において、パケット、フレーム、信号、データなどを含むネットワークトラフィックは、任意の好適な通信メッセージングプロトコルによって送信され得、および受信され得る。好適な通信メッセージングプロトコルは、開放型システム間相互接続(OSI)モデル、または、それらの任意の派生または変形(例えば、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル/IP(UDP/IP))、などの多層スキームを含み得る。加えて、セルラネットワークにわたる無線信号通信もまた、通信システム100において、提供されてよい。好適なインタフェースおよびインフラストラクチャが、セルラネットワークとの通信を可能にするように提供されてよい。
本明細書で用いられる用語「パケット」は、パケット交換ネットワーク上のソースノードと宛先ノードとの間でルーティングされ得るデータの単位を指す。パケットは、ソースネットワークアドレスおよび宛先ネットワークアドレスを含む。これらのネットワークアドレスは、TCP/IPメッセージングプロトコルにおけるインターネットプロトコル(IP)アドレスであり得る。本明細書で用いられる用語「データ」は、電子デバイスおよび/またはネットワークにおいて、1つのポイントから別のポイントへ通信され得る任意の適切なフォーマットの、任意の種類のバイナリ、数値、音声、ビデオ、テキスト、もしくはスクリプトデータ、もしくは、任意の種類のソースもしくはオブジェクトコード、または、任意の他の好適な情報を指す。加えて、メッセージ、要求、応答、およびクエリはネットワークトラフィックの形態であり、従って、パケット、フレーム、信号、データなどを備え得る。
例示的な実装において、電子デバイス102、クラウドサービス104、およびサーバ106はネットワーク要素であり、それらは、ネットワーク環境において情報を交換するように操作可能な、ネットワーク機器、サーバ、ルータ、スイッチ、ゲートウェイ、ブリッジ、ロードバランサ、プロセッサ、モジュール、または、任意の他の好適なデバイス、コンポーネント、要素、もしくはオブジェクトを包含することが意図される。ネットワーク要素は、それらの操作を容易にする、任意の好適なハードウェア、ソフトウェア、コンポーネント、モジュール、または、オブジェクト、ならびに、ネットワーク環境においてデータまたは情報を受信、送信、および/または別の方法で通信するために好適なインタフェースを含み得る。これは、データまたは情報の効果的な交換を可能にする適切なアルゴリズムおよび通信プロトコルを含み得る。
通信システム100に関連づけられた内部構造に関して、電子デバイス102、クラウドサービス104およびサーバ106の各々は、本明細書に概説される操作において用いられる情報を格納するための複数のメモリ要素を含み得る。電子デバイス102、クラウドサービス104およびサーバ106の各々は、任意の好適なメモリ要素(例えば、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、特定用途向け集積回路(ASIC)など)、ソフトウェア、ハードウェア、ファームウェア、または、必要に応じて、および特定の必要性に基づいて、任意の他の好適なコンポーネント、デバイス、要素、もしくはオブジェクトに、情報を保持し得る。本明細書で説明された任意のメモリアイテムは、広義の用語「メモリ要素」の中に包含されると解釈されるべきである。さらに、通信システム100において用いられ、トラッキングされ、送信され、または受信される情報は、任意のデータベース、レジスタ、キュー、テーブル、キャッシュ、制御リスト、または他のストレージ構造において提供され得、それらの全ては、任意の好適な時間枠で参照され得る。任意のそのようなストレージの選択肢が、本明細書で用いられる広義の用語「メモリ要素」の中に、また含まれ得る。
特定の例示的な実装において、本明細書に概説される機能は、非一時的コンピュータ読み取り可能媒体を含み得る1または複数の有形媒体において符号化されるロジック(例えば、ASICに提供される組み込みロジック、デジタル信号プロセッサ(DSP)命令、プロセッサまたは他の同様の機械によって実行されるソフトウェア(オブジェクトコードおよびソースコードを潜在的に含む)、など)によって実装され得る。これらの例のいくつかにおいて、メモリ要素は、本明細書に説明された操作のために用いられるデータを格納し得る。これは、本明細書に説明されたアクティビティを遂行するように実行される、ソフトウェア、ロジック、コード、またはプロセッサ命令を格納可能なメモリ要素を含む。
例示的な実装において、電子デバイス102、クラウドサービス104、およびサーバ106などの通信システム100のネットワーク要素は、本明細書に概説される操作を実現または促進する、ソフトウェアモジュール(例えば、セキュリティモジュール114、ネットワークセキュリティモジュール122、および実行プロファイリングバイナリ変換モジュール124)を含み得る。これらのモジュールは、特定の構成および/またはプロビジョニングの必要性に基づき得る、任意の適切な態様で好適に組み合わされ得る。例示的な実施形態において、そのような操作は、ハードウェアによって遂行され得、それらの要素の外部に実装され得、または、意図される機能を実現する何らかの他のネットワークデバイスに含まれ得る。さらに、モジュールは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の好適な組み合わせとして実装され得る。これらの要素は、本明細書に概説されるような操作を実現させるように、他のネットワーク要素と連携し得るソフトウェア(またはレシプロケーティングソフトウェア(reciprocating software))をまた含み得る。
加えて、電子デバイス102、クラウドサービス104、およびサーバ106の各々は、本明細書に説明されたようなアクティビティを実行するソフトウェアまたはアルゴリズムを実行可能なプロセッサを含み得る。プロセッサは、本明細書で詳述された操作を実現するように、データと関連づけられた任意の種類の命令を実行し得る。一例において、プロセッサは、要素または物品(例えば、データ)を、1つの状態または物から、別の状態または物に変換し得る。別の例において、本明細書に概説されるアクティビティは、固定されたロジックまたはプログラム可能なロジック(例えば、プロセッサによって実行されるソフトウェア/コンピュータ命令)によって実装され得、本明細書において特定される要素は、デジタルロジック、ソフトウェア、コード、電子命令、またはそれらの任意の好適な組み合わせを含む、何らかのタイプのプログラム可能なプロセッサ、プログラム可能なデジタルロジック(例えば、フィールドプログラマブルゲートアレー(FPGA)、EPROM、EEPROM)、またはASICであり得る。本明細書で説明される、任意の潜在的な処理要素、モジュールおよび機械は、広義の用語「プロセッサ」の中に包含されると解釈されるべきである。
電子デバイス102はネットワーク要素であり得、例えば、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、パーソナルデジタルアシスタント、スマートフォン、タブレット、または他の同様のデバイスを含む。クラウドサービス104は、クラウドサービスを電子デバイス102に提供するように構成される。クラウドサービス104は、インターネットなどのネットワークにわたるサービスとして供給されるコンピューティングリソースの使用として、概して定義され得る。通常、計算、ストレージ、およびネットワークリソースがクラウドインフラストラクチャにおいて提供され、ワークロードをローカルネットワークからクラウドネットワークに効果的にシフトする。サーバ106は、サーバまたは仮想サーバなどのネットワーク要素であり得、何らかのネットワーク(例えば、ネットワーク108)を介して通信システム100において通信を開始することを所望しているクライアント、顧客、エンドポイント、またはエンドユーザに関連づけられ得る。用語「サーバ」は、通信システム100の中のクライアントの要求を果たす、および/または、クライアントの代わりにいくらかの計算のタスクを実行するように用いられるデバイスを含む。セキュリティモジュール114が電子デバイス102に位置するものとして図1に表されているが、これは例示目的のみである。セキュリティモジュール114は、任意の好適な構成において組み合わされ、または分離され得る。例えば、セキュリティモジュール114のアクティビティはネットワークセキュリティモジュール122にシフトされ得る。
図2に移ると、図2は、本開示の一実施形態による、シェルコードの検知のための通信システムの例示的な詳細の簡略ブロック図である。図2に示されるように、実行プロファイリングバイナリ変換モジュール124は、実行プロファイリングモジュール126、変換器128、ランタイム130、バイナリ変換システム層132を含み得る。実行プロファイリングバイナリ変換モジュール124は、セキュリティモジュール114および変換済みコードキャッシュ134と通信し得る。実行プロファイリングバイナリ変換モジュール124は、セキュリティモジュール114と共に対象アプリケーション処理空間の中で実行されるように構成され得、アプリケーションの実行の動的な挙動の監視を可能にするようにセキュリティモジュール114によって動的にロードされ得る。
実行プロファイリングモジュール126は、セキュリティモジュール114と通信し、アプリケーションプログラムインタフェース(APIs)の実行をさらすように構成され得る。変換器128は、バイナリ分析、変換、最適化、または、アプリケーションまたはコードに関連する、他の同様のアクティビティを提供するように構成され得る。ランタイム130は、変換キャッシュ管理、ルックアップテーブル管理、システム管理コントローラ(SMC)処理などを提供するように構成され得る。バイナリ変換システム層132は、システム呼び出し、例外、非同期コールバック、処理、スレッド生成などの、仮想化オペレーティングシステムインタフェースを提供するように構成され得る。
図3に移ると、図3は、本開示の一実施形態によるシェルコードの検知のための通信システムの、例示的な詳細の簡略ブロック図である。図3に示されるように、アプリケーションからのオリジナルのコード136は、変換器128に送信され得る。変換器128は、オリジナルのコード136の部分を変換し得て、変換済みコードキャッシュ134の変換された部分を格納し得る。変換済みコードキャッシュ134の変換済みコードは、悪意のある、または不審なアクティビティの存在のためにセキュリティモジュール114によって分析され得る。
実行プロファイリングバイナリ変換モジュール124は、対象アプリケーションまたは処理に、DLLとして挿入され得、ポリシーは、セキュリティモジュール114によって構成され得る。実行プロファイリングバイナリ変換モジュール124は、変換キャッシュを生成し、ならびに、(ポリシーチェックおよび/またはポリシー埋め込みによる)変換および、対象アプリケーションまたは処理の再開ポイントから変換キャッシュへのジャストインタイム(JIT'ing)を開始するように構成され得る。実行プロファイリングライフサイクル(図5に示される)のための停止ポイントが、セキュリティモジュール114によって指定され得る。変換器128およびランタイム130を用いて、実行プロファイリングバイナリ変換モジュール124がポリシー違反を検知したとき、違反を引き起こしたアプリケーションまたはコードが、さらなる分析のためにセキュリティモジュール114に通信され得る。
図4に移ると、図4は、本開示の一実施形態によるシェルコードの検知のための通信システムの、例示的な詳細の簡略ブロック図である。図4に示されるように、セキュリティモジュール114は初期化され得、実行プロファイリングバイナリ変換モジュール124を停止し得る。セキュリティモジュール114は、監視を開始し、コールバックのための条件を設定し、および、監視を停止するように、実行プロファイリングバイナリ変換モジュール124に、また命令し得る。
図5に移ると、図5は、本開示の一実施形態によるシェルコードの検知のための通信システムの、例示的な詳細の簡略ブロック図である。図5に示されるように、実行プロファイリングライフサイクル500は、挿入およびポリシー設定ステージ140、動的バイナリ分析ステージ142、実行モニタリングステージ144、および報告ステージ145を含み得る。挿入およびポリシー設定ステージ140において、セキュリティモジュール114は、ポリシーを判断し、特定のアプリケーションのために監視するように構成され得る。プロファイリングおよび監視は、特定のイベントのときに、またはメモリのアドレスまたは領域がアクセスされたときに開始し得る。挿入およびポリシー設定ステージ140は、全体の処理として、またはスレッドレベルで実行し得る。挿入およびポリシー設定ステージ140から、セキュリティモジュール114はアプリケーションの監視のために、実行プロファイリングバイナリ変換モジュール124に要求を送信し得、実行プロファイリングライフサイクル500は動的バイナリ分析ステージ142に入り得る。
動的バイナリ分析ステージ142において、実行プロファイリングバイナリ変換モジュール124は、コードの実行前のオリジナルのバイナリコードを分析し、コードおよびコードのアドレス範囲をホワイトリスト(例えば、ホワイトリスト146)によって確認するように構成され得る。動的バイナリ分析ステージ142において、実行プロファイリングバイナリ変換モジュール124は、コードに関する正規の呼び出し、戻り、およびジャンプの対象を特定するように、また構成され得る。変換器128は、実行モニタリングステージ144のためにコードを変換し得る。
実行モニタリングステージ144において、実行プロファイリングバイナリ変換モジュール124は、分岐監視およびプロファイリング、制御フローインテグリティ(例えば、呼び出しおよび戻りのマッチングなど)、特別または特定のアドレスおよび命令の監視、ならびにアプリケーションプログラムインタフェースポリシーの使用のために構成され得る。不審なアクティビティまたは事前に構成された条件のアクティベーションは、実行プロファイリングバイナリ変換モジュール124に、セキュリティモジュール114への通知を送信させる。例えば、コードが書き込み可能メモリ領域に位置する場合、その後、コードはマルウェアに関して分析されるべきである。セキュリティモジュール114は、疑わしいまたはプロファイリングされたデータを分析し得、マルウェアの防止または軽減のために必要な動作を取り得る。
図6に移ると、図6は、一実施形態による、シェルコードを検知することに関連づけられ得る、フロー600の可能な操作を示す例示的なフローチャートである。実施形態において、フロー600の1または複数の工程は、セキュリティモジュール114および実行プロファイリングバイナリ変換モジュール124によって実行され得る。602において、コードの変換が実行される。604において、システムは、変換が発見されたかどうか判断する。変換が発見された場合、606に示されるように、その後、変換が実行される。変換が発見されなかった場合、620に示されるように、その後、コードの変換のための(メモリの)領域が判断される。622において、システムは、コードの判断された領域がGetPCコードを含むかどうか判断する。判断された領域がGetPCコードを含む場合、628に示されるように、その後、GetPC実行イベントが記録される。630において、GetPC実行イベントに関連する通知が、セキュリティモジュールに通信される。632において、ポイズンGetPCアドレスがばらまかれる。ポイズンGetPCアドレスは、不審なアクティビティが生じたときに障害を引き起こすか、アラートを引き起こすようにばらまかれる。624において、変換が生成される。622に戻ると、判断された領域がGetPCコードを含まない場合、624に示されるように、その後に(コードに関する)変換が生成される。606において、変換が実行される。
608において、システムは、変換がGetPCコードに関連するかどうか判断する。変換がGetPCコードに関連しない場合、その後、さらなる動作はとられない。変換がGetPCコードに関連する場合、610に示されるように、その後、GetPC実行イベントが記録される。612において、システムは、報告が要求されたかどうか判断する。報告が要求された場合、614に示されるように、その後、ポイズンGetPCアドレスがばらまかれる。ポイズンGetPCアドレスは、不審なアクティビティが生じたときに障害を引き起こすか、アラートを引き起こすようにばらまかれ、報告の生成が引き起こされる。報告が要求されなかった場合、616に示されるように、その後、GetPC実行イベントが分析される。例において、GetPC実行イベントは、セキュリティモジュール114および/またはネットワークセキュリティモジュール122によって分析され得る。
図7に移ると、図7は、一実施形態による、シェルコードの検知に関連づけられ得る、フロー700の可能な操作を示す例示的なフローチャートである。実施形態において、フロー700の1または複数の工程は、セキュリティモジュール114および実行プロファイリングバイナリ変換モジュール124によって実行され得る。702において、変換済みコードが実行される。704において、システムは変換の最中に例外が生じたかどうか判断する。例えば、ポイズンGetPCアドレスは、例外を引き起こすようにばらまかれた可能性がある。例外が生じなかった場合、その後、さらなる動作はとられない。例外が生じた場合、706に示されるように、その後、例外ディスパッチフローが傍受される。708において、システムはトリガーイベントが生じたかどうか判断する。例えば、トリガーイベントは、例外メモリ障害(例えば、メモリ障害変換、ポイズニングされたアドレスによって引き起こされたメモリ障害)、または、不審な挙動をシグナリングするか示す、何らかの他の予め定められたイベントであり得る。トリガーイベントが生じなかった場合、その後、さらなる動作はとられない。トリガーイベントが生じた場合、710に示されるように、その後、システムは障害アドレスが無効アドレスと一致するかどうか判断する。障害アドレスが無効アドレスと一致しない場合、その後、さらなる動作はとられない。障害アドレスが無効アドレスと一致する場合、712に示されるように、その後、イベントが記録される。714において、システムは、報告が要求されるかどうか判断する。報告が要求されなかった場合、その後、さらなる動作はとられない。報告が要求された場合、714に示されるように、その後、イベントが分析され得る。例において、イベントは、セキュリティモジュール114および/またはネットワークセキュリティモジュール122によって分析され得る。
図8に移ると、図8は、一実施形態による、シェルコードの検知に関連し得る、フロー800の可能な操作を示す例示的なフローチャートである。実施形態において、フロー800の1または複数の工程は、セキュリティモジュール114および実行プロファイリングバイナリ変換モジュール124によって実行され得る。802において、GetPC命令が認識される。804において、システムは、自己書き換えコードが検知されたかどうか判断する。自己書き換えコードが検知されなかった場合、その後、さらなる動作はとられない。自己書き換えコードが検知された場合、806に示されるように、その後、システムは、自己書き換えコードが監視されたアドレス領域に生じたかどうか判断する。例において、監視されたアドレス領域は802で認識されたGetPC命令、および、認識されたGetPC命令から得られたGetPCアドレスから計算される。自己書き換えコードが監視されたアドレス領域に生じなかった場合、その後、さらなる動作はとられない。自己書き換えコードが書き換えられたアドレス領域に生じた場合、808に示されるように、その後、セキュリティイベントが生成される。810において、自己書き換えイベントが記録される。812において、システムは、報告が要求されたかどうか判断する。報告が要求されなかった場合、その後、さらなる動作はとられない。報告が要求された場合、814に示されるように、その後、記録されたイベントが分析され得る。例において、記録されたイベントは、セキュリティモジュール114および/またはネットワークセキュリティモジュール122によって分析され得る。
図9は、一実施形態による、ポイントツーポイント(PtP)構成に配置された、コンピューティングシステム900を示す。特に、図9は、プロセッサ、メモリ、および入力/出力デバイスが、複数のポイントツーポイントインタフェースによって相互結合されるシステムを示す。概して、通信システム100のネットワーク要素の1または複数は、コンピューティングシステム900と同じ、または同様の態様で構成され得る。
図9に示されるように、システム900は、いくつかのプロセッサを含み得、明確さのために、それらのうちプロセッサ970および980の2つのみが示される。2つのプロセッサ970および980が示される一方、システム900の実施形態は、また、そのようなプロセッサを1つのみ含み得ることが、理解されるべきである。プログラムの複数のスレッドを実行するように、プロセッサ970および980は各々、一組のコア(すなわち、プロセッサコア974Aおよび974B、ならびにプロセッサコア984Aおよび984B)を含み得る。コアは、図6から図9を参照して上に説明されたものと同様の態様で、命令コードを実行するように構成され得る。各プロセッサ970、980は、少なくとも1つの共有キャッシュ971、981を含み得る。共有キャッシュ971、981は、プロセッサコア974および984などの、プロセッサ970、980の1または複数のコンポーネントによって利用されるデータ(例えば、命令)を格納し得る。
プロセッサ970および980は各々、メモリ要素932および934と通信するための、統合されたメモリコントローラロジック(MC)972および982をまた含み得る。メモリ要素932および/または934は、プロセッサ970および980によって用いられる様々なデータを格納し得る。代替的な実施形態において、メモリコントローラロジック972および982は、プロセッサ970および980から独立した、個別のロジックであり得る。
プロセッサ970および980は、任意の種類のプロセッサであり得、ポイントツーポイントインタフェース回路978および988をそれぞれ用いて、ポイントツーポイント(PtP)インタフェース950を介してデータを交換し得る。プロセッサ970および980は各々、ポイントツーポイントインタフェース回路976、986、994および998を用いて、個別のポイントツーポイントインタフェース952および954を介して、チップセット990とデータを交換し得る。チップセット990は、PtPインタフェース回路であり得るインタフェース回路992を用いて、高性能グラフィックインタフェース939を介して、高性能グラフィック回路938とデータをまた交換し得る。代替的な実施形態において、図9に示されたPtPリンクのいずれかまたは全ては、PtPリンクではなくマルチドロップバスとして実装され得る。
チップセット990は、インタフェース回路996を介してバス920と通信し得る。バス920は、バスブリッジ918およびI/Oデバイス916などの、それを介して通信する1または複数のデバイスを有し得る。バス910を介して、バスブリッジ918は、キーボード/マウス912(または、タッチスクリーン、トラックボールなどの他の入力デバイス)、通信デバイス926(モデム、ネットワークインタフェースデバイス、または、コンピュータネットワーク960を通じて通信し得る他のタイプの通信デバイスなど)、オーディオI/Oデバイス914、および/またはデータストレージデバイス928などの、他のデバイスと通信し得る。データストレージデバイス928は、プロセッサ970および/または980によって実行され得る、コード930を格納し得る。代替的な実施形態において、バスアーキテクチャの任意の部分は、1または複数のPtPリンクで実装され得る。
図9に図示されたコンピュータシステムは、本明細書に説明された様々な実施形態を実装するように利用され得るコンピューティングシステムの実施形態の、概略的な例示である。図9に図示されたシステムの様々なコンポーネントは、システムオンチップ(SoC)アーキテクチャ、または任意の他の好適な構成で組み合わされ得ることが、理解されるであろう。例えば、本明細書に開示された実施形態は、スマートセルラ電話、タブレットコンピュータ、パーソナルデジタルアシスタント、携帯可能ゲームデバイスなどの、モバイルデバイスを含むシステム内に組み込まれ得る。これらのモバイルデバイスは、少なくともいくつかの実施形態において、SoCアーキテクチャを備え得ることが理解されるであろう。
図10に移ると、図10は、本開示の例示的なARMエコシステムSoC1000と関連づけられた簡略ブロック図である。本開示の少なくとも1つの例示的な実装は、本明細書で説明されたシェルコード検知機能、およびARMコンポーネントを含み得る。例えば、図10の例は、任意のARMコア(例えば、A−9、A−15など)に関連づけられ得る。さらに、アーキテクチャは、任意の種類のタブレット、スマートフォン(Android(登録商標) phone、iPhone(登録商標)、iPad(登録商標)、Google Nexus(登録商標)、Microsoft Surface(商標)、パーソナルコンピュータ、サーバ、ビデオ処理コンポーネント、ラップトップコンピュータ(任意の種類のノートブックを含む)、Ultrabook(登録商標)システム、任意の種類のタッチ対応入力デバイスなどを含む)の一部であり得る。
図10のこの例において、ARMエコシステムSOC1000は、液晶ディスプレイ(LCD)に結合するモバイルインダストリープロセッサインタフェース(MIPI)/高精細度マルチメディアインタフェース(HDMI(登録商標))リンクと関連づけられ得る、複数のコア1006−1007、L2キャッシュ制御1008、バスインタフェースユニット1009、L2キャッシュ1010、グラフィック処理ユニット(GPU)1015、インターコネクト1002、ビデオコーデック1020、およびLCD I/F1025を含み得る。
ARMエコシステムSOC1000は、加入者特定モジュール(SIM)I/F1030、ブートリードオンリメモリ(ROM)1035、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)コントローラ1040、フラッシュメモリコントローラ1045、シリアル周辺機器インタフェース(SPI)マスター1050、好適な電力制御1055、ダイナミックRAM(DRAM)1060、およびフラッシュメモリ1065を、また含み得る。加えて、1または複数の例示的な実施形態は、1または複数の通信機能、インタフェース、ならびに、Bluetooth(登録商標)1070、3Gモデム1075、全地球測位システム(GPS)1080、および802.11 Wi−Fi1085という例などの機能を含み得る。
操作において、図10の例は、様々なタイプのコンピューティング(例えば、モバイルコンピューティング、ハイエンドデジタルホーム、サーバ、無線インフラストラクチャなど)を可能にする比較的低い電力消費と共に、処理機能を提供し得る。加えて、そのようなアーキテクチャは、任意の数のソフトウェアアプリケーション(例えば、Android(登録商標)、Adobe(商標) Flash(商標)プレーヤ、Java(登録商標)プラットフォームスタンダードエディション(Java(登録商標)SE)、Java(登録商標)FX、Linux(登録商標)、Microsoft Windows(登録商標) Embedded、SymbianおよびUbuntuなど)を可能にし得る。少なくとも1つの例示的な実施形態において、コアプロセッサは、結合された低レイテンシのレベル2キャッシュを有するアウトオブオーダー・スーパースカラー・パイプラインを実装し得る。
図11は、一実施形態によるプロセッサコア1100を示す。プロセッサコア1100は、マイクロプロセッサ、組み込まれたプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、またはコードを実行する他のデバイスなど、任意の種類のプロセッサのためのコアであり得る。1つのみのプロセッサコア1100が図11に示されているが、プロセッサは、図11に示されたプロセッサコア1100のうちの1つより多くを、代替的に含み得る。例えば、プロセッサコア1100は、図9のプロセッサ970および980を参照して示されおよび説明された、プロセッサコア974a、974b、984aおよび984bの1つの例示的な実施形態を示す。プロセッサコア1100は、シングルスレッドコアであり得、または、少なくとも1つの実施形態に関して、プロセッサコア1100は、コア毎に1つより多いハードウェアスレッドコンテキスト(または「論理プロセッサ」)を含み得るという点で、マルチスレッドであり得る。
図11は、一実施形態によるプロセッサコア1100に結合されるメモリ1102を、また示す。メモリ1102は、知られているような、そうでなければ当業者に利用可能なような、任意の多種多様なメモリ(メモリ階層の様々な層を含む)であり得る。メモリ1102は、プロセッサコア1100によって実行される、1または複数の命令であり得るコード1104を含み得る。プロセッサコア1100は、コード1104によって示される命令のプログラムシーケンスをたどり得る。各命令はフロントエンドロジック1106に入り、1または複数のデコーダ1108によって処理される。デコーダは、その出力として、予め定義されたフォーマットの固定幅マイクロオペレーションなどの、マイクロオペレーションを生成し得、または、オリジナルのコード命令を反映する他の命令、マイクロ命令、または制御信号を生成し得る。フロントエンドロジック1106は、レジスタリネーミングロジック1110およびスケジューリングロジック1112をまた含み、それは概して、リソースを割り当て、実行のための命令に対応する操作をキューに登録する。
プロセッサコア1100は、一組の実行ユニット1116−1から1116−Nを有する実行ロジック1114を、また含み得る。いくつかの実施形態は、特定の機能または機能の組に専用の、複数の実行ユニットを含み得る。他の実施形態は、1つの実行ユニットのみ、または、特定の機能を実行し得る1つの実行ユニットを含み得る。実行ロジック1114は、コード命令によって指定される操作を実行する。
コード命令によって指定される操作の実行の完了後、バックエンドロジック1118は、コード1104の命令をリタイアし得る。一実施形態において、プロセッサコア1100は、アウトオブオーダー実行を可能にするが、命令のインオーダーリタイアメントを必要とする。リタイアメントロジック1120は、様々な知られている形態(例えば、リオーダーバッファまたは同様のもの)を取り得る。本態様において、プロセッサコア1100は、少なくとも、デコーダによって生成される出力、レジスタリネーミングロジック1110によって利用されるハードウェアレジスタおよびテーブル、および実行ロジック1114によって書き換えられた任意のレジスタ(示されない)の観点から、コード1104の実行の最中に変換される。
図11には示されないが、プロセッサは、プロセッサコア1100を有するチップ上の他の要素を含み得、その少なくともいくらかが図10を参照して本明細書で示されて説明される。例えば、図10に示されるように、プロセッサは、プロセッサコア1100と共にメモリ制御ロジックを含み得る。プロセッサは、I/O制御ロジックを含み得、および/または、メモリ制御ロジックと統合されたI/O制御ロジックを含み得る。
本明細書に提供された例と共に、相互作用は、2つ、3つ、またはより多くのネットワーク要素の観点から説明され得ることに留意する。しかしながら、これは、明確さおよび例示のみの目的で成されている。特定の場合には、限られた数のネットワーク要素を参照するのみによって、所与の組のフローの機能の1または複数の説明がより容易になり得る。通信システム100およびその教示は、容易に拡張可能であり、多数のコンポーネント、ならびに、より複雑な/洗練された配置及び構成に対応し得ることが、理解されるべきである。従って、提供された例は、無数の他のアーキテクチャに潜在的に適用されるものとしての通信システム100の、範囲を制限すべきではなく、または、広い教示を阻むべきではない。
前述のフロー図(すなわち、図6から図8)における操作は、通信システム100によって、または通信システム100の中で実行され得る、起こり得る相関するシナリオおよびパターンのいくつかのみを示すことに留意することが、また重要である。これらの操作のいくつかは、必要に応じて削除され得、または取り除かれ得、または、これらの操作は、本開示の範囲から逸脱することなく、大幅に書き換えられ得、または変更され得る。加えて、これらの操作の多数は、1または複数の追加の操作と同時に、またはそれと並行して実行されるものとして、説明されてきた。しかしながら、これらの操作のタイミングは大幅に変更され得る。前述の操作フローは、例示および説明の目的で提供されている。任意の好適な配置、時系列、構成、およびタイミング機構が、本開示の教示から逸脱することなく提供され得るという点で、かなりの柔軟性が、通信システム100によって提供される。
本開示は特定の配置及び構成を参照して詳細に説明されているが、これらの例示的な構成および配置は、本開示の範囲から逸脱することなく、大幅に変更され得る。さらに、特定のコンポーネントが、特定の必要性および実装に基づいて、組み合わされ、分離され、除去され、または追加され得る。加えて、通信システム100は、通信処理を容易にする特定の要素及び操作を参照して示されるが、これらの要素及び操作は、通信システム100の意図される機能を実現する任意の好適なアーキテクチャ、プロトコル、および/または処理によって置換され得る。
数多くの他の変化、代替、変形、変更、および修正が、本分野の当業者に確認され得、本開示は、添付の特許請求の範囲の中に属するそのような変化、代替、変形、変更、および修正を、全て包含することが意図されている。米国特許商標庁(USPTO)、および加えて、本出願に関して発行される任意の特許の任意の読者の助力となるように、本明細書に添付の特許請求の範囲の解釈において、出願人は、以下に留意することを望む。(a)出願人は、添付のいかなる請求項も、文言「ための手段」または「ための段階」が特定の請求項において具体的に用いられない限り、本明細書の出願の日において存在する米国特許法第112条第6パラグラフを発動させる意図はない。(b)出願人は、添付の特許請求の範囲に反映されない限り、本明細書におけるいかなる記述によっても、いかなる方法でも、本開示を限定する意図はない。
[他の注記および例]
例C1は、少なくとも1つのプロセッサによって実行された場合、少なくとも1つのプロセッサに、コードの実行のとき、自己書き換えコードを含むコードを監視させ、自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録させる、1または複数の命令を有する少なくとも1つの機械可読媒体である。
例C2において、例C1の主題は、少なくとも1つのプロセッサによって実行された場合に、少なくとも1つのプロセッサに、マルウェアに関するコードを分析させる、1または複数の命令を随意に含み得る。
例C3において、例C1−C2のうちの任意の1つの主題は、少なくとも1つのプロセッサによって実行された場合に、少なくとも1つのプロセッサに、ポイズンGetPCアドレスをGetPCアドレス領域にばらまかせる、1または複数の命令を随意に含み得る。
例C4において、例C1−C3のうちの任意の1つの主題は、ポイズンGetPCアドレスがメモリ障害を引き起こすことを、随意に含み得る。
例C5において、例C1−C4のうちの任意の1つの主題は、少なくとも1つのプロセッサによって実行された場合、少なくとも1つのプロセッサに、メモリ障害例外が変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断された場合にイベントを記録させる1または複数の命令を、随意に含み得る。
例C6において、例C1−C5のうちの任意の1つの主題は、少なくとも1つのプロセッサによって実行された場合、少なくとも1つのプロセッサに、自己書き換えコードがGetPCアドレス領域に生じた場合にセキュリティモジュールにコードを通信させる1または複数の命令を、随意に含み得る。
例C7において、例C1−C6のうちの任意の1つの主題は、少なくとも1つのプロセッサによって実行された場合、少なくとも1つのプロセッサに、コードの変換の最中に例外が生じたかどうか判断させ、無効アドレスにおいて例外が生じた場合にイベントを記録させる1または複数の命令を、随意に含み得る。
例C8において、例C1−C7のうちの任意の1つの主題は、少なくとも1つのプロセッサによって実行された場合、少なくとも1つのプロセッサに、コードが書き込み可能メモリ領域にある場合にコードをセキュリティモジュールに通信させる1または複数の命令を、随意に含み得る。
例A1において、電子デバイスは実行プロファイリングバイナリ変換モジュールを含み得、実行プロファイリングバイナリ変換モジュールは、コードの実行のとき、自己書き換えコードを含むコードを監視し、自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録するように構成される。
例A2において、例A1の主題は、マルウェアに関するコードを分析するように構成されたセキュリティモジュールを、随意に含み得る。
例A3において、例A1−A2のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールがポイズンGetPCアドレスをGetPCアドレス領域にばらまくようにさらに構成されることを、随意に含み得る。
例A4において、例A1−A3のうちの任意の1つの主題は、ポイズンGetPCアドレスがメモリ障害を引き起こすことを、随意に含み得る。
例A5において、例A1−A4のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールが、メモリ障害例外がコードの変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断された場合にイベントを記録するようにさらに構成されることを、随意に含み得る。
例A6において、例A1−A5のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールが、自己書き換えコードがGetPCアドレス領域に生じた場合にセキュリティモジュールにコードを通信するようにさらに構成されることを、随意に含み得る。
例A7において、例A1−A6のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールが、変換の最中に例外が生じたかどうか判断し、無効アドレスにおいて例外が生じた場合にイベントを記録するようにさらに構成されることを、随意に含み得る。
例A8において、例A1−A7のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールが、コードが書き込み可能メモリ領域にある場合にコードをセキュリティモジュールに通信するようにさらに構成されることを、随意に含み得る。
例M1は、コードの実行のとき、自己書き換えコードを含むコードを監視することと、自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録することとを含む、方法である。
例M2において、例M1の主題は、マルウェアに関するコードを分析することを、随意に含み得る。
例M3において、例M1−M2のうちの任意の1つの主題は、ポイズンGetPCアドレスをGetPCアドレス領域にばらまくことを、随意に含み得る。
例M4において、例M1−M3のうちの任意の1つの主題は、ポイズンGetPCアドレスがメモリ障害を引き起こすことを、随意に含み得る。
例M5において、例M1−M4のうちの任意の1つの主題は、メモリ障害例外がコードの変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断された場合にイベントを記録することを、随意に含み得る。
例M6において、例M1−M5のうちの任意の1つの主題は、自己書き換えコードがGetPCアドレス領域に生じた場合にセキュリティモジュールにコードを通信することを、随意に含み得る。
例M7において、例M1−M6のうちの任意の1つの主題は、変換の最中に例外が生じたかどうか判断することと、無効アドレスにおいて例外が生じた場合にイベントを記録することとを随意に含み得る。
例S1は、シェルコードを検知するためのシステムであり、システムは、コードの実行のとき、自己書き換えコードを含むコードを監視し、自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録するように構成された、実行プロファイリングバイナリ変換モジュールを含む。
例S2において、例S1の主題は、実行プロファイリングバイナリ変換モジュールが、ポイズンGetPCアドレスをGetPCアドレス領域にばらまくようにさらに構成されることを、随意に含み得る。
例SS1は、シェルコードを検知するためのシステムであり、システムは、コードの実行のとき、自己書き換えコードを含むコードを監視し、自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録するように構成される、実行プロファイリングバイナリ変換モジュールを含む。
例SS2において、例S1の主題は、実行プロファイリングバイナリ変換モジュールがマルウェアに関するコードを分析するようにさらに構成されることを、随意に含み得る。
例SS3において、例SS1−SS2のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールが、ポイズンGetPCアドレスをGetPCアドレス領域にばらまくようにさらに構成されることを、随意に含み得る。
例SS4において、例SS1−SS3のうちの任意の1つの主題は、ポイズンGetPCアドレスがメモリ障害を引き起こすことを、随意に含み得る。
例SS5において、例SS1−SS4のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールが、メモリ障害例外がコードの変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断される場合にイベントを記録するようにさらに構成されることを、随意に含み得る。
例SS6において、例SS1−SS5のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールが、自己書き換えコードがGetPCアドレス領域に生じた場合にセキュリティモジュールにコードを通信するようにさらに構成されることを、随意に含み得る。
例SS7において、例SS1−SS6のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールが、変換の最中に例外が生じたかどうか判断し、無効アドレスにおいて例外が生じた場合にイベントを記録するようにさらに構成されることを、随意に含み得る。
例SS8において、例SS1−SS7のうちの任意の1つの主題は、実行プロファイリングバイナリ変換モジュールが、コードが書き込み可能メモリ領域にある場合にコードをセキュリティモジュールに通信させるようにさらに構成されることを、随意に含み得る。
例X1は、例A1−A8、またはM1−M7のうちの任意の1つに示されるような方法を実装するか装置を実現するための機械可読命令を含む、機械可読記憶媒体である。例Y1は、例の方法M1−M7のうちのいずれかを実行するための手段を含む装置である。例Y2において、例Y1の主題は、方法を実行するための、プロセッサおよびメモリを含む手段を随意に含み得る。例Y3において、例Y2の主題は、機械可読命令を含むメモリを随意に含み得る。

Claims (25)

  1. 少なくとも1つのプロセッサに、
    コードの実行のとき、自己書き換えコードを含むコードを監視する手順と、
    前記自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録する手順と、
    を実行させるための、コンピュータプログラム。
  2. 前記少なくとも1つのプロセッサに、
    マルウェアに関する前記コードを分析する手順
    を実行させるための、請求項1に記載のコンピュータプログラム。
  3. 前記少なくとも1つのプロセッサに、
    ポイズンGetPCアドレスを前記GetPCアドレス領域にばらまく手順
    を実行させるための、請求項1または2に記載のコンピュータプログラム。
  4. 前記ポイズンGetPCアドレスがメモリ障害を引き起こす、請求項3に記載のコンピュータプログラム。
  5. 前記少なくとも1つのプロセッサに、
    メモリ障害例外が変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断される場合に前記イベントを記録する手順
    を実行させるための、請求項1に記載のコンピュータプログラム。
  6. 前記少なくとも1つのプロセッサに、
    さらに、前記自己書き換えコードがGetPCアドレス領域に生じた場合にセキュリティモジュールに前記コードを通信する手順
    を実行させるための、請求項1に記載のコンピュータプログラム。
  7. 前記少なくとも1つのプロセッサに、
    さらに、前記コードの変換の最中に例外が生じたかどうか判断する手順と、
    無効アドレスにおいて前記例外が生じた場合に前記イベントを記録する手順と
    を実行させるための、請求項1に記載のコンピュータプログラム。
  8. 前記少なくとも1つのプロセッサに、
    さらに、前記コードが書き込み可能メモリ領域にある場合に前記コードをセキュリティモジュールに通信する手順、
    を実行させるための、請求項1に記載のコンピュータプログラム。
  9. コードの実行のとき、自己書き換えコードを含む前記コードを監視し、
    前記自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録する、
    実行プロファイリングバイナリ変換モジュールを備える、装置。
  10. 前記装置が、
    マルウェアに関する前記コードを分析する、
    セキュリティモジュールをさらに含む、請求項9に記載の装置。
  11. 前記実行プロファイリングバイナリ変換モジュールが、
    さらに、ポイズンGetPCアドレスを前記GetPCアドレス領域にばらまく、
    請求項9または10に記載の装置。
  12. 前記ポイズンGetPCアドレスがメモリ障害を引き起こす、請求項11に記載の装置。
  13. 前記実行プロファイリングバイナリ変換モジュールが、
    さらに、メモリ障害例外が変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断される場合に前記イベントを記録する、
    請求項9に記載の装置。
  14. 前記実行プロファイリングバイナリ変換モジュールが、
    さらに、前記自己書き換えコードがGetPCアドレス領域に生じた場合にセキュリティモジュールに前記コードを通信する、
    請求項9に記載の装置。
  15. 前記実行プロファイリングバイナリ変換モジュールが、
    さらに、前記コードの変換の最中に例外が生じたかどうか判断し、
    無効アドレスにおいて前記例外が生じた場合に前記イベントを記録する、
    請求項9に記載の装置。
  16. 前記実行プロファイリングバイナリ変換モジュールが、
    さらに、前記コードが書き込み可能メモリ領域にある場合に前記コードをセキュリティモジュールに通信する、
    請求項9に記載の装置。
  17. コードの実行のとき、自己書き換えコードを含む前記コードを監視する段階と、
    前記自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録することと
    を備える、方法。
  18. マルウェアに関する前記コードを分析する段階
    をさらに備える、請求項17に記載の方法。
  19. ポイズンGetPCアドレスを前記GetPCアドレス領域にばらまく段階
    をさらに備える、請求項17または18に記載の方法。
  20. 前記ポイズンGetPCアドレスがメモリ障害を引き起こす、請求項19に記載の方法。
  21. メモリ障害例外が変換の最中に生じてメモリ障害変換が無効アドレスと一致することが判断された場合に前記イベントを記録する段階
    をさらに備える、請求項17に記載の方法。
  22. 前記自己書き換えコードがGetPCアドレス領域に生じた場合にセキュリティモジュールに前記コードを通信する段階
    をさらに備える、請求項17に記載の方法。
  23. 前記コードの変換の最中に例外が生じたかどうか判断する段階と、
    無効アドレスにおいて前記例外が生じた場合に前記イベントを記録する段階と
    をさらに備える、請求項17に記載の方法。
  24. シェルコードを検知するためのシステムであって、前記システムは、実行プロファイリングバイナリ変換モジュールを備え、
    前記実行プロファイリングバイナリ変換モジュールは、
    コードの実行のとき、自己書き換えコードを含む前記コードを監視し、
    前記自己書き換えコードがGetPCアドレス領域に生じた場合にイベントを記録する、
    システム。
  25. 前記実行プロファイリングバイナリ変換モジュールが、さらに、ポイズンGetPCアドレスを前記GetPCアドレス領域にばらまく、
    請求項24に記載のシステム。
JP2017566758A 2015-06-27 2016-05-26 シェルコードの検知 Pending JP2018519603A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562185604P 2015-06-27 2015-06-27
US62/185,604 2015-06-27
US14/866,860 2015-09-26
US14/866,860 US10803165B2 (en) 2015-06-27 2015-09-26 Detection of shellcode
PCT/US2016/034267 WO2017003601A1 (en) 2015-06-27 2016-05-26 Detection of shellcode

Publications (1)

Publication Number Publication Date
JP2018519603A true JP2018519603A (ja) 2018-07-19

Family

ID=57603134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017566758A Pending JP2018519603A (ja) 2015-06-27 2016-05-26 シェルコードの検知

Country Status (5)

Country Link
US (1) US10803165B2 (ja)
EP (1) EP3314513A1 (ja)
JP (1) JP2018519603A (ja)
CN (1) CN107912064B (ja)
WO (1) WO2017003601A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437998B2 (en) * 2015-10-26 2019-10-08 Mcafee, Llc Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection
US10291634B2 (en) 2015-12-09 2019-05-14 Checkpoint Software Technologies Ltd. System and method for determining summary events of an attack
US10880316B2 (en) 2015-12-09 2020-12-29 Check Point Software Technologies Ltd. Method and system for determining initial execution of an attack
US10440036B2 (en) * 2015-12-09 2019-10-08 Checkpoint Software Technologies Ltd Method and system for modeling all operations and executions of an attack and malicious process entry
US10108798B1 (en) 2016-01-04 2018-10-23 Smart Information Flow Technologies LLC Methods and systems for defending against cyber-attacks
US10372908B2 (en) * 2016-07-25 2019-08-06 Trap Data Security Ltd. System and method for detecting malware in a stream of bytes
EP3535681B1 (en) * 2016-11-07 2023-07-26 Perception Point Ltd System and method for detecting and for alerting of exploits in computerized systems
US10372902B2 (en) * 2017-03-06 2019-08-06 Intel Corporation Control flow integrity
WO2018193429A1 (en) * 2017-04-20 2018-10-25 Morphisec Information Security Ltd. System and method for runtime detection, analysis and signature determination of obfuscated malicious code
WO2021011138A1 (en) * 2019-07-14 2021-01-21 Jung Yong Kyu A hybrid security-enabled lookahead microprocessor based method and apparatus for securing computer systems and data
US11681804B2 (en) 2020-03-09 2023-06-20 Commvault Systems, Inc. System and method for automatic generation of malware detection traps

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006031718A (ja) * 2004-07-21 2006-02-02 Microsoft Corp ワームの封じ込め
US20090158431A1 (en) * 2007-12-18 2009-06-18 Electronics And Telecommunications Research Institute Method of detecting polymorphic shell code
JP2009528632A (ja) * 2006-03-01 2009-08-06 マイクロソフト コーポレーション 実行可能コード変更の防止
US8515075B1 (en) * 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
US20140123280A1 (en) * 2012-10-30 2014-05-01 Gabriel Kedma Runtime detection of self-replicating malware
US20140181976A1 (en) * 2011-05-06 2014-06-26 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313616A (en) * 1990-09-18 1994-05-17 88Open Consortium, Ltd. Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines
US6073142A (en) 1997-06-23 2000-06-06 Park City Group Automated post office based rule analysis of e-mail messages and other data objects for controlled distribution in network environments
US5987610A (en) 1998-02-12 1999-11-16 Ameritech Corporation Computer virus screening methods and systems
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6460050B1 (en) 1999-12-22 2002-10-01 Mark Raymond Pace Distributed content identification system
US6901519B1 (en) 2000-06-22 2005-05-31 Infobahn, Inc. E-mail virus protection system and method
US8639828B1 (en) * 2004-10-13 2014-01-28 Symantec Corporation Accelerated TCP network communications
US20070094496A1 (en) * 2005-10-25 2007-04-26 Michael Burtscher System and method for kernel-level pestware management
CN101645119B (zh) * 2008-08-07 2012-05-23 中国科学院软件研究所 一种基于虚拟硬件环境的恶意代码自动分析方法及系统
CN102081719B (zh) * 2009-12-01 2015-05-20 南京翰海源信息技术有限公司 基于动态污染传播的软件安全测试系统及方法
US8813227B2 (en) 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US8856789B2 (en) * 2012-09-06 2014-10-07 Assured Information Security, Inc. Facilitating execution of a self-modifying executable
WO2014089744A1 (zh) * 2012-12-10 2014-06-19 华为技术有限公司 恶意代码的检测方法及装置
KR101429131B1 (ko) * 2013-06-12 2014-08-11 소프트캠프(주) 시스템 보호를 위한 파일 보안용 관리장치와 관리방법
US8943592B1 (en) 2013-07-15 2015-01-27 Eset, Spol. S.R.O. Methods of detection of software exploitation
US10229268B2 (en) * 2015-03-28 2019-03-12 Leviathan, Inc. System and method for emulation-based detection of malicious code with unmet operating system or architecture dependencies

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006031718A (ja) * 2004-07-21 2006-02-02 Microsoft Corp ワームの封じ込め
JP2009528632A (ja) * 2006-03-01 2009-08-06 マイクロソフト コーポレーション 実行可能コード変更の防止
US20090158431A1 (en) * 2007-12-18 2009-06-18 Electronics And Telecommunications Research Institute Method of detecting polymorphic shell code
US8515075B1 (en) * 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
US20140181976A1 (en) * 2011-05-06 2014-06-26 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code
US20140123280A1 (en) * 2012-10-30 2014-05-01 Gabriel Kedma Runtime detection of self-replicating malware

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
藤井 孝好: "エミュレーションに基づくシェルコード検知手法の改善", コンピュータセキュリティシンポジウム2010 論文集 [第二分冊], vol. 第2010巻, JPN6019000160, 12 October 2010 (2010-10-12), JP, pages 465 - 470 *

Also Published As

Publication number Publication date
CN107912064A (zh) 2018-04-13
US10803165B2 (en) 2020-10-13
US20160381043A1 (en) 2016-12-29
WO2017003601A1 (en) 2017-01-05
CN107912064B (zh) 2022-01-14
EP3314513A1 (en) 2018-05-02

Similar Documents

Publication Publication Date Title
JP2018519603A (ja) シェルコードの検知
US11328063B2 (en) Identification of malicious execution of a process
US11870793B2 (en) Determining a reputation for a process
US10176344B2 (en) Data verification using enclave attestation
US9825908B2 (en) System and method to monitor and manage imperfect or compromised software
EP3314503B1 (en) Simulation of an application
US10366228B2 (en) Detection and mitigation of malicious invocation of sensitive code
US20170091453A1 (en) Enforcement of file characteristics
JP6583865B2 (ja) プロファイリングイベントに基づいたエクスプロイト検出
JP6668390B2 (ja) マルウェアの軽減
US20150379268A1 (en) System and method for the tracing and detection of malware
US10204223B2 (en) System and method to mitigate malicious calls

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180601

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190115

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190806