JP2019061636A - ファイルのウイルス対策スキャン実行のため仮想マシン上にログを生成するシステム及び方法 - Google Patents

ファイルのウイルス対策スキャン実行のため仮想マシン上にログを生成するシステム及び方法 Download PDF

Info

Publication number
JP2019061636A
JP2019061636A JP2017199004A JP2017199004A JP2019061636A JP 2019061636 A JP2019061636 A JP 2019061636A JP 2017199004 A JP2017199004 A JP 2017199004A JP 2017199004 A JP2017199004 A JP 2017199004A JP 2019061636 A JP2019061636 A JP 2019061636A
Authority
JP
Japan
Prior art keywords
thread
memory page
physical memory
file
guest physical
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
JP2017199004A
Other languages
English (en)
Other versions
JP6568564B2 (ja
Inventor
ブイ. ピンティスキー ウラディスラフ
V Pintiysky Vladislav
ブイ. ピンティスキー ウラディスラフ
ブイ. アニキン デニス
V Anikin Denis
ブイ. アニキン デニス
ワイ. コビチェフ デニス
Y Kobychev Denis
ワイ. コビチェフ デニス
ワイ. ゴロフキン マキシム
Y Golovkin Maxim
ワイ. ゴロフキン マキシム
ブイ. ブツゾフ ヴィタリ
V Butuzov Vitaly
ブイ. ブツゾフ ヴィタリ
ブイ. カラソフスキー ドミトリー
V Karasovsky Dmitry
ブイ. カラソフスキー ドミトリー
エー. キルサノフ ドミトリー
A Kirsanov Dmitry
エー. キルサノフ ドミトリー
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 JP2019061636A publication Critical patent/JP2019061636A/ja
Application granted granted Critical
Publication of JP6568564B2 publication Critical patent/JP6568564B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F21/53Monitoring 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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data

Abstract

【課題】悪意のあるファイルを特定するためのシステムおよび方法を提供する。【解決手段】仮想マシンの(仮想)プロセッサ内のゲストプロセスおよびスレッドの実行を引き起こす仮想マシン内のファイルを開く。第1のスレッドの実行中に、仮想マシンのゲスト物理メモリページの変更を伴うイベントを特定する310。ログの分析に基づいて変更されたゲスト物理メモリページを決定し320、変更されたゲスト物理メモリページへの制御の転送がいつ発生したかを識別する330。分析モジュールは、セキュリティアプリケーションによる分析のための結果ログを生成する340。前記結果ログは、変更されたゲスト物理メモリページ内のスレッドの実行中に発生するイベントを示す情報と、スレッドが実行されている仮想プロセッサのコンテキストデータとを含む。その後、分析モジュールは、有害性のためのファイルの分析を実行する350。【選択図】図3

Description

本開示は、一般に、悪意のあるファイルを識別する解決方法、より詳細には、ファイルのウイルス対策スキャンを実施するためのログを形成するシステムおよび方法に関する。
近年、悪質なソフトウェアに感染したユーザーのデータと電子デバイスのユーザーとの両方に被害を及ぼすことを目的とした、悪意のあるソフトウェア(コンピュータウイルス、トロイの木馬、インターネットワームなど)が増加している。この被害は、ユーザーファイルの損傷または除去、仮想通貨の「採掘」のためのユーザーのコンピューティングデバイスのリソースの不正利用、ユーザーの電子機密データ(例えば、書状、画像、ログイン情報、パスワード、銀行カード情報)の盗難、および他の動作によって引き起こされる可能性がある。さらに、悪意のあるソフトウェアは、絶えず変化している。これは、セキュリティアプリケーションに対する新しい攻撃および防御メカニズムを用いるからである。悪意のあるコードの難読化(元のテキストまたは実行可能プログラムコードをその機能は保持しつつ、分析、動作アルゴリズムの理解、または、逆コンパイル中の修正ができない形にすること)やエミュレーションの相殺メカニズムの使用(たとえば、悪意あるソフトウェアはエミュレーションでいつ実行されたかを認識する機能を備え、その悪意ある行為は明示しない)など、さまざまなメカニズムが使用されている。
さらに、悪意のあるソフトウェアは、しばしば、その悪意のある挙動をすぐには示さない。そのかわりに、たくさんのAPI機能の呼び出し(たとえば、数百万回)や、多数のサイクル(たとえば、数十億回の繰り返し)の実行をし、実行を開始してから一定の時間が経過すると即座にその実行を停止する(たとえば、1時間が経過すると当該「スリープ機能」が作動する)。今日のユーザーのコンピューティングデバイスは、高性能およびマルチコアプロセッサ(マルチプロセッサシステムもある)を有しているので、ユーザーは、コアのうちの1つの負荷状態には気付かないか、またはコアのうちの1つの負荷状態を重視することはできない。さらに、ユーザーは、通常、電源をオンにして1時間以上経過してからデバイスを使用する。したがって、悪意のあるソフトウェアは、起動された場合にすぐにその挙動を示す必要はない。
このようなアプローチに対処するために、セキュリティアプリケーション(ウイルス対策アプリケーションなど)のメーカーは、ファイルの安全な実行のために独立した環境の形で仮想マシンを使用する技術を採用している。多くの場合、そのような仮想マシンはサンドボックスとして知られている。そのような仮想マシンを制御するハイパーバイザーは、そこで実行されるアプリケーションによって呼び出される機能を中断するためのメカニズムを含む。
セキュリティアプリケーションは、例えば署名および/またはヒューリスティック分析などの技術のような、悪意のあるソフトウェアを検出するための様々な方法を採用することに留意されたい。分析プロセスでファイルの有害性がないとは判断されなかった場合(たとえば、信頼できるソフトウェアメーカーのデジタル署名がない場合)、セキュリティアプリケーションは、前述の仮想マシンでの動作を分析するためにそのファイルを引き渡す。転送されたファイルは仮想マシン内で実行され、さまざまな機能の呼び出しによって実行されるそのアクションおよびイベントは、その実行中に中断され、中断されたイベントおよびアクションはログに保存され、その後セキュリティアプリケーションまたはコンピュータセキュリティの専門家によって分析される。
したがって、イベントおよびアクションをインターセプトおよび集約するための既知のシステムは、2つのステップで動作する。第1のステップでは情報が集められ、第2番のステップでは情報が分析される。
既知のシステムおよび方法の欠点の1つは、ファイルの実行プロセス中に実行プロセスに影響を与えないことである。たとえば、分析中のファイルから起動されたプロセス(または、分析中のファイルを開いたアプリケーションから起動されたプロセス)は、1時間実行を停止し、保存されたパスワードを持つファイルにアクセスして電子メールクライアントまたはメッセンジャー(メッセージを交換するためのプログラム)を攻撃する。しかし、攻撃されたプログラムが仮想マシンに存在しないため、ファイルの有害な動作は特定されない。これは、パスワードを有する必要なファイルが見つからないため、悪意のあるファイルが実行自体を終了し、悪意のある挙動を示さないためである。
したがって、ファイルのウイルス対策スキャンを実行するためのログを形成することによって、悪意のあるファイルを特定するためのシステムおよび方法がここに開示される。本開示において説明されるシステムおよび方法は、有害性のためのファイルの分析中に仮想マシン内のファイルの実行プロセスに影響を及ぼすことを可能にする。
例示としての1つの形態では、ファイルのウイルス対策スキャンを実行するためのログを生成するための方法であって、仮想マシン内でファイルを開くステップであって、仮想マシンの仮想プロセッサ内に第1のスレッドを有するゲストプロセスの実行を含むステップと、第1のスレッドの実行中に、少なくとも1つのゲスト物理メモリページの変更を含む第1のイベントを特定するステップと、ログの分析に基づいて、少なくとも1つの変更されたゲスト物理メモリページを決定するステップと、少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップと、ファイルのオープンに関連してログを生成するステップとを備え、ログは、第1のイベントを示す情報と、第1のスレッドが実行されている仮想プロセッサのコンテキストデータとを含む方法が提供される。
例示としての1つの形態では、生成されたログの分析に基づいて、仮想マシンで開かれたファイルが有害であると判断するステップをさらに含む方法が提供される。
例示としての1つの形態では、前記少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップは、さらに、第2のスレッドが、変更されたゲスト物理メモリページに含まれる仮想アドレスからコードを実行していることを検出するステップを含み、前記第2のスレッドは、メモリページを変更したスレッドと同じプロセスから起動される方法が提供される。
例示としての1つの形態では、前記少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップは、さらに、第2のスレッドが、変更されたゲスト物理メモリページからコードを実行していることを検出するステップを含み、前記第2のスレッドは、メモリページを変更したスレッドと異なるプロセスから起動される方法が提供される。
例示としての1つの形態では、前記第1のスレッドの実行中に、前記少なくとも1つのゲスト物理メモリページの変更を含む前記第1のイベントを特定するステップは、API(Application Programming Interface)関数の第1スレッドによるシステムコールを検出するステップを含む方法が提供される。
例示としての1つの形態では、前記ログの分析に基づいて、前記少なくとも1つの変更されたゲスト物理メモリページを決定するステップは、さらに、変更されたゲスト物理メモリページの識別子を決定する方法が提供される。
例示としての1つの形態では、さらに、第1のスレッドの実行中に少なくとも1つのゲスト物理メモリページを変更しない第2のイベントを検出することに応答して、第2のイベントをログに記録することを控えるステップを含む方法が提供される。
例示としての1つの形態では、ファイルのウイルス対策スキャンを実行するためのログを生成するためのシステムであって、仮想マシンのゲスト物理メモリページを格納するように構成されたメモリデバイスと、プロセッサとを備え、前記プロセッサは、仮想マシン内でファイルを開くステップであって、仮想マシンの仮想プロセッサ内に第1のスレッドを有するゲストプロセスの実行を含むステップと、前記第1のスレッドの実行中に、少なくとも1つのゲスト物理メモリページの変更を含む第1のイベントを特定するステップと、前記ログの分析に基づいて、少なくとも1つの変更されたゲスト物理メモリページを決定するステップと、少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップと、前記ファイルのオープンに関連して前記ログを生成するステップとを実行するように構成され、前記ログは、前記第1のイベントを示す情報と、前記第1のスレッドが実行されている仮想プロセッサのコンテキストデータとを含むシステムが提供される。
例示としての1つの形態では、ファイルのウイルス対策スキャンを実行するためのログを生成するためのコンピュータが実行可能な命令を含む非一時的なコンピュータ可読媒体であって、仮想マシン内でファイルを開くステップであって、仮想マシンの仮想プロセッサ内に第1のスレッドを有するゲストプロセスの実行を含むステップと、前記第1のスレッドの実行中に、少なくとも1つのゲスト物理メモリページの変更を含む第1のイベントを特定するステップと、前記ログの分析に基づいて、少なくとも1つの変更されたゲスト物理メモリページを決定するステップと、少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップと、前記ファイルのオープンに関連して前記ログを生成するステップとを有する命令を含み、前記ログは、前記第1のイベントを示す情報と、前記第1のスレッドが実行されている仮想プロセッサのコンテキストデータとを含むコンピュータ可読媒体が提供される。
上述した実施形態の簡単な概要は、本発明の基本的な理解を提供するのに役立つ。この説明は、全ての考えられる態様の詳細な概要ではなく、全ての態様の鍵となるものや重要な要素を特定することを意図していないし、本発明の全ての態様を描写することも意図していない。その唯一の目的は、前置きとして、1つ又は複数の態様を表し、その後、本発明のより詳細な説明を導くものである。これを達成するため、本発明の1つ又は複数の態様が説明され、特許請求の範囲において主張される。
添付の図面は、本明細書に組み込まれ、本明細書の一部を構成し、本開示の1つ以上の例示としての態様を示し、詳細な説明とともに、それらの原理および実施形態を説明する役割を果たす。
図1は、仮想マシン内の有害性についてファイルを分析するための例示としての動作を示すブロック図である。
図2は、例示としての態様による、ファイルのウイルス対策スキャンを行うためのログを生成するシステムを示すブロック図である。
図3は、例示としての態様によるファイルのウイルス対策スキャンを行うためのログを生成する方法を示すフローチャートである。
図4は、分析のために隔離された環境において1つ以上の仮想マシンの実行を支援するように構成されたコンピュータシステムを示すブロック図である。
図5は、開示されたシステムおよび方法が例示としての態様に従って実装され得る汎用コンピュータシステムのブロック図である。
例示としての態様は、本明細書において、例示としての態様によるシステム、方法、およびコンピュータプログラム製品に関連して説明される。当業者であれば、以下の説明は例示としてのものにすぎず、何らかの限定をすることを意図するものではないことを理解するであろう。他の態様は、本開示の恩恵を受ける当業者には容易に示唆されるであろう。添付図面に図示された例示の態様に対する詳細な参照が施されており、同一の参照符号は、図面および以下の説明にわたって可能な限り、同一または類似の項目を参照するために使用される。
仮想マシンにおける有害性のためにファイルを分析するためのシステムモジュールは、本開示では、現実世界のデバイス、システム、コンポーネント、およびハードウェアの使用によって実現されるコンポーネントのグループを意味する。それは、たとえば、集積マイクロ回路(特定用途向け集積回路、ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、マイクロプロセッサシステムおよびプログラム命令のセットのようなソフトウェアとハードウェアの組合せの形態、または、神経シナプスチップなどを指す。そのようなシステムモジュールの機能は、ハードウェアのみによって実現されてもよく、また、システムモジュールの機能のいくつかがソフトウェアによって実現され、残りがハードウェアによって実現されるような組み合わせの形態で実現されてもよい。ある態様では、モジュールの一部または全部は、(図5に示されているような)汎用コンピュータのプロセッサ上で実行されてもよい。システムコンポーネント(各モジュール)は、単一のコンピューティングデバイス内で実現されてもよく、いくつかの相互接続されたコンピューティングデバイス間に展開されてもよい。
図1は、仮想マシン内の有害性についてファイルを分析するための例示としての動作を示すブロック図である。システム101は、ファイル100の有害性の分析を実行するように構成されたセキュリティモジュール110を含むことができる。システム101は、コンピューティングデバイス上の仮想マシン120の実行をサポートするように構成されたハイパーバイザー115を含むことができる。ファイルの安全な実行のための環境としての形態の仮想マシン120は、ホストオペレーティングシステムのリソースをゲストオペレーティングシステムに提供するハードウェアとソフトウェアのセット(複合体)であり、ゲストオペレーティングシステムは、ホストオペレーティングシステムへのリンクを有しない。
一般的に、有害性を分析するために、ファイル100は、ファイルの実行のための隔離された環境の形態として仮想マシン120内で開かれる。セキュリティモジュール110は、ファイル100を仮想マシン120に転送する。例示としての一態様では、仮想マシン120は、セキュリティモジュール110によって構築される。別の例示としての態様では、仮想マシン120は、セキュリティモジュール110によって以前に構築された仮想マシンから選択される。
ファイル100は、システム101の記憶装置に離散的にデータを記録するための任意のコンピュータ資源であってもよい。例えば、ファイル100は、
− 実行可能なファイル形式のプログラム、
− プログラムによって使用されるデータ、たとえばダイナミックライブラリ、
− 任意のインタプリタによって実行されるスクリプト(MicrosoftPowerShell(登録商標)ファイルなど)、
− 実行スクリプトを含むファイル(MicrosoftOffice(登録商標)またはAdobeAcrobat(登録商標)ファイル形式など)、
− 文書に埋め込まれた、または、(例えば、スクリプト要素の"src"属性を介した)参照リンクによってインポートされた、実行可能コード(JavaScriptなど)を含むマークアップ言語(HTML)の文書などのウェブページ、
− 画像、
− 使用時(たとえば、他のアプリケーションによって実行または開かれた時)にコンピューティングデバイスのユーザーのデータに害を及ぼすことが知られている他の種類のファイル、などであってもよい。
例示としての一態様では、ファイル100は、リンク(URLまたはインジケータなど)であってもよい。
一般的には、ファイル100の分析は、仮想マシン120のオペレーティングシステムにおけるファイルのオープン後に行われる。ファイル100のオープンは、以下のいずれかを意味する。
−ファイル100が実行可能である場合、ファイル100の実行、
−ファイル100が実行可能でない場合、アプリケーションによりファイル100を開くこと。
ファイル100のオープンにより、プロセス122が生成され、仮想マシン120内でプロセス122の実行が開始される。このプロセス122に対して少なくとも1つのスレッドが生成される。
1つの例示としての態様では、セキュリティモジュール110および仮想マシン120のモニター(以下、ハイパーバイザー115とする)は、ユーザーのコンピューティングデバイス上で実行される。仮想マシン120は、ハイパーバイザー115の制御下で動作する。1つの例示としての態様では、セキュリティモジュール110は、コンピューティングデバイス上で実行されるセキュリティアプリケーションまたは他のソフトウェアコンポーネント(例えば、プラグインや拡張機能)であってもよい。そのようなアプリケーションとして、たとえば、アンチウィルスアプリケーション、マルウェア対策アプリケーション、トロイの木馬ウイルスメールフィルタなどが挙げられる。別の態様では、セキュリティモジュール110およびハイパーバイザー115は、リモートサーバー(または異なるサーバー)上で、またはクラウドサービスとして実行される。この場合、セキュリティモジュール110は、外部資源から(例えば、ユーザーのコンピューティングデバイス上で動作するセキュリティモジュール110から)ファイル100を取得し、ファイル100のオープンが発生する仮想マシン120に転送する。
1つの例示としての態様では、ハイパーバイザー115は、インターセプトモジュール130を含む。インターセプトモジュール130は、ハイパーバイザー115のモジュール、コンポーネントまたは機能部分であってもよい。インターセプトモジュール130は、仮想マシン120におけるファイル100のオープン時に生成されるプロセス122のスレッドによるAPI関数の呼び出しを傍受し、API関数を呼び出したスレッドが実行されるプロセッサのコンテキストを読み取る。プロセッサのコンテキストは少なくともプロセッサのレジスタの値を含むことに注意すべきである。ある態様では、インターセプトモジュール130は、以前に読み取られたデータを使用して、コールスタックも読み取る。以前に読み取られたデータは、コールスタックに対応するプロセッサのレジスタ(例えば、スタックポインタレジスタ(%ESP)とベースポインタレジスタ(%EBP)からのアドレスのメモリ)に含まれる。さらに、インターセプトモジュール130は、上記データを集約するように構成される。インターセプトモジュール130は、上記データを、例えば後述するデータベースやログ150に保存する。そして、インターセプトモジュール130は、上記データを、ファイル100のオープン時に生成されたプロセス122の実行後に、セキュリティモジュール110に送信する。セキュリティモジュール110は、次に、ファイル100の有害性に関して、インターセプトモジュール130からのデータに基づいて判定する。一般的に、判定は、保存されたデータの分析の後に行われる。その判定は、例えば、ファイル100のオープン時に生成されるプロセス122のスレッドによるAPI関数の呼び出しに使用されるシーケンスおよびパラメータに基づく。1つの例示としての態様では、判定が行われない場合、インターセプトモジュール130によってセーブされたデータは、セキュリティモジュール110によって、コンピュータセキュリティの専門家などの第三者を含む外部のリソースまたはサービス(図1に示さず)に送信される。
図2は、本開示の例示としての態様による、ファイルのウイルス対策スキャンを行うためのログ150を生成するシステム200を示すブロック図である。
提案されたシステム200は、インターセプトモジュール130と共に分析モジュール140も含むという点が、本開示の特徴である。1つの例示としての態様では、ハイパーバイザー115は、分析モジュール140を含む。別の例示としての態様では、分析モジュール(モジュール141として示す)は、セキュリティモジュール110のコンポーネント(モジュール、または機能部品)であってもよい。
一般的には、インターセプトモジュール130は、ファイル100のオープン時に生成されたプロセス122のスレッド内のイベントを傍受するように構成される。
インターセプトできるイベントは、たとえば、以下を含む。
−スレッドによるAPI関数の呼び出し、
−API関数からの戻り値、
−システムコール、すなわち、特定の操作を実行するための、スレッドによる(ゲスト)オペレーティングシステムのカーネルへのアクセス、
−システムコールからの戻り値、
−ゲストオペレーティングシステムからのメッセージや通知などの警告(たとえば、スレッドの生成、プロセスの生成、モジュールのロードなどに関して)。
イベントを傍受すると、インターセプトモジュール130によってスレッドの実行が停止される。この傍受は、仮想マシン120のゲストオペレーティングシステムにおいて、システムのハードウェアの分離とユーザーの権限レベルとを実現する様々な防衛リングで可能であることに留意されたい。つまり、イベントの傍受は、カーネルレベル(カーネルモード)またはアプリケーションレベル(ユーザーモード)で発生し得る。スレッドの実行は、スレッドの命令の実行を停止することによって停止してもよい。
一般的には、ファイル100のオープン時に生成されるプロセス122のスレッドの実行中に、インターセプトモジュール130は、スレッドによって呼び出されるAPI関数のコーディングルールを決定するように構成されていることに留意されたい。これにより、呼び出されたAPI関数へのパラメータの送信のためのプロセッサのレジスタの使用を明確に決定することができる。したがって、例えば、コールのパラメータは、汎用レジスタECX(第1パラメータ)およびEDX(第2パラメータ)の内部で見つけることができ、その他のパラメータはスタック(レジスタESP)の内部で見つけることができる。さらに、コーディングルールにより、戻り値を明確に決定することができる。たとえば、API関数が "0"の値を返す場合、これは汎用レジスタEAX内で行われる処理となる。説明のために、本開示は特定のレジスタ(EAX、ESPなど)およびインテル(登録商標)x86アーキテクチャの命名法を参照するが、本開示の態様は他のプラットフォームの類似のデータ構造と共に使用され得る。
傍受されたイベントおよびプロセッサのコンテキストは、インターセプトモジュール130によってログ150に保存される。保存後、ログ150は、インターセプトモジュール130によって分析モジュール140に送信される。
分析モジュール140は、テンプレートのセットを使用するように構成されてもよい。1つの例示としての態様では、テンプレートはデータ構造(ツリーなど)に保存される。テンプレートは、仮想マシン120の起動中に分析モジュール140によってデータ構造に追加されてもよい。別の例示としての態様では、テンプレートは、分析モジュール140によってデータベースから選択される。
一般的には、テンプレートには1つ以上のルールが含まれる。ある態様では、各ルールに優先度が割り当てられる。 他の態様では、ルールは体系的にテンプレートに追加される。
ルールは、論理オペランド(たとえば、条件分岐または論理和)の使用に基づく論理条件を表す。さらに、ルールは互いに関連していてもよい。1つの例示としての態様では、ルールは保存されたプロセッサのコンテキストを使用する。別の例示としての態様では、ルールは、プロセッサのコンテキストの変更のロジックと、プロセッサのコンテキストを変更するためのデータとを含む。さらに別の態様では、ルールは、分析モジュール140が、オープンされたファイル100を有害であると認識するロジックを含む。
前述のルールの例を以下に示す。
ルール1:もし、FileOpen("$ SystemDrive:¥ <ランダム名>")が呼び出された場合、処理を継続する。
ルール2:もし、ルール1が満たされ、かつ、FileWrite("$ SystemDrive:¥ <ランダム名>"、テキスト文字列)が呼び出された場合、処理を継続する。
上記のルールセットと一致する例では、ファイル100のオープン時に生成されるプロセス122のスレッドは、システムディスクのルートにあるランダムな(要求された)第2のファイル100Bにアクセスする。この第2のファイル100Bは、プログラムによって生成された、ランダムに生成された文字および文字列からなる名前(例えば、"<ランダム名>")を有することができる。要求されたファイル100Bを生成する(または読み取る)イベントは、それ自体は有害ではないが、しばしば悪意のある機能の開始であるとされている。したがって、分析モジュール140は、上記のルール1および2に基づいて、そのスレッドの実行を継続することを決定する。その後、要求されたファイル100Bは、FileWrite()API関数の呼び出しを介して書き込まれる。要求されたファイル100Bのタイプ、およびそこに書き込まれた情報によって、要求されたファイル100Bは悪意のある機能を有する可能性がある。
システムの動きおよびルールについてのより詳細な例を以下に示す。
ルール10:ファイル100が署名されていない場合、処理を継続する。
ルール11:ルール10が満たされ、かつ、ファイル100がFileOpen( "$ SystemDrive:¥ <ランダム名>")を呼び出した場合、戻り値を "成功"に置き換えて処理を継続する。
ルール12:ルール11が満たされ、かつ、ファイル100がFileWrite( "$ SystemDrive:¥ <ランダム名>")を呼び出し、ファイル100のオープン時に生成されたプロセスによってメモリバッファが使用されている場合、ファイル100を有害であると認識し、処理を終了する。
上記ルールの例では、「ファイル100」がより規則的で明確なルールの表現に使用されていることに留意すべきである。一般的な場合、ルールは、ファイル100のオープン時に生成されたプロセスのスレッドを使用する。
上記のルール10〜12を満たす例示としてのシナリオでは、ファイル100は(ファイルの真正性および完全性を暗号的に検証するための既知の技術を使用して)デジタル署名されていない。すなわち、ファイル100の提供者(作成者)は不明である。その後、実行プロセスにおいてファイル100のオープン時に生成されたプロセス122のスレッドは、システムディスクのルートにあるランダムな(第2の)ファイル100Bにもアクセスする。しかし、(ゲスト)オペレーティングシステムは通常、システムディスクのルートにファイルを作成することを禁じている(悪意のあるファイルは、ファイルが作成されるまで他のルートを試すことができる)。したがって、分析モジュール140は、ルールに基づいて、戻り値を「成功」に置き換えることを決定する。戻り値は、インターセプトモジュール130によって置き換えられる。そして、ファイル100のオープン時に生成されたプロセスのスレッドの実行を継続する。その後、作成したファイル100Bに書き込みを行う。作成されたファイルにメモリバッファが書き込まれた場合、そのファイルは有害な(つまり、悪意のある機能を持つ)可能性がある。分析モジュール140は、(第1の)ファイル100の分析を中止することが望ましいと判断することができる。そして、作成された(第2の)ファイル100Bについて分析を行い、その分析結果に基づいて、ファイル100の有害性を判断する。
上記ルールは、例示にすぎないことに留意すべきである。一般的な場合、ルールはより大量になり得る。例えば、異なるパスによるファイルの作成を追跡し、作成されたファイルの拡張子を追跡し、作成されたファイルのタイプを分析し、ファイルの作成を許可し、ファイル100を開くときに作成されたプロセスのスレッドのさらなる挙動(例えば、既知の方法でオペレーティングシステムの自動起動リストに作成されたファイルを追加すること等)を追跡し、ファイル100と他のファイルとの両方のスレッドによる属性の変更を追跡し、インターネットへのスレッドのアクセスを追跡する。
1つの例示としての態様では、分析モジュール140は、別個のデータベースに保持された、分析に特化したデータで動作する。このデータは、テンプレートのルールで使用してもよい。
そのようなルールは、例えば、以下のようになる。
ルール21:ファイル100がウェブリソースにアクセスし、かつ、ウェブリソースが悪意のあるカテゴリに割り当てられている場合、ファイル100を悪意があると認識する。
なお、上記の例では、以下に留意すべきである。すなわち、仮想マシンにおけるファイル100のオープン時に生成されるプロセスのスレッドによってアクセスされるウェブリソースのカテゴリは、既知の分類方法によって予め決定され(割り当てられ)、別個のデータベースに保存される。
1つの例示としての態様では、ルールは、分析の深さ、またはイベントの集約の深さの条件を含む。
例えば:
ルール31:ファイル100がサイクルを実行し、かつ、API関数の呼び出しのイベントのコンテキストが変化しない場合、API関数からの戻りのイベントを傍受しない。
この例(ルール31)では、イベントの傍受およびコンテキストの読み取りの回数を減らすことにより、ファイル100の実行を高速化することが可能となる。ファイル100のオープン時に生成されたプロセス122のスレッドが、10億回の繰り返しのオーダーの継続時間を有するサイクルを呼び出した場合、例えば、CreateWindow()、またはCloseWindow()の呼び出しで構成されている場合、システムはRule31を使用して各イベントのコンテキストを傍受して保存することを控えることができる。つまり、上記に対応したインターセプトモジュール130は、少なくとも40億回(ここで、サイクルは2つのAPI関数を呼び出し、イベントはAPI関数の呼び出し、および戻りであるとする。)の処理を省略し、プロセッサのコンテキストを数回程度読み取ることとなる。
1つの例示としての態様では、ルールはサイクル変数を増加させるための条件を含む。例えば、
ルール41:ファイル100がサイクルを実行し、かつ、API関数の呼び出しのイベントのコンテキストが変化しない場合、サイクル変数の値を10回の繰り返しごとに5回増加させる。
上記の例のルール41は、仮想マシン120内でファイル100のオープン時に生成されるプロセスのスレッドによるサイクルの実行をスピードアップするために使用することができる。分析モジュール140は、実行中のスレッドが循環的に特定のイベントを呼び出すと判断する。この場合、アンチエミュレーションのための既知のシナリオの1つであるため、何も発生しない。ファイル100のオープン時に生成されたプロセスのスレッドがその機能を可能な限り完全に明示するためには、サイクルをできるだけ速く終了し、処理を続行する必要がある。 上記のルールのおかげで、サイクルは数倍速く終了する。
1つの例示としての態様では、インターセプトモジュール130は、ファイル100のオープン時に生成されたプロセスのスレッドの実行中に、仮想メモリ内(以下、テキスト内、またはメモリ内と記載する)のページの変更を伴うイベントの発生を発見する。一般的に、メモリ内のページの変更を伴うイベントはスレッドによるAPI関数の呼び出しを構成する。メモリページ内のデータの変更は、例えば、WriteProcessMemory()の呼び出しによって、あるいはSetWindowLong()を使用してデータを書き込むことによって、直接的に行うことができる。この場合、たとえば、ウィンドウの記述子(ハンドル)を発見することが可能である。別のプロセスのメモリへの書き込みは、オペレーティングシステムの観点からは完全に正当な動作になる可能性があることに留意されたい。しかし、悪意のあるプログラムは、悪意のあるコードを挿入するためにこのようなメカニズムを採用することが非常に多いことが判明している。メモリページおよびプロセッサのコンテキストの変更を伴うイベントは、インターセプトモジュール130によってログ150に保存される。
分析モジュール140は、どの(ゲスト物理)メモリページが変更されたかを決定するように構成することができる。メモリページの変更に関連するイベントが保存されたログ150とプロセッサのコンテキストとを分析することにより、分析モジュール140は、変更されたメモリページの識別子(アドレスまたは番号など)を発見することができる。
1つの例示としての態様では、分析モジュール140は、変更されたメモリページの識別子をインターセプトモジュール130に送信するように構成される。インターセプトモジュール130は同様に、分析モジュール140から識別子を受信した変更されたページのいずれか1つに対する制御の転送を識別する。制御をメモリページに転送することは、一般に、スレッドがそのメモリページに含まれる仮想アドレスによってコードを実行していることを意味する。1つの例示としての態様では、変更されたページからのコードを実行しているスレッドが、メモリページを変更したスレッドと同じプロセスから起動された場合に、制御の転送の識別が行われる。別の例示としての態様では、変更されたページからのコードを実行しているスレッドが、スレッドがメモリページを変更したプロセスとは異なるプロセスから起動された場合に、制御の転送の識別が行われる。したがって、ファイル100のオープン時に生成されたプロセス122のスレッドがメモリページを変更した場合であって、このページが同じプロセス(自身のメモリページの変更は、署名解析への防御や実行可能コードの静的解析に対する対策として悪意のあるアプリケーションによって使用される)、または異なるプロセス(たとえば、explorer.exe)に属している場合、変更されたメモリページに制御が転送されるときにプロセスのイベントを傍受する必要がある。
一般的には、変更されたメモリページへの制御の転送が行われた後、インターセプトモジュール130および分析モジュール140は、上記の動作を実行する。
上記の例として、
規則51:ファイル100のオープン時に生成されたプロセスが少なくとも1つのメモリページ内のデータを変更する場合、データが変更されたページの少なくとも1つに制御を移したときにイベントを傍受する。
規則51を呼び出す方法は、他のアプリケーションのメモリページを変更するアプリケーションの分析中にシステムリソースを節約することを可能にする。例えば、上述したアンチエミュレーションシナリオ(ユーザーのデータに損害を与えない多数のAPIファンクション・コール)は分析されず、分析モジュール140は、ログ150内にすべてのコールを保存しない(すなわち、保存を控える)。この場合、唯一の分析は、変更されたメモリページに制御が転送されるかどうか、および仮想メモリの変更されたページ内のコードに悪意があるかどうかである。インターセプトモジュール130によって定式化されたログ150は、メモリページを変更するイベント、および、変更されたメモリページからのコードを実行する際に発生するイベントを得ることに終始する。ログ150を生成するこのアプローチの技術的成果は、潜在的に悪意のあるファイルの挙動を、より効率的な分析のために、かつ現在の防御策およびアンチエミュレーション技術を克服するような方法で、ログファイルに記録することである。
したがって、インターセプトモジュール130からログ150を取得した後の分析モジュール140は、発生したイベント、すなわちログ150に(現在および以前に)保存されているイベントおよびイベントの発生したデータ(例えば、特定の事象に対応するプロセッサのコンテキスト)を分析するように構成されている。分析は、起こっているイベントとテンプレートとの比較を含むことができる。 イベントは、テンプレート内に保存された各ルールと(テンプレート内のルールの順序または優先順位に応じて)順次比較される。比較に基づいて、分析モジュール140は、少なくとも1つの決定を行うことができる。
−ファイル100を悪意があると認識する決定、
−ファイル100のオープン時に生成されたプロセスの実行を中止する決定、
−プロセッサのコンテキストを変更する決定、
−次のイベントを待つ決定。
分析モジュール140は、前述の決定を組み合わせることが可能であることに留意すべきである。たとえば、ファイル100は悪意があると認識された場合、ある態様では、ファイル100のオープン時に生成されたプロセスの実行を中止することができる。別の態様では、ファイル100のオープン時に生成されたプロセスの実行を継続することができる。すなわち、プロセスのスレッドの動作をさらに分析するために、次のイベントを待ち、ログ150を生成することができる。ある態様では、ファイル100は悪意があると認識されるが、プロセッサのコンテキストが変更され、次のイベントが待たれる。このような一連の動作は、ファイル100の機能のより完全な開示のために必要とされる。たとえば、ファイル100は、悪意があるコードを含むさらに別のファイルが分析プロセスで作成された後に、悪意があると認識される。しかし、特定の場合(たとえば、スレッドが悪質なウェブリソースから何かをダウンロードしようとする場合など)、イベントを傍受し続けること、および、ファイル100のオープン時に生成されるプロセスのスレッドの後続の挙動を分析するためにログ150をとりつづけることは、合理的である。さらに別の態様では、たとえファイル100が悪意あるものとして認識されていなくても(たとえば、実行中にウインドウが開き、ユーザーからの入力を待って)、ファイル100のオープン時に生成された処理の実行を停止することが決定される。
行われた決定は、分析モジュール140によってインターセプトモジュール130に送られる。インターセプトモジュール130は、行われた決定に対応するアクションを実行するように構成されてもよい。分析モジュール140が次のイベントを待つことを決定した場合、インターセプトモジュール130によって中断されたスレッドの実行が再開される。
ある態様では、分析モジュール140は、仮想マシン120の再起動を開始する。例えば、ファイル100の分析の過程で新しいファイルが作成され、そのファイルへのパスが仮想マシン120のゲストオペレーティングシステムの自動起動に追加された場合、分析モジュール140は、作成されたファイルの有害性の機能を精査するために、再起動する。
一般的には、仮想マシン120内のファイル100の分析を完了した後、インターセプトモジュール130は、ログ150をセキュリティモジュール110に送信してもよい。ファイル100の分析は、自然な方法(ファイル100のオープン時に生成されたプロセスのスレッド自体がそれらの実行を終了したときに)、または分析モジュール140の決定(ファイル100のオープン時に生成されたプロセスを停止する決定)によって終了してもよい。
したがって、上述のシステムは、分析モジュール140からの決定、より具体的にはファイル100を悪意があると認識したかどうかの決定に基づいて、ファイル100の有害性を明らかにすることができる。
図3は、例示としての態様による、ファイルのウイルス対策スキャンを実行するためのログを生成する方法を示すフローチャートである。例示された方法の以下の説明は、上記のシステムおよび構成要素を参照することに留意されたい。ファイルのウイルス対策スキャンを実行するためのログを生成する一般的な場合には、セキュリティモジュール110は、ファイル100を仮想マシン120に送信する。ファイル100の分析は、仮想マシン120のオペレーティングシステムでのファイル100のオープン後に行われる。いくつかの例示としての態様では、ファイル100のオープンは、ファイルが実行可能であれば、ファイルの実行を含むことができる。他の態様では、ファイルのオープンは、ファイルが実行可能でない場合、仮想マシン120で実行されるゲストアプリケーションによってファイルを開くことを含むことができる。
最初のステップ310において、インターセプトモジュール130は、上記ファイルのオープン時に生成されたプロセスのスレッドの実行中に、少なくとも1つのメモリページの変更を伴うイベントの発生を識別する。一般的には、メモリページの変更を伴うイベントは、スレッドによるAPI関数の呼び出しであってもよい。そのイベントおよびプロセッサのコンテキストは、インターセプトモジュール130によってログ150に保存される。
ステップ320において、分析モジュール140は、ログ150に保存されたデータの分析によって、少なくとも1つの変更されたメモリページを決定することができる。1つの例示としての態様では、変更されたページの識別子が変更されたメモリページを決定するために使用される。変更されたページの識別子は、分析モジュール140によってインターセプトモジュール130に送られる。
ステップ330において、インターセプトモジュール130は、ファイルのオープン時に生成されたプロセスのスレッドの実行中に、少なくとも1つの変更されたメモリページへの制御の転送を識別することができる。メモリページへの制御の転送は、一般的に、スレッドがそのメモリページに含まれる仮想アドレスからコードを実行していることを意味する。1つの例示としての態様では、変更されたページからコードを実行しているスレッドが、メモリページを変更したスレッドと同じプロセスによって起動された場合に、制御の転送の識別が行われる。別の例示としての態様では、変更されたページからコードを実行しているスレッドが、スレッドがメモリページを変更したプロセスとは異なるプロセスによって起動された場合に、制御の転送の識別が行われる。
ステップ340において、分析モジュール140は、以下が保存されるログ150を生成することができる。
上記のファイルのオープン時に生成されたプロセスのスレッドの実行中に、変更されたメモリページで発生するイベント。
ログファイルに保存されたイベントの発生中に読み取られた、上述のファイルのオープン時に生成されたプロセスのスレッドが実行されているプロセッサのコンテキスト。
1つの例示としての態様では、ステップ340でログ150を生成した後のステップ350において、分析モジュール140によって分析され、仮想マシン120でオープンされているファイルの有害性が決定される。
図4は、分析のために隔離された環境で、1つ以上の仮想マシンの実行を支援するように構成された例示としてのシステム400を示すブロック図である。図示のように、システム400は、一般的に、1つ以上の物理コンピュータ401を含む。仮想マシン120は、システムハードウェア402およびハイパーバイザー115(仮想マシンモニタまたはバーチャライザとも呼ばれる)を含む物理コンピュータのホストプラットフォーム上に構築することができる。ハイパーバイザー115は、仮想マシン120のゲストオペレーティングシステム422に仮想オペレーティングプラットフォーム(仮想ハードウェア430として示す)を提供し、ゲストオペレーティングシステム422の実行を管理する。ハイパーバイザー115は、基礎となるシステムハードウェア402上で、またはシステムハードウェア402上にインストールされたホストオペレーティングシステム(図示せず)内で動作するアプリケーションまたはコンポーネントとして、直接実行することができる。
物理コンピュータ401は、物理的なサーバー、ホスト、コンピュータサーバー、デスクトップ、ラップトップ、ハンドヘルドデバイス、または本明細書で説明される仮想化を実施するのに十分な任意の他の電子デバイスとすることができる。図示のように、物理コンピュータ401のシステムハードウェア402は、コンピュータ処理装置(CPU)404、メモリ406(例えば、ランダムアクセスメモリ)、および記憶装置408(例えば、ハードディスクドライブ)を含むことができる。システム400は、当業者には理解されるように、追加のデバイス、ソフトウェアモジュールなどを含むことができるが、本開示の態様を不必要に不明瞭にしないように本明細書では示されていない。
例示としての態様では、仮想マシン120は、ゲストOS422を含む仮想システムハードウェア430およびゲストシステムソフトウェアを含む。ハイパーバイザー115は、1つまたは複数のゲストアプリケーション424およびゲストOS422を含むVM120内で実行するゲストソフトウェアと、ホストマシンの基礎となるシステムハードウェアプラットフォーム402内のハードウェアコンポーネントおよびデバイスとの間のインターフェースとして機能する。仮想システムハードウェア430は、仮想CPU431、仮想メモリ432、仮想ディスク434、および仮想ネットワークインターフェース(図示せず)などの他の仮想ハードウェアコンポーネントを含む。当業者には理解されるように、仮想マシン120のすべての仮想ハードウェアコンポーネントをソフトウェアで実装して、対応する物理コンポーネントをエミュレートすることができることに留意されたい。
図4に示すように、ファイル100は、仮想ディスク434に格納されてもよい。仮想マシン120内のファイル100をオープンすることで、ゲストオペレーティングシステム422によってプロセス122が生成される。このプロセス122のために(仮想CPU431上で実行される)少なくとも1つのスレッド435が生成される。ファイル100が実行可能である場合、ファイル100のオープンは、ゲストオペレーティングシステム422によるファイル100の実行を含み、この場合、プロセス122はファイル100のプログラムコードを含む。ファイル100が実行可能でない場合、ファイル100のオープンは、ゲストアプリケーション424によりファイル100を開くことを含み、この場合、プロセス122は、ゲストアプリケーション424のインスタンスである。
動作中、インターセプトモジュール130は、スレッド435の実行中に、vRAM432の少なくとも1つのゲスト物理メモリページ437の変更を伴うイベントの発生を識別することができる。このイベントは、システムコール(API関数)を行うスレッド435に関連する可能性がある。そのイベントおよびプロセッサのコンテキスト(vCPU431)は、インターセプトモジュール130によってログ150に保存される。分析モジュール140は、ログ150の分析に基づいて、少なくとも1つの変更された(ゲスト物理)メモリページ437、およびそれらのそれぞれの識別子を決定することができる。インターセプトモジュール130は、スレッド435の実行中に、少なくとも1つの変更されたメモリページへの制御の転送を識別することができる。メモリページへの制御の転送は、一般に、スレッドがその(ゲスト)物理メモリページに含まれる(ゲスト)仮想メモリアドレスからコードを実行していることを意味する。分析モジュール140は、以下の情報を保存することを含むログ150を生成することができる。その情報とは、変更されたメモリページ437内の前述のファイル100のオープン時に生成されたプロセス122のスレッド435の実行中に発生するイベントと、ログに保存されているイベントの発生中に読み取られた、プロセス122のスレッド435が実行される仮想プロセッサ431のコンテキストとを含む。分析モジュール140は、ログ150に基づいて、仮想マシン120内でオープンされているファイルの有害性を判定する。
図5は、ファイルのウイルス対策スキャンを実行するためのログを生成するシステム及び方法の態様が例示としての態様に従って実施され得る汎用コンピュータシステム20を示すブロック図である。コンピュータシステム20は、例えば、先に説明したシステム101、200、および物理サーバー401に対応する。
図示のように、コンピュータシステム20(パーソナルコンピュータ又はサーバ)は、CPU21と、システムメモリ22と、CPU21に関連付けられたメモリを含む様々なシステムコンポーネントを接続するシステムバス23とを含む。当業者に理解されるように、システムバス23は、バスメモリ又はバスメモリコントローラ、周辺バス、及び他のバスアーキテクチャと相互作用するローカルバスを含むことができる。システムメモリは、永久メモリ(ROM)24及びランダムアクセスメモリ(RAM)を含む。基本入出力システム(BIOS)26は、ROM24を使用してオペレーションシステムをロードする際のように、コンピュータシステム20の要素間で情報を転送するための基本的な手順を記憶する。
ハードディスク27、磁気ディスクドライブ28、及び光学式のドライブ30は、ハードディスクインターフェース32、磁気ディスクインターフェース33、及び光学式のドライブインターフェース34それぞれを介してシステムバス23と接続される。ドライブ及び対応するコンピュータ情報メディアは、コンピュータ命令、データ構造体、プログラムモジュール、及びコンピュータシステム20の他のデータを蓄積するための電源依存のモジュールである。
当業者であれば、コンピュータによって読み取り可能な形式でデータを記憶することのできる任意のタイプのメディア56(ソリッド・ステート・ドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ(RAM)等)を使用できることが理解されよう。
コンピュータシステム20は、オペレーティングシステム35が格納されるファイルシステム36と、追加のプログラムアプリケーション37と、他のプログラムモジュール38と、プログラムデータ39とを有する。コンピュータシステム20のユーザーは、キーボード40、マウス42、又は当業者に知られた任意の他の入力デバイス(非限定的な例:マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ等)を用いて命令を入力する。このような入力デバイスは、典型的には、シリアルポート46を介してコンピュータシステム20に接続され、シリアルポートはシステムバスに接続される。ただし、当業者であれば、入力デバイスを、パラレルポート、ゲームポート、又はユニバーサル・シリアル・バス(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(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)等の、又は例えばモジュールの機能を実行するマイクロプロセッサシステムや命令セットによる等、ハードウェアとソフトウェアの組み合わせとして実装され得る。これらは、実行中にマイクロプロセッサシステムを特定の機器に変換する。モジュールは、ハードウェア単体により促進される一定の機能とハードウェア及びソフトウェアの組み合わせによって促進される他の機能という2つの組み合わせとして実施されてもよい。モジュールの少なくとも一部又は全部は、汎用コンピュータのプロセッサにおいて実行できる(図5を用いて上記において詳述したもの等)。したがって、各モジュールは様々な適当な構成で実現することができて、ここに例示した特定の実装に限られるものではない。
なお、実施形態の通常の機能のうちの全てをここで開示しているわけではない。本発明のいずれの実施形態を開発する場合においても、開発者の具体的な目標を達成するためには実装に係る多くの決定が必要であり、これらの具体的な目標は実施形態及び開発者ごとに異なることに留意されたい。このような開発努力は、複雑で時間を要するものであるが、本発明の利益を享受し得る当業者にとっては当然のエンジニアリングであると理解されたい。
さらに、本明細書で使用される用語又は表現は、あくまでも説明のためであり、限定するものではない。つまり、本明細書の用語又は表現は、関連する技術分野の当業者の知識と組み合わせて、ここに示される教示及び指針に照らして当業者によって解釈されるべきであると留意されたい。明示的な記載がない限り、明細書又は特許請求の範囲内における任意の用語に対して、一般的でない又は特別な意味を持たせることは意図されていない。
本明細書で開示された様々な態様は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。さらに、複数の態様及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。

Claims (21)

  1. ファイルのウイルス対策スキャンを実行するためのログを生成するための方法であって、
    仮想マシン内でファイルを開くステップであって、仮想マシンの仮想プロセッサ内に第1のスレッドを有するゲストプロセスの実行を含むステップと、
    前記第1のスレッドの実行中に、少なくとも1つのゲスト物理メモリページの変更を含む第1のイベントを特定するステップと、
    前記ログの分析に基づいて、少なくとも1つの変更されたゲスト物理メモリページを決定するステップと、
    少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップと、
    前記ファイルのオープンに関連して前記ログを生成するステップとを備え、
    前記ログは、前記第1のイベントを示す情報と、前記第1のスレッドが実行されている仮想プロセッサのコンテキストデータとを含む、方法。
  2. 請求項1に記載の方法であって、
    生成された前記ログの分析に基づいて、仮想マシンで開かれたファイルが有害であると判断するステップをさらに含む、方法。
  3. 請求項1に記載の方法であって、
    前記少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップは、さらに、
    第2のスレッドが、変更されたゲスト物理メモリページに含まれる仮想アドレスからコードを実行していることを検出するステップを含み、
    前記第2のスレッドは、メモリページを変更したスレッドと同じプロセスから起動される、方法。
  4. 請求項1に記載の方法であって、
    前記少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップは、さらに、
    第2のスレッドが、変更されたゲスト物理メモリページからコードを実行していることを検出するステップを含み、
    前記第2のスレッドは、メモリページを変更したスレッドと異なるプロセスから起動される、方法。
  5. 請求項1に記載の方法であって、
    前記第1のスレッドの実行中に、前記少なくとも1つのゲスト物理メモリページの変更を含む前記第1のイベントを特定するステップは、
    API(Application Programming Interface)関数の第1スレッドによるシステムコールを検出するステップを含む、方法。
  6. 請求項1に記載の方法であって、
    前記ログの分析に基づいて、前記少なくとも1つの変更されたゲスト物理メモリページを決定するステップは、さらに、
    変更されたゲスト物理メモリページの識別子を決定する、方法。
  7. 請求項1に記載の方法であって、さらに、
    前記第1のスレッドの実行中に少なくとも1つのゲスト物理メモリページを変更しない第2のイベントを検出することに応答して、第2のイベントをログに記録することを控えるステップを含む、方法。
  8. ファイルのウイルス対策スキャンを実行するためのログを生成するためのシステムであって、
    仮想マシンのゲスト物理メモリページを格納するように構成されたメモリデバイスと、
    プロセッサとを備え、
    前記プロセッサは、
    仮想マシン内でファイルを開くステップであって、仮想マシンの仮想プロセッサ内に第1のスレッドを有するゲストプロセスの実行を含むステップと、
    前記第1のスレッドの実行中に、少なくとも1つのゲスト物理メモリページの変更を含む第1のイベントを特定するステップと、
    前記ログの分析に基づいて、少なくとも1つの変更されたゲスト物理メモリページを決定するステップと、
    少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップと、
    前記ファイルのオープンに関連して前記ログを生成するステップとを実行するように構成され、
    前記ログは、前記第1のイベントを示す情報と、前記第1のスレッドが実行されている仮想プロセッサのコンテキストデータとを含む、システム。
  9. 請求項8に記載のシステムであって、
    前記プロセッサは、さらに、生成された前記ログの分析に基づいて、仮想マシンで開かれたファイルが有害であると判断するステップを実行するように構成される、システム。
  10. 請求項8に記載のシステムであって、
    前記少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップを実行するように構成される前記プロセッサは、さらに、
    第2のスレッドが、変更されたゲスト物理メモリページに含まれる仮想アドレスからコードを実行していることを検出するステップを実行するように構成され、
    前記第2のスレッドは、メモリページを変更したスレッドと同じプロセスから起動される、システム。
  11. 請求項8に記載のシステムであって、
    前記少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップを実行するように構成される前記プロセッサは、さらに、
    第2のスレッドが、変更されたゲスト物理メモリページからコードを実行していることを検出するステップを実行するように構成され、
    前記第2のスレッドは、メモリページを変更したスレッドと異なるプロセスから起動される、システム。
  12. 請求項8に記載のシステムであって、
    前記第1のスレッドの実行中に、前記少なくとも1つのゲスト物理メモリページの変更を含む前記第1のイベントを特定するステップは、
    アプリケーションプログラミングインタフェース(API)関数の第1スレッドによるシステムコールを検出するステップを含む、システム。
  13. 請求項8に記載のシステムであって、
    前記ログの分析に基づいて、前記少なくとも1つの変更されたゲスト物理メモリページを決定するステップは、さらに、
    変更されたゲスト物理メモリページの識別子を決定する、システム。
  14. 請求項8に記載のシステムであって、
    前記プロセッサは、さらに、
    前記第1のスレッドの実行中に少なくとも1つのゲスト物理メモリページを変更しない第2のイベントを検出することに応答して、第2のイベントをログに記録することを控えるステップを実行するように構成される、システム。
  15. ファイルのウイルス対策スキャンを実行するためのログを生成するためのコンピュータが実行可能な命令を含む非一時的なコンピュータ可読媒体であって、
    仮想マシン内でファイルを開くステップであって、仮想マシンの仮想プロセッサ内に第1のスレッドを有するゲストプロセスの実行を含むステップと、
    前記第1のスレッドの実行中に、少なくとも1つのゲスト物理メモリページの変更を含む第1のイベントを特定するステップと、
    前記ログの分析に基づいて、少なくとも1つの変更されたゲスト物理メモリページを決定するステップと、
    少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップと、
    前記ファイルのオープンに関連して前記ログを生成するステップとを有する命令を含み、
    前記ログは、前記第1のイベントを示す情報と、前記第1のスレッドが実行されている仮想プロセッサのコンテキストデータとを含む、コンピュータ可読媒体。
  16. 請求項15に記載のコンピュータ可読媒体であって、
    生成された前記ログの分析に基づいて、仮想マシンで開かれたファイルが有害であると判断するステップを有する命令をさらに含む、コンピュータ可読媒体。
  17. 請求項15に記載のコンピュータ可読媒体であって、
    前記少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップを有する命令は、さらに、
    第2のスレッドが、変更されたゲスト物理メモリページに含まれる仮想アドレスからコードを実行していることを検出するステップを有する命令を含み、
    前記第2のスレッドは、メモリページを変更したスレッドと同じプロセスから起動される、コンピュータ可読媒体。
  18. 請求項15に記載のコンピュータ可読媒体であって、
    前記少なくとも1つのゲスト物理メモリページへの制御の転送を特定するステップを有する命令は、さらに、
    第2のスレッドが、変更されたゲスト物理メモリページからコードを実行していることを検出するステップを有する命令を含み、
    前記第2のスレッドは、メモリページを変更したスレッドと異なるプロセスから起動される、コンピュータ可読媒体。
  19. 請求項15に記載のコンピュータ可読媒体であって、
    前記第1のスレッドの実行中に、前記少なくとも1つのゲスト物理メモリページの変更を含む前記第1のイベントを特定するステップを有する命令は、
    アプリケーションプログラミングインタフェース(API)関数の第1スレッドによるシステムコールを検出するステップを有する、コンピュータ可読媒体。
  20. 請求項15に記載のコンピュータ可読媒体であって、
    前記ログの分析に基づいて、前記少なくとも1つの変更されたゲスト物理メモリページを決定するステップを有する命令は、さらに、
    変更されたゲスト物理メモリページの識別子を決定するステップを有する、コンピュータ可読媒体。
  21. 請求項15に記載のコンピュータ可読媒体であって、さらに、
    前記第1のスレッドの実行中に少なくとも1つのゲスト物理メモリページを変更しない第2のイベントを検出することに応答して、第2のイベントをログに記録することを控えるステップを有する命令を含む、コンピュータ可読媒体。
JP2017199004A 2017-09-25 2017-10-13 ファイルのウイルス対策スキャン実行のため仮想マシン上にログを生成するシステム及び方法 Active JP6568564B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/714,284 US10546120B2 (en) 2017-09-25 2017-09-25 System and method of forming a log in a virtual machine for conducting an antivirus scan of a file
US15/714,284 2017-09-25

Publications (2)

Publication Number Publication Date
JP2019061636A true JP2019061636A (ja) 2019-04-18
JP6568564B2 JP6568564B2 (ja) 2019-08-28

Family

ID=60083210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017199004A Active JP6568564B2 (ja) 2017-09-25 2017-10-13 ファイルのウイルス対策スキャン実行のため仮想マシン上にログを生成するシステム及び方法

Country Status (4)

Country Link
US (2) US10546120B2 (ja)
EP (1) EP3460703B1 (ja)
JP (1) JP6568564B2 (ja)
CN (1) CN109558207B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022104878A (ja) * 2020-12-30 2022-07-12 アクロニス・インターナショナル・ゲーエムベーハー ソフトウェアへの悪意あるプロセスの注入を防止するためのシステムおよび方法
JP7419278B2 (ja) 2021-02-10 2024-01-22 Kddi株式会社 仮想マシン管理装置、仮想マシン管理方法及び仮想マシン管理プログラム
JP7455197B2 (ja) 2019-09-23 2024-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーション インテグリティ監視のためのミューテーション・イベント検出

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11070632B2 (en) * 2018-10-17 2021-07-20 Servicenow, Inc. Identifying computing devices in a managed network that are involved in blockchain-based mining
TWI726449B (zh) * 2019-10-18 2021-05-01 臺灣銀行股份有限公司 網路攻擊分析方法
CN111176968B (zh) * 2019-12-30 2023-04-25 东软集团股份有限公司 一种生成日志文件的方法、装置及相关产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009093615A (ja) * 2007-10-04 2009-04-30 Korea Electronics Telecommun 仮想環境を利用した非実行ファイル内のエクスプロイトコード分析方法及び装置
US20120066762A1 (en) * 2010-09-13 2012-03-15 Rade Todorovic System and method of whitelisting parent virtual images
JP2016526730A (ja) * 2013-07-05 2016-09-05 ビットディフェンダー アイピーアール マネジメント リミテッド 仮想マシンにおけるマルウェア検出のためのプロセス評価
WO2017009415A1 (en) * 2015-07-14 2017-01-19 Bitdefender Ipr Management Ltd Computer security systems and methods using asynchronous introspection exceptions

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493837B1 (en) * 1999-07-16 2002-12-10 Microsoft Corporation Using log buffers to trace an event in a computer system
US20040225877A1 (en) * 2003-05-09 2004-11-11 Zezhen Huang Method and system for protecting computer system from malicious software operation
US7779472B1 (en) 2005-10-11 2010-08-17 Trend Micro, Inc. Application behavior based malware detection
US8510838B1 (en) * 2009-04-08 2013-08-13 Trend Micro, Inc. Malware protection using file input/output virtualization
US8479286B2 (en) 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
CN103839003B (zh) * 2012-11-22 2018-01-30 腾讯科技(深圳)有限公司 恶意文件检测方法及装置
GB2516087A (en) * 2013-07-11 2015-01-14 Ibm Virtual Machine Backup
US10055254B2 (en) * 2013-07-12 2018-08-21 Bluedata Software, Inc. Accelerated data operations in virtual environments
US9607146B2 (en) * 2013-09-18 2017-03-28 Qualcomm Incorporated Data flow based behavioral analysis on mobile devices
US9703726B2 (en) 2014-06-24 2017-07-11 Bitdefender IPR Management Ltd. Systems and methods for dynamically protecting a stack from below the operating system
US20160048679A1 (en) 2014-08-18 2016-02-18 Bitdefender IPR Management Ltd. Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine
CN105117649B (zh) * 2015-07-30 2018-11-30 中国科学院计算技术研究所 一种用于虚拟机的防病毒方法与系统
US10255432B2 (en) * 2015-11-23 2019-04-09 Armor Defense Inc. Detecting malicious instructions on a virtual machine using profiling
RU2628921C1 (ru) * 2016-03-18 2017-08-22 Акционерное общество "Лаборатория Касперского" Система и способ выполнения антивирусной проверки файла на виртуальной машине
US20170289191A1 (en) * 2016-03-31 2017-10-05 Acalvio Technologies, Inc. Infiltration Detection and Network Rerouting

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009093615A (ja) * 2007-10-04 2009-04-30 Korea Electronics Telecommun 仮想環境を利用した非実行ファイル内のエクスプロイトコード分析方法及び装置
US20120066762A1 (en) * 2010-09-13 2012-03-15 Rade Todorovic System and method of whitelisting parent virtual images
JP2016526730A (ja) * 2013-07-05 2016-09-05 ビットディフェンダー アイピーアール マネジメント リミテッド 仮想マシンにおけるマルウェア検出のためのプロセス評価
WO2017009415A1 (en) * 2015-07-14 2017-01-19 Bitdefender Ipr Management Ltd Computer security systems and methods using asynchronous introspection exceptions

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7455197B2 (ja) 2019-09-23 2024-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーション インテグリティ監視のためのミューテーション・イベント検出
JP2022104878A (ja) * 2020-12-30 2022-07-12 アクロニス・インターナショナル・ゲーエムベーハー ソフトウェアへの悪意あるプロセスの注入を防止するためのシステムおよび方法
JP7353346B2 (ja) 2020-12-30 2023-09-29 アクロニス・インターナショナル・ゲーエムベーハー ソフトウェアへの悪意あるプロセスの注入を防止するためのシステムおよび方法
JP7419278B2 (ja) 2021-02-10 2024-01-22 Kddi株式会社 仮想マシン管理装置、仮想マシン管理方法及び仮想マシン管理プログラム

Also Published As

Publication number Publication date
EP3460703A1 (en) 2019-03-27
EP3460703B1 (en) 2020-11-25
CN109558207B (zh) 2023-05-26
CN109558207A (zh) 2019-04-02
US11048795B2 (en) 2021-06-29
JP6568564B2 (ja) 2019-08-28
US10546120B2 (en) 2020-01-28
US20190095615A1 (en) 2019-03-28
US20200117796A1 (en) 2020-04-16

Similar Documents

Publication Publication Date Title
US10642973B2 (en) System and method of analysis of files for maliciousness and determining an action
JP6706273B2 (ja) インタープリタ仮想マシンを用いた挙動マルウェア検出
JP6568564B2 (ja) ファイルのウイルス対策スキャン実行のため仮想マシン上にログを生成するシステム及び方法
US9405899B2 (en) Software protection mechanism
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
JP6326103B2 (ja) エミュレータを組み合わせることにより、悪意のある実行ファイルであってインタープリタを有する実行ファイルを検出するためのシステム及び方法
RU2589862C1 (ru) Способ обнаружения вредоносного кода в оперативной памяти
JP6700351B2 (ja) プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法
US9135443B2 (en) Identifying malicious threads
US20170090929A1 (en) Hardware-assisted software verification and secure execution
RU2724790C1 (ru) Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине
US11361072B2 (en) Runtime detection of browser exploits via injected scripts
RU2649794C1 (ru) Система и способ формирования журнала в виртуальной машине для проведения антивирусной проверки файла
CN113821297A (zh) 仿真器和仿真方法
CN110659478B (zh) 在隔离的环境中检测阻止分析的恶意文件的方法
EP3361406A1 (en) System and method of analysis of files for maliciousness in a virtual machine
RU2592383C1 (ru) Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти
EP4312401A1 (en) Methods and systems for analyzing environment-sensitive malware with coverage-guided fuzzing
JP6498413B2 (ja) 情報処理システム、情報処理装置、制御サーバ、生成サーバ、動作制御方法及び動作制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180501

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190802

R150 Certificate of patent or registration of utility model

Ref document number: 6568564

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