JP2017021779A - ランダムアクセスメモリ内の悪質なコードを検出するためのシステムおよび方法 - Google Patents

ランダムアクセスメモリ内の悪質なコードを検出するためのシステムおよび方法 Download PDF

Info

Publication number
JP2017021779A
JP2017021779A JP2016093205A JP2016093205A JP2017021779A JP 2017021779 A JP2017021779 A JP 2017021779A JP 2016093205 A JP2016093205 A JP 2016093205A JP 2016093205 A JP2016093205 A JP 2016093205A JP 2017021779 A JP2017021779 A JP 2017021779A
Authority
JP
Japan
Prior art keywords
code
address space
untrusted program
destination process
program
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
JP2016093205A
Other languages
English (en)
Other versions
JP6259862B2 (ja
Inventor
エー. パヴルユシュチク ミハイル
A Pavlyushchik Mikhail
エー. パヴルユシュチク ミハイル
ブイ.モナスティルスキ アレクセイ
V Monastyrsky Alexey
ブイ.モナスティルスキ アレクセイ
エー. ナザロヴ デニス
A Nazarov Denis
エー. ナザロヴ デニス
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
Application filed by Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of JP2017021779A publication Critical patent/JP2017021779A/ja
Application granted granted Critical
Publication of JP6259862B2 publication Critical patent/JP6259862B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/1416Event detection, e.g. attack signature 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】信頼するプロセスのアドレス空間の悪意あるコード検出する。【解決手段】コンピュータ上の信頼できないプログラムのプロセスを検出し201、信頼できないプログラムのプロセスによる、デスティネーションプロセスへのプロセス間関数呼出しを含む関数呼出しを識別する204。信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となるデスティネーションプロセスのアドレス空間のコードのマルウェア分析を実行すべきかを判定し205、マルウェア分析を実行すべきであると判定された場合に、信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となるデスティネーションプロセスのアドレス空間のコードをアンチウイルスソフトウェアを用いて分析する206。【選択図】図2

Description

本開示は、一般的にコンピュータセキュリティの分野に関し、特にランダムアクセスメモリ内の悪質なコードを検出するためのシステムおよび方法に関する。
関連出願の相互参照
本開示は、2015年6月30日に出願されたロシア特許出願第2015125972の関連出願であり、米国特許法第119条でこの出願に基づく優先権を主張し、本明細書中に参考として援用する。
ソフトウェアアプリケーションの数が膨大なペースで増加している。様々なアプリケーションの中には、インターネットワーム、キーロガー、コンピュータウイルスなどのコンピュータまたはコンピュータのユーザに害を及ぼす多くの悪意あるプログラム(マルウェア)が存在する。また、悪意あるプログラムを検出するように設計されたアンチウイルスソフトウェアなどのコンピュータのセキュリティを確保するための技術も存在し、悪意あるプログラムの実効性を制限する(例えば、隔離状態とするか、または完全にコンピュータから削除する)。
しかしながら、アンチウイルスアプリケーションからマルウェアの活動を隠すために、悪意あるプログラムの開発者たちによって様々な手法が用いられている。悪意のあるソフトウェアの検出のためにアンチウイルスアプリケーションによって用いられる、署名分析(分析中のプログラムコードの与えられたセグメントおよび既知のコードの間の対応関係を調べる技術、または悪意あるプログラムの署名ライブラリに基いて署名を調べる技術)、ヒューリスティック分析(分析中のプログラム実行をエミュレートし、API関数の呼出しログを作成し、作成されたAPI関数の呼出しログおよび悪意あるプログラムのエミュレーションライブラリの間のデータ対応を検索する工程を含む技術)、あるいはプロアクティブ分析(分析中でありシステム上で開始されているプログラムのAPI関数の呼出しを遮る工程と、API関数の呼出しログを作成する工程と、作成されたログおよび悪意あるプログラムのAPI関数の呼出しライブラリの間のデータ対応を調べる工程とを含む技術)などの手段に応じて、悪意のあるアプリケーションの開発者たちは、アンチエミュレーション(コード実行エミュレーションを検出するために、エミュレータで十中八九実行されない関数のエミュレーションによる返り値を確認する方法など)、ルートキット(例えば、ドライバの助けを借りて、コンピューティングデバイス上で自分の存在を隠す悪意あるプログラム)、多相型の悪意あるプログラム(実行中に実行可能なコードが変化する悪意あるプログラム)、アプリケーションコードの難読化(悪意あるプログラムのコードを動作可能な、しかし分析することが困難な形式に変化させる)などの手段を用いることが可能である。上記のアンチウイルスアプリケーションを妨害することを目的とした(例えば、アンチウイルスアプリケーションによる検出の妨害)手段に加えて、悪意のあるソフトウェアは、信頼されたアプリケーション(悪意がないことが知られているアプリケーションであり、アンチウイルスアプリケーションによってそのアプリケーションのいかなる活動も許可されている)のアドレス空間からの悪意あるコード(命令)の実行によるアプローチも採用し得る。
信頼できるアプリケーションのアドレス空間からの悪意あるコードの実行を監視するために様々なアプローチが採用されており、悪意あるコードの呼出しまたは信頼するプロセスのアドレス空間への書き込みを追跡するために、コントロールの移管またはプロセスのアドレス空間へのアクセスに用いられる種々のAPI関数の呼出しを追跡する工程を伴うアプローチも含まれる。
上記のアプローチは、信頼するプロセスのアドレス空間の悪意あるコード検出という領域での問題を解決することを目的としているが、問題を十分に効果的には解決していない。上記のアプローチは、いずれも、サードパーティプロセスへのアクセスの可能性のある複数の動作(信頼されたプロセスによって行われる動作を含む)を確認する工程を必要とし、また悪意あるコードを明らかにするためにプロセスのアドレス空間を確認する必要がある状況の限られた群のみを調べている。本発明は、ランダムアクセスメモリ内の悪質なコード検出という課題のより効果的な解決を可能にするものである。
ランダムアクセスメモリ内の悪質なコードを検出するシステムおよび方法が開示される。例示的一態様による方法は、コンピュータ上の信頼できないプログラムのプロセスをハードウェアプロセッサによって検出する工程と、信頼できないプログラムのプロセスによる、デスティネーションプロセスへのプロセス間関数呼出しを含む、関数呼出しをハードウェアプロセッサによって識別する工程と、信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となるデスティネーションプロセスのアドレス空間のコードのマルウェア分析を実行すべきかをハードウェアプロセッサによって判定する工程と、マルウェア分析を実行すべきであると判定された場合に、信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となるデスティネーションプロセスのアドレス空間のコードをハードウェアプロセッサによって実行可能なアンチウイルスソフトウェアを用いて分析する工程とを含む。
例示的な一態様においては、検出されたプロセスによる関数呼出しを識別する工程は、関数呼出しのデスティネーションプロセスの識別子を判定する工程、デスティネーションプロセスのアドレス空間に書き込まれたメモリブロックのサイズを判定する工程、メモリブロック内の実行可能ファイルのヘッダの存在を判定する工程、デスティネーションプロセスが信頼できるプロセスであるかを判定する工程、およびプロセス間関数呼出しがダイナミックリンクライブラリに特化したメモリ領域のデスティネーションプロセスの実行可能コード上にコントロールが移管されたかを判定する工程、の1つ以上を含む。
例示的な一態様においては、デスティネーションプロセスのアドレス空間のコードのマルウェア分析を実行すべきかを判定する工程は、信頼できないプログラムに関する情報をハードウェアプロセッサによって収集する工程と、ヒューリスティックルールを、関数呼出しを識別する工程で収集された情報、およびデスティネーションプロセスのアドレス空間のコードのマルウェア分析を実行すべきかを判定するために収集された信頼できないプログラムに関する情報に適用する工程と、を含む。
例示的な一態様においては、収集された信頼できないプログラムに関する情報は、(i)信頼できないプログラムのユニークユーザに関する情報、(ii)信頼できないプログラムのユーザによる判明している初回実行からの時間、(iii)信頼できないプログラムの名前、(iv)ストレージデバイス内の信頼できないプログラムの場所、の少なくとも1つを含む。
例示的な一態様においては、上記方法は、分析されたデスティネーションプロセスのアドレス空間に悪意あるコードが検出された場合に、実行可能コードにより呼びだされた関数のアドレス、およびデスティネーションプロセスのアドレス空間にロードされた関数のアドレス、のアンチウイルスソフトウェアによる比較に基づき、悪意あるコードにより実行され得るシステム関数を判定する工程をさらに含む。
例示的な一態様においては、上記方法は、信頼できないプログラムが検出された悪意あるコードにより実行され得るシステム関数の呼出しを行うことを禁止する、信頼できないプログラムに対するコントロールルールをアンチウイルスソフトウェアによって生成する工程をさらに含む。
例示的な一態様においては、上記方法は、分析されたデスティネーションプロセスのアドレス空間に悪意あるコードが検出された場合に、該アドレス空間の悪意あるコードを有するデスティネーションプロセスに対応する信頼できないプログラムとして、アンチウイルスソフトウェアによって指定する工程をさらに含む。
例示的な一態様においては、上記方法は、分析されたデスティネーションプロセスのアドレス空間に悪意あるコードが検出された場合に、悪意あるコードよって使用されるURIをアンチウイルスソフトウェアによって判定する工程と、悪意あるコードにより使用される判定されたURIの少なくとも一部を含むアンチウイルスレコードを、アンチウイルスソフトウェアによって生成する工程と、をさらに含む.
例示的一態様によるランダムアクセスメモリ内の悪質なコードを検出するシステムは、ハードウェアプロセッサを備え、該ハードウェアプロセッサは、コンピュータ上の信頼できないプログラムのプロセスを検出し、信頼できないプログラムのプロセスによる、デスティネーションプロセスへのプロセス間関数呼出しを含む、関数呼出しを識別し、信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となるデスティネーションプロセスのアドレス空間のコードのマルウェア分析を実行すべきかを判定し、マルウェア分析を実行すべきであると判定された場合に、信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となるデスティネーションプロセスのアドレス空間のコードをハードウェアプロセッサによって実行可能なアンチウイルスソフトウェアを用いて分析するように構成されている。
例示的一態様によるランダムアクセスメモリ内の悪質なコードを検出するためのコンピュータ実行可能命令を格納する非一過性の記録媒体は、コンピュータ上の信頼できないプログラムのプロセスを検出する命令と、信頼できないプログラムのプロセスによる、デスティネーションプロセスへのプロセス間関数呼出しを含む、関数呼出しを識別する命令と、信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となるデスティネーションプロセスのアドレス空間のコードのマルウェア分析を実行すべきかを判定する命令と、マルウェア分析を実行すべきであると判定された場合に、信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となるデスティネーションプロセスのアドレス空間のコードをハードウェアプロセッサによって実行可能なアンチウイルスソフトウェアを用いて分析する命令と、を含む。
例示的態様における上記の本発明の簡単な概要は、本発明の基本的な理解を提供するのに役立つ。本概要は、すべての企図される態様の広範な概観ではなく、すべての態様の主要または重大な要素を特定することも意図しておらず、本発明における、任意又は全ての態様の範囲を線引きもしないということが意図される。その唯一の目的は、以下の発明のより詳細な説明の前置きとして簡略化された形式で1または複数の態様を提示することである。前述の達成のために、本発明の1つまたは複数の態様について、説明され、部分的に特許請求の範囲に示してある特徴を含む。
添付図面は、詳細な説明と共に、本明細書に組み込まれ、その一部を構成し、本発明における1つまたは複数の実施態様を示しており、それらの原理及び実装を説明するのに役立つ。
図1は、ランダムアクセスメモリ内の悪質なコード検出のためのシステムの一例のブロック図を示す。 図2A及び2Bは、ランダムアクセスメモリ内の悪質なコード検出方法の典型例のフロー図を示す。 図3は、本開示のシステム及び方法のいくつかの態様を実施することが可能な手段による汎用コンピュータシステムを示す。
詳細な説明
本発明の例示的な態様は、ランダムアクセスメモリ内の悪質なコードを検出するために、システム、方法、及びコンピュータプログラム製品に関連して本明細書に開示される。当業者は、以下の説明は単なる例示であり、決して限定であることを意図するものではないことを理解するであろう。他の態様は、本開示の利益を有する当業者にとって、容易に示唆となりえる。参照は、添付の図面に示されるように、現在の例示の態様の実装について詳細に説明するものである。同じ参照指標は、同一または同様の項目を参照するため、図面及び以下の説明の全体を通じて、可能な限り使用される。
悪意あるコード(あるいは、プログラムまたはアプリケーション)は、コンピュータまたはコンピュータユーザに害を及ぼす、インターネットワーム、キーロガー、コンピュータウイルスなどのコンピュータ命令である可能性がある。該害は、コンピュータに格納されているデータを含むコンピューターリソースへの盗むことを目的とした不正アクセス、及びデータ格納、計算などの用途に用いられるリソースの不正利用であり得る。
署名分析は、分析中のプログラムコードの与えられたセグメントおよび既知のコードの間の一致を調べる技術、または悪意あるプログラムの署名ライブラリに基いて署名を調べる技術であり得る。なお、該技術は、コンピューティングデバイスのランダムアクセスメモリ内の悪意あるプログラムおよび悪意あるコードの両方を検出するために用いられ得る。
関数呼出しのコンテキストは、次の呼出し属性を少なくとも含む関数呼出しに関する情報であり、該呼出し属性は、関数名、関数のオペランド値(オペランドがメモリ内のアドレスである場合、コンテキストは、メモリ内の関数の対応するオペランドが参照するデータブロック(例えば、100バイトのデータブロック)を含んでいてもよい)、関数の呼出しアドレス(関数のリターンアドレスから算出可能)、関数呼出しを行うスレッド識別子(スレッドID)、関数呼出しを行うスレッド記述子(スレッドハンドル)、関数呼出しが発生するであろうプロセスの記述子(プロセスハンドル)であってよい。
信頼できるアプリケーションは、コンピューティングデバイスまたはユーザに害を引き起こさないアプリケーションであってよい。信頼できるアプリケーションとは、信頼できるソフトウェア製造元によって開発され、信頼できるソースからダウンロードされたアプリケーション、または識別子(アプリケーションファイルのMD5など)が信頼できるアプリケーションのライブラリ(信頼できるアプリケーションのライブラリに格納されている証明書などの製造元識別子)に格納されているアプリケーションであると考えることができる。
信頼性できないアプリケーションは、例えば、セキュリティアプリケーションによって使用されるような信頼性はないが悪意があるとは認識されないアプリケーションであってよい。
信頼できないプロセスは、信頼性できないアプリケーションから開始されたプロセスであってよい。
ヒューリスティック分析は、分析中のプログラム実行をエミュレートし、API関数の呼出しログを作成し、作成されたAPI関数の呼出しログおよび悪意あるプログラムのエミュレーションライブラリの間のデータが一致するかを調べ、分析されたプログラムに悪意があるかを判定する技術であってよい。
挿入データは、別プロセスのアドレス空間に、あるプロセスの複数のスレッドの1つによって書き込まれたデータ(プロセッサ用の命令からなる実行可能コードを含む)であってよい。
アプリケーションに関するデータは、アプリケーションおよび他のコンポーネントの実行可能ファイル(例えば、マルチメディアリソース、構成ファイルなど)を含む、アプリケーションを記述した情報(および、そのアプリケーションから起動されるプロセス)であってよい。アプリケーションに関するデータは、少なくとも、アプリケーション名(および、アプリケーションから作成され、実行されるプロセス名)、プロセスの起動ディレクトリ、アプリケーションを実行しているユニークユーザ数、アプリケーションの判明している初回実行からの経過時間を含んでいてもよい。
プロセス間通信関数は、別プロセス(関数の呼出しにより開始したものではない)のアドレス空間において(時折「アドレス空間から」とも)コードを実行するために使用されるシステム関数(WindowsAPI関数など)であって、例えば、CreateRemoteThread、SetThreadコンテキスト、NTQueueApcThread、またはResumeRemoteThreadなどであってよく、別プロセス(WriteプロセスMemoryなど)によって実行されるであろうコードの挿入に用いられる関数であってもよい。プロセス間通信関数呼出しのターゲットは、プロセス(ターゲットプロセス)であってよく、プロセス間通信関数呼出しのコンテキストは、ターゲットプロセスのアドレス空間において生じるデータ書き込み(例えば、関数WriteプロセスMemoryによって行われる)の引数の値、またはプロセス間通信関数呼出しのターゲットであるプロセスのアドレス空間に存在する実行可能コードに生じるコントロールの移管の引数の値などを含むだろう。
コードの機能は、コードの実行中に行われる複数のシステム呼出しであってよい。
図1は、ランダムアクセスメモリ内の悪質なコード検出のためのシステムの一例のブロック図を示す。図1に概略的に示され、詳細図が図3に示されているコンピューティングデバイス100は、パーソナルコンピュータ(簡単のために、「コンピュータ」)、モバイルコンピューティングデバイス(スマートフォンやノートPCなど)であってよく、あるいは前述のデバイスからなる分散型コンピュータネットワークであってもよい。コンピューティングデバイス100は、少なくとも1つのアプリケーション110(プログラムまたはソフトウェア)がインストールされ稼働していてよい。(1つ又は複数の)アプリケーション110は、例えば、ウェブページを閲覧し、オーディオファイルを聴き、インターネットを用いた対話をするために、コンピューティングデバイス100のユーザにより使用され得る。上記のアプリケーション(1つ又は複数)110に加えて、コンピューティングデバイス100は、コンピューティングデバイス100およびそのユーザを悪意あるプログラムから守るために、セキュリティアプリケーション120(アンチウイルスアプリケーションなど)がインストールされていてもよい。コンピューティングデバイス100を保護するタスクを実行するために、セキュリティアプリケーション120は、署名分析モジュール、ヒューリスティック分析モジュール、ロギングモジュールなどの多数のモジュール(図示せず)を含んでいてよい。
例示的な一態様においては、ロギングモジュールは、システム呼出しを阻害、またはコンピューティングデバイス100上の種々のプロセスにより行われるシステム関数の呼出し(WinAPI関数など)を阻害するように設計されており、またそれらの関数呼出しのコンテキストを保存するように設計されている。例えば、Windowsファミリのオペレーティングシステムを使用する場合、ロギングモジュールは、フィルタドライバのインストール(デバイスとの相互作用のためにドライバスタックに加えられたドライバ)による関数呼出しを阻害する。このアプローチを実現するために、ロギングモジュールの機能ロジックを実行するドライバがロードされているフィルタマネージャを使用することが可能である。
例示的な一態様においては、コンピューティングデバイス100は、アプリケーション制御モジュール130を備えていてもよい。アプリケーション制御モジュール130は、アプリケーション110の起動と実行を制御するように設計されている。例示的な一態様においては、アプリケーション制御モジュール130は、様々な状況でその挙動を支配するルール(「アプリケーションコントロールルール」または「コントロールルール」)によって動作する(上記のソフトウェアの挙動コントロールなど)。例えば、このようなコントロールルールは、異なる群からのアプリケーションと同様に、異なるアプリケーション110の起動と実行に基づくモジュール130の動作を指定し得る。アプリケーション群は、これらに限定されないが、信頼できるソフトウェア、悪意のあるソフトウェア、信頼できないソフトウェアを含んでいてよい。例示的な一態様においては、コントロールルールは、これらにこれらに限定されないが、悪意のあるソフトウェアの起動を防ぎ、信頼できるソフトウェア(デフォルト拒否ルール)のみの起動を許容し、悪意のあるソフトウェア群にないソフトウェアの起動を許容するルールを含んでいてよい。
例示的な一態様においては、セキュリティアプリケーション120は、アプリケーション110がセキュリティアプリケーション120によって悪意あるプログラム(例えば、署名またはヒューリスティック)を検出する方法の1つに従って悪意のあるものとして認識されていない場合、およびアプリケーション110が信頼できると認識されていない場合、特定のアプリケーション110が信頼性できないアプリケーション群に属するか判定する。次に、セキュリティアプリケーション120の一部として、またはリモートセキュリティサーバ(図1中に図示せず)上に存在する可能性がある信頼できるアプリケーションのライブラリが、アプリケーション110の識別子(チェックサムMD5など)を含む場合、アプリケーション110は信頼できるものとして認識される。
一例では、プロセス1(140)は、信頼できないアプリケーションから生成されるプロセスであってよい。ロギングモジュールの助けによりセキュリティアプリケーション120は、プロセス1(140)の実行過程において呼び出されるプロセス間通信関数を含む関数を阻害する。なお、セキュリティアプリケーション120は、すべてのアプリケーション110(信頼できないものだけでなく)の関数呼出しを阻害するように構成されていてもよい。セキュリティアプリケーション120は、阻害された関数呼出しのための関数呼出しのコンテキスト(プロセス間通信関数のための物を含む)を判定するように構成されていてもよい。
呼出しのコンテキストに加えて、セキュリティアプリケーション120は、阻害された関数を呼び出すプロセスが開始されていたアプリケーションからのアプリケーション110に関するデータを収集するように構成されていてもよい。例示的な一態様においては、アプリケーション110に関するデータを得るために、セキュリティアプリケーション120は、リモートセキュリティサーバ(図示せず)に接続されていてもよく、リモートセキュリティサーバは、セキュリティアプリケーション120(チェックサムMD5など)によって送信されたアプリケーション110の識別子に応じて、セキュリティアプリケーション120にアプリケーションに関する次のデータを送ることが可能である。すなわち、アプリケーションに関するデータとは、アプリケーションを開始しているユニークユーザ数、およびアプリケーションの判明している初回実行からの経過時間の情報である。次に、セキュリティサーバ上でこのような情報を利用できるようにするために、セキュリティアプリケーション120は、アプリケーション110の起動に応じて、対応するメッセージ(アプリケーションの識別子と一緒に)をセキュリティサーバに送信する。例示的な一態様においては、アプリケーションに関するデータ110は、限定されないが、コンピューティングデバイス内のアプリケーション110の場所(例えば、アプリケーションの対応するファイルへのパス)に関する情報を含んでいてよい。
一態様においては、アプリケーション110上のデータは、信頼できないプロセスの検出の瞬間までセキュリティアプリケーション120によって収集され得る。このような場合には、セキュリティアプリケーション120は、例えば、コンピューティングデバイス上にインストールされた各アプリケーション110の上述のデータをバックグラウンドで収集する。別の態様においては、セキュリティアプリケーション120は、信頼性がないと認識された後もアプリケーションに関するデータ110を収集してもよい。
呼出しのコンテキストに含まれる呼出しの上記属性に加えて、セキュリティアプリケーション120は、各阻害された関数呼出し(プロセス間通信関数の呼出しを含む)用の次の追加の呼出し属性を定義することが可能である。すなわち、追加の呼出し属性は、ターゲットプロセス名(関数呼出しの引数としてのターゲットプロセスの識別子を用いて判定される)という属性、ターゲットプロセスのアドレス空間に書き込まれるメモリブロックのサイズという属性、ターゲットプロセスのアドレス空間に書き込まれたメモリブロック(挿入データブロック)内の実行可能ファイルのヘッダ(WindowsファミリOS用のPEヘッダ、UnixファミリOS用のELFヘッダ、またはAndroidOS用DEXヘッダなど)の存在(例えば、WindowsファミリのOSの場合、PEヘッダ(MZ署名)、DOSヘッダなどの構造用のメモリブロック内を探すことによって見つけることができる)という属性、ターゲットプロセスが信頼できるプロセスであるかという属性、プロセス間関数呼出しがダイナミックリンクライブラリに特化したメモリ領域のデスティネーションプロセスの実行可能コード上にコントロールが移管されたかという属性である。
例示的な一態様においては、プロセス2(150)は、プロセス1(140)のアドレス空間から呼び出されるプロセス間通信関数呼出し用のターゲットプロセスである。図1は、プロセス2(150)のアドレス空間の代表的一例を示している。図1から分かるように、該アドレス空間は、実行可能コード、ヒープメモリ領域、使用中のライブラリの実行可能コードなどのプロセス2(150)に属するデータを含む。このデータは、「プロセス2のデータ」として示されている。同時に、プロセス2(150)のアドレス空間は、プロセス間通信関数の助けによりプロセス2(150)のアドレス空間にプロセス1(140)によって書き込まれるデータである「挿入データ」を含むことが可能である。
図2A及び2Bは、ランダムアクセスメモリ内の悪質なコード検出方法の典型例のフロー図を示す。工程201において、セキュリティアプリケーション120は、アプリケーション110の1つから開始されていた信頼できないプロセス(プロセス1(140))を検出する。工程202において、セキュリティアプリケーション120は、プロセス1(140)の開始元であるアプリケーションに関するデータ110(信頼できない)を収集する。次に、工程203において、セキュリティアプリケーション120は、ロギングモジュールの助けにより、プロセス1(140)のアドレス空間からの少なくとも1つのプロセス間通信関数の呼出しを阻害する(阻害された関数呼出しのターゲットはプロセス2(150)である)。工程204において、セキュリティアプリケーション120は、前工程において阻害された少なくとも1つのプロセス間通信関数呼出しの属性を判定する。プロセス間通信関数呼出しは、プロセス2(150)のアドレス空間からの特定コードを実行しようとしているか、または実行可能コードをプロセス2(150)のアドレス空間に挿入(書き込み)しているのかを示す。工程205において、セキュリティアプリケーション120は、プロセス間通信関数呼出しのターゲットプロセスのアドレス空間のコードを分析する必要があるか判定する。例示的な一態様においては、前述のメモリ領域内のコードは、実行可能コードである。さらに別の例示的な態様においては、前述のメモリ領域内のコードは、メモリに格納された任意のバイナリデータである。
ターゲットプロセスに属するメモリ領域内のコード(プロセス間通信関数呼出しのターゲットであるプロセスのアドレス空間のコード)を分析する必要性は、ヒューリスティックルールの助けにより判定され得る。プロセス1(140)の開始元である信頼性できないアプリケーションに関し収集されたデータ110、および少なくとも1つのプロセス間通信関数呼出しの属性へのヒューリスティックルールの適用によって、ターゲットプロセスのアドレス空間内のコードを分析する必要があるか否かを判定する。例示的な一態様においては、前述のヒューリスティックルールは、次のようであってよい。
1.データブロックがターゲットプロセスに書き込まれているPEヘッダを含む場合、コードを分析する必要がある。
2.「ApplicationData」ディレクトリ(WindowsのOSで、このディレクトリの完全なパスは「APPDATA」環境変数に含まれている)から開始されたプロセスが信頼できるターゲットプロセスにデータを挿入している場合、コードを分析する必要がある。
3.「Temp」ディレクトリ(WindowsのOSで、このディレクトリの完全なパスは「TEMP」環境変数に含まれている)から開始されたプロセスが信頼できるターゲットプロセスにデータを挿入している場合、コードを分析する必要がある。
4.デスクトップに対応するディレクトリから開始されたプロセスが信頼できるターゲットプロセスにデータを挿入している場合、コードを分析する必要がある。
5.プロセスが信頼できるシステムプロセス(「svchost」、「csrss」、「winlogon」、「rundll」または「iexplorer」の名前を有するものなど)にデータを挿入している場合、コードを分析する必要がある。
6.関数の引数が信頼できるターゲットプロセスを参照しながら関数「NTQueueApcThread」が呼び出された場合、コードを分析する必要がある。
7.該プロセスとターゲットプロセスの名前が一致し、プロセスの開始元であるアプリケーションを開始したユニークユーザ数が閾値(例えば50)を超えず、プロセスの開始元であるアプリケーションの判明している初回実行からの経過時間が閾値(例えば1日)を超えず、プロセスがターゲットプロセスにデータを挿入しているしている場合、コードを分析する必要がある。
なお、ルール2、3、および4は、組み合わせて「前に決定されたディレクトリから開始されたプロセスが信頼できるターゲットプロセスにデータを挿入している場合、コードを分析する必要がある」という1つのルールにすることができる。データが挿入されたプロセスが信頼できるプロセスであるかは、プロセスの開始元であるアプリケーション110が信頼できるアプリケーションであるということに従う。
工程205において上記のヒューリスティックルールの1つに従いコードを分析する必要があると判定した場合、工程206においてセキュリティアプリケーション120はプロセス間通信関数呼出し(ターゲットプロセスのアドレス空間)のターゲットプロセスに属するメモリ領域内のコードの分析を、悪意あるコードを検出するために実行することが可能である。例示的な一態様においては、例えば、署名および/またはヒューリスティック分析などの、コード分析の公知の方法は、本工程において使用すること可能である。コードに悪意あると判定されなかった場合、分析は工程208において終了する。
しかし、工程206において悪意あるコードが検出された場合、セキュリティアプリケーション120は、工程206において悪意があるとものとして認識されたコードの機能判定を工程207において行う。例示的な一態様においては、コードの機能は、セキュリティアプリケーション120の助けにより、実行可能コードから呼び出された関数のアドレスとプロセスのアドレス空間にロードされた関数のアドレス(プロセスのアドレス空間に挿入されたコードの機能のコンテキストにおいては、同じターゲットプロセスのアドレス空間にロードされたライブラリを意味する)を比較し判定され得る。上記比較結果に基づいて、セキュリティアプリケーション120は、コードの機能を判定する(悪意があると認識されたコードから呼び出された可能性のあるシステム関数の収集)。工程209においては、セキュリティアプリケーション120は、アプリケーション制御モジュール130用の少なくとも1つのアプリケーションコントロールルールを生成する。例示的な一態様においては、セキュリティアプリケーション120は、ターゲットプロセスの開始元であるアプリケーションによる悪意あるコードの機能を構成するシステム関数の呼出しを禁止するようなアプリケーションコントロールルールを生成する。さらに別の例示的な態様においては、セキュリティアプリケーション120は、ターゲットプロセスの開始元であるアプリケーションによる悪意あるコードの機能を構成するシステム関数の呼出しについてのユーザ確認を要求するアプリケーション制御モジュール130によって、アプリケーションコントロールルールを生成する。工程209におけるアプリケーションコントロールルール生成後、セキュリティアプリケーション120は、該アプリケーションコントロールルールをアプリケーション制御モジュール130に送信し、工程210においては生成されたアプリケーションコントロールルールに従い、アプリケーション制御モジュールが用いられる。
例示的な一態様においては、工程206において悪意あるコードが検出された場合、セキュリティアプリケーション120は、そのアドレス空間に悪意あるコードが挿入されていたターゲットプロセスの実行を停止し得る。さらに別の例示的な態様においては、工程206において悪意あるコードが検出された場合、セキュリティアプリケーション120は、ターゲットプロセスのアドレス空間から悪意あるコードを削除してもよい。別の例示的な態様においては、セキュリティアプリケーション120は、プロセス間通信関数の呼出しを実行するプロセスの開始元であるアプリケーション110を削除または隔離してもよい。
例示的な一態様においては、工程206における悪意あるコードの検出後、セキュリティアプリケーション120は、信頼性できないアプリケーションリスト上にアプリケーション制御モジュール130によって配置される(例えば、信頼できるアプリケーションのライブラリ中のアプリケーション110の識別子に対応する記録の変更による)アプリケーション制御モジュール130用のアプリケーションコントロールルールを、ターゲットプロセスの開始元であるアプリケーション110によって生成し得る。上記のように、アプリケーション制御モジュール130は、信頼できないものも含むアプリケーション110の起動と実行をコントロールするように構成されている。例示的な一態様においては、アプリケーション制御モジュール130は、信頼性できないアプリケーションの起動をブロックし得る。さらに別の例示的な態様において、アプリケーション制御モジュール130は、コンピューティングデバイス100のユーザがそのような接続の確立するまで、リモートリソース(サイトなどとの接続を確立するすべての試み)をブロックし得る。
さらに別の例示的な態様においては、工程206における悪意あるコードの検出後、セキュリティアプリケーション120は、悪意あるコードによって使用される少なくとも1つのユニフォームリソース識別子(URI)を判定してもよい。URIの検出(判定)は、悪意あるコードを含むプロセスのアドレス空間を分析することにより行われてよい。例示的な一態様においては、セキュリティアプリケーション120は、リモートリソースのアドレス「http://******.com/****」またはファイルシステム内のリソース「ファイル://****」などのURIの可能性のある代表的文字列を調べることによってURIを判定する。さらに別の例示的な態様においては、セキュリティアプリケーション120は、オペレーティングシステム(WindowsOSなど)のレジスタ内のアドレスをURIとして判定し得る。例示的な一態様においては、セキュリティアプリケーション120は、ターゲットプロセスのアドレス空間内の対応するURIを調べてもよい。さらに別の例示的な態様においては、調査は1つの特定のバイト値以下(例えば、1000バイト以下)であるアドレス空間の一部において悪意あるコードのはじめから行われ得る。さらに別の例示的な態様において、調査は悪意あるコードを構成する命令の引数としてアドレスの近接値(例えば100バイト)内で行われ得る。ファイル、サイト、レジスタパラメータなどのリソースは、URIを使用して参照することができるオブジェクトを含む。
URIが見つかった場合、セキュリティアプリケーション120は、判定されたURI(または、URIの文字列の代表例から算出されるハッシュ)を記録する対応するアンチウイルスレコードを生成してもよい。次に、アンチウイルスレコードは、コンピューティングデバイス100からアンチウイルスレコードに含まれるURI(またはそのハッシュ)を有するリソースへのアクセスをブロック(制限)し得るセキュリティアプリケーション120によって用いられる。例示的な一態様においては、セキュリティアプリケーション120は、生成されたアンチウイルスレコードをリモートセキュリティサーバに送ってもよく、リモートセキュリティサーバはアンチウイルスレコードをセキュリティアプリケーション120が稼働している多くの他のコンピューティングデバイスへ(後の利用のために)配布することが可能である。
例示的な一態様においては、セキュリティアプリケーション120は、判定されたすべてのURIのためではなく、セキュリティアプリケーション120の一部であり、信頼できるURIのリストを含む信頼できるURIのライブラリに存在しないURIのみのために、アンチウイルスレコードを生成する。信頼できるURIは、アクセスにより害をコンピューティングデバイス100またはそのユーザに発生させないであろうURI(害の一例としては、悪意あるプログラムの読込および/または起動などである)を含む。例示的な一態様においては、信頼できるURIのライブラリに格納されているURIのリストは、例えば、コンピュータセキュリティの専門家の助けによりリモートセキュリティサーバ上で生成され、後の保管及び利用のためにセキュリティアプリケーション120に送信され得る。
図3は、本開示のシステム及び方法を実施することが可能な汎用コンピュータシステム(パーソナルコンピュータまたはサーバであってよい)を表す。示されているように、コンピュータシステムは、中央処理装置21と、システムメモリ22と、中央処理装置21と関連するメモリを含む様々なシステムコンポーネントに接続しているシステムバス23とを備える。システムバス23は、先行技術から知られている任意のバス構造に類似であってよく、他のバスアーキテクチャと相互作用することが可能なバスメモリまたはバスメモリコントローラ、周辺バス、ローカルバスを含んでよい。システムメモリは、固定メモリ(ROM)24及びランダムアクセスメモリ(RAM)25を含む.基本入力/出力システム(BIOS)26は、ROM24を使用したオペレーティングシステムの読み込み時などのパーソナルコンピュータ20の要素間の情報伝達を保証する基本的手順を含む。
パーソナルコンピュータ20は、同様に、データを読み込み及び書き込むためにハードディスク27、リムーバル磁気ディスク29に読み取り及び書き込みするために磁気ディスクドライブ28及びリムーバル光学ディスクドライブ31(CD−ROM、DVD−ROM及び別の光学情報メディア)を読み取り及び書き込みするために光学ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28及び光学ドライブ30は、ハードディスクインターフェース32、磁気ディスクインターフェース33及び光学ドライブインターフェース34それぞれを介して、システムバス23に接続されている。ドライブ及び対応するコンピュータ情報メディアは、パーソナルコンピュータ20における、コンピュータ命令、データ構造、プログラムモジュール及び別のデータを記憶するために、電力的に独立しているモジュールである。
本開示は、ハードディスク27、リムーバブル磁気ディスク29及びリムーバブル光学ディスク31を使用するシステムの実装を提供するが、別のタイプのコンピュータ情報媒体56の採用が可能であることが理解されるべきであり、それは、コンピュータによって読み取り可能な形式でデータを格納することができるもの(半導体ドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ(RAM)など)であり、それは、コントローラ55を介してシステムバス23に接続されている。
コンピュータ20は、ファイルシステム36(記録されるシステム35はここに保持される)、さらに、追加プログラム・アプリケーション37、他のプログラムモジュール38及びプログラムデータ39を備える。ユーザは、入力デバイス(キーボード40、マウス42)を用いて、パーソナルコンピュータ20にコマンドと情報を入力することが可能である。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ、等を用いることができる。そのような入力デバイスは、通常コンピュータシステム20に、シリアルポート46を介して、接続され、それは、順に、システムバスに接続されるが、それらは、他の方法で、例えば、パラレルポート、ゲームポート及びユニバーサルシリアルバス(USB)の助けを借りて、接続される。モニター47又は他の種類のディスプレイデバイスも、ビデオアダプター48等のインターフェースを介してシステムバス23に接続される。モニター47に加えて、パーソナルコンピュータは、ラウドスピーカー、プリンタ等他の周辺外部デバイス(図示せず)に備えてもよい。
パーソナルコンピュータ20は、1つ又は複数のリモートコンピュータ49とのネットワーク接続を用いて、ネットワーク環境で操作できる。リモートコンピュータ(またはコンピュータ)49も、図3に示すように、前述の要素(パーソナルコンピュータ20の特質を説明したもの)の大部分又は全てを有するパーソナルコンピュータ又はサーバである。他のデバイスも、ルータ、ネットワーク局、ピアデバイス又は他のネットワークノード等、コンピュータネットワークに存在してもよい。
ネットワーク接続は、ローカル・エリア・コンピュータ・ネットワーク(LAN)50、及びワイドエリア・コンピュータ・ネットワーク(WAN)を形成することができる。そのようなネットワークは、企業コンピュータネットワーク又は社内ネットワークで使用され、それらは、概してインターネットアクセスを有している。LAN又はWANネットワークで、パーソナルコンピュータ20は、ネットワークアダプター又はネットワークインターフェース51を介して、ローカル・エリア・ネットワーク50に接続される。ネットワークが用いられる場合、パーソナルコンピュータ20は、インターネット等のワイド・エリア・ネットワークでのコミュニケーションを提供するために、モデム54又は他のモジュールを採用する。モデム54は、内部的又は外部的デバイスであり、シリアルポート46によって、システムバス23と接続される。ネットワーク接続は、一例であり、ネットワークの正確な構成を示す必要はないことを留意されたい。すなわち、実際には、技術的な通信モジュールによる、あるコンピュータと他のコンピュータとの接続を確立する他の方法がある。
様々な態様において、本明細書で説明するシステム及び方法は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実現されてもよい。ソフトウェアで実装される場合、本方法は、非一時的なコンピュータ可読媒体の1つ又は複数の命令又はコードとして格納されてもよい。コンピュータ可読媒体は、データ記憶装置を含む。例として、限定するものではないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、フラッシュメモリ、又は、電気的、磁気的、又は他の種類の光学記憶媒体を備えてもよい。それは、命令又はデータ構造の形式で、所望のプログラムコードを搬送又は格納されてもよく、且つ、汎用コンピュータのプロセッサにアクセスできる。
様々な側面で、本開示に記載されたシステム及び方法はモジュールの観点から理解することが可能である。本明細書で使用される用語"モジュール"は、特定用途向け集積回路(ASIC)又はフィールド・プログラマブル・ゲート・アレイ(FPGA)(例えば、ハードウェアとソフトウェアの組み合わせ)などによって、ハードウェアを用いて実装される、実世界のデバイス、構成要素、又は構成要素の配置を意味している。例えば、マイクロプロセッサシステム及びジュールの機能を実装するための命令セットによって、それは、(実行時)マイクロプロセッサシステムを専用機に変換する。モジュールも、これらの組み合わせとして実装されてもよく、ハードウェア単体で容易である特定の機能で、及び、ハードウェアとソフトウェアの組み合わせによって容易である他の機能で実装されてもよい。ある実施態様で、モジュールの少なくとも一部、及び、場合によっては、全てが、汎用コンピュータ(上記、図3により詳細に説明したもの等)のプロセッサで実行することができる。したがって、各モジュールは、様々な適切である構成で実現することができ、本明細書において例示される任意の特定の実装に限定されるものではない。
明瞭にするために、本態様における繰り返される機能の全てが、本明細書に開示されるわけではない。本開示の任意で実際の実装における開発で、多数の実装固有の決定が、開発者の特定の目標を達成するために、成されなければならないことが理解されるであろう。これらの具体的な目標は、実装及び開発者ごとに変化するであろう。そのような開発努力は複雑で時間がかかるかもしれないことが、それにもかかわらず、本開示の利益を有する当業者にとっては、エンジニアにとっては日常の仕事であることが、理解されるであろう。
さらに、本明細書で使用される表現又は用語は、説明の目的のためであり、制限を目的としていないことを理解すべきである。本明細書の用語又は表現は、関連技術での熟練の知識と組み合わせて、本明細書に提示される教示及び指針に照らして当業者によって解釈されるべきである。さらに、明示的記載がない限り、本明細書又は特許請求の範囲における任意の用語に対して、一般的でない又は特別な意味を帰することは意図されていない。
本明細書に開示される様々な態様は、例示により本明細書に言及される既知のモジュールに、現在及び将来の既知の均等物を包含する。さらに、態様及び用途を図示し、且つ、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることは、この開示の利益を有する当業者には明らかであろう。

Claims (20)

  1. コンピュータ上のマルウェアの検出方法であって、
    前記コンピュータ上の信頼できないプログラムのプロセスをハードウェアプロセッサによって検出する工程と、
    前記信頼できないプログラムのプロセスによる、デスティネーションプロセスへのプロセス間関数呼出しを含む、関数呼出しを前記ハードウェアプロセッサによって識別する工程と、
    前記信頼できないプログラムのプロセスによる前記プロセス間関数呼出しの対象となる前記デスティネーションプロセスのアドレス空間のコードのマルウェア分析を実行すべきかを前記ハードウェアプロセッサによって判定する工程と、
    前記マルウェア分析を実行すべきであると判定された場合に、前記信頼できないプログラムのプロセスによる前記プロセス間関数呼出しの対象となる前記デスティネーションプロセスの前記アドレス空間のコードを前記ハードウェアプロセッサによって実行可能なアンチウイルスソフトウェアを用いて分析する工程と、
    を含む方法。
  2. 検出されたプロセスによる関数呼出しを識別する工程は、
    前記関数呼出しの前記デスティネーションプロセスの識別子を判定する工程、
    前記デスティネーションプロセスの前記アドレス空間に書き込まれたメモリブロックのサイズを判定する工程、
    前記メモリブロック内の実行可能ファイルのヘッダの存在を判定する工程、
    前記デスティネーションプロセスが信頼できるプロセスであるかを判定する工程、及び
    プロセス間関数呼出しがダイナミックリンクライブラリに特化したメモリ領域の前記デスティネーションプロセスの実行可能コード上にコントロールが移管されたかを判定する工程、
    の1つ以上を含む、請求項1に記載の方法。
  3. 前記デスティネーションプロセスのアドレス空間の前記コードのマルウェア分析を実行すべきかを判定する工程は、
    前記信頼できないプログラムに関する情報を前記ハードウェアプロセッサによって収集する工程と、
    ヒューリスティックルールを関数呼出しを識別する工程で収集された情報および前記デスティネーションプロセスのアドレス空間の前記コードのマルウェア分析を実行すべきかを判定するために収集された前記信頼できないプログラムに関する情報に適用する工程と、
    を含む、請求項2に記載の方法。
  4. 前記収集された信頼できないプログラムに関する情報は、
    (i)前記信頼できないプログラムのユニークユーザに関する情報、
    (ii)前記信頼できないプログラムのユーザによる判明している初回実行からの時間、
    (iii)前記信頼できないプログラムの名前、
    (iv)前記ストレージデバイス内の前記信頼できないプログラムの場所、
    の少なくとも1つを含む、請求項3に記載の方法。
  5. 前記分析されたデスティネーションプロセスのアドレス空間に悪意あるコードが検出された場合に、前記実行可能コードにより呼びだされた関数のアドレスおよび前記デスティネーションプロセスのアドレス空間にロードされた関数のアドレスの前記アンチウイルスソフトウェアによる比較に基づき、前記悪意あるコードにより実行され得るシステム関数を判定する工程をさらに含む、請求項1に記載の方法。
  6. 前記信頼できないプログラムが前記検出された悪意あるコードにより実行され得るシステム関数の呼出しを行うことを禁止する、前記信頼できないプログラムに対するコントロールルールを前記アンチウイルスソフトウェアによって生成する工程をさらに含む、請求項5に記載の方法。
  7. 前記分析されたデスティネーションプロセスのアドレス空間に悪意あるコードが検出された場合に、前記アドレス空間の悪意あるコードを有する前記デスティネーションプロセスに対応する信頼できないプログラムとして前記アンチウイルスソフトウェアによって指定する工程をさらに含む、請求項1に記載の方法。
  8. 前記分析されたデスティネーションプロセスのアドレス空間に悪意あるコードが検出された場合に、前記悪意あるコードよって使用されるURIを前記アンチウイルスソフトウェアによって判定する工程と、
    前記悪意あるコードにより使用される前記判定されたURIの少なくとも一部を含むアンチウイルスレコードを前記アンチウイルスソフトウェアによって生成する工程と、
    をさらに含む、請求項1に記載の方法。
  9. コンピュータ上のマルウェアの検出システムであって、
    ハードウェアプロセッサを備え、
    前記ハードウェアプロセッサは、
    前記コンピュータ上の信頼できないプログラムのプロセスを検出し、
    前記信頼できないプログラムのプロセスによる、デスティネーションプロセスへのプロセス間関数呼出しを含む、関数呼出しを識別し、
    前記信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となる前記デスティネーションプロセスのアドレス空間のコードのマルウェア分析を実行すべきかを判定し、
    マルウェア分析を実行すべきであると判定された場合に、前記信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となる前記デスティネーションプロセスのアドレス空間の前記コードを前記ハードウェアプロセッサによって実行可能なアンチウイルスソフトウェアを用いて分析するように構成されている、システム。
  10. 検出されたプロセスによる関数呼出しの識別は、
    前記関数呼出しの前記デスティネーションプロセスの識別子の判定、
    前記デスティネーションプロセスの前記アドレス空間に書き込まれたメモリブロックのサイズの判定、
    前記メモリブロック内の実行可能ファイルのヘッダの存在の判定、
    前記デスティネーションプロセスが信頼できるプロセスであるかの判定、
    プロセス間関数呼出しがダイナミックリンクライブラリに特化したメモリ領域の前記デスティネーションプロセスの実行可能コード上にコントロールが移管されたかの判定、
    の1つ以上を行う、請求項9に記載のシステム。
  11. 前記デスティネーションプロセスのアドレス空間の前記コードのマルウェア分析を実行すべきかを判定するために、
    前記信頼できないプログラムに関する情報を収集し、
    ヒューリスティックルールを関数呼出しを識別する工程で収集された情報および前記デスティネーションプロセスのアドレス空間の前記コードのマルウェア分析を実行すべきかを判定するために収集された前記信頼できないプログラムに関する情報に適用するようにさらに構成されている、請求項9に記載のシステム。
  12. 前記収集された信頼できないプログラムに関する情報は、
    (i)前記信頼できないプログラムのユニークユーザに関する情報、
    (ii)前記信頼できないプログラムのユーザによる判明している初回実行からの時間、
    (iii)前記信頼できないプログラムの名前、
    (iv)前記ストレージデバイス内の前記信頼できないプログラムの場所、
    の少なくとも1つを含む、請求項11に記載のシステム。
  13. 前記プロセッサは、前記分析されたデスティネーションプロセスのアドレス空間に悪意あるコードが検出された場合に、前記実行可能コードにより呼びだされた関数のアドレスおよび前記デスティネーションプロセスのアドレス空間にロードされた関数のアドレスの前記アンチウイルスソフトウェアによる比較に基づき、前記悪意あるコードにより実行され得るシステム関数を判定するようにさらに構成されている、請求項9に記載のシステム。
  14. 前記プロセッサは、前記信頼できないプログラムが前記検出された悪意あるコードにより実行され得るシステム関数の呼出しを行うことを禁止する、前記信頼できないプログラムに対するコントロールルールを前記アンチウイルスソフトウェアによって生成するようにさらに構成されている、請求項13に記載のシステム。
  15. 前記プロセッサは、前記分析されたデスティネーションプロセスのアドレス空間に悪意あるコードが検出された場合に、前記アドレス空間の悪意あるコードを有する前記デスティネーションプロセスに対応する信頼できないプログラムとして前記アンチウイルスソフトウェアによって指定するようにさらに構成されている、請求項9に記載のシステム。
  16. 前記プロセッサは、
    前記分析されたデスティネーションプロセスのアドレス空間に悪意あるコードが検出された場合に、前記悪意あるコードよって使用されるURIを前記アンチウイルスソフトウェアによって判定し、
    前記悪意あるコードにより使用される前記判定されたURIの少なくとも一部を含むアンチウイルスレコードを前記アンチウイルスソフトウェアによって生成するようにさらに構成されている、請求項9に記載のシステム。
  17. コンピュータ上のマルウェアの検出するコンピュータ実行可能命令を格納する非一過性の記録媒体であって、
    前記コンピュータ上の信頼できないプログラムのプロセスを検出する命令と、
    前記信頼できないプログラムのプロセスによる、デスティネーションプロセスへのプロセス間関数呼出しを含む、関数呼出しを識別する命令と、
    前記信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となる前記デスティネーションプロセスのアドレス空間のコードのマルウェア分析を実行すべきかを判定する命令と、
    マルウェア分析を実行すべきであると判定された場合に、前記信頼できないプログラムのプロセスによるプロセス間関数呼出しの対象となる前記デスティネーションプロセスのアドレス空間の前記コードを前記ハードウェアプロセッサによって実行可能なアンチウイルスソフトウェアを用いて分析する命令と、
    を含む記録媒体。
  18. 検出されたプロセスによる関数呼出しを識別する命令は、
    前記関数呼出しの前記デスティネーションプロセスの識別子を判定する命令、
    前記デスティネーションプロセスの前記アドレス空間に書き込まれたメモリブロックのサイズを判定する命令、
    前記メモリブロック内の実行可能ファイルのヘッダの存在を判定する命令、
    前記デスティネーションプロセスが信頼できるプロセスであるかを判定する命令、
    プロセス間関数呼出しがダイナミックリンクライブラリに特化したメモリ領域の前記デスティネーションプロセスの実行可能コード上にコントロールが移管されたかを判定する命令、
    の1つ以上を含む、請求項17に記載の記録媒体。
  19. 前記デスティネーションプロセスのアドレス空間の前記コードのマルウェア分析を実行すべきかを判定するために、
    前記信頼できないプログラムに関する情報を収集する命令と、
    ヒューリスティックルールを関数呼出しを識別する工程で収集された情報および前記デスティネーションプロセスのアドレス空間の前記コードのマルウェア分析を実行すべきかを判定するために収集された前記信頼できないプログラムに関する情報に適用する命令と、
    をさらに含む、請求項18に記載の記録媒体。
  20. 前記収集された信頼できないプログラムに関する情報は、
    (i)前記信頼できないプログラムのユニークユーザに関する情報、
    (ii)前記信頼できないプログラムのユーザによる判明している初回実行からの時間、
    (iii)前記信頼できないプログラムの名前、
    (iv)前記ストレージデバイス内の前記信頼できないプログラムの場所、
    の少なくとも1つを含む、請求項18に記載の記録媒体。
JP2016093205A 2015-06-30 2016-05-06 ランダムアクセスメモリ内の悪質なコードを検出するためのシステムおよび方法 Active JP6259862B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2015125972/08A RU2589862C1 (ru) 2015-06-30 2015-06-30 Способ обнаружения вредоносного кода в оперативной памяти
RU2015125972 2015-06-30
US14/951,915 US9407648B1 (en) 2015-06-30 2015-11-25 System and method for detecting malicious code in random access memory
US14/951,915 2015-11-25

Publications (2)

Publication Number Publication Date
JP2017021779A true JP2017021779A (ja) 2017-01-26
JP6259862B2 JP6259862B2 (ja) 2018-01-10

Family

ID=56371361

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016093205A Active JP6259862B2 (ja) 2015-06-30 2016-05-06 ランダムアクセスメモリ内の悪質なコードを検出するためのシステムおよび方法

Country Status (4)

Country Link
US (2) US9407648B1 (ja)
EP (1) EP3113063B1 (ja)
JP (1) JP6259862B2 (ja)
RU (1) RU2589862C1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018186391A1 (ja) 2017-04-03 2018-10-11 株式会社野村総合研究所 検査システム、検査方法、およびコンピュータプログラム
JP2019195126A (ja) * 2018-05-01 2019-11-07 コニカミノルタ株式会社 画像処理装置および制御プログラム

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10560475B2 (en) 2016-03-07 2020-02-11 Chengdu Haicun Ip Technology Llc Processor for enhancing network security
US10489590B2 (en) 2016-03-07 2019-11-26 Chengdu Haicun Ip Technology Llc Processor for enhancing computer security
US11120106B2 (en) * 2016-07-30 2021-09-14 Endgame, Inc. Hardware—assisted system and method for detecting and analyzing system calls made to an operating system kernel
US10546117B1 (en) * 2016-11-15 2020-01-28 Symantec Corporation Systems and methods for managing security programs
US10599845B2 (en) * 2016-12-13 2020-03-24 Npcore, Inc. Malicious code deactivating apparatus and method of operating the same
JP6768530B2 (ja) * 2016-12-28 2020-10-14 デジタルア−ツ株式会社 情報処理装置及びプログラム
CN107273745B (zh) * 2017-04-21 2020-08-21 中国科学院软件研究所 一种动态链接库形式的恶意代码的动态分析方法
US11151251B2 (en) 2017-07-13 2021-10-19 Endgame, Inc. System and method for validating in-memory integrity of executable files to identify malicious activity
US11151247B2 (en) 2017-07-13 2021-10-19 Endgame, Inc. System and method for detecting malware injected into memory of a computing device
US10621348B1 (en) * 2017-08-15 2020-04-14 Ca, Inc. Detecting a malicious application executing in an emulator based on a check made by the malicious application after making an API call
US10810099B2 (en) * 2017-09-11 2020-10-20 Internatinal Business Machines Corporation Cognitive in-memory API logging
US10714172B2 (en) 2017-09-21 2020-07-14 HangZhou HaiCun Information Technology Co., Ltd. Bi-sided pattern processor
RU2660643C1 (ru) * 2017-09-29 2018-07-06 Акционерное общество "Лаборатория Касперского" Система и способ выявления вредоносного CIL-файла
RU2665910C1 (ru) * 2017-09-29 2018-09-04 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного кода в адресном пространстве процессов
US10713359B2 (en) 2017-09-29 2020-07-14 AO Kaspersky Lab System and method of identifying a malicious intermediate language file
US10691800B2 (en) * 2017-09-29 2020-06-23 AO Kaspersky Lab System and method for detection of malicious code in the address space of processes
RU2659738C1 (ru) * 2017-09-29 2018-07-03 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного скрипта
CN111480160B (zh) * 2018-01-31 2023-11-03 惠普发展公司,有限责任合伙企业 用于过程验证的系统、方法和介质
US11870811B2 (en) 2018-03-26 2024-01-09 Virsec Systems, Inc. Trusted execution security policy platform
US10810304B2 (en) * 2018-04-16 2020-10-20 International Business Machines Corporation Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
US11003777B2 (en) 2018-04-16 2021-05-11 International Business Machines Corporation Determining a frequency at which to execute trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
CN111782291A (zh) * 2020-06-12 2020-10-16 京东数字科技控股有限公司 一种测试页面的启动方法和装置
CN114363006A (zh) * 2021-12-10 2022-04-15 奇安信科技集团股份有限公司 基于WinRM服务的防护方法及装置
CN114282217A (zh) * 2021-12-22 2022-04-05 完美世界征奇(上海)多媒体科技有限公司 游戏外挂的检测方法和装置、存储介质、电子装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006134307A (ja) * 2004-11-08 2006-05-25 Microsoft Corp アンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステムおよび方法
JP2011233126A (ja) * 2010-04-28 2011-11-17 Electronics And Telecommunications Research Institute 正常プロセスに偽装挿入された悪性コード検出装置、システム及びその方法
JP2013526753A (ja) * 2010-05-25 2013-06-24 エフ−セキュア コーポレーション マルウェアスキャニング
JP2014182837A (ja) * 2013-03-19 2014-09-29 Trusteer Ltd マルウェア発見方法及びシステム
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

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10058543A1 (de) * 2000-07-14 2002-01-24 Temco Textilmaschkomponent Verfahren und Vorrichtung zur kontinuierlichen Behandlung von synthetischen Fäden in einer Wärmeaustauschkammer
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US8136155B2 (en) 2003-04-01 2012-03-13 Check Point Software Technologies, Inc. Security system with methodology for interprocess communication control
KR20040089386A (ko) * 2003-04-14 2004-10-21 주식회사 하우리 메모리를 감염시키는 바이러스의 치료방법, 프로그램을기록한 컴퓨터로 읽을 수 있는 기록매체 및 바이러스의치료장치
US8020141B2 (en) * 2004-12-06 2011-09-13 Microsoft Corporation Operating-system process construction
US8528087B2 (en) * 2006-04-27 2013-09-03 Robot Genius, Inc. Methods for combating malicious software
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US7870610B1 (en) * 2007-03-16 2011-01-11 The Board Of Directors Of The Leland Stanford Junior University Detection of malicious programs
US8099785B1 (en) * 2007-05-03 2012-01-17 Kaspersky Lab, Zao Method and system for treatment of cure-resistant computer malware
US9092823B2 (en) * 2007-06-01 2015-07-28 F-Secure Oyj Internet fraud prevention
AU2008202532A1 (en) * 2007-06-18 2009-01-08 Pc Tools Technology Pty Ltd Method of detecting and blocking malicious activity
US9378373B2 (en) * 2007-09-24 2016-06-28 Symantec Corporation Software publisher trust extension application
US20130276119A1 (en) * 2008-03-11 2013-10-17 Jonathan L. Edwards System, method, and computer program product for reacting to a detection of an attempt by a process that is unknown to control a process that is known
US8065567B1 (en) * 2009-03-03 2011-11-22 Symantec Corporation Systems and methods for recording behavioral information of an unverified component
US8612995B1 (en) 2009-03-31 2013-12-17 Symantec Corporation Method and apparatus for monitoring code injection into a process executing on a computer
US8701192B1 (en) * 2009-06-30 2014-04-15 Symantec Corporation Behavior based signatures
US8590045B2 (en) * 2009-10-07 2013-11-19 F-Secure Oyj Malware detection by application monitoring
KR101671795B1 (ko) * 2010-01-18 2016-11-03 삼성전자주식회사 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법
US8578487B2 (en) * 2010-11-04 2013-11-05 Cylance Inc. System and method for internet security
US8904537B2 (en) * 2011-05-09 2014-12-02 F—Secure Corporation Malware detection
US9065826B2 (en) * 2011-08-08 2015-06-23 Microsoft Technology Licensing, Llc Identifying application reputation based on resource accesses
US8978092B2 (en) * 2012-02-17 2015-03-10 Hewlett-Packard Development Company, L.P. Data leak prevention from a device with an operating system
RU2510530C1 (ru) * 2012-09-28 2014-03-27 Закрытое акционерное общество "Лаборатория Касперского" Способ автоматического формирования эвристических алгоритмов поиска вредоносных объектов
RU2514137C1 (ru) * 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ автоматической настройки средства безопасности
RU2514140C1 (ru) 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ увеличения качества обнаружений вредоносных объектов с использованием правил и приоритетов
CN103810424B (zh) * 2012-11-05 2017-02-08 腾讯科技(深圳)有限公司 一种异常应用程序的识别方法及装置
US8893222B2 (en) * 2012-11-13 2014-11-18 Auckland Uniservices Ltd. Security system and method for the android operating system
CN102982283B (zh) 2012-11-27 2015-07-22 蓝盾信息安全技术股份有限公司 一种杀死受保护的恶意计算机进程的系统及方法
CN103866252A (zh) 2012-12-18 2014-06-18 中国科学院兰州化学物理研究所 在活塞表面制备复合薄膜技术
EP2784716A1 (en) * 2013-03-25 2014-10-01 British Telecommunications public limited company Suspicious program detection
US9117080B2 (en) * 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
US9465936B2 (en) 2013-11-06 2016-10-11 Bitdefender IPR Management Ltd. Systems and methods for detecting return-oriented programming (ROP) exploits
CN103559439A (zh) 2013-11-19 2014-02-05 浪潮(北京)电子信息产业有限公司 一种缓冲区溢出检测方法及系统
EP2881883B1 (en) * 2013-12-05 2018-04-11 AO Kaspersky Lab System and method for reducing load on an operating system when executing antivirus operations
CN103679032B (zh) 2013-12-13 2017-05-17 北京奇虎科技有限公司 防御恶意软件的方法和装置
KR102017756B1 (ko) * 2014-01-13 2019-09-03 한국전자통신연구원 이상행위 탐지 장치 및 방법
US10091238B2 (en) * 2014-02-11 2018-10-02 Varmour Networks, Inc. Deception using distributed threat detection
US9305167B2 (en) * 2014-05-21 2016-04-05 Bitdefender IPR Management Ltd. Hardware-enabled prevention of code reuse attacks
US9710648B2 (en) * 2014-08-11 2017-07-18 Sentinel Labs Israel Ltd. Method of malware detection and system thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006134307A (ja) * 2004-11-08 2006-05-25 Microsoft Corp アンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステムおよび方法
JP2011233126A (ja) * 2010-04-28 2011-11-17 Electronics And Telecommunications Research Institute 正常プロセスに偽装挿入された悪性コード検出装置、システム及びその方法
JP2013526753A (ja) * 2010-05-25 2013-06-24 エフ−セキュア コーポレーション マルウェアスキャニング
JP2014182837A (ja) * 2013-03-19 2014-09-29 Trusteer Ltd マルウェア発見方法及びシステム
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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018186391A1 (ja) 2017-04-03 2018-10-11 株式会社野村総合研究所 検査システム、検査方法、およびコンピュータプログラム
US11074343B2 (en) 2017-04-03 2021-07-27 Nomura Research Institute, Ltd. Inspection system, inspection method, and computer program
US11741229B2 (en) 2017-04-03 2023-08-29 Nomura Research Institute, Ltd. Inspection system, inspection method, and computer program
JP2019195126A (ja) * 2018-05-01 2019-11-07 コニカミノルタ株式会社 画像処理装置および制御プログラム
JP7000978B2 (ja) 2018-05-01 2022-01-19 コニカミノルタ株式会社 画像処理装置および制御プログラム

Also Published As

Publication number Publication date
US9407648B1 (en) 2016-08-02
US20170004309A1 (en) 2017-01-05
EP3113063A1 (en) 2017-01-04
JP6259862B2 (ja) 2018-01-10
EP3113063B1 (en) 2017-09-13
US10242186B2 (en) 2019-03-26
RU2589862C1 (ru) 2016-07-10

Similar Documents

Publication Publication Date Title
JP6259862B2 (ja) ランダムアクセスメモリ内の悪質なコードを検出するためのシステムおよび方法
JP6639588B2 (ja) 悪意あるファイルを検出するシステムおよび方法
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
JP6700351B2 (ja) プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法
RU2571723C2 (ru) Система и способ для снижения нагрузки на операционную систему при работе антивирусного приложения
JP6482489B2 (ja) 脆弱なアプリケーションによるファイルのオープンを制御するシステム及び方法。
US8042186B1 (en) System and method for detection of complex malware
RU2653985C2 (ru) Способ и система обнаружения вредоносного программного обеспечения путем контроля исполнения программного обеспечения запущенного по сценарию
EP2515250A1 (en) System and method for detection of complex malware
JP6588945B2 (ja) 仮想マシンにおける悪意のあるファイルを分析するシステム及び方法
JP2018041438A (ja) ファイル中の悪意のあるコードの検出システム及び方法
CN105760787B (zh) 用于检测随机存取存储器中的恶意代码的系统及方法
US9111096B2 (en) System and method for preserving and subsequently restoring emulator state
RU2724790C1 (ru) Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине
JP6568564B2 (ja) ファイルのウイルス対策スキャン実行のため仮想マシン上にログを生成するシステム及び方法
JP2017123143A (ja) ユーザ機器上でマルウェアを検出するためにアンチウィルス記録セットを生成するシステム及び方法
US10055579B2 (en) System resources for sandboxing
JP2019169121A (ja) ウィルス対策レコードを作成するシステムと方法
US9202053B1 (en) MBR infection detection using emulation
RU2649794C1 (ru) Система и способ формирования журнала в виртуальной машине для проведения антивирусной проверки файла
EP2881883B1 (en) System and method for reducing load on an operating system when executing antivirus operations
RU2592383C1 (ru) Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти
RU2774042C1 (ru) Система и способ выявления потенциально вредоносных изменений в приложении
RU2757409C1 (ru) Эмулятор и способ эмуляции
RU2595510C1 (ru) Способ исключения процессов из антивирусной проверки на основании данных о файле

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171124

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: 20171205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171211

R150 Certificate of patent or registration of utility model

Ref document number: 6259862

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250