JP2020160679A - スクリプト検出装置、方法及びプログラム - Google Patents

スクリプト検出装置、方法及びプログラム Download PDF

Info

Publication number
JP2020160679A
JP2020160679A JP2019058148A JP2019058148A JP2020160679A JP 2020160679 A JP2020160679 A JP 2020160679A JP 2019058148 A JP2019058148 A JP 2019058148A JP 2019058148 A JP2019058148 A JP 2019058148A JP 2020160679 A JP2020160679 A JP 2020160679A
Authority
JP
Japan
Prior art keywords
script
behavior
program
model
interpreter
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
JP2019058148A
Other languages
English (en)
Other versions
JP7302223B2 (ja
Inventor
剛史 加藤
Takashi Kato
剛史 加藤
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2019058148A priority Critical patent/JP7302223B2/ja
Publication of JP2020160679A publication Critical patent/JP2020160679A/ja
Application granted granted Critical
Publication of JP7302223B2 publication Critical patent/JP7302223B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】プロセスの振る舞いからインタプリタとスクリプトを機械的に特定可能とするスクリプト検出装置、方法及びプログラムを提供する。【解決手段】スクリプト検出装置20は、監視対象システム10上のプロセスの振る舞いの監視の結果収集されたイベント情報を受信し、イベント情報に基づきプロセスの振る舞いのモデルを作成するモジュール21と、分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行うモジュール25を含むプログラムを実行する。【選択図】図1

Description

本発明は、スクリプト検出装置、方法及びプログラムに関する。
システムやプロセス等の振る舞い(挙動)からサイバー攻撃を検知するシステム技術が実用化されている。
例えば特許文献1には、プログラムが監視されるべきであると決定される場合、前記プログラムに関連する複数のイベントをトレースし、前記トレースが終了する前にトレースされるべきイベントの数を決定し、前記プロセスがマルウェアを含むか否かの判断に対して複数の前記トレースされたイベントの複数の結果を解析する装置が開示されている。
また特許文献2には、対象コンピュータにおける不正な挙動を検出し、その挙動を起こすソースコード又はオブジェクトコードの少なくともいずれかのコードを抽出する構成が開示されている。
さらに、正常時のプロセスの振る舞いを機械学習し、正常時との違いから異常を検知するシステム等も知られている(例えば非特許文献1)。
特表2017−522641号公報 特開2010−198054号公報
多賀戸裕樹、栄純明、喜田弘司、朝倉敬喜、"未知のサイバー攻撃を自動検知する自己学習型システム異常検知技術(ASI)"、NEC技報/Vol.69 No.1(2016年9月)
以下に関連技術の分析を与える。
プロセスの振る舞いからマルウェアなどによるサイバー攻撃を検知する関連技術のシステムにおいて、マルウェアによる攻撃を検知しても、例えば、スクリプトとして書かれたマルウェア本体のパスが実行コマンドの引数として渡されていない場合や、スクリプト自体が難読化されている場合がある。このような場合、マルウェア本体を特定できないという事態も生じ得る。
また、プロセスの振る舞いからマルウェアなどによるサイバー攻撃を検知する関連技術のシステムにおいて、スクリプトを使った攻撃をプロセスの振る舞いとして観察していると、インタプリタが攻撃しているように見えてしまうという問題もある。例えばWindows(登録商標) PowerShell(マイクロソフトが開発した拡張可能なCommand Line Interface(CLI) シェル及びスクリプト言語)の実行ファイルpowershell.exeが不正な振る舞いを行ったとしても、それ自体は正規のプログラムであり、powershell.exeに不正な振る舞いをさせているのは、powershell.exeで動作するスクリプトである。
攻撃内容が難読化されているケースでは、スクリプトをプロセスの引数などのメタ情報から特定することが難しい。このため、攻撃に使われているスクリプトを機械的に特定することは困難である。
また、正常時のプロセスの振る舞いを学習し、正常時との違いから異常を検知する関連技術(非特許文献1等)のシステムにおいて、実行中のスクリプトの違いを認識させずに、インタプリタの振る舞いを学習させると、平常時に多様な振る舞いをするプログラムとして学習されてしまう。その結果、異常を検知する機会が失われる。
正常時のプロセスの振る舞いを学習し、正常時との違いから異常を検知する関連技術(非特許文献1等)のシステムにおいて、あるプログラムがインタプリタであることを予めシステムへ教えておくことで学習精度を向上できる可能性はある。
しかし、入力によって振る舞いが変わり得るプログラムは、インタプリタとして攻撃に使われる可能性がある。したがって、これらのプログラムを実環境からすべて特定することは困難である。
一般的なOS(Operating System)では、プロセスの振る舞いを、システムコールなどの単位で外部プロセスから監視する手段が提供される。しかし、スクリプトを実行するインタプリタがスクリプトの実態(ファイルなど)に対して行う振る舞いは読み込み(read)のみであり、この振る舞いから、インタプリタとスクリプトを機械的に特定することはできない。
なお、上記した特許文献1、2には、対象ファイルがスクリプトであることが分かっているということを前提とした発明は開示されているが、実行されたプログラムの振る舞いを分析してインタプリタとマルウェアを探し出す構成は開示も示唆もされていない。
本発明は、上記事情に鑑みて創案されたものであって、その目的の一つは、プロセスの振る舞いからインタプリタとスクリプトを機械的に特定可能とする装置、方法、プログラムを提供することにある。
本発明のいくつかの形態の一つによれば、監視対象システム上のプロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成する第1の手段と、分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行う第2の手段と、を含むスクリプト検出装置が提供される。
本発明の別の一つの形態によれば、プロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成し、
分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行うスクリプト検出方法が提供される。
本発明のさらに別の一つの形態によれば、プロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成する処理と、
分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行う処理と、
をコンピュータに実行させるプログラムが提供される。
本発明のさらに他の形態によれば、上記プログラムを記憶したコンピュータ可読記録媒体(computer readable recording medium)が提供される。この記録媒体は、RAM(Random Access Memory)、ROM(Read Only Memory)、又は、EEPROM(Electrically Erasable and Programmable ROM))等の半導体ストレージや、HDD(Hard Disk Drive)、SSD(Solid State Drive)、CD(Compact Disc)、又は、DVD(Digital Versatile Disc)等の非一時的コンピュータ可読媒体(non-transitory computer readable medium)からなる。
本発明によれば、プロセスの振る舞いからインタプリタとスクリプトを機械的に特定可能としている。
本発明の例示的な実施形態の構成を例示する図である。 本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態のモデルきおくを説明する図である。 本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態におけるモデル分析部の動作の一例を説明する流れ図である。 本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態を説明する図である。 (A)、(B)は本発明の例示的な実施形態を説明する図である。 本発明の例示的な実施形態におけるスクリプト検出部の動作の一例を説明する図である。 本発明の例示的な実施形態(コンピュータ装置の実装例)を説明する図である。 本発明の例示的な実施形態のプログラムを説明する図である。
本発明の一実施形態によれば、スクリプト検出装置は、監視対象システムで実行されるプロセスの振る舞いを収集し、繰り返し実行されるプログラムの振る舞いを動的に分析し、インタプリタとして動作するプログラムとスクリプトを検出する。すなわち、インタプリタとして動作するプログラムの振る舞いを動的に分析することで、インタプリタとスクリプトを機械的に特定可能としている。
さらに、本発明の一実施形態によれば、インタプリタとスクリプトの振る舞いを学習することで、新しく導入(実行)されたスクリプトであるかを特定可能としている。
本発明の一実施形態では、インタプリタが以下のように動作する可能性があることを想定して分析を行う。
・子プロセスを多用し、目的の処理を子プロセスに実行させる。
また、本発明の一実施形態では、インタプリタには、以下の特徴があることを利用して分析を行う。
・インタプリタが同じスクリプトを実行しているならば、その振る舞いは類似するはずである。
・インタプリタはスクリプトを実行する前にスクリプトを読み込むはずである。
以下、本発明の例示的な実施形態について図面を参照して説明する。図1は、本発明の例示的な実施形態のシステム構成を模式的に例示する図である。
スクリプト検出装置20は、監視対象システム10から受信したイベント情報を分析する。スクリプト検出装置20は、イベント情報に基づき、プロセスの振る舞いのモデルを組み立てて分析し、インタプリタとスクリプトを検出してスクリプト情報利用装置30へ送信する。
スクリプト情報利用装置30は、スクリプト検出装置20が検出したスクリプト情報を受信する。なお、スクリプト情報利用装置30は、スクリプト検出装置20で検出されたインタプリタとスクリプト情報に加えて、スクリプト検出装置20が監視エージェント11から取得したイベント情報(時刻情報やプロセスID(Identification)等)を、スクリプト検出装置20から受信するようにしてもよい。
スクリプト情報利用装置30は、スクリプト検出装置20から受信したスクリプト情報等を活用して動作ログ(例えばプロセスの振る舞いの履歴等)の記録や分析、異常検知等の処理を行う。なお、スクリプト情報利用装置30には、スクリプト情報の利用形態(例えば監視対象システム10の状態監視、ソフトウェア障害検出、不正アクセスや情報漏洩等のインシデント検知、システム最適化ための分析等)に応じたデータ管理ツールや解析ツール等を実装するようにしてもよい。
監視対象システム10は、例えばメモリに格納されたプログラムを実行するプロセッサを備え、通信ネットワークを介してスクリプト検出装置20に通信接続される端末装置(PC(Personal Computer)、又は携帯端末等の情報通信装置等)を含む。
監視対象システム10の監視エージェント11は、監視対象システム10のプロセスの振る舞いを監視して収集し、スクリプト検出装置20へ送信する。監視エージェント11は、監視対象システム10(端末装置等)に実装され、監視対象システム10上のプロセスを監視しリアルタイムで時系列順に当該プロセスのイベント情報を生成する構成としてもよい。特に制限されないが、監視エージェント11は、例えばプロセスによるファイルシステムへのアクセスやネットワークへのアクセス、及び、プロセスの状態(親プロセス、子プロセスの生成・破棄等)をモニタリングし、状態が変化した場合、そのイベントを収集してスクリプト検出装置20に送信する。監視エージェント11で監視するプロセスは仮想マシン上のOS(Operating System)で稼働するプロセスであってもよい。
以下、スクリプト検出装置20についてさらに詳細に説明する。
図1を参照すると、スクリプト検出装置20は、モデル作成部21と、モデル記憶部22と、モデル分析部23と、分析結果記憶部24と、スクリプト検出部25とを備えている。モデル記憶部22と分析結果記憶部24は、それぞれデータベース(DataBase:DB)として構成してもよい。この場合、モデル記憶部22、分析結果記憶部24は、モデルDB、分析結果DBとも称呼してもよい。
特に制限されないが、以下の例では、監視するプロセスの振る舞いとして、
・プロセスによる子プロセスの実行、及び、
・プロセスによるファイルの読み込み(read)、書き込み(write)を、イベントとして説明する。プロセス間通信やネットワークの通信等の監視可能なプロセスの振る舞いを分析対象に含めるようにしてもよい。この場合、検出精度をさらに高めることができる。
モデル作成部21は、監視エージェント11から受信したイベントからプロセスの振る舞いを組み立てる。そして、モデル作成部21は、分析のための振る舞いモデルを作成してモデル記憶部22へ登録する。
モデル分析部23は、モデル記憶部22に蓄積された振る舞いモデルを非同期で分析し、インタプリタとスクリプトを特定し、その振る舞い情報と合わせて分析結果記憶部24へ登録する。
スクリプト検出部25は、監視エージェント11から取得したイベント情報を分析結果記憶部24の情報と照らし合わせて分析する。スクリプト検出部25は、分析の結果、スクリプトが実行されたことを検出すると、スクリプト情報利用装置30へ通知する。
監視エージェント11は、監視対象システム10で観測したプロセスの振る舞いを監視し、監視結果をイベント情報として収集する。特に制限されないが、該イベント情報には、例えば、
・イベントを発生させたプロセスの情報、
・操作、
・操作対象、及び、
・イベントの発生順序
の情報が含まれる。
プロセスの情報には、特に制限されないが、例えば、
・プロセスの実態となるプログラムファイルのパス、及び、
・プロセスを一意に識別可能なID(Identification:識別情報)
が含まれる。なお、プロセスは、プロセッサ上でプログラムを動作させる際にプロセッサが実行するひとまとまりの処理単位のことを意味してもよい(プログラムは複数のプロセスを稼働可能)。
操作としては、特に制限されないが、例えば、
・ファイルのread、write、
・プログラムを子プロセスとして実行するexecute
があるものとする。
操作対象は、特に制限されないが、例えば操作(read/write、execute)の対象となるファイルや子プロセス(プログラム)のファイルパス名等の情報で規定される。
イベントの発生順序は、時刻(イベント発生時刻)で代替するようにしてもよい。
監視エージェント11は、収集したイベント情報を、通信手段(不図示)を介して、スクリプト検出装置20へ送信する。特に制限されないが、監視エージェント11は、スクリプト検出装置20からのポーリングに対する応答として、収集したイベント情報をスクリプト検出装置20に送信するようにしてもよい。この場合、ポーリング間隔の間、監視エージェント11では、プロセスの監視の結果収集したイベント情報を監視対象システム10(端末装置等)内のメモリにログしておく構成としてもよい。なお、監視エージェント11でのプロセスの状態監視の条件や、ポーリング間隔等は適宜設定(変更)自在としてもよい。
スクリプト検出装置20において、通信ネットワーク等を介して監視エージェント11から受信したイベント情報は、モデル作成部21とスクリプト検出部25とで利用される。
モデル作成部21は、監視エージェント11から受信した個々のイベントを組み立て、モデルを作成する。
図2は、モデル作成部21の処理を模式的に説明する図である。図2において、〇で囲んだP1、P2はプログラム(実行ファイル)、□で囲んだF1はデータファイルを表している。
プログラムP1から起動されたプロセスによるファイルF1の読み込み(read)/書き込み(write)、及び、プログラムP2の実行(execute)を、図2のように表すことにする。
ここで、モデル作成部21で一連のイベントを組み立てた結果、例えば図3のようなプロセスの振る舞いになったとする。
図3では、
・プログラムP1が、プログラムP2を実行する(execute)。
・プログラムP2は、ファイルF1への読み込み/書き込み(read/write)、ファイルF2の読み込み(read)、その後、プログラムP3を実行する(execute)。
・プログラムP3は、ファイルF3の読み込み(read)とファイルF4の書き込み(write)を行う。
モデル作成部21は、図3に示した振る舞いから分析用のモデルを作成する。具体的には、子プロセスの振る舞いは、親プロセスの振る舞いであるとみなし、図4に例示するような、振る舞いモデルを作成する。
図4の例では、モデル作成部21は、プログラムP3のプロセスの振る舞いは親プロセスの振る舞いでもあるとみなして、プログラムP2のプロセスの振る舞いモデルを作成している。
同様に、モデル作成部21は、プログラムP2の振る舞いは、プログラムP1の振る舞いでもあるとみなして、プログラムP1のモデルを作成している。
モデル作成部21では、プログラムP1のモデルに、
・P1の振る舞い(プログラムP2の実行(execute))のほか、
・P2の振る舞い(ファイルF1への読み込み/書き込み(read/write)、ファイルF2の読み込み(read)、その後、プログラムP3を実行(execute))、
・P3の振る舞い(ファイルF3の読み込み(read)とファイルF4の書き込み(write))を展開して埋め込んでいる。
モデル作成部21において、このように加工を行うのは、子プロセスを多用し、目的の処理を子プロセスに実行させる特徴を持つスクリプトがあるためである。
次に、モデル作成部21は、作成したモデルをモデル記憶部22へ登録する。
図4に例示したモデルに関して、モデル作成部21で作成したモデルをモデル記憶部22へ登録する例として、例えば図5に例示するようなテーブル形式で登録してもよい。図5において、モデル主体IDと実主体IDの列(column あるいは欄(field))は、同じプログラムが複数回起動されたときのプロセスを識別するためのIDである。
図5において、モデル主体IDは、各振る舞いを行ったとみなすプロセスを示しており、図4に対応する。実主体IDは、各振る舞いを実際に行ったプロセスを示しており、図3に対応する。主体プログラムは該プロセスを生成したプログラムである。発生順序、操作、操作対象は、前述したイベントの発生順序、操作、操作対象に対応する。例えば図5の一行目は、図4のモデルにおいて、プログラムP1がモデル主体ID、実主体IDであり、主体プログラムであるP1が発生順序:1番目で、操作対象:P2に対する操作:executeを行うことを表している。
図3と図6のプロセスの振る舞いが監視エージェント11によって複数回観測され、監視エージェント11からイベント情報を受信したモデル作成部21がモデル化してモデル記憶部22へ登録したとする。図6に示したプロセスの振る舞いは、モデル作成部21において、前述した処理を行うことで、図7のようなモデルとしてモデル化される。
モデル記憶部22へモデルが蓄積されると、モデル分析部23は分析を開始する。
図8は、モデル分析部23の処理手順を説明する流れ図である。モデル分析部23は、モデル記憶部22にモデルが蓄積されたプログラムを探し、分析対象のプログラムを選択する(S101)。ここで、プログラムP2が、分析対象プログラムとして選択されたとする。
次に、モデル分析部23は、分析対象プログラムのモデルをモデル記憶部22から取得し、共通の振る舞いを検出する(S102)。
一例として、モデル記憶部22へ登録された図4と図7のモデルにおいて、プログラムP2のモデルを比較すると、
・ファイルF1に対する操作:read/write、
・プログラムP3に対する操作:execute、及び、
・ファイルF3に対する操作:read
が共通している。
プログラムP2がインタプリタであると仮定した場合、これらの共通の振る舞いは、スクリプトの違いによらず、常に行われる振る舞いであると考えられる。一般的なプログラムに例えると、ライブラリのロードや設定の読み込み、ログの出力などが挙げられる。以降、このような振る舞いを、本明細書では、「インタプリタの共通の振る舞い」と呼ぶ。
次に、モデル分析部23は、分析対象プログラムのモデル群をモデルの類似度でグループ化する(S103)。
モデルのグループ化は、インタプリタが同じスクリプトを実行しているならば、その振る舞いは類似する(類似するモデルになる)はずであるという前提に基づいて行われる。ただし、前の手順(S102)で検出したインタプリタの共通の振る舞いは、スクリプトの違いに関わらず類似するため、グループ化の判定基準から除外する。
モデル分析部23におけるモデルのグループ化の一例として、例えば、モデルの類似度を距離として数値化することによって既存のクラスタリング手法(教師なし機械学習:データの集まりをデータ間の類似度等に従っていつかのグループに分ける手法)を適用することができる。
類似度の距離は、例えば、
モデルの振る舞いの操作対象が同じならばモデル間の距離は近い、
モデルの振る舞いの操作対象に対する操作(read/write/execute)が同じならばモデル間の距離は近い、
モデルの振る舞いの順序が同じならばモデル間の距離は近い、
などの基準を用いてもよい。あるいは、監視対象システム10に合わせて、これらの基準を適宜調整(チューニング)するようにしてもよい。
モデル分析部23では、モデルの類似度に基づくグループ化の結果、類似するモデルが無い場合には(S104の分岐B)、分析対象プログラムがインタプリタではないと判断し、当該分析対象プログラムの分析を終了する。
類似するモデルが無いことは、
・類似度の低いモデルが同一グループになる、又は
・モデル数の少ないグループに分かれる、
ことから判断することができる。
モデル分析部23において、類似するモデルでグループ化できた場合(S104の分岐A)、分析対象プログラムがインタプリタであり、それぞれのグループがスクリプトを実行していると判断して、スクリプトの特定を行う(S105)。
図4のプログラムP2のモデルを分析してスクリプトの特定を行う手順(図8のS105)を以下に説明する。
図4に示したプログラムP2のモデルの振る舞いのうち、
・ファイルF1に対する操作:read/write、
・プログラムP3に対する操作:execute、
・ファイルF3に対する操作:read、
は、インタプリタの共通の振る舞いであるとわかっている。このため、図4において、これらを分析の対象から外すと、図9の太線で示した振る舞いが残る。
インタプリタはスクリプトを実行する前に当該スクリプトを読み込むはずであるという前提に基づき、図9の残された振る舞い(太線)のうち、プログラムP2が最初に読み込みを行ったファイルF2を、スクリプトとして特定することができる。
つまり、プログラムP2は、ファイルF2の入力によって、その後の振る舞いが変化させられたと見做すことができる。
同様に、図7のプログラムP2のモデルから、インタプリタの共通の振る舞いを除外すると、図10の太線の振る舞いが残る。図10において、太線で示す残りの振る舞いから、プログラムP2によって最初に読み込まれたファイルF5がスクリプトであると特定することができる。
次に、モデル分析部23において、上記と同様の分析を、他のプログラムP3とP1に対しても適用する場合について説明する。図4及び図7のP3のモデルを分析した場合、グループ化の結果によっては、プログラムP3がインタプリタであり、ファイルF3かF6がスクリプトであると、モデル分析部23によって特定される可能性がある。
しかし、インタプリタが同じスクリプトを実行しているならば、その振る舞いは類似するはずである、ということを前提としたとする。この前提に基づくと、スクリプトファイルF2を実行しているプログラムP2のプロセスの子プロセスとして実行されたプログラムP3の振る舞いが類似するモデルになるのは必然であると考えられる。
このため、モデル分析部23において、プログラムP2がスクリプトを実行していると判定した時点で、プログラムP3はスクリプトを実行していないと判定する。
モデル分析部23では、スクリプトファイルF5の子プロセスについても、同様に判定する。
また、スクリプト全体の振る舞いを決めるのは、子プロセスより親側のプロセスのスクリプトであると考えられる。
このことから、プログラムP3がスクリプトを実行していたとしても、分析結果として出力する情報としては、親プロセスであるプログラムP2が実行しているスクリプト情報のほうが有用であると考えられる。
ただし、スクリプトの検出結果を利用するアプリケーション(スクリプト情報利用装置30上のアプリケーション)によっては、プログラムP3が実行するスクリプトの情報が有用である可能性もあるため、プログラムP3がスクリプトを実行していると判定してもよい。
モデル分析部23において、図4及び図7に示したプログラムP1のモデルを分析した場合、グループ化の結果によっては、子プロセスが読み込んだファイルのいずれかがスクリプトとして特定される可能性がある。このとき、モデル分析部23において、プログラムP1のモデルの振る舞いから、プログラムP1が常に実行する振る舞いを除外し、残った振る舞いが図11の太線の通りであったとする。
モデル分析部23において、図11に太線で示す残った振る舞いを実際に実行していたプログラムを確認するため、モデル記憶部22に格納された図5の情報と照合して各振る舞いの実主体IDを確認する。その結果、図11に太線で示す残った振る舞いを実際に実行したプロセスは、図12に太線で示す振る舞いのように、プログラムP2の配下に閉じていることがわかる。
このことから、モデル分析部23では、プログラムP1はスクリプトを実行していないと判断する。
プログラムP1がスクリプトを実行していたとしても、スクリプト全体の振る舞いに影響を与えない、と考えられる。このため、モデル分析部23が分析結果として出力する情報としては、事実上の振る舞いを決定しているプログラムP2のスクリプト情報の方が有用である、と考えられる。
ただし、スクリプトの検出結果を利用するアプリケーション(スクリプト情報利用装置30上のアプリケーション)によっては、プログラムP1が実行するスクリプトの情報が有用である可能性もある。このため、例えばスクリプト検出結果の利用等に応じて、モデル分析部23では、プログラムP1がスクリプトを実行していると判定してもよい。
モデル分析部23は、特定されたスクリプトと周辺プロセスとの関係として、該スクリプトを実行する親プロセスが該スクリプトの振る舞いに影響を与えていない場合(S106の分岐D)、分析を終了する。
次に、モデル分析部23は、特定したスクリプトのモデルのグループを分析し、グループ内で共通の振る舞いを抽出する(S107)。プログラムが同じスクリプトを実行しているならば、その振る舞いは類似するモデルになるという前提があるが、全く同じになるわけではない。このため、モデル分析部23では、特定したスクリプトが実行されるごとに異なっていた振る舞いを除外する。その結果、残された振る舞いは、特定したスクリプトがグループ内で常に実行する振る舞いであると考えられる。スクリプトがグループ内で常に実行する振る舞いを「スクリプトの共通の振る舞い」と呼ぶことにする。
1つのスクリプトの振る舞いが大幅に変わる場合には、当該1つのスクリプトに対して複数の振る舞いのグループに分けられる場合もあるが、本手順の通りに、分析可能である。
次に、モデル分析部23は、分析結果を分析結果記憶部24へ格納する(S108)。具体的には、モデル分析部23は、
・インタプリタの共通の振る舞い、及び、
・インタプリタとスクリプトの組み合わせにおけるスクリプトの共通の振る舞い、
を格納する。
図13(A)、(B)は、分析結果記憶部24に記憶された分析結果の一例を説明する図である。図13(A)において、テーブル401は、インタプリタの共通の振る舞いを記憶する。図13(B)において、テーブル402は、インタプリタとスクリプトの組み合わせにおけるスクリプトの共通の振る舞いを記憶する。
図13(A)の例では、テーブル401において、インタプリタ(プログラム)P2は、発生順序:1で操作対象:ファイルF1に操作:read/writeを行い、発生順序:2で操作対象:プログラムP3に操作:executeを行い、発生順序:3で操作対象:ファイルF3に操作:readを行っている。
また、図13(B)の例では、テーブル402において、インタプリタ(プログラム)P2は、スクリプト(スクリプトファイル)F2を読み込んで実行し、操作対象:ファイルF4に操作:writeを発生順序:1で行っている。また、インタプリタP2は、スクリプト(スクリプトファイル)F5を読み込んで実行し、操作対象:ファイルF6に操作:read/writeを発生順序:1で行っている。なお、ファイルF2、F5等、インタプリタで読み込まれるスクリプトファイルは、単にスクリプトともいう。
この時点(モデル分析部23が分析結果を分析結果記憶部24へ格納した時点)で、過去に実行されたインタプリタP2とスクリプトF2、F5が特定されている。このため、スクリプト情報利用装置30が許容するのであれば、スクリプト検出装置20は、モデル分析部23で特定されたスクリプトの情報をスクリプト情報利用装置30に出力しても良い。
ただし、インタプリタとスクリプトの特定を行うために、スクリプトが複数回実行されるだけの時間が経過しているため、古い情報となっている。
次に、本実施形態において、モデル分析部23によって特定されたスクリプトの情報が分析結果記憶部24に格納された後の動作を説明する。
監視対象システム10において、再びプログラムP1が実行され、図3の通りに動作すると、監視エージェント11からスクリプト検出装置20へイベント情報が送信される。スクリプト検出部25とモデル作成部21が該イベント情報を受信する。モデル作成部21は、該イベント情報を受信すると、前述の通り動作する。
スクリプト検出部25は、図14の処理手順に従って、スクリプトが実行されたことを検出する。
図14を参照すると。最初に、スクリプト検出部25は、実行されたプログラムP1、P2、P3の情報が、分析結果記憶部24に登録されていることを確認する(S201)。
ここで、分析結果記憶部24には、図13(A)のテーブル401のように、プログラムP2のインタプリタの共通の振る舞いが登録されているが、プログラムP1とP3の情報は登録されていなかったとする。
スクリプト検出部25は、分析結果記憶部24にインタプリタの共通の振る舞いが登録されている場合(S202の分岐A)、当該プログラム(この場合、プログラムP2)が実行するスクリプトを検出することができると判断し、分析を行う。
一方、スクリプト検出部25は、分析結果記憶部24にインタプリタの共通の振る舞いが登録されていない場合、当該プログラム(この場合、プログラムP1とP3)の分析は行わない(S202の分岐B)。
スクリプト検出部25は、モデル作成部21と同様の手順で振る舞いのモデルを組み立て、例えば図4のプログラムP2のモデルを作成する(S203)。
次に、スクリプト検出部25は、図13(A)の分析結果記憶部24のテーブル401を参照して、プログラムP2のインタプリタの共通の振る舞いをモデルから除外し(S204)、図9の実線で示すモデルを得る。図4のプログラムP2のモデルから、プログラムP2のインタプリタの共通の振る舞い(順序1でファイルF1に対してread/write、順序2でプログラムP3をexecute、順序3でファイルF3に対してread)を削除すると、図9に実線で示すプログラムP2のモデル(順序1でファイルF2に対してread、順序2でファイルF4に対してwrite)を得る。
スクリプト検出部25は、図9のモデルに基づき、前述したモデル分析部23と同様の方法で、残された振る舞いの中で、最初に読み込まれたファイルF2がスクリプトである可能性が高いと判断する(S205)。
この時点で、スクリプト検出部25は、インタプリタP2によりスクリプトF2が実行されたことを、スクリプト情報利用装置30へ確度の低い情報として通知してもよい。
この方法によれば、スクリプト検出部25がモデルを完成させる前であっても、インタプリタP2がスクリプトF2を読み込んだことが判明した時点で通知できる。このため、ヒューリスティックであるが、スクリプト検出部25は、スクリプト情報利用装置30に対して、リアルタイムに近い通知が可能である(S206の分岐D)。
次に、スクリプト検出部25は、図13(B)の分析結果記憶部24のテーブル402を参照して、インタプリタP2とスクリプトF2の組み合わせにおけるスクリプトの共通の振る舞いを取得する(S207)。
ここで、分析中のプログラムが分析結果記憶部24にはインタプリタとして登録されているにもかかわらず、特定したスクリプトが分析結果記憶部24に登録されていない場合に、初めて実行されたスクリプトであると判定し、スクリプト情報利用装置30へ通知する。
例えば、分析中のプログラムがP2であり、スクリプト検出部25が特定したスクリプトがファイルF3であったとする。
図13(A)の分析結果記憶部24のテーブル401には、プログラムP2がインタプリタとして登録されているが、図13(B)の分析結果記憶部24のテーブル402には、ファイルF3がスクリプトとして登録されていない。このため、スクリプト検出部25では、ファイルF3は初めて実行されたスクリプトであると判定する。
スクリプト検出部25におけるこの判定方法は、インタプリタが既知のスクリプトを読み込んだ時点でスクリプトが実行されたと判断する方法と同様に、ヒューリスティックな方法である。しかしながら、この判定方法によれば、監視対象システム10においてスクリプトが複数回実行され、その振る舞いに対するモデル分析部23による分析結果を待たずに、スクリプト検出部25では新しく実行されたスクリプトを検出することができる。
スクリプト検出部25は、インタプリタ(プログラム)P2とスクリプトF2の組み合わせにおけるスクリプトの共通の振る舞いを、スクリプト検出部25自身が組み立てたモデルと比較する(S208)。スクリプト検出部25が組み立てたモデルが、図13(B)の分析結果記憶部24のテーブル402から取得したスクリプトの共通の振る舞いを包含している場合には、スクリプト検出部25は、インタプリタ(プログラム)P2によりスクリプトファイルF2が実行されたと判断し(S208の分岐E)、スクリプト情報利用装置30へ通知する。
スクリプトの振る舞いは常に同じとは限らない。このため、分析結果記憶部24に格納されたスクリプトの共通の振る舞い以外の振る舞いがあったとしても、スクリプト検出部25では、これを無視する。
一方で、スクリプト検出部25が組み立てたモデルが、図13(B)の分析結果記憶部24のテーブル402から取得したスクリプトの共通の振る舞いを包含しない場合には(S209の分岐H)、スクリプト検出部25では、分析対象のプログラムP2は既知のスクリプトを実行していないと判断する。この場合、監視エージェント11からのイベント情報を受け取ったモデル作成部21で新しくモデルが生成され、モデル分析部23経由で新しく振る舞いが分析され、分析結果記憶部24の内容が更新されるまで(当該スクリプトの共通の振る舞いが図13(B)の分析結果記憶部24のテーブル402に登録されるまで)、スクリプト検出部25では、当該スクリプトを既知のスクリプトとしては検出しない。
スクリプト検出部25がスクリプトの実行を検出した場合に(S206の分岐D、S209の分岐G)、スクリプト情報をスクリプト情報利用装置30へ出力する(S210)。
スクリプト検出部25がスクリプト情報利用装置30に通知するスクリプト情報の内容としては、インタプリタとスクリプトのファイル名としてもよい。あるいは、監視エージェント11からプロセスIDや実行時刻等の関連する情報を取得しておき、スクリプト情報利用装置30へ通知する情報に含めるようにしてもよい。
本実施形態によれば、実環境におけるプロセスの振る舞いを分析することで、プログラムの振る舞いを決める大元の入力を特定するものであり、結果として、インタプリタとスクリプトの特定を可能としている。
本実施形態によれば、監視対象システム10で実行されるプログラムのうちどのプログラムがインタプリタであり、どのファイルをスクリプトとして実行しているかを機械的に特定することを可能としている。このため、システムの動作の分析や動作ログの出力などに実行されたスクリプトの情報を利用することができる。
本実施形態において、モデルをグループ化するためのモデル間の距離の算出のために監視エージェント11から追加の情報をスクリプト検出装置20に送信してもよい。例えば、ユーザ間でスクリプトが共有されないシステムでは、監視エージェント11からプログラムを実行したユーザの情報をスクリプト検出装置20に送信し、モデル分析部23やスクリプト検出部25では、該プログラムを実行したユーザの違いをモデル間の距離に反映するようにしてもよい。このように、モデル間の距離の算出のための追加情報を利用することで、グループ化の精度を向上できる可能性がある。
図13(B)の分析結果記憶部24では、テーブル402において、インタプリタとスクリプトの組み合わせをキーにしているが、スクリプトだけをキーとしても良い。例えば複数のバージョンのインタプリタがインストールされたシステムで、あるスクリプトを異なるバージョンのインタプリタで実行しても同じ振る舞いになると見做すことができる場合、インタプリタの違いは無視することができる。
本実施形態では、スクリプトはファイルであることを前提に説明したが、実環境では、端末間通信などのファイル以外の形で得たデータがメモリ上でスクリプトとして実行される場合がある。
例えば、監視エージェント11において、端末間通信などのプロセスがアクセスしたデータを監視し、監視結果であるイベント情報をスクリプト検出装置20に送信し、スクリプト検出装置20でモデル化して分析することで、ファイル以外の形で存在するスクリプトを検出することが可能である。
図15は、図1のスクリプト検出装置20をコンピュータ装置100で構成した例を説明する図である。コンピュータ装置100は、プロセッサ101、メモリ102、表示装置103、通信インタフェース104を備えている。メモリ102は、例えばRAM(Random Access Memory)、ROM(Read Only Memory)、又は、EEPROM(Electrically Erasable and Programmable ROM)等の半導体メモリであってもよいし、あるいは、HDD(Hard Disk Drive)、SSD(Solid State Drive,)、USB(Universal Serial Bus)、CD(Compact Disc)、DVD(Digital Versatile Disc)等のストレージデバイスであってもよい。メモリ102は、プロセッサ101で実行させるプログラム(命令群(instructions)、データ)110を記憶している。通信インタフェース104は、NIC(Network Interface Card)等を備え、監視対象システム10及びスクリプト情報利用装置30に通信ネットワークを介して通信接続する。プロセッサ101は複数のプロセッサ構成(マルチプロセッサ等)であってもよい。特に制限されないが、コンピュータ装置100は、例えばサーバ装置であってもよい。この場合、コンピュータ装置100は、例えば監視対象システム10でのスクリプト検出による各種クラウドサービス(例えばインシデント検知サービス等)を提供するクラウドサーバ装置であってもよい。あるいは、別の形態として、コンピュータ装置100は、監視対象システム10に直結する構成としてもよい。
例えばプロセッサ101がメモリ102から読み出して実行するプログラム110は、図16に例示するように、モデル作成モジュール111とモデル分析モジュール112を含む。
モデル作成モジュール111は、プロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成する。
モデル分析モジュール112は、分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断し、モデルを分析してスクリプトの特定を行う。
さらに、モデル分析モジュール112の処理につづいて、特定されたスクリプトが分析結果記憶部(図1の24)に格納されているスクリプトであるか否かを判別し、前記特定されたスクリプトが既知のプロセスであるか否かを判別するプログラムモジュールを含むようにしてもよい。
上記各モジュールは、スクリプト検出部25の処理に対応しているが、メモリ102に保持されるプログラム110は、スクリプト検出部25の処理に制限されるものでないことは勿論である。例えば、プログラム110は、前記実施形態で説明したモデル作成部21、及びモデル分析部23の処理をプロセッサ101で実行させるためのプログラムモジュールを含むようにしてもよい。
さらに、スクリプト情報利用装置30も、図15に例示したコンピュータ装置100で実装するようにしてもよいことは勿論である。なお、スクリプト検出装置20とスクリプト情報利用装置30をバス接続、又は直接接続(例えばプロセッサ装置の直接接続)等で接続し一つの装置内に実装するようにしてもよいことは勿論である。この場合、スクリプト検出装置20とスクリプト情報利用装置30の処理を、1つのプロセッサで実行するか、各装置の処理を1つ又は複数のプロセッサで実行するようにしてもよい。
図1において、監視対象システム10は、複数の端末装置(情報通信装置)を備えた構成としてもよい。スクリプト検出装置20では、端末装置毎にインストールされた監視エージェント11からイベント情報を受信してモデルを作成し、モデルの分析結果(特定されたスクリプト情報等)を、端末装置のID(Identification)やアドレス(例えばIP(Internet Protocol)アドレス)等に関連付けて(紐付けて)分析結果記憶部24に格納するようにしてもよい。この場合、スクリプト検出部25では、端末装置毎に、モデルを組み立てて検出したスクリプトが、分析結果記憶部24に登録されている既知のスクリプトであるか、新しいスクリプトであるかを判別するようにしてもよい。なお、監視対象システム10上のプロセスの振る舞いを監視するための監視エージェント11がインストール可能であり、スクリプトを実行するものであれば、監視対象システム10は、端末装置に制限されるものでなく、例えばルータ等のネットワーク機器や、サーバ装置等、IoT(Internet of Things)デバイス任意の情報通信装置を含む構成としてもよい。
本実施形態は、プロセスの振る舞いをモデル化して分析することでスクリプトを特定可能としているが、例えばセキュリティ分野に適用した場合に、マルウェアの検出やフォレンジック等に利用することもできる(ただし、左記に制限されない)。その他の適用分野として、システムの振る舞いの分析や最適化など、システムの運用管理などにも利用できる。
なお、上記の特許文献1、2、及び非特許文献1の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
上記した実施形態は、例えば以下のように付記される(ただし、以下に制限されない)。
(付記1)
監視対象システム上のプロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成する第1の手段と、
分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行う第2の手段と、
を含む、スクリプト検出装置。
(付記2)
前記第2の手段で特定されたスクリプトが記憶部に格納されているスクリプトであるか否かを判別し、前記特定されたスクリプトが既知のプロセスであるか否かを判別する第3の手段をさらに含む、付記1に記載のスクリプト検出装置。
(付記3)
前記第1乃至第3の手段を備えたスクリプト検出部を備え、さらに、
前記第1の手段と同様に、前記イベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成するモデル作成部と、
前記第2の手段と同様にして、スクリプトを特定し、特定したスクリプトの情報を前記記憶部に格納するモデル分析部と、
前記記憶部と、
を含む、付記2に記載のスクリプト検出装置。
(付記4)
前記第2の手段は、類似したモデルでグループ化できた場合、前記インタプリタの共通の振る舞いとして、前記インタプリタによる操作と、操作対象を関連付けて前記記憶部に記憶し、
さらに、前記スクリプトの共通の振る舞いとして、前記スクリプトと、前記スクリプトを実行するインタプリタによる操作、操作対象を関連付けて前記記憶部に記憶する、付記2又は3に記載のスクリプト検出装置。
(付記5)
前記第3の手段は、前記第1の手段で組み立てた前記モデルに関して、前記スクリプトの振る舞いが、前記記憶部から取得した前記スクリプトの共通の振る舞いを包含している場合には、前記インタプリタである前記分析対象のプログラムにより前記特定したスクリプトファイルが実行されたと判断し、前記スクリプトの振る舞いが、前記記憶部から取得した前記スクリプトの共通の振る舞いを包含しない場合には、前記分析対象のプログラムは、既知のスクリプトを実行していないと判断する、付記4に記載のスクリプト検出装置。
(付記6)
前記第2の手段は、類似度に基づきグループ化を行うにあたり、スクリプトの相違によらずインタプリタで共通に行われる振る舞いを外した上で前記グループ化を行う、付記1乃至5のいずれかに記載のスクリプト検出装置。
(付記7)
前記第2の手段は、子プロセスの振る舞いを、親プロセスである大元のプログラムの振る舞いに埋め込み、前記大元のプログラムの時間軸上の振る舞いとして展開したモデルを生成する、付記1乃至6のいずれかに記載のスクリプト検出装置。
(付記8)
前記第2の手段は、子プロセスであるプログラムが第1のスクリプトを実行していると判断し、さらに、前記子プロセスの親プロセスであるプログラムが第2のスクリプトを実行していると判断した場合、スクリプト情報の有用性に基づき、前記第1及び第2のスクリプトのいずれか一方のスクリプトを選択して前記記憶部に記憶する、付記1乃至7のいずれかに記載のスクリプト検出装置。
(付記9)
前記第2の手段は、子プロセスであるプログラムが第1のスクリプトを実行していると判断し、さらに、前記子プロセスの親プロセスであるプログラムが第2のスクリプトを実行していると判断した場合、スクリプト全体の振る舞いに与える影響に基づき、スクリプトを選択して前記記憶部に記憶する、付記1乃至8のいずれかに記載のスクリプト検出装置。
(付記10)
付記1乃至9のいずれかに記載の前記スクリプト検出装置と、
前記スクリプト検出装置に通信接続され、前記スクリプト検出装置からスクリプト検出結果を受け取り、前記スクリプト検出結果を利用して前記監視対象システムに関する分析を行うスクリプト情報利用装置と、
を備えた管理システム。
(付記11)
プロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成する第1の処理と、
分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行う第2の処理を含む、スクリプト検出方法。
(付記12)
前記第2の処理で特定されたスクリプトが記憶部に格納されているスクリプトであるか否かを判別し、前記特定されたスクリプトが既知のプロセスであるか否かを判別する第3の処理をさらに含む、付記11に記載のスクリプト検出方法。
(付記13)
前記第1乃至第3の処理をスクリプト検出部で実行し、
前記第1の処理と同様に、前記イベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成するモデル作成処理と、
前記第2の処理と同様にして、スクリプトを特定し、特定したスクリプトの情報を前記記憶部に格納するモデル分析処理を含む、付記12に記載のスクリプト検出方法。
(付記14)
前記第2の処理は、類似したモデルでグループ化できた場合、前記インタプリタの共通の振る舞いとして、前記インタプリタによる操作と、操作対象を関連付けて前記記憶部に記憶し、
さらに、前記スクリプトの共通の振る舞いとして、前記スクリプトと、前記スクリプトを実行するインタプリタによる操作、操作対象を関連付けて前記記憶部に記憶する、付記12又は13に記載のスクリプト検出方法。
(付記15)
前記第3の処理は、前記第1の処理で組み立てた前記モデルに関して、前記スクリプトの振る舞いが、前記記憶部から取得した前記スクリプトの共通の振る舞いを包含している場合には、前記インタプリタである前記分析対象のプログラムにより前記特定したスクリプトファイルが実行されたと判断し、前記スクリプトの振る舞いが、前記記憶部から取得した前記スクリプトの共通の振る舞いを包含しない場合には、前記分析対象のプログラムは、既知のスクリプトを実行していないと判断する、付記14に記載のスクリプト検出方法。
(付記16)
前記第2の処理は、類似度に基づきグループ化を行うにあたり、スクリプトの相違によらずインタプリタで共通に行われる振る舞いを外した上で前記グループ化を行う、付記11乃至15のいずれかに記載のスクリプト検出方法。
(付記17)
前記第2の処理は、子プロセスの振る舞いを、親プロセスである大元のプログラムの振る舞いに埋め込み、前記大元のプログラムの時間軸上の振る舞いとして展開したモデルを生成する、付記11乃至16のいずれかに記載のスクリプト検出方法。
(付記18)
前記第2の処理は、子プロセスであるプログラムが第1のスクリプトを実行していると判断し、さらに、前記子プロセスの親プロセスであるプログラムが第2のスクリプトを実行していると判断した場合、スクリプト情報の有用性に基づき、前記第1及び第2のスクリプトのいずれか一方のスクリプトを選択して前記記憶部に記憶する、付記11乃至17のいずれかに記載のスクリプト検出方法。
(付記19)
前記第2の処理は、子プロセスであるプログラムが第1のスクリプトを実行していると判断し、さらに、前記子プロセスの親プロセスであるプログラムが第2のスクリプトを実行していると判断した場合、スクリプト全体の振る舞いに与える影響に基づき、スクリプトを選択して前記記憶部に記憶する、付記11乃至18のいずれかに記載のスクリプト検出方法。
(付記20)
プロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成する第1の処理と、
分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行う第2の処理と、
をコンピュータに実行させるプログラム。
(付記21)
前記第2の処理で特定されたスクリプトが記憶部に格納されているスクリプトであるか否かを判別し、前記特定されたスクリプトが既知のプロセスであるか否かを判別する第3の処理をさらに前記コンピュータに実行させる付記20に記載のプログラム。
(付記22)
前記第1乃至第3の処理がスクリプト検出モジュールを構成し、
前記第1の処理と同様に、前記イベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成するモデル作成処理と、
前記第2の処理と同様にして、スクリプトを特定し、特定したスクリプトの情報を前記記憶部に格納するモデル分析処理をさらに含む、付記21に記載のプログラム。
(付記23)
前記第2の処理は、類似したモデルでグループ化できた場合、前記インタプリタの共通の振る舞いとして、前記インタプリタによる操作と、操作対象を関連付けて前記記憶部に記憶し、
さらに、前記スクリプトの共通の振る舞いとして、前記スクリプトと、前記スクリプトを実行するインタプリタによる操作、操作対象を関連付けて前記記憶部に記憶する、付記21又は22に記載のプログラム。
(付記24)
前記第3の処理は、前記第1の処理で組み立てた前記モデルに関して、前記スクリプトの振る舞いが、前記記憶部から取得した前記スクリプトの共通の振る舞いを包含している場合には、前記インタプリタである前記分析対象のプログラムにより前記特定したスクリプトファイルが実行されたと判断し、前記スクリプトの振る舞いが、前記記憶部から取得した前記スクリプトの共通の振る舞いを包含しない場合には、前記分析対象のプログラムは、既知のスクリプトを実行していないと判断する、付記23に記載のプログラム。
(付記25)
前記第2の処理は、類似度に基づきグループ化を行うにあたり、スクリプトの相違によらずインタプリタで共通に行われる振る舞いを外した上で前記グループ化を行う、付記20乃至24のいずれかに記載のプログラム。
(付記26)
前記第2の処理は、子プロセスの振る舞いを、親プロセスである大元のプログラムの振る舞いに埋め込み、前記大元のプログラムの時間軸上の振る舞いとして展開したモデルを生成する、付記20乃至25のいずれかに記載のプログラム。
(付記27)
前記第2の処理は、子プロセスであるプログラムが第1のスクリプトを実行していると判断し、さらに、前記子プロセスの親プロセスであるプログラムが第2のスクリプトを実行していると判断した場合、スクリプト情報の有用性に基づき、前記第1及び第2のスクリプトのいずれか一方のスクリプトを選択して前記記憶部に記憶する、付記20乃至26のいずれかに記載のプログラム。
(付記28)
前記第2の処理は、子プロセスであるプログラムが第1のスクリプトを実行していると判断し、さらに、前記子プロセスの親プロセスであるプログラムが第2のスクリプトを実行していると判断した場合、スクリプト全体の振る舞いに与える影響に基づき、スクリプトを選択して前記記憶部に記憶する、付記20乃至27のいずれかに記載のプログラム。
(付記29)
付記20乃至28のいずれかに記載のプログラムを記憶した非一時的なコンピュータ可読媒体。
10 監視対象システム
11 監視エージェント
20 スクリプト検出装置
21 モデル作成部
22 モデル記憶部
23 モデル分析部
24 分析結果記憶部
25 スクリプト検出部
30 スクリプト情報利用装置
100 コンピュータ装置
101 プロセッサ
102 メモリ
103 表示装置
104 通信インタフェース
110 プログラム
111 モデル作成モジュール
112 モデル分析モジュール

Claims (10)

  1. 監視対象システム上のプロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成する第1の手段と、
    分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行う第2の手段と、
    を含む、スクリプト検出装置。
  2. 前記第2の手段で特定されたスクリプトが記憶部に格納されているスクリプトであるか否かを判別し、前記特定されたスクリプトが既知のプロセスであるか否かを判別する第3の手段をさらに含む、請求項1に記載のスクリプト検出装置。
  3. 前記第1乃至第3の手段を備えたスクリプト検出部を備え、さらに、
    前記第1の手段と同様に、前記イベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成するモデル作成部と、
    前記第2の手段と同様にして、スクリプトを特定し、特定したスクリプトの情報を前記記憶部に格納するモデル分析部と、
    前記記憶部と、
    を含む、請求項2に記載のスクリプト検出装置。
  4. 前記第2の手段は、類似したモデルでグループ化できた場合、前記インタプリタの共通の振る舞いとして、前記インタプリタによる操作と、操作対象を関連付けて前記記憶部に記憶し、
    さらに、前記スクリプトの共通の振る舞いとして、前記スクリプトと、前記スクリプトを実行するインタプリタによる操作、操作対象を関連付けて前記記憶部に記憶する、請求項2又は3に記載のスクリプト検出装置。
  5. 前記第3の手段は、前記第1の手段で組み立てた前記モデルに関して、前記スクリプトの振る舞いが、前記記憶部から取得した前記スクリプトの共通の振る舞いを包含している場合には、前記インタプリタである前記分析対象のプログラムにより前記特定したスクリプトファイルが実行されたと判断し、前記スクリプトの振る舞いが、前記記憶部から取得した前記スクリプトの共通の振る舞いを包含しない場合には、前記分析対象のプログラムは、既知のスクリプトを実行していないと判断する、請求項4に記載のスクリプト検出装置。
  6. 前記第2の手段は、類似度に基づきグループ化を行うにあたり、スクリプトの相違によらずインタプリタで共通に行われる振る舞いを外した上で前記グループ化を行う、請求項1乃至5のいずれか1項に記載のスクリプト検出装置。
  7. 前記第2の手段は、子プロセスの振る舞いを、親プロセスである大元のプログラムの振る舞いに埋め込み、前記大元のプログラムの時間軸上の振る舞いとして展開したモデルを生成する、請求項1乃至6のいずれか1項に記載のスクリプト検出装置。
  8. 請求項1乃至7のいずれか1項に記載のスクリプト検出装置と、
    前記スクリプト検出装置に通信接続され、前記スクリプト検出装置からスクリプト検出結果を受け取り、前記スクリプト検出結果を利用して前記監視対象システムに関する分析を行うスクリプト情報利用装置と、
    を備えた管理システム。
  9. プロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成し、
    分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行う、スクリプト検出方法。
  10. プロセスの振る舞いの監視の結果収集されたイベント情報を受信し、前記イベント情報に基づきプロセスの振る舞いのモデルを作成する処理と、
    分析対象のプログラムに関するモデルについて類似度に基づきグループ化できる場合、前記分析対象のプログラムはスクリプトを読み込んで実行するインタプリタであると判断しスクリプトの特定を行う処理と、
    をコンピュータに実行させるプログラム。
JP2019058148A 2019-03-26 2019-03-26 スクリプト検出装置、方法及びプログラム Active JP7302223B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019058148A JP7302223B2 (ja) 2019-03-26 2019-03-26 スクリプト検出装置、方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019058148A JP7302223B2 (ja) 2019-03-26 2019-03-26 スクリプト検出装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2020160679A true JP2020160679A (ja) 2020-10-01
JP7302223B2 JP7302223B2 (ja) 2023-07-04

Family

ID=72643410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019058148A Active JP7302223B2 (ja) 2019-03-26 2019-03-26 スクリプト検出装置、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP7302223B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017018377A1 (ja) * 2015-07-30 2017-02-02 日本電信電話株式会社 分析方法、分析装置、および分析プログラム
JP2017123142A (ja) * 2015-09-30 2017-07-13 エーオー カスペルスキー ラボAO Kaspersky Lab フィッシング・スクリプトを検出するためのシステム及び方法
JP2017527931A (ja) * 2014-08-11 2017-09-21 センチネル ラボズ イスラエル リミテッド マルウェア検出の方法及びそのシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017527931A (ja) * 2014-08-11 2017-09-21 センチネル ラボズ イスラエル リミテッド マルウェア検出の方法及びそのシステム
WO2017018377A1 (ja) * 2015-07-30 2017-02-02 日本電信電話株式会社 分析方法、分析装置、および分析プログラム
JP2017123142A (ja) * 2015-09-30 2017-07-13 エーオー カスペルスキー ラボAO Kaspersky Lab フィッシング・スクリプトを検出するためのシステム及び方法

Also Published As

Publication number Publication date
JP7302223B2 (ja) 2023-07-04

Similar Documents

Publication Publication Date Title
EP3200115B1 (en) Specification device, specification method, and specification program
CN109586282B (zh) 一种电网未知威胁检测系统及方法
CN107004088B (zh) 确定装置、确定方法及记录介质
KR101676366B1 (ko) 사이버 공격 대응을 위한 악성코드 침해 경로 및 행위 추적을 수행하는 침해 공격 추적 시스템 및 방법
KR101404882B1 (ko) 행위를 기반으로 한 악성코드 분류시스템 및 분류방법
JP6282217B2 (ja) 不正プログラム対策システムおよび不正プログラム対策方法
CN112131571B (zh) 威胁溯源方法及相关设备
KR101228902B1 (ko) 클라우드 컴퓨팅 기반 악성코드 분석 지원 시스템
KR102396237B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
WO2020246227A1 (ja) ルール生成装置、ルール生成方法、及びコンピュータ読み取り可能な記録媒体
CN111886594B (zh) 恶意进程跟踪
JP7302223B2 (ja) スクリプト検出装置、方法及びプログラム
US10002253B2 (en) Execution of test inputs with applications in computer security assessment
JP5679347B2 (ja) 障害検知装置、障害検知方法、及びプログラム
JP6053646B2 (ja) 監視装置及び情報処理システム及び監視方法及びプログラム
CN114090650A (zh) 一种样本数据识别方法、装置、电子设备及存储介质
JP2018132787A (ja) ログ分析支援装置およびログ分析支援方法
US20190377872A1 (en) Multiplexed - proactive resiliency system
WO2022195739A1 (ja) 活動痕跡抽出装置、活動痕跡抽出方法および活動痕跡抽出プログラム
US20240020391A1 (en) Log-based vulnerabilities detection at runtime
WO2023175954A1 (ja) 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体
KR102396238B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
WO2022195737A1 (ja) 活動痕跡抽出装置、活動痕跡抽出方法及び活動痕跡抽出プログラム
CN117056918A (zh) 一种代码分析方法及相关设备
Bruzzese An Analisys of Application Logs with Splunk: developing an App for the synthetic analysis of data and security incidents

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230206

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230605

R151 Written notification of patent or utility model registration

Ref document number: 7302223

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151