JP2019133470A - 挙動判別方法、挙動判別装置及びプログラム - Google Patents

挙動判別方法、挙動判別装置及びプログラム Download PDF

Info

Publication number
JP2019133470A
JP2019133470A JP2018015901A JP2018015901A JP2019133470A JP 2019133470 A JP2019133470 A JP 2019133470A JP 2018015901 A JP2018015901 A JP 2018015901A JP 2018015901 A JP2018015901 A JP 2018015901A JP 2019133470 A JP2019133470 A JP 2019133470A
Authority
JP
Japan
Prior art keywords
program
access information
behavior
flag
normal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018015901A
Other languages
English (en)
Inventor
村 廉 木
Ren Kimura
村 廉 木
井 大 史 浅
Daishi Asai
井 大 史 浅
井 裕 介 土
Yusuke Doi
井 裕 介 土
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.)
Preferred Networks Inc
Original Assignee
Preferred Networks Inc
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 Preferred Networks Inc filed Critical Preferred Networks Inc
Priority to JP2018015901A priority Critical patent/JP2019133470A/ja
Priority to US16/262,804 priority patent/US20190236268A1/en
Publication of JP2019133470A publication Critical patent/JP2019133470A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】深層機械学習を用い、オーバーヘッドが少ない挙動判別方法を提供する。【解決手段】挙動判別方法は、検査対象となるプログラムを仮想化環境上で動作させるステップS200と、前記プログラムが前記仮想化環境上で動作している間に、少なくとも、当該プログラムが仮想アドレス空間の各アドレスを読みだしたか否かを示す第1フラグの情報、及び、当該仮想アドレス空間の各アドレスに書き込みをしたか否かを示す第2フラグの情報の何れか1つに基づいて、前記プログラムの挙動の判別に必要となるメモリのアクセス情報を生成するステップS202と、前記アクセス情報に基づいて前記プログラムの挙動が正常であるか異常であるかを推定するステップS206と、を備える。【選択図】図4

Description

本発明は、挙動判別方法、挙動判別装置及びプログラムに関する。
プログラムが正常な挙動を行うか、マルウェア等のように異常なルーチンが挿入されているかを判別するために、シミュレータ、エミュレータ上でプログラムを実行し、実行中の挙動を機械学習により判別する手法が研究されている。しかしながら、マルウェアによっては、シミュレータ等において実行されると当該プログラムがシミュレータ等で実行されていることを検知し、マルウェアとしての挙動を停止するものがあるため、正常ではない挙動の検知が困難である場合がある。
別の手法として、メモリアクセスを利用し挙動が不正なプログラムの検知するものがある。この手法では、一例として、全メモリアクセスを取得してヒストグラムを生成して挙動を判別するが、計算機の負荷が大きいものとなる。
米国特許第8800052号明細書
そこで、本発明の実施形態は、深層機械学習を用いたオーバーヘッドが少ない挙動判別方法、挙動判別装置及びプログラムを提案する。
一実施形態に係る挙動判別方法は、検査対象となるプログラムを仮想化環境上で動作させるステップと、前記プログラムが前記仮想化環境上で動作している間に、少なくとも、当該プログラムが仮想アドレス空間の各アドレスを読みだしたか否かを示す第1フラグの情報、及び、当該仮想アドレス空間の各アドレスに書き込みをしたか否かを示す第2フラグの情報の何れか1つに基づいて、前記プログラムの挙動の判別に必要となるメモリのアクセス情報を生成するステップと、前記アクセス情報に基づいて前記プログラムの挙動が正常であるか異常であるかを推定するステップと、を備える。
一実施形態によれば、深層機械学習を用い、オーバーヘッドが少ない方法で、不正プログラムの挙動を判定することができる。
一実施形態に係る挙動判別装置の機能を示すブロック図。 一実施形態に係る挙動判別装置のハードウェア構成の一例を示す図。 一実施形態に係る学習の処理の流れを示すフローチャート。 一実施形態に係る推定の処理の流れを示すフローチャート。 アクセス情報の一例を示す図。 一実施形態に係る挙動判別装置の機能を示すブロック図。 アクセス情報の推定の一例を示す図。
(第1実施形態)
図1は、本実施形態に係る挙動判別装置の機能を示すブロック図である。挙動判別装置1は、入力部100と、処理部102と、記憶部104と、アクセス情報生成部106と、モデル生成部108と、挙動判別部110と、プログラム保護部112と、出力部114と、を備える。挙動判別装置1は、検査対象となるプログラム(以下、検査対象プログラムと記載する。)を仮想化環境において動作させることにより、当該検査対象プログラムの挙動を判別する装置である。
入力部100は、検査対象プログラムの入力を受け付けるインタフェースである。さらに、入力部100は、当該プログラムのユーザや検査を行う管理者等からの指示等を受け付けるユーザインタフェース(UI)、例えば、キーボード、マウス等のハードウェア、及び、ディスプレイに表示された入力用のグラフィカルユーザインタフェース(GUI)を備えていてもよい。検査対象プログラムが入力された場合、入力部100は、検査対象プログラムを処理部102へと出力する。
処理部102は、検査対象プログラムを仮想化環境(VMM:Virtual Machine Manager)において動作させる。処理部102は、例えば、CPU(Central Processing Unit)を備え、種々の動作を制御し、処理を実行する。あるいは、CPU上において実行されるプログラムにより処理部102が実装されていてもよい。処理部102は、検査対象プログラムを動作させ、当該検査対象プログラムが記憶部104における仮想アドレス上のいずれの箇所にアクセスしたか、又は、いずれの箇所に書き込みを行ったかを、例えば、CPUのクロックに基づいたタイミングにおいて記憶させる。
記憶部104は、揮発性又は不揮発性の記憶装置を備え、種々のデータを格納する。例えば、記憶部104は、RAM(Random Access Memory)のような揮発性の一次記憶デバイスを備え、処理部102に構築されている仮想化環境において検査対象プログラムが動作している場合に、仮想アドレス空間と物理アドレス空間とのマッピング状況を示すページテーブルを格納する。
アクセス情報生成部106は、記憶部104に格納されているメモリの状態を取得し、検査に必要となるメモリのアクセス状態に関する情報であるアクセス情報を生成する。例えば、所定の時間間隔で、記憶部104に格納されているページテーブルを取得し、当該ページテーブルに記憶されているデータの抽出、変換等を行い、検査に用いるアクセス情報を生成する。
より具体的には、各ページテーブルに格納されている、仮想アドレス空間内の所定のアドレス範囲(ページ)にアクセス(読み込み、或いは、読み込み及び/又は書き込み)をしたか否かを示すフラグ(以下、第1フラグと記載する。)、及び、あるアドレス範囲に書き込みをしたかを示すフラグ(以下、第2フラグと記載する。)を取得する。このように、アクセス情報は、アクセスしたか否かだけではなく、書き込みまで行ったかのみに基づいて取得するものであってもよい。
例えば、CPUに搭載されているMMU(Memory Management Unit)がこれらのフラグ情報をアクセス状態に基づいて書き換える。アクセス情報生成部106は、MMUに書き換えられたページテーブルを参照して、アクセス情報を生成する。このように、メモリ領域をページ単位、例えば、4KiBの単位として、アクセス情報を取得する。
このアクセス情報生成部106は、処理部102が備えられているCPU上に備えられたプログラムにより実装されていてもよい。アクセス情報生成部106は、取得したアクセス情報をモデル生成部108又は挙動判別部110へと出力する。
モデル生成部108は、アクセス情報生成部106が生成したアクセス情報に基づいて、VMM上のプログラムの挙動が正常であるか、異常であるかを判別する挙動判別モデルを学習により生成する。生成された挙動判別モデルは、挙動判別部110へと出力される。なお、モデル生成部108は、必ずしも挙動判別装置1内に備えられている必要は無く、外部にあるモデル生成部により生成されたモデルが挙動判別部110により取得されるものであってもよい。
挙動判別部110は、アクセス情報生成部106が生成したアクセス情報に基づいて、仮想化環境において動作している検査対象プログラムの仮想アドレス空間におけるアクセスパターンを解析し、検査対象プログラムの挙動のクラスタリングを行う。すなわち、検査対象プログラムの挙動が、正常でクラスに属するか、異常であるクラスに属するかの確率を算出し、検査対象プログラムの挙動を判別する。挙動判別部110は、あらかじめモデル生成部108により生成された挙動判別モデルを備えていてもよく、挙動判別モデルにアクセス情報生成部106が生成した時系列に沿ったアクセス情報を入力することにより、挙動を判別してもよい。
プログラム保護部112は、挙動判別部110が判別した挙動に関する情報を取得し、検査対象プログラムの挙動が正常であるか異常であるかを推定し、必要である場合には、警告を発生させたり、プログラムの動作を停止させたりして、プログラムの保護をする。異常状態であると推定した場合には、出力部114を介してユーザに警告を表示するようにしてもよいし、仮想化環境内におけるプログラムの動作を停止するような命令を処理部102へと出力してもよい。
出力部114は、プログラム保護部112が推定した検査対象プログラムの挙動を出力する。この出力部114は、例えば、ディスプレイを備えており、ディスプレイを介してユーザへ検査対象プログラムの挙動を出力する。また、別の例としては、音声で出力するスピーカ、振動で知らせるバイブレータ、光で知らせるインジケータ、又は、プリントアウトするプリンタ等、他のデバイスを備えていてもよい。ディスプレイである場合には、上述した入力部100のGUIを表示するディスプレイと同じものであってもよい。
次に、ハードウェアの構成の一例について説明する。図2は、本実施形態に係る挙動判別装置1のハードウェア構成の一例を示す図である。
挙動判別装置1は、図2に示すように、プロセッサ200と、主記憶装置202と、補助記憶装置204と、ネットワークインタフェース206と、デバイスインタフェース208と、を備える。これらの各モジュールは、バス210を介して相互に接続されている。
プロセッサ200は、CPUを備えている。このCPUが処理部102であってもよく、CPU上で、アクセス情報生成部106、挙動判別部110、プログラム保護部112がプログラムにより実装されていてもよい。仮想化環境は、このCPU上に構築される。そして、CPU上に構築された仮想化環境において、検査対象プログラムが実行される。
プロセッサ200は、CPUとは別にGPU(Graphical Processing Unit)等のアクセラレータとして機能するプロセッサを備えていてもよい。学習によるモデルの生成等のコストが高い処理は、アクセラレータ上で並列処理されるようにしてもよい。
主記憶装置202は、ROM(Read Only Memory)を備えている。このROM内には、挙動判別装置1を起動させるためのオペレーティングシステム(OS:Operating System)を実行するプログラム、また、上述した各部を実装しているプログラムが記憶されている。プロセッサ200は、主記憶装置202に記憶されているプログラムにしたがい、挙動判別装置1の動作を実行するようにしてもよい。
補助記憶装置204は、RAMを備えている。記憶部104の少なくとも一部は、このRAMであってもよい。プロセッサ200の仮想化環境の仮想アドレス空間は、このRAMに格納されるものであってもよい。この場合、仮想アドレスと物理アドレスをマッピングするページテーブルも、RAMに格納されていてもよい。
ネットワークインタフェース206は、外部のネットワーク300と接続され、種々のデータ、制御命令等が入出力される。デバイスインタフェース208は、外部装置400と接続され、外部装置400からのデータ、制御命令等が入出力される。
入力部100及び出力部114の少なくとも1つは、このネットワークインタフェース206及びデバイスインタフェース208を介して接続されていてもよい。例えば、上記で入力部100、出力部114の一例として記載したディスプレイは、デバイスインタフェース208を介して接続される外部装置400である。別の例として、外部装置400は、ネットワーク300を介してネットワークインタフェース206と接続されるものであってもよい。
次に、本実施形態に係る挙動判別装置1の動作について説明する。図3は、挙動判別装置1の挙動判別部110において判別処理に用いるモデルを生成する処理の流れを示すフローチャートである。モデルを生成する処理については、図1における破線で示すようにデータが処理される。
まず、入力部100を介して正常動作するプログラム、及び、異常動作するプログラムが入力され、当該プログラムを処理部102においてVMM上で動作させる(S100)。
次に、アクセス情報生成部106は、VMM上で動作しているプログラムについて、記憶部104上の仮想アドレス空間におけるアクセス情報等を含むメモリの使用情報から、アクセス情報を生成する(S102)。コンピュータ上でプロセスを走らせる場合、使用するメモリは、プロセスごとに独立したアドレス空間(仮想アドレス空間)を用いて管理される。この管理情報は、ページテーブルに格納されている。
OSがプログラムを動作させる場合、正常動作をするプログラムと、異常動作をするプログラムとでは、仮想アドレス空間におけるアクセスするアドレスが異なる傾向となる。例えば、異常動作をするプログラムは、特定のディレクトリに他のプロセスがアクセスできないような挙動をしたり、正常動作をするプログラムではアクセスしないシステム領域にアクセスするような挙動をしたりする。
そこで、アクセス情報生成部106は、VMM上でプログラムが起動及び動作する場合に、仮想アドレス空間上のどの箇所にアクセス又は書き込みしているかを示すアクセス情報を生成する。
具体的には、最初に、ページテーブルに格納されている第1フラグのデータを取得することにより、プログラムがいずれのページにアクセスしたかを取得する。続いて、各ページへのアクセス状況を学習に適したテンソル、例えば、ベクトルへと変換する。この処理は、必ずしも全てのページについてのアクセス状況を取得する必要は無く、例えば、無用であるアドレスを削除したり、複数のアドレスを統合したりしてデータをシュリンクしてもよい。
一例として、アクセス情報生成部106は、所定時間ごと、例えば、100ミリ秒ごとに、上記の第1フラグのデータをベクトルとして取得し、所定期間、例えば、2秒間のデータをまとめて1つのアクセス情報として、すなわち、時系列の情報を含むデータをアクセス情報として生成してもよい。アクセス情報生成部106が生成するアクセス情報は、正常動作するプログラムと異常動作するプログラムの双方のアクセス情報を取得してもよいし、正常動作するプログラムのみのアクセス情報を取得するようにしてもよい。所定時間及び所定期間は、一例として挙げたものであり、これらの数値には限られない。
さらに、取得するデータは、第1フラグではなく、第2フラグのデータであってもよいし、第1フラグ及び第2フラグの双方のデータであってもよい。アクセス情報生成部106は、取得したアクセス情報に対して、正常動作プログラムか異常動作プログラムかをラベリングし、訓練データとして当該アクセス情報を格納する。
双方のデータを用いる場合には、第1フラグと第2フラグとの情報を別チャネルのデータとして生成してもよいし、線形又は非線形な関数により、第1フラグと第2フラグの情報を混合して1チャネルのデータとして生成してもよい。さらに、1チャネルのデータとして、結合し、要素数が着目しているページ数の2倍であるベクトルとして生成するようにしてもよい。
アクセス情報の格納は、図示しない挙動判別装置1内にある記憶部に格納してもよいし、ネットワークインタフェース206を介して外部にあるファイルサーバ等に格納するようにしてもよい。
アクセス情報生成部106は、様々な正常動作プログラム及び/又は異常動作プログラムについて、VMM上で起動、動作させた場合のアクセス情報を取得する。このように生成された複数のアクセス情報を、訓練データとする。
アクセス情報を取得し、ベクトル化した後、必要に応じて、第1フラグ又は第2フラグをクリアするようにしてもよい。例えば、第1フラグをクリアすることにより、次のアクセス情報を取得するまでの間におけるプログラムがアクセスしたことを検出することが可能となる。また、CPU等によりクリアされるタイミングまで、クリアをしないようにしてもよい。
次に、モデル生成部108は、アクセス情報生成部106が生成したアクセス情報を訓練データとし、学習を行うことにより、挙動判別モデルを生成する(S104)。
例えば、アクセス情報生成部106が生成した、アドレス情報の所定数の時系列データを入力とし、入力されたアドレスの状態が正常挙動を示しているか異常挙動を示しているかを判別するモデルを、畳み込みニューラルネットワークを用いた深層学習による分類器として生成する。出力されるのは、分類器として、正常クラス、異常クラスに2分するもので無くともよく、正常クラスに属する確率又は異常クラスに属する確率が出力されるモデルであってもよい。
モデル生成部108は、ランダムフォレスト、SVM(サポートベクタマシン:Support Vector Machine)のような機械学習手法を用いてモデルを生成してもよいし、ニューラルネットワークを用いてモデルを生成してもよい。さらに、訓練データ数に応じて、適宜ミニバッチ等の手法を用いてもよい。
次に、モデル生成部108は、生成したモデルを挙動判別部110へと出力し、挙動判別部110は、当該モデルを格納する(S106)。別の例として、挙動判別部110とは別の場所に格納しておき、必要となる場合に、挙動判別部110がモデルを使用できるようにしておいてもよい。
このように、挙動を判別するために用いるモデルを学習により生成する。このモデルを用いて、検査対象プログラムの挙動が正常であるか異常であるかの推定を行う。図4は、推定を行う処理の流れを示すフローチャートである。
まず、処理部102は、VMM上で検査対象プログラムを起動させ、動作させる(S200)。続いて、検査対象プログラムが動作している状態におけるアクセス情報を生成する(S202)。このS200及びS202については、上述した図3におけるS100及びS102と同様の処理を行う。
次に、モデル生成部108が生成したモデルに、アクセス情報生成部106が生成した検査対象プログラムのアクセス情報を入力し、その出力結果から検査対象プログラムの挙動が異常である度合いである異常度を算出する(S204)。この際、モデルに入力するデータの要素数や構造等は、モデル生成部108がモデルを生成する際に用いた入力データと同等のものとする。本実施形態において、挙動判別部110は、例えば、分類器である挙動判別モデルを用いて検査対象プログラムの異常度を算出する。
この分類器は、上述したように、明確に挙動が正常クラスに属するか、異常クラスに属するかを判別する分類器であってもよいし、どの程度正常クラスに属するか、どの程度以上クラスに蔵するかを示す確率を出力する分類器であってもよい。
挙動判別部110は、例えば、明確に分類する分類器である場合、正常クラスに属している場合、異常である確率は0%とし、異常クラスに属している場合、異常である確率は100%であると算出し、当該異常である確率を異常度として出力する。挙動判別部110は、別の例として、正常クラスに属する確率、異常クラスに属する確率を出力する分類器である場合、異常クラスに属する確率を、異常である確率としてそのまま異常度として出力するようにしてもよいし、正常クラス、異常クラスに属する確率から所定の変換をすることにより、異常度を算出して出力するようにしてもよい。
さらにまた、正常クラスと異常クラスはそれぞれ内部の状態に分割されていてもよい。このような分割や確率の算出は、モデル生成部108がモデルを生成するフェーズにおける教師データのラベルにより分割される。このような場合、異常確率の合計を合算して出力するようにしてもよいし、出力を各クラスの確率のベクトルとして出力するようにしてもよい。
時系列に沿って所定時間ごとにバッチ化されたアクセス情報を用いてモデルを用いた判別を行うようにしてもよい。この場合、複数のアクセス情報から得られた複数の異常である確率に基づいて、各バッチ化されたアクセス情報に対する異常度を算出してもよい。
次に、プログラム保護部112は、挙動判別部110が算出した検査対象プログラムの異常度と、第1しきい値とを比較することにより、検査対象プログラムの挙動が正常であるか異常であるかを判断する(S206)。異常度は、例えば、完全に正常であると判断される場合には、0、完全に異常であると判断される場合には、1とするような指標で表される。第1しきい値は、学習により算出された値、経験により定められた値、又は、異常検出をしたい精度により変更される値であってもよい。例えば、厳密に正常動作をしない場合に異常と判断する場合には、第1しきい値は、0としてもよい。
しかしながら、学習モデルを用いている以上、100%の確率で正常、異常を判断可能となる訳ではない。そこで、図3に示す学習フェーズにおいてモデルを生成する際に、学習に用いていない正常な挙動のプログラム及び異常な挙動のプログラムをモデルに入力してバリデーションによるテストを行い、当該テストにより正解が得られた確率に基づいて、第1しきい値を設定してもよい。この場合、モデル生成部108は、このテスト結果をプログラム保護部112へと出力しておく。第1しきい値は、必ずしも上記のように定められる必要は無く、モデルの出力に対して適切に正常挙動と異常挙動である可能性が高い挙動とを判別できるものであればよい。
異常度が第1しきい値以下である場合(S206:YES)、プログラム保護部112は、検査対象プログラムが正常なプログラムであると推定し(S208)、処理を終了する。このタイミングにおいて、出力部114を介し、検査対象プログラムが正常なプログラムであることを出力してもよい。また、一時的な判断ではなく、引き続き検査を続けるようにしてもよい。この場合、S208の後に、S202へと戻るようなルーチンであってもよい。
一方、異常度が第1しきい値よりも大きい場合(S206:NO)、プログラム保護部112は、検査対象プログラムの挙動が、異常挙動である可能性が高いと推定する(S210)。正常挙動であると推定された場合と同様にこのS210の後にS202へと処理を移行し、継続的に検査対象プログラムの監視を行うようにしてもよい。
別の例として、時系列に沿って異常度の算出がバッチ化されたアクセス情報から複数得られている場合は、算出された異常度に基づいて、それぞれのアクセス情報から得られた挙動が異常であるか正常であるかを判定し、この時系列に沿った判定結果に基づいてその後のプログラム保護部112の動作を決定するようにしてもよい。例えば、100ステップ分の判定結果が得られた場合に、50ステップ分の判定結果が異常であれば、検査対象プログラム自体の挙動が異常であると判断してもよい。この場合に、警告を発し、さらに75ステップ分の判定結果が異常であれば、検査対象プログラムを停止するようにしてもよい。
なお、この推定の処理までが本実施形態における特徴的な処理であり、以下の処理は任意で行うようにしてもよい。すなわち、S212乃至S216の処理は、必須のステップではなく、検査対象プログラムが異常な挙動を示すプログラムであることに基づいて何らかの別の処理を行ってもよい。
例えば、検査対象プログラムを異常な挙動を示すプログラムであると推定した後、プログラム保護部112は、検査対象プログラムが異常挙動である可能性が高い旨、出力部114を介して警告する(S212)。
さらに、異常度と、第1しきい値よりも大きな値である第2しきい値と、を比較し、危険度を判断してもよい(S214)。例えば、検査対象プログラムの動作を即時停止した方がよい危険度を示す異常度をあらかじめ設定しておき、当該異常度の値を第2しきい値として設定する。
異常度が第2しきい値以下である場合(S214:YES)、処理を終了してもよいし、継続して検査対象プログラムの挙動を監視しておいてもよい。さらに、挙動が異常なプログラムである可能性が高いので、異常な挙動を示すプログラムのアクセス情報として、将来的な訓練データとして用いるために格納してもよいし、監視と並行して強化学習又は上記に記載した学習を行い、挙動判別モデルを更新するようにしてもよい。
一方、異常度が第2しきい値よりも大きい場合(S214:NO)、プログラム保護部112は、処理部102へと制御命令を出力し、検査対象プログラムの処理を停止するようにしてもよい(S216)。検査対象プログラムの処理を停止する場合には、警告を発しないで、すなわち、S212を経由しないでプログラムを停止するようにしてもよい。
その後、停止された検査対象プログラムをユーザによるVMMの操作により再開させることも可能である。また、事前に安全な状態であることが確認されている状態からリスタートしてもよい。
図5は、生成されたアクセス情報の例を示す図である。これらの図は、横軸をページ、縦軸を時間とした、時系列に沿ったアクセス情報の集合を示すものである。この図5は、一例として第1フラグを取得し、生成したものであり、第1フラグを取得したタイミングにおいて、第1フラグをクリアしている。図において、ページ数Nを約1350とし、Nページ分にシュリンクされたデータであり、横に並んでいる一列は、同一タイミングにおける各ページのアクセス状況を示す。
黒で表されたページは、前回のリセット時間から当該時間までにアクセスされたページを示し、白で表されたページは、前回のリセット時間から当該時間までにアクセスされていないページを示す。アクセスされたページとは、例えば、第1フラグが1となっているページであり、逆にアクセスされていないページとは、第1フラグが0となっているページである。フラグは、0と1の示す意味が逆の場合もありうる。
図5(a)は、正常な挙動のプログラムにおけるページのアクセス状況を示す例であり、図5(b)は、異常な挙動のプログラムにおけるページのアクセス状況を示す例である。
アクセス情報は、あるタイミングにおけるページの状況、すなわち、これらの図における横一列(要素数N)の情報としてもよいし、所定期間Tのページ状況を集約したもの、すなわち、横一列の情報を所定数の行だけまとめた情報(要素数N×T)としてもよい。所定数の行をまとめる場合、1次元のベクトルとしてアクセス情報を取得してもよいし、2次元のマトリクス、すなわち、ページ数×所定期間の要素数を有するマトリクスとして取得してもよい。取得されたアクセス情報に基づいて、上述したモデルの生成及び挙動の判別の処理を行う。
モデルによる推定の際には、例えば、N×T要素のアクセス情報を取得した後、所定時間待ってさらにアクセス情報を取得し、このように取得された複数のアクセス情報を用いて入力データをバッチ化して推定をしてもよい。
本実施形態における挙動判別部110が用いる挙動判別モデルは、図5(a)に示すような情報のうち一部又は全部の情報であるアクセス情報を入力すると、正常である確率が高く、異常である確率が低く出力されるモデルである。同様に、図5(b)に示すような情報のうち一部又は全部の情報であるアクセス情報を入力すると、正常である確率が低く、異常である確率が高く出力されるモデルである。
以上のように、本実施形態によれば、仮想化環境において検査対象プログラムを動作させ、当該仮想化環境における仮想アドレス空間の状態をアクセス情報として取得することにより、検査対象プログラムのメモリのアクセス情報に基づいて、正常動作を行っているプログラムであるか、異常動作を行っているプログラムであるかの推定のオーバーヘッドを削減することが可能である。
仮想化環境におけるメモリの状況を読み取ることにより、エミュレータ等であることを検知するマルウェアや、サンドバッグ等を検知するマルウェアであっても、その挙動を監視することが可能となる。さらに、必要とする情報は、仮想アドレス空間におけるメモリの読み込み、書き込み状態であるので、デバッガを起動させたり、関数のフック等をしたりして解析する必要が無く、すなわち、余分な動作を行うことなく低コストかつオーバーヘッドの少ない状態でプログラムの挙動を判別することが可能となる。
なお、学習データとなるアクセス情報の取得及び検査対象プログラムのアクセス情報の取得において、上記では、動作中に取得するものとしたが、これには限られない。例えば、各プログラムを起動させる前の状態から、起動させ、動作が始まったあとのアクセス情報を取得するようにしてもよい。このようにアクセス情報の取得をプログラムの起動前とすることにより、プログラム起動タイミングにおけるアクセス情報を取得するようにしてもよい。
例えば、Intel製の上述したCPUであれば、MMUの機能を用いて、ハードウェアの機能を用いて得られた情報を元に挙動を判別することが可能であり、高速、かつ、低消費電力の実装をすることができる。また、エミュレータ等で検査対象プログラムを動作させるわけではないので、マルウェア等から検知されにくいという利点もある。
(第2実施形態)
前述した実施形態においては、プログラムの挙動が正常であるか異常であるかを判別する判別モデルを用いたが、本実施形態では、判別するモデルではなく、正常な挙動におけるアクセス情報を入力すると、正常な挙動をしている場合のアクセス情報を推定して出力するアクセス情報推定モデルを用いて、検査対象プログラムの挙動を判別しようとするものである。
図6は、本実施形態における挙動判別装置1の機能を示すブロック図である。図1に示す挙動判別部110の代わりに、異常検知部116を備える。モデルを生成する処理、挙動を判別する処理についての処理の流れは、それぞれ図3、図4と同様である。
モデル生成部108は、S104において、分類器として機能する挙動判別モデルを生成するのではなく、時系列に沿ったアクセス情報を入力すると、次のタイミングのアクセス情報又は当該時系列に沿ったアクセス情報を出力するアクセス情報推定モデルを生成する。具体的には、所定期間におけるアクセス情報を入力すると、将来のアクセス情報を出力するアクセス情報推定モデルを、一般的なニューラルネットワークモデルとして生成する。
モデルの生成は、例えば、100単位時間あたりのアクセス情報を入力層から入力すると、20単位時間あたりの任意に設定可能な将来の時間におけるアクセス情報が出力されるような教師付学習により生成される。これには限られず、入出力の要素数が同一であるようなモデルを生成してもよいし、複数単位時間あたりのアクセス情報を入力し、次の単位時間後の1単位時間あたりのアクセス情報が出力されるモデルを生成してもよい。
この学習においては、正常な挙動を示すプログラムについてのアクセス情報を教師データと用いればよいので、異常な挙動を示すプログラムについてのデータ収集のコストを削減することが可能である。
挙動を判別するフェーズのS204において、異常検知部116は、アクセス情報生成部106が生成したアクセス情報を、モデル生成部108が生成したアクセス情報推定モデルへと入力する。図7は、アクセス情報をアクセス情報推定モデルへと入力した結果を示す図である。図7においては、例えば、100単位時間あたりのアクセス情報を入力すると、20単位時間あたりのアクセス情報を推定して出力するモデルを示している。
上記のように生成されたアクセス情報推定モデルにおいては、正常な挙動の状態におけるアクセス情報を入力すると、正常な挙動の状態におけるアクセス情報が出力される。図7の上図に示されるように、正常挙動におけるアクセス情報が入力されると、実際にその後のタイミングにおいて取得されたアクセス情報に誤差の小さいアクセス情報が出力される。
一方、図7の下図に示されるように、異常挙動におけるアクセス情報が入力された場合、このアクセス情報推定モデルは、そのような入力に対する学習が為されていないので、実際に将来的に取得されるアクセス情報とは異なるアクセス情報、言い換えると、誤差の大きいアクセス情報を出力される。
このように、正常な挙動である場合と、異常な挙動である場合とにおけるアクセス情報の入力に対して、有意な差を発生させることが可能となる。この誤差は、NLL(Negative Log Likelihood:負の対数尤度)として出力されてもよい。すなわち、モデル生成時におけるロス関数と同等ものを評価関数として誤差を算出してもよい。NLLが出力される場合、アクセス情報推定モデルから具体的なアクセス情報が出力される必要はなく、当該NLLのみを出力するようにしてもよい。別の例として、実際のアクセス情報と、推定されたアクセス情報との相関値等を出力するものであってもよい。
異常検知部116は、このように得られた誤差、すなわち、NLL、相関値等の値から、異常度を算出する。もっとも、NLLである場合、そのまま異常度として出力してもよい。相関値の場合、正常であるほど高い値となるので、逆数をとったり、正規化した後に1から当該正規化された相関値を減算したりして異常度としてもよい。
このような場合、プログラム保護部112が、異常度に基づいて異常であるか正常であるかを判断する第1しきい値、及び、その後のプログラム保護部112の挙動を決定する第2しきい値は、前述の第1実施形態と同じものであるとは限られず、別の値を用いるようにしてもよい。
以上のように、本実施形態によっても、検査対象となるプログラムが正常な挙動であるか、異常な挙動であるかを、仮想アドレスのアクセス情報を用いて判別することが可能となる。
(第2実施形態の変形例)
別の例としては、オートエンコーダにより、所定単位時間数あたりの正常挙動におけるアクセス情報を入力すると、当該所定単位時間数あたりの正常挙動におけるアクセス情報を出力するアクセス情報推定モデルを生成してもよい。
S104においてオートエンコーダによりアクセス情報推定モデルを生成することにより、入力層よりも小さい次元数を有する中間層において、正常な挙動を行う場合のアクセス情報の特徴が自己符号化される。このことにより、正常な挙動を行う場合のアクセス情報が入力されると、当該特徴を有するため、入力との誤差が小さいアクセス情報が出力される。一方で、異常な挙動を行う場合のアクセス情報が入力された場合には、当該特徴を有しないため、入力との誤差が小さいアクセス情報が出力されるわけではない。
そこで、S204において、異常検知部116は、アクセス情報推定モデルに入力されたアクセス情報と、当該モデルから出力された推定アクセス情報とを比較することにより異常度を算出する。本変形例においても、前述した第2実施形態と同様に、具体的に推定されたアクセス情報が出力される必要は無く、NLLといった学習中に用いたロス関数の値を異常度として算出するようにしてもよい。異常度は、前述と同様に、相互相関等の他の手法により算出されるものであってもよい。
上記に記載した各実施形態における第1フラグ及び第2フラグは、挙動判別装置1におけるプロセッサ、特にCPUの仕様により決定されているものであってもよい。例えば、Intel(登録商標)社の64又はIA−32といったプロセッサにおいては、第1フラグは、Accessed Flag、第2フラグは、Dirty Flagとして定義されているものである。他のCPUにおいても、それぞれ定義されているものを用いてもよい。
また、第1フラグ及び第2フラグの状況を取得する場合に、直接的にメモリの状態をダンプできない場合は、CPU及びメモリの状態を適切にダンプできる状態にして、仮想アドレスの状態を取得するようにする。例えば、外部からメモリの状況を読み取れない場合、スナップショットを用いてメモリの状況を把握したり、VMM上のOSをサスペンドしてメモリの状況を把握したりしてもよい。例えば、ページフォルトを故意に発生させ、割り込みハンドラ上でソフトウェア的に第1フラグ及び/又は第2フラグの状態を取得してもよい。
このように、CPUによって仮想アドレス空間の使用方法が異なっていたとしても、挙動判別モデルを生成する際に用いるCPUと、プログラムの挙動を判別する際に用いるCPUとの仮想アドレス空間の使用方法が同等のものであれば、本実施形態により検査対象プログラムの挙動を判別することが可能となる。
図1、図6に示すような各実施形態における挙動判別装置1において、処理部102、アクセス情報生成部106、モデル生成部108、挙動判別部110、プログラム保護部112のそれぞれの制御は、図示しない制御部がその全て又は一部を、一括に又は個別に行うようにしてもよい。この制御部は、アナログ、デジタル、或いは、FPGA(Field Programmable Gate Array)等により実装された制御回路であってもよい。
上記の全ての記載において、挙動判別装置1の少なくとも一部はハードウェアで構成されていてもよいし、ソフトウェアで構成され、ソフトウェアの情報処理によりCPU等が実施をしてもよい。ソフトウェアで構成される場合には、挙動判別装置1及びその少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記憶媒体に収納し、コンピュータに読み込ませて実行させるものであってもよい。記憶媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記憶媒体であってもよい。すなわち、ソフトウェアによる情報処理がハードウェア資源を用いて具体的に実装されるものであってもよい。さらに、ソフトウェアによる処理は、FPGA等の回路に実装され、ハードウェアが実行するものであってもよい。モデルの生成や、モデルに入力をした後の処理は、例えば、GPU等のアクセラレータを使用して行ってもよい。
また、本実施形態に係る挙動判別モデルは、人工知能ソフトウェアの一部であるプログラムモジュールとして利用することが可能である。すなわち、コンピュータのCPUが格納部に格納されているモデルに基づいて、演算を行い、結果を出力するように動作する。
上記の全ての記載に基づいて、本発明の追加、効果又は種々の変形を当業者であれば想到できるかもしれないが、本発明の態様は、上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更及び部分的削除が可能である。例えば、前述した全ての実施形態において、説明に用いた数値は、一例として示したものであり、これらに限られるものではない。
1:挙動判別装置、100:入力部、102:処理部、104:記憶部、106:アクセス情報生成部、108:モデル生成部、110:挙動判別部、112:プログラム保護部、114:出力部、116:異常検知部、200:プロセッサ、202:主記憶装置、204:補助記憶装置、206:ネットワークインタフェース、208:デバイスインタフェース、300:ネットワーク、400:外部装置

Claims (14)

  1. 検査対象となるプログラムを仮想化環境上で動作させるステップと、
    前記プログラムが前記仮想化環境上で動作している間に、少なくとも、当該プログラムが仮想アドレス空間の各アドレスを読みだしたか否かを示す第1フラグの情報、及び、当該仮想アドレス空間の各アドレスに書き込みをしたか否かを示す第2フラグの情報の何れか1つに基づいて、前記プログラムの挙動の判別に必要となるメモリのアクセス情報を生成するステップと、
    前記アクセス情報に基づいて前記プログラムの挙動が正常であるか異常であるかを推定するステップと、を備える挙動判別方法。
  2. 前記アクセス情報を生成するステップは、メモリにおける所定の単位であるページ単位で前記第1フラグ又は前記第2フラグの状態を取得し、ページ単位におけるメモリの使用状況を所定のページ数分含むデータを前記アクセス情報として生成するステップ、
    を備える、請求項1に記載の挙動判別方法。
  3. 前記アクセス情報を生成するステップは、前記第1フラグ又は前記第2フラグの状態を所定時間ごとに取得し、所定期間の時系列データとして前記アクセス情報を生成するステップ、
    を備える、請求項1又は請求項2に記載の挙動判別方法。
  4. 前記アクセス情報を生成するステップの後に、
    前記アクセス情報が入力されると、前記プログラムの挙動が異常である度合いを示す異常度を出力するステップ、
    をさらに備え、
    前記推定するステップは、前記プログラムの前記異常度に基づいて、当該プログラムの挙動が正常であるか、異常であるかを推定する、
    請求項1乃至請求項3のいずれかに記載の挙動判別方法。
  5. 前記プログラムの前記異常度を出力するステップは、前記アクセス情報が入力されると、前記プログラムの挙動が正常であるか、異常であるかを判別する挙動判別モデルにしたがい、前記プログラムの挙動の異常度を出力するステップ、を備え、
    前記推定するステップは、前記プログラムの前記異常度に基づいて、前記プログラムの挙動が正常であるか異常であるかを推定するステップ、を備える、
    請求項4に記載の挙動判別方法。
  6. 前記挙動判別モデルは、前記アクセス情報が入力されると、前記プログラムの挙動が正常クラスに属する確率、又は、異常クラスに属する確率を出力する分類器である、請求項5に記載の挙動判別方法。
  7. 前記プログラムの前記異常度を出力するステップは、正常な挙動である場合の前記アクセス情報が入力されると、当該アクセス情報、又は、将来のメモリの状態が出力される、恒等写像ではないアクセス情報推定モデルにしたがい、当該プログラムの前記異常度を出力するステップ、を備え
    前記推定するステップは、前記プログラムの前記異常度に基づいて、前記プログラムの挙動が正常であるか異常であるかを推定する、
    請求項4に記載の挙動判別方法。
  8. 前記アクセス情報推定モデルは、正常な挙動であるプログラムが実行されている場合の前記アクセス情報が入力されると、当該アクセス情報が出力されるオートエンコーダにより生成されたモデルであり、
    前記異常度を出力するステップは、検査対象となる前記プログラムの前記アクセス情報と、前記アクセス情報推定モデルに当該アクセス情報を入力して出力される情報と、の誤差に基づいて、前記異常度を出力する、
    請求項7に記載の挙動判別方法。
  9. 前記アクセス情報推定モデルは、正常挙動であるプログラムが実行されている場合の前記アクセス情報が入力されると、所定時間後の前記第1フラグ及び前記第2フラグのうち少なくとも1つの状態を出力するように生成されるモデルであり、
    前記異常度を出力するステップは、検査対象となる前記プログラムの前記アクセス情報を取得した所定時間後の前記第1フラグ及び前記第2フラグのうち少なくとも1つの状態と、前記アクセス情報推定モデルに当該アクセス情報を入力すると出力される情報と、の誤差に基づいて、前記異常度を出力する
    請求項7に記載の挙動判別方法。
  10. 前記異常度を算出するステップにおいて用いられるモデルをあらかじめ学習しておくステップをさらに備える、請求項5乃至請求項9のいずれかに記載の挙動判別方法。
  11. 前記プログラムの挙動が異常である確率が第1しきい値よりも高い場合に、警告を発するステップと、
    前記プログラムの挙動が異常である確率が前記第1しきい値よりも高い値を有する第2しきい値よりも高い場合に、前記仮想化環境上で動作している当該プログラムの動作を停止するステップと、
    をさらに備える、請求項4乃至請求項10のいずれかに記載の挙動判別方法。
  12. 前記アクセス情報を取得するステップは、前記プログラムが動作する前記仮想化環境を動作させることが可能であり、かつ、前記プログラムが動作している状態において、前記第1フラグ及び前記第2フラグのうち少なくとも1つを取得することが可能なプロセッサ上を用いている場合に、前記プロセッサが制御するメモリの状態に基づいて、前記アクセス情報を取得するステップである、
    請求項1乃至請求項11のいずれかに記載の挙動判別方法。
  13. 検査対象となるプログラムを仮想化環境上で動作させる、処理部と、
    前記プログラムが前記仮想化環境上で動作している間に、少なくとも、当該プログラムが仮想アドレス空間の各アドレスを読み出したか否かを示す第1フラグの情報、及び、当該仮想アドレス空間の各アドレスに書き込みをしたか否かを示す第2フラグの情報の何れか1つに基づいて、前記プログラムの挙動の判別に必要となるメモリのアクセス情報を生成する、アクセス情報生成部と、
    前記アクセス情報に基づいて前記プログラムの挙動が正常であるか異常であるかを推定する、プログラム保護部と、
    を備える挙動判別装置。
  14. コンピュータに、
    検査対象となるプログラムを仮想化環境上で動作させる、処理手段、
    前記プログラムが前記仮想化環境上で動作している間に、少なくとも、当該プログラムが仮想アドレス空間の各アドレスを読み出したか否かを示す第1フラグの情報、及び、当該仮想アドレス空間の各アドレスに書き込みをしたか否かを示す第2フラグの情報の何れか1つに基づいて、前記プログラムの挙動の判別に必要となるメモリのアクセス情報を生成する、アクセス情報生成手段、
    前記アクセス情報に基づいて前記プログラムの挙動が正常であるか異常であるかを推定する、プログラム保護手段、
    として機能させるプログラム。
JP2018015901A 2018-01-31 2018-01-31 挙動判別方法、挙動判別装置及びプログラム Pending JP2019133470A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018015901A JP2019133470A (ja) 2018-01-31 2018-01-31 挙動判別方法、挙動判別装置及びプログラム
US16/262,804 US20190236268A1 (en) 2018-01-31 2019-01-30 Behavior determining method, behavior determining apparatus, and non-transitory computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018015901A JP2019133470A (ja) 2018-01-31 2018-01-31 挙動判別方法、挙動判別装置及びプログラム

Publications (1)

Publication Number Publication Date
JP2019133470A true JP2019133470A (ja) 2019-08-08

Family

ID=67393455

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018015901A Pending JP2019133470A (ja) 2018-01-31 2018-01-31 挙動判別方法、挙動判別装置及びプログラム

Country Status (2)

Country Link
US (1) US20190236268A1 (ja)
JP (1) JP2019133470A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7413924B2 (ja) 2020-05-25 2024-01-16 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7413924B2 (ja) 2020-05-25 2024-01-16 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム

Also Published As

Publication number Publication date
US20190236268A1 (en) 2019-08-01

Similar Documents

Publication Publication Date Title
CN107045503B (zh) 一种特征集确定的方法及装置
US10216558B1 (en) Predicting drive failures
US10705795B2 (en) Duplicate and similar bug report detection and retrieval using neural networks
TWI553558B (zh) 虛擬機快照與分析
Salfner et al. A survey of online failure prediction methods
US8140915B2 (en) Detecting apparatus, system, program, and detecting method
US20170193229A1 (en) Systems and methods for automated generation of generic signatures used to detect polymorphic malware
US9594913B2 (en) System, method, and non-transitory computer-readable storage media for analyzing software application modules and provide actionable intelligence on remediation efforts
CN109344017A (zh) 一种基于机器学习预测内存故障的方法,设备及可读存储介质
CN105631336B (zh) 检测移动装置上的恶意文件的系统及方法
CN111339072B (zh) 基于用户行为的变化值分析方法、装置、电子设备及介质
CN106650434B (zh) 一种基于io序列的虚拟机异常行为检测方法与系统
KR102132077B1 (ko) 설비 데이터의 이상 정도 평가 방법
KR20200073822A (ko) 악성코드 분류 방법 및 그 장치
JP2019133470A (ja) 挙動判別方法、挙動判別装置及びプログラム
CN115794479B (zh) 日志数据处理方法、装置、电子设备及存储介质
CN114503132A (zh) 机器学习模型训练的调试和剖析
Fournier et al. Automatic cause detection of performance problems in web applications
US20220107858A1 (en) Methods and systems for multi-resource outage detection for a system of networked computing devices and root cause identification
EP2915059B1 (en) Analyzing data with computer vision
CN112906727A (zh) 用于实时在线检测虚拟机状态的方法和系统
CN111275135A (zh) 一种故障诊断方法、装置、设备、介质
CN111581044A (zh) 集群优化方法、装置、服务器及介质
Svendsen Online failure prediction in UNIX systems
CN115617023B (zh) 航天器姿控系统异常定位方法和装置