JP2019067372A - プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法 - Google Patents

プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法 Download PDF

Info

Publication number
JP2019067372A
JP2019067372A JP2018157018A JP2018157018A JP2019067372A JP 2019067372 A JP2019067372 A JP 2019067372A JP 2018157018 A JP2018157018 A JP 2018157018A JP 2018157018 A JP2018157018 A JP 2018157018A JP 2019067372 A JP2019067372 A JP 2019067372A
Authority
JP
Japan
Prior art keywords
address space
executable
address
malicious code
memory
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.)
Granted
Application number
JP2018157018A
Other languages
English (en)
Other versions
JP6700351B2 (ja
Inventor
エー. パヴリュシク ミハイル
A Pavlyushchik Mikhail
エー. パヴリュシク ミハイル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
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
Priority claimed from RU2017133837A external-priority patent/RU2665910C1/ru
Application filed by Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of JP2019067372A publication Critical patent/JP2019067372A/ja
Application granted granted Critical
Publication of JP6700351B2 publication Critical patent/JP6700351B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】プロセスのアドレス空間内の悪意あるコードを検出するためのシステムおよび方法を提供する。【解決手段】方法は、コンピュータ上で実行中の実行可能ファイルからプロセスが起動されたことを検出し、信頼できるプロセスのアドレス空間内にあり、信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、メモリ領域の中のアドレスがアクセスされたことを検出し、アドレス空間の近傍の範囲内のメモリ領域を解析して、他の1つの実行可能イメージがメモリ領域内に存在するか否かを判定し、当該他の1つの実行可能イメージが悪意あるコードを含んでいるか否かを判定し、当該他の1つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが信頼できるプロセスのアドレス空間内に含まれていると結論づけ、アドレス空間内の悪意あるコードの、除去、停止、および隔離のうち、1つを実行する。【選択図】図2

Description

本開示は、一般にコンピュータセキュリティ分野に関し、より具体的には、プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法に関する。
悪意あるコードや悪意あるファイルを検出するための、ウィルス対策アプリケーションなどのソフトウェアは絶えず改良されている。そのようなソフトウェアは、例えば、信頼できないアプリケーションが実行されることを防止することによって、コンピュータシステムに付与されるセキュリティの品質を向上させるために、アプリケーションコントロール用のモジュールと協調する(または、そのようなモジュールを内蔵している)ことが多い。アプリケーションコントロールモジュールは、一般に、アプリケーションのホワイトリストとブラックリストを使用して、許可されたアプリケーションと禁止されたアプリケーションとを識別する。ウィルス対策アプリケーションは、ブラックリスト上のファイルまたはアプリケーションを、悪意あるものと認識し、一方、ウィルス対策アプリケーションは、ホワイトリスト上のファイルを、コンピュータシステムにとって「信頼できる」ものとみなし、それ以上検査しない。このようなリストを使用すると、ウィルス対策アプリケーションは、シグネチャ解析、ヒューリスティック分析、挙動解析などの活用を含む、入手可能なあらゆる方法を用いて1つ1つのファイルを検査する必要がないため、ウィルス対策アプリケーションによってセキュリティを付与する際のコンピュータシステムの負荷が大幅に軽減される。
しかし、ホワイトリストに含まれている信頼できるファイルから起動される動作やプロセスのすべてがコンピュータシステムに対して無害であるとは限らない。最新の悪意あるプログラムは、信頼できるプロセスのアドレス空間内に自分自身を埋め込み、信頼できるプロセスのアドレス空間から、悪意あるコードを実行する可能性がある。信頼できるプロセスのアドレス空間からのコードに関しては、ウィルス対策アプリケーションは解析(例えば、シグネチャ解析やヒューリスティック分析)を実行しないため、そのような悪意あるコードの実行は、ウィルス対策アプリケーションによって検出されない(したがって、ブロックされない)。
一方、悪意あるコードに対応するプロセスのアドレス空間内のメモリリージョンを検出する方法は、コンピュータシステムのメモリの走査を伴うため、大量の計算リソースを必要とする。本開示は、プロセスのアドレス空間内の悪意あるコードの検出の課題に、より効果的に対処する態様を提供する。
そこで、本出願は、コンピュータセキュリティを向上させるためのシステムおよび方法、特に、プロセスのアドレス空間内の悪意あるコードを検出するためのシステムおよび方法を開示する。
本開示の一態様によれば、プロセスのアドレス空間内の悪意あるコードを検出するための方法は、コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出することと、信頼できるプロセスのアドレス空間内にあり、信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレスがアクセスされたことを検出することと、コンピュータシステム内の疑わしいアドレス空間の近傍の範囲内の1つ以上のメモリ領域を解析して、他の1つの実行可能ファイルを表現する他の1つの実行可能イメージが1つ以上のメモリ領域内に存在するか否かを判定することと、当該他の1つの実行可能イメージを解析して、当該他の1つの実行可能イメージが悪意あるコードを含んでいるか否かを判定することと、当該他の1つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが信頼できるプロセスのアドレス空間内に含まれていると結論づけることと、信頼できるプロセスのアドレス空間内の悪意あるコードの、除去、停止、および隔離のうち1つを実行することと、を含む。
態様のその他の例によれば、本方法において、起動を検出することは、プロセスを起動する関数をインターセプトすることと、プロセスの識別情報を判定することと、識別情報に基づいて、疑わしいアクティビティに関連するアドレス空間を判定して、アクセスすることと、を含む。
態様のその他の例によれば、本方法は、1つ以上のメモリ領域が信頼できる領域を含まない場合、1つ以上のメモリ領域が疑わしいと結論づけることを含む。
態様のその他の例によれば、本方法において、信頼できる領域は、アドレス空間内の実行可能イメージの近傍と、既知の実行可能ファイルのイメージの近傍と、アドレス空間内の既知のアドレスの近傍とのうちの1つ以上を含む。
態様のその他の例によれば、本方法において、近傍は、実行可能イメージの先頭アドレスから第1所定数バイト以内であり、実行可能イメージの最終アドレスから第2所定数バイト以内である。
態様のその他の例によれば、本方法は、メモリ領域に関するページ情報の問い合わせを行うことによって、実行可能イメージの近傍の境界を判定することを含む。
態様のその他の例によれば、本方法は、アドレス空間内のメモリアドレスが信頼できるプロセスのスタックのために予約されたメモリ領域内に存在するか否かを検出することを含む。
態様のその他の例によれば、本方法は、プロセスが実行されているスレッドに関する情報にアクセスするための関数呼び出しを使って、スタック上のアドレスを検索することを含む。
態様のその他の例によれば、本方法は、1つ以上の関数のそれぞれを呼び出すためのコールバックプロシージャを設定することを含む。
態様のその他の例によれば、悪意あるコードを検出するためのシステムは、悪意あるコードのシグネチャを収容する悪性コードシグネチャデータベース、および、コンピュータシステムを備える。コンピュータシステムは、コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出し、信頼できるプロセスのアドレス空間内にあり、信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレスがアクセスされたことを検出し、コンピュータシステム内の疑わしいアドレス空間の近傍の範囲内の1つ以上のメモリ領域を解析して、他の1つの実行可能ファイルを表現する他の1つの実行可能イメージが1つ以上のメモリ領域内に存在するか否かを判定する、インターセプトモジュール、および、他の1つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードがプロセスのアドレス空間内に含まれていると判定して、信頼できるプロセスのアドレス空間内の悪意あるコードの、除去、停止、および隔離のうち、1つを実行する、セキュリティモジュールを備える。
態様のその他の例によれば、コンピュータ読み取り可能な媒体は、本明細書に開示する方法のうち任意のいずれかを実行するための、コンピュータが実行可能な命令を含む命令を格納する。
上記の、態様例の簡単な概要は、本開示の基本的な理解を提供するものである。この概要は、すべての熟考された態様の広範な概説ではなく、すべての態様の鍵となる要素や重要な要素を特定したり、本開示の任意またはすべての態様の範囲を規定したりすることを意図するものではない。その唯一の目的は、1つ以上の態様を、後述する本開示のより詳細な説明への前置きとして、簡易な形で提示することである。上述のことを達成するために、本開示の1つ以上の態様は、特許請求の範囲で説明され、かつ例示的に示される特徴を含んでいる。
本明細書に組み込まれ、その一部を構成する添付図面は、本開示の1つ以上の態様例を図示し、それらの原理および実施例を説明するために、詳細説明とともに供される。
図1は、本開示の態様の一例に係る、プロセスのアドレス空間内の悪意あるコードを検出するシステムのブロック図である。
図2は、本開示の態様の一例に係る、プロセスのアドレス空間内の悪意あるコードを検出する方法を示すフローチャートである。
図3は、本開示の態様の一例に係る汎用コンピュータシステムの一例を示す図である。
プロセスのアドレス空間内の悪意あるコードを検出するためのシステム、方法、および、システムおよび方法のためのコンピュータプログラム製品に関する態様の例について以下に説明する。以下の説明は、単に例示の目的のためであって、いかなる制限を加えることも意図されていないことは、当業者には理解されるであろう。その他の態様は、本開示から利益を得る当業者には、容易に想起できるであろう。添付図面に示すように、態様例の実施態様が詳細に参照される。同一あるいは類似する項目には、図面および以下の説明を通して、可能な範囲で、同一の参照符号を用いる。
以下の用語は、本開示、図面、および請求の範囲を通して用いられる。
悪意あるアプリケーションは、コンピュータ、または、コンピュータ上に記憶されたデータに害を及ぼす可能性のあるアプリケーションである。悪意あるアプリケーションの例としては、インターネットワーム、キーボードトレーサ、コンピュータウィルスなどがある。及ぼされる害は、コンピュータ上に保存されているデータ等のコンピュータリソースを盗む目的や、データの不正保存、不正な動作や計算の実行等のリソースの不正使用の目的のための、コンピュータリソースに対する不正アクセスでありうる。
信頼できるアプリケーションは、コンピュータやそのユーザに害を及ぼさないアプリケーションである。信頼できるアプリケーションとは、信頼できるソフトウェア製造業者によって開発され、信頼できるソース(例えば、信頼できるサイトに関するデータベースに記載されているサイト)からダウンロードされたアプリケーション、または、信頼できるアプリケーションに関するデータベースに保存されている識別子を持つアプリケーションであるとみなすことができる。信頼できるアプリケーションに関するデータベースには、デジタル証明書等の、製造業者の識別子(例えば、アプリケーションファイルのMD5)が保存されていることもある。
信頼できないアプリケーションは、信頼はできないが、例えば、ウィルス対策アプリケーションを用いても、有害とは認識されないアプリケーションである。信頼できないアプリケーションは、後で、例えば、ウィルス対策スキャンを用いると、有害と認識されることもある。
悪意あるファイルは、悪意あるアプリケーションの構成要素を成し、プログラムコード(実行可能または解釈可能なコード)を収容しているファイルである。
信頼できないファイルは、信頼できないアプリケーションの構成要素を成し、プログラムコード(実行可能または解釈可能なコード)を収容しているファイルである。
信頼できるファイルは、信頼できるアプリケーションの構成要素を成すファイルである。
シグネチャ解析は、悪意あるプログラムの検出を目的として、プログラムコードの特定のセグメントと既知のコード(シグネチャ)の対応関係を、悪意あるプログラムのシグネチャに関するデータベースから発見する技術である。この技術は、悪意あるプログラムのファイルの検出と、コンピューティングデバイス(または、コンピュータシステムと呼ばれる)のランダムアクセスメモリ(RAM)内の悪意あるコードの検出の、両方に利用できることに注意すべきである。
ウィルス対策レコードは、ウィルス対策アプリケーションが悪意あるコード、特に、悪意あるファイルを検出するために必要とする情報である。ウィルス対策レコードは、例えば、シグネチャ、ヒューリスティックルール(例えば、ヒューリスティック/プロアクティブ分析で用いることが可能)、ファイルのチェックサムまたはハッシュ(ファイルのわずかな変化に対して不変なファイルハッシュであるフレキシブルあるいは局所性鋭敏型ハッシュを含む)等の形態であってもよい。
スクリプトは、一連のコマンド(命令)であり、一般に、高水準プログラミング言語、または、コンピュータシステムがスクリプトインタープリタを用いて実行するスクリプト言語によって記述される。
一態様によれば、プロセスのアドレス空間内の悪意あるコードを検出するためのシステムは、超小型集積回路(特定用途向け集積回路(ASIC))やフィールドプログラマブルゲートアレイ(FPGA)等のハードウェアを用いて実現される実世界の装置、システム、構成要素、および構成要素群として実現されてもよく、あるいは、例えば、マイクロプロセッサシステムとプログラムインストラクション一式等の、ソフトウェアとハードウェアの組み合わせの形態で、ニューロシナプティックチップ上に実装されてもよい。そのようなシステムモジュールの機能性は、もっぱらハードウェアとして実現されてもよく、また、システムモジュールの機能性の一部をソフトウェア、一部をハードウェアで実現する組み合わせの形態で実現されてもよい。特定の態様においては、モジュールの一部または全部を汎用コンピュータのプロセッサ(例えば、図3に示すもの)で実行してもよい。システムの構成要素は、単一のコンピューティングデバイス内に、または、複数の相互接続されたコンピューティングデバイスに分散して実現されてもよい。
図1は、本開示の態様の一例に係る、プロセスのアドレス空間内の悪意あるコードを検出するシステムのブロック図である。システムは以下の構成要素を含む:インターセプトモジュール110、セキュリティモジュール120、および、悪性コードシグネチャデータベース130。システムの要素同士の接続は、図1に示すとおりである。本開示の態様の一例においては、インターセプトモジュール110とセキュリティモジュール120は、インターセプトモジュール110とセキュリティモジュール120の両方の機能を実行する単一の手段として実現される。
一態様によれば、実行可能ファイル111は、コンピュータシステムを制御するオペレーティングシステム(OS)上で実行され、具体的には、それによってシステムの構成要素が実現される。インターセプトモジュール110は、プロセスの起動を、実行可能ファイル111から検出してもよい。実行可能ファイル111からプロセスが起動されると、オペレーティングシステム(OS)は、その中に実行可能ファイル111のイメージが発見される、プロセスの仮想アドレス空間112(以下、単に「アドレス空間」)を形成する。本開示において、「アドレス空間のメモリ領域」と「アドレス空間内のメモリ領域」の用語は同一であり、交換可能であることは、当業者には認識されるであろう。
実行可能ファイル111のイメージ(「実行可能イメージ」と別称されるイメージ)は、プロセスのアドレス空間内に実行可能ファイル111を表現したものである。実行可能イメージは、単なるコピーされた実行可能ファイル111のバイト表現とは違って、実行可能ファイル111のコードを実行するのに十分なものである。いくつかの態様においては、例えば、実行可能ファイルからプロセスが起動された時点で、OSのローダが実行可能ファイルのイメージを形成してもよい。一般に、実行可能イメージは、例えば、実行可能イメージのコード中で使用されているアドレスに(例えば、呼ばれたプロシージャおよびジャンプのアドレス)に対してなされた変更の分だけ、実行可能ファイルそのものとは異なっている。プロセスの起動を検出するプロセスを実行するために、インターセプトモジュール110は、プロセスを起動する関数をインターセプトするドライバを含んでもよい。本開示の態様の一例においては、ウィンドウズ(登録商標)OSのCreateProcess関数がプロセスを起動する。プロセスの起動を検出した結果、モジュール110はプロセスの一意的な識別子を定める。本開示の態様の一例においては、そのような識別子はPROCESS_INFORMATION構造体であり、そのフィールドには、特に、CreateProcess関数を呼び出した時点で値が割り当てられる。本開示の態様のさらに他の一例においては、この識別子はプロセス記述(プロセスハンドル)であってもよいし、または、プロセス識別子(PID)であってもよい。本開示の態様の一例においては、その後、システムのリソースがプロセス識別子を用いて、ファイル111から起動されたプロセスにアクセスしてもよい。一態様においては、システムは、アドレス空間112にアクセスすることによってプロセスにアクセスする。
また、インターセプトモジュール110は、プロセスの実行中になされた、仮想アドレス空間112内の疑わしいメモリアドレスへのアクセスを検出するようにしてもよい。本開示の一態様においては、あるメモリアドレスがプロセスのアドレス空間内の疑わしいメモリ領域に属する場合、そのメモリアドレスは疑わしいとみなされる。一態様によれば、疑わしいメモリ領域とは、そのアドレス空間内の実行可能ファイルのイメージの境界外にあるメモリ領域であり、同時に、実行可能メモリ領域である。あるメモリ領域が実行可能コードを含んでいるが、通常はそのメモリ領域内に実行可能コードは見出されないか、そのようなメモリ領域からのコードは実行されない場合、そのメモリ領域は疑わしいとみなされる。実行可能ファイルの複数のイメージをアドレス空間112にロードしてもよい。いくつかの特定例においては、その複数のイメージは実行可能ファイル111の1つのイメージ、および、動的ライブラリ(一般に、アドレス空間112内の動的ライブラリ用に予約された動的ライブラリ(DLL)セクションに見出される)やその他の実行可能ファイルのイメージ等の、実行可能ファイルのその他のイメージを含む。MEMORY_BASIC_INFORMATIONデータ構造体へのポインタを返すVirtualQueryEx関数を呼び出すことによって、疑わしいメモリ領域を判定してもよい。MEMORY_BASIC_INFORMATIONのフィールドの1つであるTypeが上記メモリ領域に関するMEM_IMAGEの値を取る。したがって、いくつかの態様においては、VirtualQueryEx関数を呼び出すことによって、特定のメモリアドレスが実行可能メモリ領域に属するが、実行可能ファイルからロードされたメモリ領域には属さないと判定してもよい。態様の一例においては、疑わしいメモリ領域とは、アドレス空間112内の、信頼できるメモリ領域を含まないメモリ領域である。そして、信頼できるメモリ領域とは、アドレス空間内の実行可能ファイル111のイメージの近傍や、動的ライブラリ等の既知の実行可能ファイルのイメージ(そのようなイメージのハッシュ識別子やその他のいかなる識別子もリモートサーバのデータベースに保存されてもよい)の近傍や、アドレス空間112内の既知のアドレスの近傍であってもよい。
実行可能ファイルのイメージの近傍とは、その境界が実行可能ファイルのイメージの境界から所定距離だけ離れているメモリ領域であり、所定距離とは、例えば、実行可能ファイルのイメージの先頭アドレスからアドレスが減少する方向に512バイト、および、実行可能ファイルのイメージの最終アドレスからアドレスが増加する方向に512バイトである。以下のようにして、アドレスが近傍であることの判定をすることができる。態様の一例においては、実行可能ファイルのイメージの近傍とは、実行可能ファイルの上記イメージが見出されるメモリの領域に対応するメモリ領域である。領域の境界を決定し、それによって、特定の実行可能ファイルイメージの近傍であるメモリ領域の境界を決定するために、VirtualQueryEx関数を用いてもよい。VirtualQueryEx関数は、メモリリージョンの境界を決定するために必要な情報を含むMEMORY_BASIC_INFORMATIONデータ構造体へのポインタを返す。態様の一例においては、メモリリージョンとは、複数ページから成るメモリ領域であり、例えば、VirtualAllocEx関数を呼び出すことにより、プロセスのアドレス空間112内に割り当てられる。既知のアドレスとは、例えば、悪性コードシグネチャデータベース130のようなデータベース中に見出されるレコードのアドレスである。既知の実行可能ファイルの先頭および最終アドレスも、例えば、悪性コードシグネチャデータベース130のようなデータベースに保存してもよい。コンピュータ技術分野の専門家がアドレス情報をデータベース130に保存し、インターセプトモジュール110がそのアドレス情報を使って、アドレス空間112内のどのメモリ領域が疑わしいかを判定してもよい。
態様の一例においては、メモリアドレスへのアクセスは、メモリアドレスをスタックに書き込むことによって実行される。この場合、インターセプトモジュール110は、メモリアドレスがスタック上に(アドレス空間112内のスタックのために予約されたメモリ領域内に)存在するか否かを調べることによって、メモリアドレスがアクセスされたか否かを検出する。メモリアドレスがスタック上に存在する場合、プロセスの実行中にスタックがアクセスされたことになる。具体的には、メモリアドレスがスタック上に書き込まれたことになる。本開示の態様の一例においては、インターセプトモジュール110は、スタック上のアドレスを検索するためにCaptureStackBackTrace関数を呼び出し、CaptureStackBackTrace関数は、スタック上に位置する値(ポインタ、すなわち、アドレス)を、出力パラメータ、BackTrace配列(より正確には、配列ポインタ)として返す。それによって、上記関数呼び出しによって得られたメモリアドレスへのアクセスがなされたとみなされる。
さらに他の態様においては、インターセプトモジュール110は、スタック上のアドレスを検索するために、NtQueryInformationThread関数を呼び出し、それによって、スレッド環境ブロック(ThreadEnvironmentBlock(TEB))に関する情報を入手することができる。NtQueryInformationThreadを呼び出すと、ThreadInformationClass(例えば、ThreadBasicInformation)のパラメータによって特徴付けられるフォーマットを持つThreadInformation構造体のフィールドに値が書き込まれる。ThreadInformationClassは、その境界内にスタックが(関数を呼び出すスレッドのために)位置するメモリの中のアドレスを含んでいる。プロセッサレジスタ(少なくとも、レジスタespとebp)の値に関する情報とともにスレッド情報を入手して、インターセプトモジュール110は、スタック上のメモリアドレス(一例として、具体的に、CaptureStackBackTraceを用いて入手可能なものと類似した呼び出しチェーン)を検出してもよい。
態様の一例においては、スタック上のアドレスはスタック上に位置する数値で、0x00000000から0x8FFFFFFFの範囲に位置する値とみなされる。態様のさらに他の一例においては、スタック上に位置する、一定量(例えば、2バイト)ごとに整列するアドレスのいかなる数値もアドレスであるとみなされる。
本開示の態様の一例においては、インターセプトモジュール110は、例えば、プロセスの起動後、5秒ごとのように、所定の周期でスタック上のアドレスを検索することができる。本開示の態様のさらに他の一例においては、インターセプトモジュール110は、所定のイベントの期間中にスタック上のアドレスを検索することができる。
本開示の態様の他の一例においては、上記アドレスを引数としてCreateThread関数を呼び出すことによって、そのアドレスへのアクセスが実行される。態様のさらに他の一例においては、CreateProcess関数を呼び出すことによって、アドレスへのアクセスが実行される。本開示の態様のさらに他の一例においては、WriteFile関数を呼び出すことによって、アドレスへのアクセスが実行される。上記関数の1つを呼び出すことによって、インターセプトモジュール110は、例えば、ドライバの使用や、CreateThreadやCreateProcess等の対応する関数の呼び出しのためのコールバックプロシージャ(またはフック)の指定等の、従来技術において公知の何らかの方法を用いて、アクセスを検出してもよい。
本開示の態様の一例においては、実行可能ファイル111は信頼できるファイルであり、この場合、システムの構成要素は、信頼できるファイルのアドレス空間112内の悪意あるコードを検出するように設計されている。本開示の態様の一例においては、信頼できるファイル111は、PowerShell等の、スクリプトインタープリタのファイルである。PowerShellスクリプトは、インタープリタによって提供される能力を用いて、実行可能ファイル(悪意あるファイルかも知れない)をダウンロードし、それらのファイルを、このために特別に設けられたアドレス空間112内のメモリ領域に保存し(コンピュータステムのハードディスク等の記憶装置にはファイルを保存せず)、OSローダ(OSの一部であり、実行可能ファイルローダと呼ばれることもある)の全関数を実行することができるため、PowerShellのアドレス空間112内の悪意あるコードを検出する必要がある。したがって、Powershell内では、メモリにロードされた実行可能ファイルは、実行に供することができる実行可能ファイルイメージに変換可能であり、ダウンロードされたファイルから実行可能コードに制御が渡される可能性がある。このように、「ファイルレス」マルウェアを使った、コンピュータシステムへの攻撃を実行することが可能であり、その場合、悪意ある実行可能ファイルが、コンピュータシステムのデータ記憶装置に保存されることなく、信頼できるプロセスのアドレス空間112内のRAMにダウンロードされ、従来技術において公知の手法を使って悪意あるコードを検出することは困難となる。
セキュリティモジュール120は、インターセプトモジュール110と、悪性コードシグネチャデータベース130に、接続されている。セキュリティモジュール120はプロセスのアドレス空間112内のメモリ領域を解析するように設計されている。この解析の目的は、アドレス空間112内、特に、上記メモリ領域内において、実行可能ファイルイメージを検出することである。本開示の態様の一例においては、セキュリティモジュール120は、特定のメモリアドレスの近傍の実行可能ファイルイメージを検出することができ、本開示の1つの特定の態様においては、このメモリアドレスは疑わしいメモリアドレスである。メモリアドレスの近傍とは、その境界がメモリアドレスから所定距離だけ離れているメモリ領域のことであり、所定距離とは、例えば、メモリアドレスからアドレスが減少する方向に64kバイト、および、アドレスが増加する方向に64kバイトである。したがって、アドレス0x00600000の近傍の一例として、プロセスのアドレス空間112において、0x005FFE00と0x00610000の間に位置するアドレス空間112内のメモリ領域が挙げられる。他の態様においては、メモリアドレスの近傍とは、そのメモリアドレスが見出されるメモリリージョン(このリージョンである)に対応するメモリ領域のことである。リージョンの境界、および、ひいては、特定のメモリアドレスの近傍のメモリ領域の境界を決定するために、メモリリージョンの境界の決定に必要な情報を含むMEMORY_BASIC_INFORMATIONデータ構造体へのポインタを返すVirtualQueryEx関数を使用してもよい。本開示の態様の一例においては、以下の条件が満たされる場合、セキュリティモジュール120はメモリ領域内の(例えば、所定のアドレスの近傍の)実行可能ファイルイメージを検出する。その条件とは、メモリ領域が実行可能ファイル、具体的には、例えば、ウィンドウズ(登録商標)OSの実行可能ファイルのヘッダを含み、メモリ領域が、符号にすると「MZ」のように見えるバイト列を含み、それによって、この文字列の先頭から0x3Cだけ離れたメモリ位置に4バイト(DWORD)の配列が見出され、その値を文字列「MZ」の先頭アドレスに加えると、符号にすると「PE」のように見えるバイト列が見出されるメモリアドレスが得られる場合、そのメモリ領域は実行可能ファイルのヘッダを含む。
アドレス空間112内の実行可能ファイルイメージの検出には、特に、メモリ領域PE内のヘッダやその一部の検出に基づく、その他の任意の従来技術の手法や、その他の方法を用いることができることに注目すべきである。
態様の一例においては、メモリ領域またはアドレス空間112全体の中から実行可能ファイルイメージを検出すると、セキュリティモジュール120は、検出された実行可能ファイルのイメージの先頭アドレスの決定も行う。
セキュリティモジュール120はプロセスのアドレス空間112内の悪意あるコードを検出することもできる。悪意あるコードのセキュリティモジュール120による検出は、アドレス空間112内、特に、アドレス空間112内に存在する実行可能ファイルの検出されたイメージの中で実行される。態様の一例においては、セキュリティモジュールは、悪意あるコードがアドレス空間112内に存在することだけでなく、実行可能ファイルイメージがどのように悪意あるコードを収容しているのかを正確に検出する(すなわち、悪意ある実行可能ファイルのイメージを検出する)。アドレス空間112内の悪意ある実行可能ファイルのイメージを検出すると、セキュリティモジュール120は、その悪意あるファイルのイメージに関連するメモリから、データを、特に、その先頭が、検出された悪意あるファイルのイメージの先頭アドレスであるとすでに判定されたメモリ領域に存在するデータを、除去することができる。このように、プロセスのアドレス空間112から悪意あるコードを、特に、悪意ある実行可能ファイルのイメージ(具体的にはイメージのデータ)を除去することによって、コンピュータシステムのセキュリティを確保することができる。
悪意あるコードを検出する処理の過程で、例えば、シグネチャ、ヒューリスティック、その他任意の種類の解析を用いることができる。セキュリティモジュール120は、悪意あるコードの検出のために、悪性コードシグネチャデータベース130に保存されているウィルス対策レコードを使用する。
悪性コードシグネチャデータベース130は、セキュリティモジュール120が悪意あるコードの検出のために用いるウィルス対策レコードを保存する。本開示の態様の一例においては、それらのレコードはシグネチャである。
図2は、本開示の態様の一例に係る、プロセスのアドレス空間内の悪意あるコードを検出する方法を示すフローチャートである。ステップ201において、インターセプトモジュール110を使用して、実行可能ファイル111からプロセスが起動され、それによって、コンピュータシステムのRAM内の(一般的にOSローダ等のOSコンポーネントによる)プロセスの作成と同時にアドレス空間112が形成されたことが、検出される。本開示の態様の一例においては、実行可能ファイル111は信頼できる実行可能ファイルである。本開示の態様の一例においては、信頼できる実行可能ファイル111は、PowerShell等の、スクリプトインタープリタの実行可能ファイルである。実行可能ファイル111からのプロセスの起動を検出した後、ステップ202において、インターセプトモジュール110は、上記方法の1つを用いて、実行可能ファイル111から起動されたプロセスが実行される間、アドレス空間112内の疑わしいアドレスへのアクセスを検出する。疑わしいアドレスへのアクセスを検出したら、インターセプトモジュール110は、セキュリティモジュール120に、メモリ中のどのアドレスが疑わしいかを示すとともに、疑わしいアドレスへのアクセスが検出されたことを通知する。その後、ステップ203において、セキュリティモジュール120は、少なくとも1つの、そこへのアクセスが実行可能ファイル111から起動されたプロセスの実行期間中にすでに検出されている疑わしいアドレスの近傍の、アドレス空間112内メモリ領域を解析する。この解析の目的は、アドレス空間112内、特に、疑わしいアドレスの近傍のメモリ領域内において、他の実行可能ファイルからダウンロードされた実行可能ファイル(コンピュータシステムの記憶装置内に存在するとは限らないが、RAMの中には存在する)のイメージを検出することである。言い換えれば、セキュリティモジュール120は、ファイル111以外のファイルが、アドレス空間112内にイメージを持つか否かを判定するために、解析を実行する。例えば、プロセスが、プロセスに渡されたスクリプト(「スクリプトファイル」と呼ばれることもある)が、例えば、コマンドラインのパラメータとして、あるいは、その他の方法で処理される、PowerShellスクリプトインタープリタの実行可能ファイルから起動された場合、そのような他のファイルのイメージが、プロセスの実行中に、アドレス空間112内にロードされる可能性がある。そのスクリプトに従って(そのスクリプトの命令を解釈することにより)、スクリプトインタープリタのプロセスはネットワークからファイル(上記の「他の」ファイル)をロードし、そのイメージをアドレス空間112内に形成する。他の実行可能ファイルからロードされた実行可能ファイルのイメージが検出されなかった場合、ステップ206において、プロセスのアドレス空間内の悪意あるコードを検出する方法は終了する。一方、少なくとも1つの実行可能ファイルイメージが検出された場合、ステップ207において、セキュリティモジュール120は、アドレス空間112内の、特に、その実行可能ファイルイメージがダウンロードされたメモリ領域内の悪意あるコードを検出するために、検出された実行可能ファイルイメージを解析する。悪意あるコードが検出されなかった場合、この方法の動作はステップ209で終了する。検出された場合、ステップ210において、セキュリティモジュール120は、ファイル111から起動されたプロセスのアドレス空間112内の悪意あるコードを検出する。
特に、従来技術によって公知のプロトタイプは、解析されるメモリ領域の位置に無関係に、シグネチャを用いた、メモリ領域内の悪意あるコードの検索を必要とするため、上記の方法は、セキュリティを付与するために使われるコンピュータシステムのリソースの消費の削減を可能にすることに注目すべきである。本提案の方法においては、悪意あるコードを検出するステップの前に、悪意あるコードを含んでいる可能性のある実行可能ファイルイメージが存在するかも知れないメモリ領域に属する疑わしいアドレスへのアクセスを検出するステップが実行される。そのようなアクセスを検出した後で初めて、メモリ領域内の悪意あるコード(特に、悪意ある実行可能ファイルのイメージ)を検出するステップが実行される。したがって、プロセスの実行時には、そのアドレス空間112内の悪意あるコードを検出するための解析は、特定の場合に限って実行され、それによって、プロセスのアドレス空間内の悪意あるコードを検出するシステムの手段が作動するコンピュータシステムのリソースの消費が削減される。
本開示の態様の一例においては、実行可能ファイル111から起動されたプロセスのアドレス空間112内の悪意あるコードを検出した後は、セキュリティモジュール120は、そのアドレス空間112内に悪意あるコードが発見されたプロセスの実行を停止することができる。このようにして、セキュリティモジュール120は悪意あるコードの実行を防止し、それによって、本開示の構成要素やシステムが機能し、かつ、実行可能ファイル111から起動されたプロセスが実行されるコンピュータシステムにセキュリティを付与する。
態様のさらに他の一例においては、セキュリティモジュール120は、他の実行可能ファイルの少なくとも1つの検出されたイメージを、セキュリティモジュール120の一部であるネットワークドライバを用いてダウンロードしたダウンロード元のURI(Universal Resource Identifier、特にURL、または、ネットワークアドレス)(このURIを「危険URI」と呼ぶ)に関する情報を保存するとともに、この危険URIに関する情報、特に、URIの記号表示、または、URIの記号表示から計算されたハッシュを、リモートセキュリティサーバ(図示しない)に送信する。以後、コンピュータシステム上にあるセキュリティモジュール120、および、他のコンピュータ装置(リモートセキュリティサーバからURIに関する情報を入手することもできる)に展開された類似のセキュリティモジュール120は、この、他の実行可能ファイルのダウンロード元の危険URIに関する情報(コンピュータシステムにローカル保存しても、リモートセキュリティサーバに保存してもよい)を、特定のプロセスによって確立されたこれらの危険URIとの接続を遮断するために使用することができる。このように、セキュリティモジュール120が機能するコンピュータシステムのセキュリティが確保され、そのコンピュータシステム上では、危険URIとの接続を確立したり、そこからデータ、特に、実行可能ファイルをダウンロードするようなプロセスを実行することができないようにする。
態様のさらに他の一例においては、インタープリタのコマンドを実行した結果、信頼できるファイルから起動されたプロセスのアドレス空間内の悪意あるコードが顕在化したために、セキュリティモジュール120は、プロセスのアドレス空間112内の悪意あるコードを検出した後、PowerShellのようなスクリプトインタープリタによってダウンロードされたスクリプトが悪意あるものであると認識する。
本開示の文脈において、スクリプトの処理(解釈、または実行)とは、PowerShellのようなインタープリタを用いた、スクリプトコマンド(命令)の実行のことである。インターセプトモジュール110は、例えば、実行可能ファイル111からプロセスを起動するコマンドラインの引数から、悪意あるコードの検出につながったスクリプトの実行に関する情報を得てもよい。本開示の態様のさらに他の一例においては、ドラッグ&ドロップ手法(WM_DROPFILESメッセージ)によるスクリプトのオープンに対応したシステムメッセージ、または、WM_COPYDATAデータの転送に関するシステムメッセージをインターセプトすることによって、この情報を得てもよい。
態様のさらに他の一例においては、実行可能ファイル111から起動されたプロセスの実行中に実行されたCreateFile関数の呼び出しをインターセプトすることによって、悪意あるコードの検出につながったスクリプトの実行に関する情報を得てもよい。さらに他の態様においては、従来技術の何らかの公知の手法を用いて、その実行と同時にそのアドレス空間112内の悪意あるコードが検出されたスクリプトを判定してもよい。スクリプトを悪意あるものと認識するための上記の手法は、悪意あるものと認識されたスクリプトの実行後にダウンロードされたスクリプトに対しても有効である。このように、スクリプトインタープリタのファイルから起動されたプロセスの実行中にスクリプトインタープリタによって実行される命令が、そのプロセスのアドレス空間112内の悪意あるコードが検出される時より前に発生したとき、セキュリティモジュール120はスクリプトが悪意あるものであることを検出する(言い換えれば、スクリプトを悪意あるものと認識する)。
本開示の態様の一例においては、セキュリティモジュール120は、悪意あるものと認識されたスクリプトを除去するか、または隔離し、それによって、セキュリティモジュール120が動作しているコンピュータシステムにセキュリティを付与する。本開示の態様のさらに他の一例においては、セキュリティモジュール120は、悪意あるものと認識されたスクリプトの識別子(例えば、チェックサムや、特に、MD5もしくはその他の何らかのハッシュ)をリモートセキュリティサーバに送信する。コンピュータシステム上にあるセキュリティモジュール120やその他のコンピュータ装置に展開された類似の手段120は、そのような、悪意あるものと認識されたスクリプトの識別子を用いて、セキュリティモジュール120が存在するコンピュータ装置上の悪意あるスクリプトを検出してもよい。
本開示の上記の態様を以下のように説明することができる。コンピュータシステムAにおいて、プロセスのアドレス空間112内の悪意あるコードを検出する上記方法に従って、悪意あるスクリプトXの検出が完了する。このスクリプトの識別子は、コンピュータシステムA上に存在するセキュリティモジュール120によって、リモートセキュリティサーバに送信される。本開示の態様の一例においては、そのような悪意あるスクリプトの識別子は、このために設けられ、リモートセキュリティサーバ上に存在する、悪意あるスクリプトの識別子のデータベースに保存される。コンピュータシステムBにもセキュリティモジュール120が存在し、それによって、例えば、ネットワークからダウンロードされたスクリプトを、ネットワークからのダウンロード完了時や、ダウンロードされたスクリプトのスクリプトインタープリタを用いた起動時の両方の時点で、チェックすることができる。スクリプトXが何らかの形でコンピュータシステムB上に出現した場合、その起動と同時に、コンピュータシステムB上に存在するセキュリティモジュール120は、リモートセキュリティサーバによって提供された悪意あるスクリプトに関する情報を使って、悪意あるスクリプトXを検出する。コンピュータシステムB上に存在するセキュリティモジュール120は、悪意あるスクリプトのリモートセキュリティサーバ上に保存されている識別子を、特に、悪意あるスクリプトの検出に使用するために、ローカルストレージにダウンロードする。このようにして、コンピュータシステムB上に存在するセキュリティモジュール120は、コンピュータシステムB上に存在する悪意あるスクリプトを検出する。この検出の後、セキュリティモジュール120は、スクリプトXを除去または隔離し、コンピュータシステムBの安全性を確保する。
図3は、プロセスのアドレス空間内の悪意あるコードを検出するためのシステムおよび方法の態様を態様の一例に従って実現できる汎用コンピュータシステム20の一例を示す。コンピュータシステム20は、前述のようなシステム100またはその中のモジュールに対応したものであってもよいことに注目すべきである。
図示のように、コンピュータシステム20(パーソナルコンピュータまたはサーバでもよい)は、中央処理装置21、システムメモリ22、および、中央処理装置21に付随するメモリを含む各種システム構成要素を接続するシステムバス23を含んでいる。当業者には理解されるように、システムバス23は、バスメモリまたはバスメモリコントローラ、周辺バス、および、他のいかなるバスアーキテクチャとも相互作用可能なローカルバスを備えていてもよい。システムメモリは固定記憶装置(ROM)24とランダムアクセスメモリ(RAM)25を含んでいてもよい。基本入出力システム(BIOS)26は、ROM24を用いてオペレーティングシステムをロードする時の手順等の、コンピュータシステム20の要素間の情報転送の基本的手順を記憶していてもよい。
また、コンピュータシステム20は、データを読み書きするためのハードディスク27、リムーバブル磁気ディスク29を読み書きするための磁気ディスクドライブ28、および、CD−ROM、DVD−ROM、その他の光媒体等のリムーバブル光学ディスク31を読み書きするための光学ドライブ30を備えていてもよい。ハードディスク27、磁気ディスクドライブ28、および光学ドライブ30は、それぞれ、ハードディスクインターフェース32、磁気ディスクインターフェース33、および光学ドライブインターフェース34を介して、システムバス23と接続されている。これらのドライブおよび対応するコンピュータ情報媒体は、コンピュータシステム20のコンピュータ命令、データ構造体、プログラムモジュール、およびその他のデータを記憶する、独立の電源で動作するモジュールである。
態様の一例は、コントローラ55を介してシステムバス23と接続されたハードディスク27、リムーバブル磁気ディスク29、およびリムーバブル光学ディスク31を使用するシステムを備えている。コンピュータで読み取り可能な形式でデータの保存が可能な任意の種類の媒体56(ソリッドステートドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ(RAM)等)を利用できることは、当業者には理解されるであろう。
コンピュータシステム20はファイルシステム36を有しており、その中には、オペレーティングシステム35の他に、追加的なプログラムアプリケーション37、その他のプログラムモジュール38、およびプログラムデータ39を保存することができる。コンピュータシステム20のユーザはキーボード40、マウス42、あるいは、その他、例えば、マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ等を含むがそれらに限られない当業者に公知の入力装置を使用して、コマンドおよび情報を入力することができる。そのような装置は、一般に、コンピュータシステム20に、システムバスと接続されたシリアルポート46を通して差し込まれるが、当業者は、入力装置を、例えば、限定はされないが、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス(USB)等の他の方法で接続してもよいことを理解するであろう。モニタ47または他の種類の表示装置も、ビデオアダプタ48等のインターフェースを介してシステムバス23と接続してもよい。パーソナルコンピュータは、モニタ47に加えて、スピーカ、プリンタ等の周辺出力装置(図示せず)を備えてもよい。
コンピュータシステム20を、1台以上のリモートコンピュータ49とのネットワーク接続を用いて、ネットワーク環境下で動作させてもよい。リモートコンピュータ49は、上記コンピュータシステム20の特徴説明の中で述べた要素のほとんどまたは全部を備えたローカルコンピュータワークステーションまたはサーバであってもよい。例えば、ルータ、ネットワークステーション、ピアデバイス、その他のネットワークノード等を含むがそれらに限られないその他の装置がコンピュータネットワークの中に存在してもよい。
ネットワーク接続によって、ローカルエリアコンピュータネットワーク(LAN)50および広域コンピュータネットワーク(WAN)を形成することができる。そのようなネットワークは企業コンピュータネットワークや社内ネットワークで利用され、一般に、インターネットにアクセスできる。LANおよびWANのネットワークにおいては、パーソナルコンピュータ20は、ネットワークアダプタまたはネットワークインターフェース51を介してローカルエリアネットワーク50と接続されている。ネットワークを利用する場合、コンピュータシステム20は、インターネットのような広域コンピュータネットワークとの通信を可能にする、モデム54、または、その他の当業者に公知のモジュールを採用してもよい。モデム54は、内部装置であっても外部装置であってもよいが、シリアルポート46によってシステムバス23と接続してもよい。上記ネットワーク接続は、1台のコンピュータが通信モジュールを使って他のコンピュータとの接続を確立する数多くの広く理解されている方法の非限定例であることは、当業者には理解されるであろう。
様々な態様において、本明細書で説明したシステムおよび方法は、ハードウェア、ソフトウェア、ファームウェア、あるいはそれらの任意の組み合わせの中に実現されてもよい。ソフトウェア中に実現された場合、非一時的なコンピュータ読み取り可能な媒体上に、1つ以上の命令またはコードとして記憶してもよい。コンピュータ読み取り可能な媒体には、データストレージが含まれる。一例として、限定はされないが、そのようなコンピュータ読み取り可能な媒体は、RAM、ROM、EEPROM、CD−ROM、フラッシュメモリ、あるいは他の種類の電気的、磁気的、または光学的記憶媒体、もしくは、所望のプログラムコードを命令やデータ構造体の形で運搬または記憶するために利用可能で、汎用コンピュータのプロセッサからアクセス可能な、その他の任意の媒体を含むことができる。
様々な態様において、本開示で説明したシステムおよび方法を、モジュールの意味で扱うことができる。本明細書で使われている用語「モジュール」とは、例えば、特定用途向け集積回路(ASIC)やフィールドプログラマブルゲートアレイ(FPGA)によるハードウェアを用いて実現されるか、あるいは、例えば、マイクロプロセッサシステムと、(実行時に)マイクロプロセッサシステムを専用デバイスに変換するモジュールの機能性を実現する一連の命令によるハードウェアとソフトウェアの組み合わせとして実現された、実世界の装置、構成要素、または構成要素の配置のことである。モジュールは、特定の機能をハードウェアのみで促進し、その他の機能をハードウェアとソフトウェアの組み合わせによって促進する、上記二つの組み合わせとしても実現できる。特定の実現形態においては、少なくとも一部、場合によっては全部のモジュールが、汎用コンピュータのプロセッサ上(例えば、上記図4で詳説されているもの)で実行されてもよい。したがって、各モジュールは各種の適切な構成の中に実現可能であり、本明細書に例示したいかなる特定の実現形態にも限定されるべきではない。
明確化のために、各態様の定型的な特徴のすべてが本明細書に示されているわけではない。本開示の実際の実現形態のいかなる開発においても、開発者の具体的目的を達成するために、実現形態に特有の多くの決定をする必要があり、具体的目的は、実現形態ごとおよび開発者ごとに異なるということが理解されるであろう。そのような開発努力は複雑で多くの時間を要するものであるが、それにもかかわらず、本開示から利益を得る当業者にとって、定型的な技術的取り組みであることが理解される。
さらに、本明細書で用いている表現や用語は説明上のものであって、限定のためではなく、本明細書の用語や表現は、当業者が、当業者の知識と組み合わせて、本明細書が提供する教示や手引きの観点から解釈すべきものと理解すべきである。加えて、明示的記載がない限り、本明細書や請求の範囲におけるいかなる用語も、一般的でない、あるいは特別な意味を持つものとみなされることは意図されていない。
本明細書に開示された様々な態様は、本明細書で例示により言及された公知のモジュールと均等な現在および将来の公知の均等物を包含する。さらに、態様および応用例を図示し、かつ、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの変更が可能であることは、この開示の利益を有する当業者には明らかであろう。

Claims (21)

  1. プロセスのアドレス空間内の悪意あるコードを検出するための方法であって、
    コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出することと、
    前記信頼できるプロセスのアドレス空間内にあり、前記信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレスがアクセスされたことを検出することと、
    前記コンピュータシステム内の前記疑わしいアドレス空間の近傍の範囲内の1つ以上のメモリ領域を解析して、他の1つの実行可能ファイルを表現する他の1つの実行可能イメージが前記1つ以上のメモリ領域内に存在するか否かを判定することと、
    前記他の1つの実行可能イメージを解析して、前記他の1つの実行可能イメージが悪意あるコードを含んでいるか否かを判定することと、
    前記他の1つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが前記信頼できるプロセスの前記アドレス空間内に含まれていると結論づけることと、
    前記信頼できるプロセスの前記アドレス空間内の前記悪意あるコードの、除去、停止、および隔離のうち、1つを実行することと、を含むことを特徴とする、方法。
  2. 前記起動を検出することは、
    前記プロセスを起動する関数をインターセプトすることと、
    前記プロセスの識別情報を判定することと、
    前記識別情報に基づいて、疑わしいアクティビティに関連する前記アドレス空間を判定して、アクセスすることと、を含むことを特徴とする、請求項1に記載の方法。
  3. 前記1つ以上のメモリ領域が信頼できる領域を含まない場合、前記1つ以上のメモリ領域が疑わしいと結論づけることをさらに含むことを特徴とする、請求項1に記載の方法。
  4. 前記信頼できる領域は、
    前記アドレス空間内の前記実行可能イメージの近傍と、
    既知の実行可能ファイルのイメージの近傍と、
    前記アドレス空間内の既知のアドレスの近傍とのうちの1つ以上を含むことを特徴とする、請求項3に記載の方法。
  5. 前記近傍は、前記実行可能イメージの先頭アドレスから第1所定数バイト以内であり、前記実行可能イメージの最終アドレスから第2所定数バイト以内であることを特徴とする、請求項4に記載の方法。
  6. 前記メモリ領域に関するページ情報の問い合わせを行うことによって、前記実行可能イメージの近傍の境界を判定することをさらに含むことを特徴とする、請求項4に記載の方法。
  7. 前記アドレス空間へのアクセスを検出することは、
    前記アドレス空間内のメモリアドレスが前記信頼できるプロセスのスタックのために予約されたメモリ領域内に存在するか否かを検出することを含むことを特徴とする、請求項1に記載の方法。
  8. 前記プロセスが実行されているスレッドに関する情報にアクセスするための関数呼び出しを使って、前記スタック上のアドレスを検索することをさらに含むことを特徴とする、請求項7に記載の方法。
  9. 前記アドレス空間にアクセスすることは、CreateThread関数、CreateProcess関数、および、WriteFile関数のうちの1つ以上を呼び出すことを含むことを特徴とする、請求項1に記載の方法。
  10. 前記アクセスを検出することは、前記1つ以上の関数のそれぞれを呼び出すためのコールバックプロシージャを設定することを含むことを特徴とする、請求項9に記載の方法。
  11. 悪意あるコードのシグネチャを収容する悪性コードシグネチャデータベースと、
    コンピュータシステムと、
    を備える悪意あるコードを検出するためのシステムであって、
    前記コンピュータシステムは、
    コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出し、
    前記信頼できるプロセスのアドレス空間内にあり、前記信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレスがアクセスされたことを検出し、
    前記コンピュータシステム内の前記疑わしいアドレス空間の近傍の範囲内の1つ以上のメモリ領域を解析して、他の1つの実行可能ファイルを表現する他の1つの実行可能イメージが前記1つ以上のメモリ領域内に存在するか否かを判定する、
    インターセプトモジュールと、
    前記他の1つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが前記プロセスの前記アドレス空間内に含まれていると判定し、
    前記信頼できるプロセスの前記アドレス空間内の前記悪意あるコードの、除去、停止、および隔離のうち、1つを実行する、
    セキュリティモジュールと、
    を備えることを特徴とする、システム。
  12. 前記インターセプトモジュールは、
    前記プロセスを起動する関数をインターセプトすることと、
    前記プロセスの識別情報を判定することと、
    前記識別情報に基づいて、疑わしいアクティビティに関連する前記アドレス空間を判定して、アクセスすることと、によって、
    前記起動を検出することを特徴とする、請求項11に記載のシステム。
  13. 前記セキュリティモジュールは、さらに、前記1つ以上のメモリ領域が信頼できる領域を含まない場合、前記1つ以上のメモリ領域が疑わしいと結論づけることを特徴とする、請求項11に記載のシステム。
  14. 前記信頼できる領域は、
    前記アドレス空間内の前記実行可能イメージの近傍と、
    既知の実行可能ファイルのイメージの近傍と、
    前記アドレス空間内の既知のアドレスの近傍とのうちの1つ以上を含むことを特徴とする、請求項13に記載のシステム。
  15. 前記近傍は、前記実行可能イメージの先頭アドレスから第1所定数バイト以内であり、前記実行可能イメージの最終アドレスから第2所定数バイト以内であることを特徴とする、請求項14に記載のシステム。
  16. 前記インターセプトモジュールは、さらに、前記メモリ領域に関するページ情報の問い合わせを行うことによって、前記実行可能イメージの近傍の境界を判定することを特徴とする、請求項14に記載のシステム。
  17. 前記インターセプトモジュールは、前記アドレス空間内のメモリアドレスが前記信頼できるプロセスのスタックのために予約されたメモリ領域内に存在するか否かを検出することによって、前記アドレス空間へのアクセスを検出することを特徴とする、請求項11に記載のシステム。
  18. 前記インターセプトモジュールは、さらに、前記プロセスが実行されているスレッドに関する情報にアクセスするための関数呼び出しを使うことによって、前記スタック上のアドレスを検索することを特徴とする、請求項17に記載のシステム。
  19. 前記アドレス空間にアクセスすることは、CreateThread関数、CreateProcess関数、および、WriteFile関数のうちの1つ以上を呼び出すことを含むことを特徴とする、請求項11に記載のシステム。
  20. ドライバを使用することと、
    前記1つ以上の関数のそれぞれを呼び出すためのコールバックプロシージャを設定することのうち、
    いずれか一方によって、前記アドレス空間への前記アクセスを検出することをさらに含むことを特徴とする、請求項19に記載のシステム。
  21. プロセッサによって実行されたときに、悪意あるコードを検出するための方法を実行する命令を記憶したコンピュータ読み取り可能な媒体であって、前記方法は、
    コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出することと、
    前記信頼できるプロセスのアドレス空間内にあり、前記信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレス空間がアクセスされたことを検出することと、
    前記コンピュータシステム内の前記疑わしいアドレス空間の近傍の範囲内の1つ以上のメモリ領域を解析して、他の1つの実行可能ファイルを表現する他の1つの実行可能イメージが前記1つ以上のメモリ領域内に存在するか否かを判定することと、
    前記他の1つの実行可能イメージを解析して、前記他の1つの実行可能イメージが悪意あるコードを含んでいるか否かを判定することと、
    前記他の1つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが前記信頼できるプロセスの前記アドレス空間内に含まれていると結論づけることと、
    前記信頼できるプロセスの前記アドレス空間内の前記悪意あるコードの、除去、停止、および隔離のうち、1つを実行することと、を含むことを特徴とする、コンピュータ読み取り可能な媒体。
JP2018157018A 2017-09-29 2018-08-24 プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法 Active JP6700351B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
RU2017133837A RU2665910C1 (ru) 2017-09-29 2017-09-29 Система и способ обнаружения вредоносного кода в адресном пространстве процессов
RU2017133837 2017-09-29
US201762574239P 2017-10-19 2017-10-19
US62/574,239 2017-10-19
US15/925,920 2018-03-20
US15/925,920 US10691800B2 (en) 2017-09-29 2018-03-20 System and method for detection of malicious code in the address space of processes

Publications (2)

Publication Number Publication Date
JP2019067372A true JP2019067372A (ja) 2019-04-25
JP6700351B2 JP6700351B2 (ja) 2020-05-27

Family

ID=63449329

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018157018A Active JP6700351B2 (ja) 2017-09-29 2018-08-24 プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法

Country Status (4)

Country Link
US (1) US10691800B2 (ja)
EP (1) EP3462358B1 (ja)
JP (1) JP6700351B2 (ja)
CN (1) CN109583202B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113178398A (zh) * 2020-01-24 2021-07-27 株式会社国际电气 基板处理装置、半导体器件的制造方法及记录介质

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11204788B2 (en) * 2017-12-11 2021-12-21 Comodo Security Solutions, Inc. Method to protect against fileless infection from command line interpreters or documents
US11451561B2 (en) * 2018-09-14 2022-09-20 Cisco Technology, Inc. Automated creation of lightweight behavioral indicators of compromise (IOCS)
CN111191227B (zh) * 2019-07-22 2023-12-12 腾讯科技(深圳)有限公司 阻止恶意代码执行的方法和装置
CN112487414B (zh) * 2019-09-12 2024-04-12 腾讯科技(深圳)有限公司 一种进程命令行的获取方法、装置、设备以及存储介质
KR20210145935A (ko) * 2020-05-26 2021-12-03 라인플러스 주식회사 Api 정보 군집화를 통한 후킹 판단 방법 및 그 시스템
TWI755278B (zh) * 2021-02-09 2022-02-11 國立中央大學 偵測無檔案惡意軟體的系統及方法
US20230185915A1 (en) * 2021-12-14 2023-06-15 Palo Alto Networks, Inc. Detecting microsoft windows installer malware using text classification models
CN114707149B (zh) * 2022-03-18 2023-04-25 安芯网盾(北京)科技有限公司 一种傀儡进程检测方法、装置、电子设备和存储介质
CN115600204A (zh) * 2022-10-26 2023-01-13 安芯网盾(北京)科技有限公司(Cn) 一种检测shellcode恶意代码的方法和***及计算机设备
CN116305291B (zh) * 2023-05-16 2023-07-21 北京安天网络安全技术有限公司 一种office文档安全存储方法及装置、设备及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140325650A1 (en) * 2013-04-26 2014-10-30 Kaspersky Lab Zao Selective assessment of maliciousness of software code executed in the address space of a trusted process
JP2015141718A (ja) * 2014-01-27 2015-08-03 イグルー セキュリティ,インク. プログラムの脆弱点を用いた攻撃の探知装置および方法
US20150371039A1 (en) * 2013-02-12 2015-12-24 F-Secure Corporation Improved Malware Detection
WO2016056120A1 (ja) * 2014-10-10 2016-04-14 株式会社日立製作所 情報処理装置、及び情報処理方法
US9411953B1 (en) * 2013-05-24 2016-08-09 Symantec Corporation Tracking injected threads to remediate malware
US20160232347A1 (en) * 2015-02-09 2016-08-11 Palo Alto Networks, Inc. Mitigating malware code injections using stack unwinding
US20170032118A1 (en) * 2015-07-31 2017-02-02 Digital Guardian, Inc. Systems and methods of protecting data from injected malware

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US8528087B2 (en) * 2006-04-27 2013-09-03 Robot Genius, Inc. Methods for combating malicious software
WO2009018232A1 (en) * 2007-07-27 2009-02-05 Redshift Internetworking, Inc A system and method for unified communications threat management (uctm) for converged voice, video and multi-media over ip flows
US8387139B2 (en) * 2008-02-04 2013-02-26 Microsoft Corporation Thread scanning and patching to disable injected malware threats
US8612995B1 (en) * 2009-03-31 2013-12-17 Symantec Corporation Method and apparatus for monitoring code injection into a process executing on a computer
US8205257B1 (en) * 2009-07-28 2012-06-19 Symantec Corporation Systems and methods for preventing threats originating from a non-process based component hosted by a trusted process
US9116733B2 (en) * 2010-05-28 2015-08-25 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US20130152200A1 (en) 2011-12-09 2013-06-13 Christoph Alme Predictive Heap Overflow Protection
US9734333B2 (en) 2012-04-17 2017-08-15 Heat Software Usa Inc. Information security techniques including detection, interdiction and/or mitigation of memory injection attacks
US9372989B2 (en) * 2013-02-15 2016-06-21 Systems of Information Security 2012 Robust malware detector
RU2553056C2 (ru) * 2013-10-24 2015-06-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ сохранения состояния эмулятора и его последующего восстановления
RU2571723C2 (ru) * 2013-12-05 2015-12-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ для снижения нагрузки на операционную систему при работе антивирусного приложения
WO2015113052A1 (en) 2014-01-27 2015-07-30 Webroot Inc. Detecting and preventing execution of software exploits
US10474813B1 (en) * 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
RU2589862C1 (ru) * 2015-06-30 2016-07-10 Закрытое акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносного кода в оперативной памяти
CN105760787B (zh) * 2015-06-30 2019-05-31 卡巴斯基实验室股份制公司 用于检测随机存取存储器中的恶意代码的***及方法
US9852295B2 (en) * 2015-07-14 2017-12-26 Bitdefender IPR Management Ltd. Computer security systems and methods using asynchronous introspection exceptions
RU2622627C2 (ru) * 2015-09-30 2017-06-16 Акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносных исполняемых файлов, содержащих интерпретатор, посредством комбинирования эмуляторов
US10387649B2 (en) * 2015-10-31 2019-08-20 Quick Heal Technologies Private Limited Detecting malware when executing in a system
RU2652665C1 (ru) * 2016-12-12 2018-04-28 Акционерное общество "Лаборатория Касперского" Система и способ управления транспортным средством
US10325108B2 (en) * 2016-12-30 2019-06-18 Intel Corporation Method and apparatus for range based checkpoints in a storage device
US10664594B2 (en) * 2017-06-30 2020-05-26 Microsoft Technology Licensing, Llc Accelerated code injection detection using operating system controlled memory attributes

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150371039A1 (en) * 2013-02-12 2015-12-24 F-Secure Corporation Improved Malware Detection
US20140325650A1 (en) * 2013-04-26 2014-10-30 Kaspersky Lab Zao Selective assessment of maliciousness of software code executed in the address space of a trusted process
US9411953B1 (en) * 2013-05-24 2016-08-09 Symantec Corporation Tracking injected threads to remediate malware
JP2015141718A (ja) * 2014-01-27 2015-08-03 イグルー セキュリティ,インク. プログラムの脆弱点を用いた攻撃の探知装置および方法
WO2016056120A1 (ja) * 2014-10-10 2016-04-14 株式会社日立製作所 情報処理装置、及び情報処理方法
US20160232347A1 (en) * 2015-02-09 2016-08-11 Palo Alto Networks, Inc. Mitigating malware code injections using stack unwinding
US20170032118A1 (en) * 2015-07-31 2017-02-02 Digital Guardian, Inc. Systems and methods of protecting data from injected malware

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113178398A (zh) * 2020-01-24 2021-07-27 株式会社国际电气 基板处理装置、半导体器件的制造方法及记录介质
JP2021117628A (ja) * 2020-01-24 2021-08-10 株式会社Kokusai Electric 基板処理装置、半導体装置の製造方法およびプログラム
JP7039632B2 (ja) 2020-01-24 2022-03-22 株式会社Kokusai Electric 基板処理装置、基板処理方法およびプログラム

Also Published As

Publication number Publication date
EP3462358A1 (en) 2019-04-03
CN109583202B (zh) 2023-08-15
JP6700351B2 (ja) 2020-05-27
CN109583202A (zh) 2019-04-05
US20190102552A1 (en) 2019-04-04
EP3462358B1 (en) 2020-05-13
US10691800B2 (en) 2020-06-23

Similar Documents

Publication Publication Date Title
US10242186B2 (en) System and method for detecting malicious code in address space of a process
JP6700351B2 (ja) プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法
JP6639588B2 (ja) 悪意あるファイルを検出するシステムおよび方法
JP6482489B2 (ja) 脆弱なアプリケーションによるファイルのオープンを制御するシステム及び方法。
RU2571723C2 (ru) Система и способ для снижения нагрузки на операционную систему при работе антивирусного приложения
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
CN108399332B (zh) 在虚拟机中针对恶意性对文件进行分析的***和方法
US9396334B1 (en) System and method for detecting harmful files executable on a virtual stack machine
CN110119619B (zh) 创建防病毒记录的***和方法
RU2724790C1 (ru) Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине
CN109558207B (zh) 在虚拟机中形成用于进行文件的防病毒扫描的日志的***和方法
US9910983B2 (en) Malware detection
US11397812B2 (en) System and method for categorization of .NET applications
RU2665910C1 (ru) Система и способ обнаружения вредоносного кода в адресном пространстве процессов
US9122872B1 (en) System and method for treatment of malware using antivirus driver
RU2592383C1 (ru) Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти
RU2659738C1 (ru) Система и способ обнаружения вредоносного скрипта
RU2606883C2 (ru) Система и способ открытия файлов, созданных уязвимыми приложениями

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190827

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200421

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200430

R150 Certificate of patent or registration of utility model

Ref document number: 6700351

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250