JP2008129707A - プログラム分析装置、プログラム分析方法、及びプログラム - Google Patents

プログラム分析装置、プログラム分析方法、及びプログラム Download PDF

Info

Publication number
JP2008129707A
JP2008129707A JP2006311779A JP2006311779A JP2008129707A JP 2008129707 A JP2008129707 A JP 2008129707A JP 2006311779 A JP2006311779 A JP 2006311779A JP 2006311779 A JP2006311779 A JP 2006311779A JP 2008129707 A JP2008129707 A JP 2008129707A
Authority
JP
Japan
Prior art keywords
program
history
type
predetermined program
predetermined
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
JP2006311779A
Other languages
English (en)
Inventor
Hisashi Arai
悠 新井
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.)
Lac Co Ltd
Original Assignee
Lac Co Ltd
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 Lac Co Ltd filed Critical Lac Co Ltd
Priority to JP2006311779A priority Critical patent/JP2008129707A/ja
Publication of JP2008129707A publication Critical patent/JP2008129707A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】多くのプログラムのプロファイリングを簡単に、かつ、短時間で行う。
【解決手段】プログラム分析装置10では、パラメータ取得部11が、ユーザが入力したパラメータを取得し、プログラム実行部12が、このパラメータに従って仮想OSを起動し、仮想OS上でプログラムを実行し、プログラムの動作履歴を動作履歴記憶部13に記録する。すると、プログラム分類部15は、条件記憶部14に記憶された条件、及び、動作履歴等を参照して、プログラムの種類を特定すると共に、動作履歴等からプログラムの特徴情報を生成し、これらの情報をプログラム情報としてプログラム情報記憶部16に記憶する。そして、プログラム情報出力部17が、プログラム情報記憶部16に記憶されたプログラム情報に基づいて、プログラムの種類を明示したプログラム分析レポートを出力する。
【選択図】図2

Description

本発明は、プログラムの動作を分析するプログラム分析装置等に関する。
近年のインターネットの爆発的な普及に伴い、ネットワーク上に存在する脅威は無視できないものとなっている。そのようなネットワーク上の脅威の1つに、悪性プログラムがある。この悪性プログラムは、「マルウェア」とも呼ばれ、ユーザにとって好ましくない悪意を持つプログラムのことを指している。この悪性プログラムの代表的なものとして、所謂コンピュータウイルスがある。
従来、コンピュータウイルスによる感染を防止したり、コンピュータウイルスの検査を容易に行ったりするための技術は提案されていた(例えば、特許文献1参照)。特許文献1では、仮想ホストを構築し、仮想ホスト上で被検査ファイルを実行することにより、実ホストへのウイルス感染を防止し、且つ容易にウイルス検査を行うことができるコンピュータウイルス検査装置を実現している。
特開2004−038273号公報
ところが、昨今、悪性プログラムは、非常に多様化しており、コンピュータウイルスと呼べない種類のものも多数存在している。例えば、作成者がネットワークを介して動きを制御できる「ボット」や、密かにコンピュータに侵入して情報を収集し外部に送信する「スパイウェア」や、一見無害に見えるが裏で破壊活動を行う「トロイの木馬」等の種類である。また、同じ種類の悪性プログラムであってもその動きは様々である。そこで、悪性プログラムについては、その挙動や侵入経路等のプロファイリングを行い、より効果的な防御を行うことが重要になってきている。
現状、かかるプロファイリングは、セキュリティ対策の専門家が複数のソフトウェアからの出力内容を照合しながら調査することで行われている。例えば、あるソフトウェアでログを調査し、別のソフトウェアで通信内容を調査し、更に別のソフトウェアで生成データを調査する、といった方法である。しかし、この方法では非常に時間がかかる。そして、ある意味で職人芸的な方法になってしまう。即ち、属人性の極めて高い方法でしか、ユーザが悪性プログラムの動作を知ることはできなかったのである。このようなプロファイリング方法では、1日当たり何十個という悪性プログラムの出現のスピードに追いつくことができず、また、高度な知識を持たないユーザは悪性プログラムの動作について吟味することができないという問題点があった。
また、特許文献1のコンピュータウイルス検査装置では、被検査ファイルがコンピュータウイルスに感染しているかどうかを検査するだけであり、悪性プログラムのプロファイリングを効率的に行う有効な手段を提供するものではなかった。
尚、ここでは、「悪性プログラム」に限定して説明したが、「悪性」とは言えないプログラムについても同様に考えることができる。例えば、ユーザのキータイプを記録する「キーロガー」は、「悪性プログラム」に分類されることが多いが、使用方法によっては「悪性」でない場合もあるからである。
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、多くのプログラムのプロファイリングを簡単に、かつ、短時間で行うことにある。
また、本発明の他の目的は、プログラムをプロファイリングした結果をユーザが簡単に知ることができるようにすることにある。
かかる目的のもと、本発明は、仮想オペレーティングシステム上でのプログラムの動作履歴に基づいてプログラムの種類を特定し、特定したプログラムの種類を明示したプログラム情報を出力するようにした。即ち、本発明のプログラム分析装置は、仮想オペレーティングシステムの起動、及び、仮想オペレーティングシステム上での所定のプログラムの実行を指示する指示手段と、この指示手段による指示に応じて仮想オペレーティングシステム上で実行された所定のプログラムの動作の履歴を記録する記録手段と、この記録手段により記録された動作の履歴に基づいて、所定のプログラムの種類を特定する特定手段と、この特定手段により特定された所定のプログラムの種類を明示したその所定のプログラムに関する情報を出力する出力手段とを備えている。
また、本発明は、記録手段により記録された動作の履歴に基づいて、動作の特徴を示す特徴情報を生成する生成手段を更に備え、出力手段は、生成手段により生成された特徴情報を、所定のプログラムに関する情報に含めて出力する、というものであってもよい。
更に、本発明は、プログラム分析方法として捉えることもできる。その場合、本発明のプログラム分析方法は、仮想オペレーティングシステムを起動するステップと、仮想オペレーティングシステム上で所定のプログラムを実行するステップと、所定のプログラムの動作の履歴を所定の記録領域に記録するステップと、所定の記録領域に記録された動作の履歴に基づいて、所定のプログラムの種類を特定するステップと、特定された所定のプログラムの種類を明示したその所定のプログラムに関する情報を出力するステップとを含んでいる。
一方、本発明は、プログラムを分析するためのコンピュータプログラムとして捉えることもできる。その場合、本発明のコンピュータプログラムは、仮想オペレーティングシステム上で実行された所定のプログラムの動作の履歴を記録する機能と、記録された動作の履歴に基づいて、所定のプログラムの種類を特定する機能と、特定された所定のプログラムの種類を明示したその所定のプログラムに関する情報を出力する機能とを実現させるものである。
本発明によれば、多くのプログラムのプロファイリングを簡単に、かつ、短時間で行うことができるようになる。
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
まず、本実施の形態におけるプログラム分析装置10として用いるのに好適なコンピュータのハードウェア構成について説明する。
図1は、このようなコンピュータのハードウェア構成の一例を示した図である。
図示するように、コンピュータは、演算手段であるCPU(Central Processing Unit)10aと、M/B(マザーボード)チップセット10bを介してCPU10aに接続されたメインメモリ10cと、同じくM/Bチップセット10bを介してCPU10aに接続された表示機構10dとを備える。また、M/Bチップセット10bには、ブリッジ回路10eを介して、ネットワークインターフェイス10fと、磁気ディスク装置(HDD)10gと、音声機構10hと、キーボード/マウス10iと、フレキシブルディスクドライブ10jとが接続されている。
尚、図1において、各構成要素は、バスを介して接続される。例えば、CPU10aとM/Bチップセット10bの間や、M/Bチップセット10bとメインメモリ10cの間は、CPUバスを介して接続される。また、M/Bチップセット10bと表示機構10dとの間は、AGP(Accelerated Graphics Port)を介して接続されてもよいが、表示機構10dがPCI Express対応のビデオカードを含む場合、M/Bチップセット10bとこのビデオカードの間は、PCI Express(PCIe)バスを介して接続される。また、ブリッジ回路10eと接続する場合、ネットワークインターフェイス10fについては、例えば、PCI Expressを用いることができる。また、磁気ディスク装置10gについては、例えば、シリアルATA(AT Attachment)、パラレル転送のATA、PCI(Peripheral Components Interconnect)を用いることができる。更に、キーボード/マウス10i、及び、フレキシブルディスクドライブ10jについては、USB(Universal Serial Bus)を用いることができる。
次に、本実施の形態におけるプログラム分析装置10の機能構成について説明する。
図2は、プログラム分析装置10の機能構成の一例を示したブロック図である。
図示するように、プログラム分析装置10は、パラメータ取得部11と、プログラム実行部12と、動作履歴記憶部13と、条件記憶部14と、プログラム分類部15と、プログラム情報記憶部16と、プログラム情報出力部17とを備えている。
パラメータ取得部11は、ユーザが入力したパラメータを取得する。ここで、パラメータとしては、図示するように、分析対象のプログラム、プログラム実行部12にて動作させるオペレーティングシステム(以下、「OS」という)、OSの起動日付、OSを起動してから停止させるまでの時間である生存期間等がある。
プログラム実行部12は、実OS上で仮想OSを起動し、パラメータ取得部11が取得したパラメータで指定されたプログラムをこの仮想OS上で実行する。即ち、本実施の形態では、仮想OSの起動及び仮想OS上でのプログラムの実行を指示する指示手段の一例としてプログラム実行部12を設けている。尚、このような仮想OSは、例えば、VMWare(登録商標)によって実現可能である。具体的には、VMWare自体を動作させている実OS(ホストOS)上でVMWareが生成した仮想コンピュータに対し、仮想OS(ゲストOS)をインストールすればよい。
また、プログラム実行部12は、仮想OS上でのプログラムの動作の履歴(以下、「動作履歴」という)を記録する。即ち、本実施の形態では、仮想OS上で実行されたプログラムの動作履歴を記録する記録手段の一例として、プログラム実行部12を設けている。ここで、プログラムの動作とは、例えば、プログラムが他の装置との間で行った通信や、プログラムが自装置内で行ったデータの生成がある。また、ファイルを削除する処理、OSに対して何らかの修正を施す処理、ユーザに対して何らかの情報を開示する処理等、プログラムが自装置内の資源に対して行った処理もある。そこで、本実施の形態では、動作履歴を、通信に関する履歴(以下、「通信履歴」という)と、データの生成に関する履歴(以下、「生成履歴」という)と、処理に関する履歴(以下、「処理履歴」という)とに分けて記録している。
動作履歴記憶部13は、プログラム実行部12が記録する動作履歴を記憶し蓄積する。
条件記憶部14は、仮想OS上で実行したプログラムを分類するための条件を記憶する。尚、条件の内容については後述する。
プログラム分類部15は、動作履歴記憶部13に記憶された動作履歴を、条件記憶部14に記憶された条件に基づいて解析することにより、仮想OS上で実行されたプログラムの種類を特定する。即ち、本実施の形態では、プログラムの種類を特定する特定手段の一例として、プログラム分類部15を設けている。また、プログラム分類部15は、プログラムの特徴を示す情報(以下、「特徴情報」という)の生成も行う。即ち、本実施の形態では、特徴情報を生成する生成手段の一例として、プログラム分類部15を設けている。
プログラム情報記憶部16は、プログラム分類部15が特定したプログラムの種類を特定する情報や、プログラム分類部15が生成した特徴情報を、分析対象のプログラムに関するプログラム情報として記憶する。
プログラム情報出力部17は、プログラム情報記憶部16に記憶されたプログラム情報を例えばレポートの形式で出力する。即ち、本実施の形態では、プログラムに関する情報を出力する出力手段の一例として、プログラム情報出力部17を設けている。
尚、これらの各機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、CPU10a(図1参照)が、パラメータ取得部11、プログラム実行部12、プログラム分類部15、プログラム情報出力部17の各機能を実現するプログラムを、例えば磁気ディスク装置10g(図1参照)からメインメモリ10c(図1参照)に読み込んで処理を行う。また、動作履歴記憶部13、条件記憶部14、プログラム情報記憶部16は、例えば磁気ディスク装置10g(図1参照)によって実現される。
次いで、本実施の形態におけるプログラム分析装置10の動作について説明する。尚、以下において、分析対象(実験対象)のプログラムは悪性プログラムであるものとする。
まず、ユーザが、実験対象の悪性プログラムを特定する情報、仮想OSの種類、仮想OSの起動日付及び生存期間等のパラメータを、プログラム分析装置10に入力したとする。尚、本実施の形態では、ユーザが対象プログラムを指定可能とすることで、本当に安全な(想定した通りに動作する)プログラムかをユーザが能動的に調査できるようにしている。
すると、プログラム分析装置10では、パラメータ取得部11が、この入力されたパラメータを取得し、プログラム実行部12に受け渡す。そして、プログラム実行部12の動作が開始する。
図3は、プログラム実行部12の動作例を示したシーケンス図である。尚、このプログラム実行部12は、初期状態において、実OS上で動作しており、仮想OSを起動する機能、仮想OSに情報を伝達する機能、仮想OSから情報を受け取る機能を有するものとする。従って、図3は、全体としてはプログラム実行部12の動作を示したものではあるが、これを実OSと仮想OSとの情報のやり取りの形で表現している。
まず、実OSは、パラメータ取得部11からパラメータを受け付ける(ステップ201)。そして、ステップ201で受け付けたパラメータで指定された仮想OSを起動し、同じくステップ201で受け付けたパラメータで指定された悪性プログラムを実行するよう仮想OSに対して指示する(ステップ202)。尚、この際、仮想OSには起動日付及び生存期間の情報も与えられており、仮想OSは、与えられた起動日付で起動し、与えられた生存期間で指定された時間が経過したら停止するよう動作する。
ステップ202での指示に従い、仮想OSは、悪性プログラムを実行する(ステップ251)。
そして、仮想OSは、一定時間間隔でステップ252〜254の検査処理を行う。
即ち、まず、仮想OSは、生存期間を経過したかどうかを判定する(ステップ252)。その結果、生存期間が経過していなければ、前回の検証処理以降に悪性プログラムが動作したかどうかを判定する(ステップ253)。尚、ここで、「動作した」とは、悪性プログラムがただ単に実行状態にあることをいうのではなく、他の装置との間での通信、仮想OS上での新たなデータの生成、仮想OS上の資源に対する処理等、悪性プログラムの感染活動や破壊活動に関係すると思われる動作を行ったことをいう。そのような動作があった場合、仮想OSは、動作内容をメモリに記憶しておく(ステップ254)。また、そのような動作がなかった場合は、ステップ252に戻り、再び生存期間が経過しているかどうかを判定する(ステップ252)。
このようにして検査処理を繰り返していくと、やがて生存期間が経過し、ステップ252での判定結果が「Yes」となる。すると、仮想OSは、これまでにステップ254でメモリに記録した動作内容をまとめて実OSに受け渡す(ステップ255)。
これにより、実OSは、仮想OSから受け渡された動作内容を受け取る(ステップ203)。そして、受け取った動作内容を、動作履歴として動作履歴記憶部13に記憶する。
このように動作履歴が動作履歴記憶部13に記憶されると、プログラム分類部15が、悪性プログラムの種類を特定する。その際、プログラム分類部15は、上述したように、条件記憶部14に記憶された条件を参照する。そこで、まず、この条件について説明する。
図4に、条件記憶部14に記憶された条件の一例を示す。
このうち、図4(a)は、加算用条件について示している。ここで、加算用条件とは、その条件に合致する事象があることのみをもって悪性プログラムの種類を特定するのではなく、その条件に合致する事象の数を加算することで悪性プログラムの種類を特定するための条件である。尚、ここでは、加算用条件を、条件に合致するかどうかを判断する際の参照先ごとに定義している。具体的には、悪性プログラムのファイル属性を参照して判断可能な加算用条件、通信履歴を参照して判断可能な加算用条件、生成履歴を参照して判断可能な加算用条件、処理履歴を参照して判断可能な加算用条件である。
また、図では、悪性プログラムの種類ごとに、その種類に特徴的な加算用条件に対応する欄に「+1」が定義されている。これは、例えば、「ボット」に特徴的な条件は、「特定のサーバに接続する」、「コマンドを受信できる」、「ネットワークを介して伝播する」であり、「P2Pワーム」に特徴的な条件は、「ネットワークを介して伝播する」、「P2Pソフトを探す」であることを意味している。
更に、図4(b)は、分類用条件について示している。ここで、分類用条件とは、その条件に合致する事象があることのみをもって悪性プログラムの種類を特定することができる条件である。尚、ここでは、分類用条件として、悪性プログラムのファイル属性を参照して判断可能な条件のみを定義しているが、図4(a)と同様に、通信履歴、生成履歴、処理履歴を参照して判断可能な条件を定義してもよい。
図では、悪性プログラムの種類ごとに、その種類に特徴的な分類用条件に対応する欄に「○」が定義されている。これは、例えば、「マクロウイルス」に特徴的な条件は、「特定のデータ形式に保存されたマクロである」ということを意味している。
尚、図4(a),(b)において、条件も悪性プログラムの種類も、図示したものはあくまで一例であり、これ以外の条件や悪性プログラムの種類を定義してもよい。
かかる条件が条件記憶部14に記憶されていることを前提として、プログラム分類部15は、プログラムの分類処理を行う。尚、以下では、説明の便宜上、まず、プログラム分類部15によりプログラム情報が格納されるメモリ上のエリアのレイアウトについて説明し、その後、プログラム分類部15の動作について述べる。
図5は、プログラム情報が格納されるメモリ上のレイアウトの一例を示した図である。
図において、プログラム情報を格納するエリアは、分類名格納エリア61と、加算用情報格納エリア62a〜62iと、ファイル情報格納エリア63a〜63dと、通信情報格納エリア64a〜64dと、生成情報格納エリア65a及び65bとからなるものとする。ここで、分類名格納エリア61には、プログラム分類部15が特定した悪性プログラムの種類が格納される。また、加算用情報格納エリア62a〜62iには、実験対象の悪性プログラムが、図4(a)の加算用条件をどの程度満たすかを示す情報が格納される。ここで、図4(a)の加算用条件は、実験対象の悪性プログラムに特徴的な条件に、その他の悪性プログラムに特徴的な条件を追加したものとなっている。尚、これらの加算用条件のうち、実験対象の悪性プログラムに特徴的な加算用条件に対する数値は、その悪性プログラムの種類を特定するために加算されることから、以下では、この情報を「加算用情報」と呼ぶことにする。更に、ファイル情報格納エリア63a〜63dには、ファイル属性に関する特徴情報(以下、「ファイル情報」という)が格納され、通信情報格納エリア64a〜64dには、通信に関する特徴情報(以下、「通信情報」という)が格納され、生成情報格納エリア65a及び65bには、データ生成に関する特徴情報(以下、「生成情報」という)が格納される。
図6は、プログラム分類部15の動作例を示したフローチャートである。
まず、プログラム分類部15は、悪性プログラムのファイル属性を取得する(ステップ501)。ここで、ファイル属性には、ファイル名、ファイル形式、ファイルのハッシュ値、ファイルサイズ、ファイルの作成日時等がある。そして、プログラム情報記憶部16の加算用情報格納エリア62a〜62iのうち、ファイル属性に合致する加算用条件に対するエリアに格納された数値に1を加算する(ステップ502)。
また、プログラム分類部15は、条件記憶部14に記憶された分類用条件のうち、ステップ501で取得したファイル属性に合致する分類用条件があるかどうかを判定する(ステップ503)。その結果、合致する分類用条件がなければ何もしないが、合致する分類用条件があれば、その分類用条件に対応付けられた悪性プログラムの種類を、プログラム情報記憶部16の分類名格納エリア61に記憶する(ステップ504)。例えば、図4(b)の分類用条件が定義されている場合において、「特定のデータに保存されたマクロである」というファイル属性を有していれば、分類名として「マクロウイルス」が記憶される。
また、プログラム分類部15は、ステップ501で取得したファイル属性のうち、所定の情報をファイル情報としてプログラム情報記憶部16のファイル情報格納エリア63a〜63dに記憶する(ステップ505)。図5の例では、ファイル名、ファイルのハッシュ値、ファイルサイズ、ファイルの作成日時を記憶する。
次に、プログラム分類部15は、通信履歴があるかどうかを判定する(ステップ506)。
ここで、通信履歴があると判定された場合は、通信履歴を読み込む(ステップ507)。そして、プログラム情報記憶部16の加算用情報格納エリア62a〜62iのうち、通信履歴に合致する加算用条件に対するエリアに格納された数値に1を加算する(ステップ508)。
また、プログラム分類部15は、ステップ507で読み込んだ通信履歴から抽出した所定の情報を通信情報としてプログラム情報記憶部16の通信情報格納エリア64a〜64dに記憶する(ステップ509)。図5の例では、通信先IPアドレス、通信先プロトコル、通信先ポート番号、伝播に使用する脆弱性等を記憶する。ここで、「伝播に使用する脆弱性」は、例えば、「ボット」のように外部から制御可能な悪性プログラムに対し、外部からコマンドを受信させ、そのコマンドに対して送信されたデータを観測することで、認識することができる。
その後、ステップ506に戻り、通信履歴がなくまるまでステップ507〜509の処理を繰り返す。そして、ステップ506で通信履歴がなくなったと判定されると、通信履歴に関する処理を終了する。
次に、プログラム分類部15は、生成履歴があるかどうかを判定する(ステップ510)。
ここで、生成履歴があると判定された場合は、生成履歴を読み込む(ステップ511)。そして、プログラム情報記憶部16の加算用情報格納エリア62a〜62iのうち、生成履歴に合致する加算用条件に対するエリアに格納された数値に1を加算する(ステップ512)。
また、プログラム分類部15は、ステップ511で読み込んだ生成履歴から抽出した所定の情報を生成情報としてプログラム情報記憶部16の生成情報格納エリア65a及び65bに記憶する(ステップ513)。図5の例では、生成ファイル、生成レジストリを記憶する。
その後、ステップ510に戻り、生成履歴がなくまるまでステップ511〜513の処理を繰り返す。そして、ステップ510で生成履歴がなくなったと判定されると、生成履歴に関する処理を終了する。
次に、プログラム分類部15は、処理履歴があるかどうかを判定する(ステップ514)。
ここで、処理履歴があると判定された場合は、処理履歴を読み込む(ステップ515)。そして、プログラム情報記憶部16の加算用情報格納エリア62a〜62iのうち、生成履歴に合致する加算用条件に対するエリアに格納された数値に1を加算する(ステップ516)。
その後、ステップ514に戻り、処理履歴がなくまるまでステップ515及び516の処理を繰り返す。そして、ステップ514で処理履歴がなくなったと判定されると、処理履歴に関する処理を終了する。
そして、最後に、プログラム分類部15は、プログラム情報記憶部16の加算用情報格納エリア62a〜62iに格納された数値を用いてプログラムの種類を特定する処理を行う。
その場合、まず、プログラム分類部15は、分類名格納エリア61に分類名が記憶済かどうかを判定する(ステップ517)。分類用条件のみによって既に分類名が決まっている場合は、改めて分類名を決定する必要はないからである。
ここで、分類名格納エリア61に分類名が記憶済でない場合は、プログラム情報記憶部16の各加算用条件に対するエリアに格納された数値と、条件記憶部14で各加算用条件に対して定義された悪性プログラムごとの数値とを掛け合わせたものを合計する(ステップ518)。この場合、条件記憶部14の加算用条件に対する空欄は、「0」として考えるものとする。そして、その合計値が最大となる悪性プログラムの種類を特定し、その種類を分類名格納エリア61に記憶する(ステップ519)。
例えば、「ボット」については、「特定のサーバに接続する」、「コマンドを受信できる」、「ネットワークを介して伝播する」という加算用条件に対して「+1」が定義されている。従って、プログラム情報記憶部16のエリア62b〜62dに格納された数値を合計し、合計値とする。
また、「P2Pワーム」については、「ネットワークを介して伝播する」、「P2Pソフトを探す」という加算用条件に対して「+1」が定義されている。従って、プログラム情報記憶部16のエリア62d及び62gに格納された数値を合計し、合計値とする。
更に、「スパイウェア」については、「ActiveX形式である」、「ActiveX形式のデータを生成する」、「キー入力を記録する」、「パスワードを探す」という加算用条件に対して「+1」が定義されている。従って、プログラム情報記憶部16のエリア62a、62e、62f、62hに格納された数値を合計し、合計値とする。
更にまた、「トロイの木馬」については、「特定のサーバに接続する」、「コマンドを受信できる」、「特定のポートで接続を待ち受ける」という加算用条件に対して「+1」が定義されている。従って、プログラム情報記憶部16のエリア62b、62c、62iに格納された数値を合計し、合計値とする。
そして、「ボット」に対する合計値と、「P2Pワーム」に対する合計値と、「スパイウェア」に対する合計値と、「トロイの木馬」に対する合計値とを比較し、合計値が最大となる種類を、今回実験した悪性プログラムの種類として特定する。また、合計値がゼロの場合は、「非悪性プログラム」という種類に分類する。
このようにプログラム情報記憶部16にプログラム情報が記憶されると、プログラム情報出力部17がこのプログラム情報に基づいてレポートを出力する。
図7は、このときのプログラム情報出力部17の動作例を示したフローチャートである。
まず、プログラム情報出力部17は、プログラム情報記憶部16からファイル情報を読み出す(ステップ701)。次に、プログラム情報記憶部16から、分類名を読み出し(ステップ702)、続けて、加算用情報を読み出す(ステップ703)。
また、プログラム情報出力部17は、プログラム情報記憶部16から、通信情報を読み出し(ステップ704)、続けて、生成情報を読み出す(ステップ705)。
更に、プログラム情報出力部17は、分類名及び通信情報をキーとして、プログラム情報を検索する(ステップ706)。即ち、プログラム情報記憶部16に記憶された既に実験済の悪性プログラムに関するプログラム情報の中から、今回実験した悪性プログラムと種類が同じであり、通信先IPアドレス等が同じ悪性プログラムに関するプログラム情報を検索する。そして、検索が成功したかどうか判定する(ステップ707)。
その結果、検索が失敗した場合は何もしないが、検索が成功した場合、プログラム情報出力部17は、検索して得られたプログラム情報を参照情報としてメモリに記憶する(ステップ708)。
その後、プログラム情報出力部17は、ファイル情報、分類名、加算用情報、通信情報、生成情報、参照情報を設定することにより、分析レポートの元となる出力データを生成する(ステップ709)。
これにより、悪性プログラムに関する分析レポートが出力される。
図8に、分析レポートの一例を示す。
この分析レポートでは、「ファイル名」欄、「MD5ハッシュ」欄、「ファイルサイズ」欄、「作成日時」欄に対し、ステップ701で読み出したファイル情報が印刷されている。
また、「分類名称」欄には、ステップ702で読み出した分類名が印刷され、「分類詳細」欄には、ステップ703で読み出した加算用情報が印刷されている。つまり、「分類名称」欄を参照することで、悪性プログラムの大まかな種類が分かり、「分類詳細」欄を参照することで、その詳細な動きが分かるようになっている。
更に、「通信先IPアドレス」欄、「通信先プロトコルおよびポート番号」欄、「ボディ内メッセージの有無」欄、「パッカーの種別」欄、「伝播に使用する脆弱性」欄に対し、ステップ704で読み出した通信情報が印刷されている。
また、「作成するファイルとレジストリ」欄に対し、ステップ705で読み出した生成情報が印刷されている。
一方、ステップ706〜708で取り出された参照情報は、例えば、「備考」欄に印刷される。これにより、今回実験した悪性プログラムと同様の悪性プログラムが既に実験済であることをユーザが知ることができるようになっている。尚、本実施の形態では、分類名及び通信情報をキーとして蓄積済のプログラム情報を検索したが、検索の際に用いるキーはこれには限らない。例えば、ファイル情報や生成情報をキーとしてプログラム情報を検索するようにしてもよい。
また、ここでは、プログラム情報の出力形式として、紙ベースの分析レポートを例示した。しかしながら、同様の内容をディスプレイに表示することにより、ユーザにプログラムの分析結果を知らせるようにしてもよい。
本実施の形態が適用されるコンピュータのハードウェア構成図である。 本実施の形態におけるプログラム分析装置の機能構成を示したブロック図である。 本実施の形態におけるプログラム実行部の動作例を示したフローチャートである。 本実施の形態における条件記憶部に記憶される条件の例を示した図である。 本実施の形態におけるプログラム情報記憶部における情報格納のレイアウトを示した図である。 本実施の形態におけるプログラム分類部の動作例を示したフローチャートである。 本実施の形態におけるプログラム情報出力部の動作例を示したフローチャートである。 本実施の形態におけるプログラム分析装置にて出力される分析レポートの例を示した図である。
符号の説明
10…プログラム分析装置、11…パラメータ取得部、12…プログラム実行部、13…動作履歴記憶部、14…条件記憶部、15…プログラム分類部、16…プログラム情報記憶部、17…プログラム情報出力部

Claims (8)

  1. 仮想オペレーティングシステムの起動、及び、当該仮想オペレーティングシステム上での所定のプログラムの実行を指示する指示手段と、
    前記指示手段による指示に応じて前記仮想オペレーティングシステム上で実行された前記所定のプログラムの動作の履歴を記録する記録手段と、
    前記記録手段により記録された前記動作の履歴に基づいて、前記所定のプログラムの種類を特定する特定手段と、
    前記特定手段により特定された前記所定のプログラムの種類を明示した当該所定のプログラムに関する情報を出力する出力手段と
    を備えたことを特徴とするプログラム分析装置。
  2. 前記記録手段は、前記所定のプログラムが他の装置との間で行った通信の履歴、前記所定のプログラムが自装置内で行ったデータの生成の履歴、及び、前記所定のプログラムが自装置内の資源に対して行った処理の履歴の少なくとも1つを、前記動作の履歴として記録することを特徴とする請求項1記載のプログラム分析装置。
  3. 前記特定手段は、プログラムの種類ごとに、当該種類に対して予め決められた動作が、前記記録手段により記録された前記動作の履歴に出現する度合いを求め、当該度合いに基づいて、前記所定のプログラムの種類を特定することを特徴とする請求項1記載のプログラム分析装置。
  4. 前記記録手段により記録された前記動作の履歴に基づいて、当該動作の特徴を示す特徴情報を生成する生成手段を更に備え、
    前記出力手段は、前記生成手段により生成された前記特徴情報を、前記所定のプログラムに関する情報に含めて出力することを特徴とする請求項1記載のプログラム分析装置。
  5. 前記生成手段は、前記特定手段により特定された前記所定のプログラムの種類以外の種類に対して予め決められた動作が、当該所定のプログラムの動作の履歴に出現する度合いを、前記特徴情報として生成することを特徴とする請求項4記載のプログラム分析装置。
  6. 前記仮想オペレーティングシステム上で実行済の複数のプログラムの中から、前記特定手段により特定された前記所定のプログラムの種類と同じ種類の他のプログラムを検索する検索手段を更に備え、
    前記出力手段は、前記検索手段により検索された前記他のプログラムに関する情報を、前記所定のプログラムに関する情報に含めて出力することを特徴とする請求項1記載のプログラム分析装置。
  7. 仮想オペレーティングシステムを起動するステップと、
    前記仮想オペレーティングシステム上で所定のプログラムを実行するステップと、
    前記所定のプログラムの動作の履歴を所定の記録領域に記録するステップと、
    前記所定の記録領域に記録された前記動作の履歴に基づいて、前記所定のプログラムの種類を特定するステップと、
    特定された前記所定のプログラムの種類を明示した当該所定のプログラムに関する情報を出力するステップと
    を含むことを特徴とするプログラム分析方法。
  8. コンピュータに、
    仮想オペレーティングシステム上で実行された所定のプログラムの動作の履歴を記録する機能と、
    記録された前記動作の履歴に基づいて、前記所定のプログラムの種類を特定する機能と、
    特定された前記所定のプログラムの種類を明示した当該所定のプログラムに関する情報を出力する機能と
    を実現させるためのプログラム。
JP2006311779A 2006-11-17 2006-11-17 プログラム分析装置、プログラム分析方法、及びプログラム Pending JP2008129707A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006311779A JP2008129707A (ja) 2006-11-17 2006-11-17 プログラム分析装置、プログラム分析方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006311779A JP2008129707A (ja) 2006-11-17 2006-11-17 プログラム分析装置、プログラム分析方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2008129707A true JP2008129707A (ja) 2008-06-05

Family

ID=39555478

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006311779A Pending JP2008129707A (ja) 2006-11-17 2006-11-17 プログラム分析装置、プログラム分析方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP2008129707A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010015513A (ja) * 2008-07-07 2010-01-21 Nippon Telegr & Teleph Corp <Ntt> マルウェア検知システム、マルウェア検知方法及びマルウェア検知プログラム
JP2010146457A (ja) * 2008-12-22 2010-07-01 Kddi Corp 情報処理システムおよびプログラム
JP2012083909A (ja) * 2010-10-08 2012-04-26 Kddi Corp アプリケーション特性解析装置およびプログラム
JP2012103870A (ja) * 2010-11-09 2012-05-31 Digital Arts Inc 出力制御装置、出力制御プログラム、出力制御方法および出力制御システム
JP2013210891A (ja) * 2012-03-30 2013-10-10 Secom Co Ltd アプリケーション検査装置
KR20140033145A (ko) * 2011-06-01 2014-03-17 맥아피 인코퍼레이티드 악성 프로세스들의 비서명 기반 검출을 위한 시스템 및 방법
JP2014086004A (ja) * 2012-10-26 2014-05-12 Pfu Ltd 情報処理装置、方法およびプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003323312A (ja) * 2002-02-28 2003-11-14 Ntt Docomo Inc サーバ装置、及び情報処理方法
JP2004504662A (ja) * 2000-07-14 2004-02-12 ヴィースィーアイエス インコーポレイテッド コンピュータ免疫システムおよびコンピュータシステムにおいて望ましくないコードを検出する方法
WO2004075060A1 (ja) * 2003-02-21 2004-09-02 Tabei, Hikaru コンピュータウィルス検出装置
JP2005134974A (ja) * 2003-10-28 2005-05-26 Fujitsu Ltd ワーム判定プログラム、ワーム判定プログラムを記憶したコンピュータ読み取り可能な記憶媒体、ワーム判定方法およびワーム判定装置
JP2005534092A (ja) * 2002-07-23 2005-11-10 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの潜在的にワームのような挙動の自動決定の方法および装置
JP2006285983A (ja) * 2005-03-31 2006-10-19 Microsoft Corp コンピュータシステムからナレッジベースをアグリゲートし、コンピュータをマルウェアから事前に保護すること

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004504662A (ja) * 2000-07-14 2004-02-12 ヴィースィーアイエス インコーポレイテッド コンピュータ免疫システムおよびコンピュータシステムにおいて望ましくないコードを検出する方法
JP2003323312A (ja) * 2002-02-28 2003-11-14 Ntt Docomo Inc サーバ装置、及び情報処理方法
JP2005534092A (ja) * 2002-07-23 2005-11-10 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの潜在的にワームのような挙動の自動決定の方法および装置
WO2004075060A1 (ja) * 2003-02-21 2004-09-02 Tabei, Hikaru コンピュータウィルス検出装置
JP2005134974A (ja) * 2003-10-28 2005-05-26 Fujitsu Ltd ワーム判定プログラム、ワーム判定プログラムを記憶したコンピュータ読み取り可能な記憶媒体、ワーム判定方法およびワーム判定装置
JP2006285983A (ja) * 2005-03-31 2006-10-19 Microsoft Corp コンピュータシステムからナレッジベースをアグリゲートし、コンピュータをマルウェアから事前に保護すること

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010015513A (ja) * 2008-07-07 2010-01-21 Nippon Telegr & Teleph Corp <Ntt> マルウェア検知システム、マルウェア検知方法及びマルウェア検知プログラム
JP2010146457A (ja) * 2008-12-22 2010-07-01 Kddi Corp 情報処理システムおよびプログラム
JP2012083909A (ja) * 2010-10-08 2012-04-26 Kddi Corp アプリケーション特性解析装置およびプログラム
JP2012103870A (ja) * 2010-11-09 2012-05-31 Digital Arts Inc 出力制御装置、出力制御プログラム、出力制御方法および出力制御システム
US9747437B2 (en) 2010-11-09 2017-08-29 Digital Arts Inc. Output control apparatus, computer-readable medium for storing program for output control apparatus, output control method, and output control system
KR20140033145A (ko) * 2011-06-01 2014-03-17 맥아피 인코퍼레이티드 악성 프로세스들의 비서명 기반 검출을 위한 시스템 및 방법
JP2014515538A (ja) * 2011-06-01 2014-06-30 マカフィー, インコーポレイテッド 署名を利用せずに悪意プロセスを検出するシステムおよび方法
US9323928B2 (en) 2011-06-01 2016-04-26 Mcafee, Inc. System and method for non-signature based detection of malicious processes
KR101654099B1 (ko) 2011-06-01 2016-09-05 맥아피 인코퍼레이티드 악성 프로세스들의 비서명 기반 검출을 위한 시스템 및 방법
JP2013210891A (ja) * 2012-03-30 2013-10-10 Secom Co Ltd アプリケーション検査装置
JP2014086004A (ja) * 2012-10-26 2014-05-12 Pfu Ltd 情報処理装置、方法およびプログラム
US9787708B2 (en) 2012-10-26 2017-10-10 Pfu Limited Information processing apparatus, method, and medium

Similar Documents

Publication Publication Date Title
US9853994B2 (en) Attack analysis system, cooperation apparatus, attack analysis cooperation method, and program
US9294486B1 (en) Malware detection and analysis
US8291500B1 (en) Systems and methods for automated malware artifact retrieval and analysis
US9886576B2 (en) Security box
EP2629231A2 (en) Methods and apparatus for dealing with malware
JP5920169B2 (ja) 不正コネクション検出方法、ネットワーク監視装置及びプログラム
JP6313384B2 (ja) アンチウィルス判定の最適化のためのシステム及び方法
JP2008129707A (ja) プログラム分析装置、プログラム分析方法、及びプログラム
KR101132197B1 (ko) 악성 코드 자동 판별 장치 및 방법
JPWO2016203759A1 (ja) 分析システム、分析方法、分析装置及び、コンピュータ・プログラムが記憶された記録媒体
US20110225649A1 (en) Protecting Computer Systems From Malicious Software
JP6165469B2 (ja) 情報処理装置およびその制御方法、並びに、情報処理システム
JP6738013B2 (ja) 攻撃内容分析プログラム、攻撃内容分析方法及び攻撃内容分析装置
KR102382889B1 (ko) 프로세스 정보를 사용하여 웹쉘을 탐지하는 방법 및 시스템
JP5274227B2 (ja) ウェブページ検査装置、コンピュータシステム、ウェブページ検査方法、及びプログラム
JP2016181208A (ja) 不正監視装置および不正監視プログラム
CN110659478B (zh) 在隔离的环境中检测阻止分析的恶意文件的方法
JP4050253B2 (ja) コンピュータウィルス情報収集装置、コンピュータウィルス情報収集方法、及びプログラム
JP6404771B2 (ja) ログ判定装置、ログ判定方法、およびログ判定プログラム
JP7255679B2 (ja) 攻撃グラフ加工装置、方法およびプログラム
Van Randwyk et al. Farm: An automated malware analysis environment
WO2020065778A1 (ja) 情報処理装置、制御方法、及びプログラム
JP5996481B2 (ja) 監視装置、監視方法、および、監視プログラム
JP7175427B2 (ja) 攻撃手段評価装置、攻撃手段評価方法、および、攻撃手段評価プログラム
JP6687844B2 (ja) マルウエア解析装置、マルウエア解析方法及びマルウエア解析プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111115

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120313