(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-15
(54)【発明の名称】応用プログラムの実行流れ変更を通じた非実行ファイルの悪性探知方法及び装置
(51)【国際特許分類】
G06F 21/56 20130101AFI20231108BHJP
【FI】
G06F21/56 360
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022560981
(86)(22)【出願日】2021-09-08
(85)【翻訳文提出日】2022-10-04
(86)【国際出願番号】 KR2021012194
(87)【国際公開番号】W WO2023027228
(87)【国際公開日】2023-03-02
(31)【優先権主張番号】10-2021-0112880
(32)【優先日】2021-08-26
(33)【優先権主張国・地域又は機関】KR
(81)【指定国・地域】
(71)【出願人】
【識別番号】520464463
【氏名又は名称】セキュレター カンパニー リミテッド
【氏名又は名称原語表記】SecuLetter Co.,Ltd.
(74)【代理人】
【識別番号】100156199
【氏名又は名称】神崎 真
(74)【代理人】
【識別番号】100124497
【氏名又は名称】小倉 洋樹
(74)【代理人】
【識別番号】100090169
【氏名又は名称】松浦 孝
(72)【発明者】
【氏名】リム,チャスン
(72)【発明者】
【氏名】ヤン,スンファン
(57)【要約】
本発明に係る非実行ファイルの悪性探知方法は、仮想環境において、非実行ファイルに対応する応用プログラムを駆動して前記非実行ファイルを実行する段階;前記応用プログラムの実行をモニタリングする段階;前記応用プログラムの実行のモニタリング中に、既に設定されたブレークポイントにおいて前記応用プログラムの実行をブレークする段階;前記応用プログラムの実行のブレーク状態で、前記応用プログラムの実行流れが変更されるようにし、前記応用プログラムの実行を再開する段階;前記応用プログラムの実行が再開された後実行される悪性行為を探知する段階を含む。
【特許請求の範囲】
【請求項1】
仮想環境において、非実行ファイルに対応する応用プログラムを駆動して前記非実行ファイルを実行する段階;
前記応用プログラムの実行をモニタリングする段階;
前記応用プログラムの実行のモニタリング中に、既に設定されたブレークポイントにおいて前記応用プログラムの実行をブレークする段階;
前記応用プログラムの実行のブレーク状態で、前記応用プログラムの実行流れが変更されるようにし、前記応用プログラムの実行を再開する段階;
前記応用プログラムの実行が再開された後実行される悪性行為を探知する段階を含む、非実行ファイルの悪性探知方法。
【請求項2】
前記ブレークポイントは分岐地点に設定される、請求項1に記載の非実行ファイルの悪性探知方法。
【請求項3】
前記応用プログラムの実行流れが変更されるようにすることは、プロセス状態を変更することで成される、請求項1に記載の非実行ファイルの悪性探知方法。
【請求項4】
前記プロセス状態を変更することは、前記プロセス状態を示すフラグを変更することで成される、請求項3に記載の非実行ファイルの悪性探知方法。
【請求項5】
前記フラグは、Zero Flag(ZF)、Sign Flag(SF)、Overflow Flag(OF)、Auxiliary Carry Flag(AC)、Carry Flag(CF)のうち少なくとも一を含む、 請求項4に記載の非実行ファイルの悪性探知方法。
【請求項6】
前記応用プログラムの実行流れが変更されるようにすることは、レジスタの値を変更することで成される、請求項1に記載の非実行ファイルの悪性探知方法。
【請求項7】
前記レジスタは、EAXレジスタ、EBXレジスタ、ECXレジスタ、EDXレジスタ、ESIレジスタ、EDIレジスタ、EBPレジスタ、ESPレジスタのうち少なくとも一を含む、請求項6に記載の非実行ファイルの悪性探知方法。
【請求項8】
前記応用プログラムの実行が変更されるようにすることは、メモリの特定アドレスの値を変更することで成される、請求項1に記載の非実行ファイルの悪性探知方法。
【請求項9】
前記メモリの特定アドレスは、EAXレジスタ、EBXレジスタ、ECXレジスタ、EDXレジスタ、ESIレジスタ、EDIレジスタ、EBPレジスタ、またはESPレジスタが指すアドレスである、請求項8に記載の非実行ファイルの悪性探知方法。
【請求項10】
仮想環境において、非実行ファイルに対応する応用プログラムを駆動して前記非実行ファイルを実行する応用プログラム駆動部;
前記応用プログラムの実行をモニタリングし、前記応用プログラムの実行のモニタリング中に、既に設定されたブレークポイントにおいて前記応用プログラムの実行をブレークし、前記応用プログラムの実行のブレーク状態で、前記応用プログラムの実行流れが変更されるようにし、前記応用プログラムの実行を再開する応用プログラム実行流れ変更部;及び
前記応用プログラムの実行が再開された後実行される悪性行為を探知する悪性行為探知部を含む、非実行ファイルの悪性探知装置。
【請求項11】
前記ブレークポイントは分岐地点に設定される、請求項10に記載の非実行ファイルの悪性探知装置。
【請求項12】
前記応用プログラムの実行流れが変更されるようにすることは、プロセス状態を変更することで成される、請求項10に記載の非実行ファイルの悪性探知装置。
【請求項13】
前記プロセス状態を変更することは、前記プロセス状態を示すフラグを変更することで成される、請求項12に記載の非実行ファイルの悪性探知装置。
【請求項14】
前記フラグは、Zero Flag(ZF)、Sign Flag(SF)、Overflow Flag(OF)、Auxiliary Carry Flag(AC)、Carry Flag(CF)のうち少なくとも一を含む、 請求項13に記載の非実行ファイルの悪性探知装置。
【請求項15】
前記応用プログラムの実行流れが変更されるようにすることは、レジスタの値を変更することで成される、請求項10に記載の非実行ファイルの悪性探知装置。
【請求項16】
前記レジスタは、EAXレジスタ、EBXレジスタ、ECXレジスタ、EDXレジスタ、ESIレジスタ、EDIレジスタ、EBPレジスタ、ESPレジスタのうち少なくとも一を含む、請求項15に記載の非実行ファイルの悪性探知装置。
【請求項17】
前記応用プログラムの実行が変更されるようにすることは、メモリの特定アドレスの値を変更することで成される、請求項10に記載の非実行ファイルの悪性探知装置。
【請求項18】
前記メモリの特定アドレスは、EAXレジスタ、EBXレジスタ、ECXレジスタ、EDXレジスタ、ESIレジスタ、EDIレジスタ、EBPレジスタ、またはESPレジスタが指すアドレスである、請求項17に記載の非実行ファイルの悪性探知装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、非実行ファイルの悪性探知方法及び装置に関し、より詳細には、行為基盤検査方法により非実行ファイルの悪性を探知する方法及び装置に関する。
【背景技術】
【0002】
広範なインターネット及び無線通信機器の普及により悪性ソフトウェアまたは悪性コード(malicious code)の伝染経路が多様化しており、これによる被害程度が毎年増加している。悪性コードとは、使用者の意思や利益に反してシステムを破壊したり情報を流出したりする等の悪意のある活動を行うように意図的に製作されたソフトウェアをいう。こうした悪性コードの種類としては、ウイルス(virus)、ワーム(worm)、トロイの木馬(trojan)、バックドア(backdoor)、論理爆弾(logic bomb)、トラップドア(trap door)等のハッキングツール、悪意のあるスパイウェア(spyware)、アドウェア(ad-ware)等がある。悪性コードは自己複製や自動繁殖機能を通じて、使用者識別情報(ID)やパスワード等の個人情報流出、対象システム統制、ファイル削除/変更、システム破壊、応用プログラム/システムのサービス拒否、核心資料流出、他のハッキングプログラム設置等の問題を起こしており、その被害も非常に多様で深刻である。
【0003】
最近イシューとなっている知能型持続脅威(APT:Advanced Persistent Threat)攻撃は、攻撃者が特定ターゲットを定めて目標とする情報を引き出すために高度な攻撃技法を適用し、持続的に様々な形態の悪性コードを活用する。特にAPT攻撃は初期侵入段階で検知できない場合が多く、主に悪性コードを含む非実行(Non-PE:Non-Portable Executable)ファイルを利用する場合が多い。これは、非実行ファイルを実行するプログラム(例:文書作成またはイメージプログラム)が基本的にある程度の保安脆弱性を持っているだけでなく、悪性コードを非実行ファイルに含ませるとファイル変更により容易に変種悪性コードを作ることができるためである。ここで、「非実行ファイル」とは、実行(PE:Portable Executable)ファイルまたは実行可能なファイルとは反対の概念として自体的に実行されないファイルを意味する。例えば、非実行ファイルは、PDFファイル、ハングルファイル、ワードファイル、エクセルファイルのような文書ファイル、JPGファイルのようなイメージファイル、動画ファイル、ジャバスクリプトファイル、HTMLファイル等になり得る。
【0004】
従来技術による非実行ファイルの悪性有無検査方法として、シグネチャー基盤検査方法がある。これは、非実行ファイルが悪性コードのシグネチャーを含むかを検査する方法である。ところが、ほとんどの悪性非実行ファイルは、悪性コードをジャバスクリプトやマクロスクリプトのようなスクリプトに含ませたり、場合によってはスクリプトをエンコードしてこうした診断を回避しているが、非実行ファイル自体としてはその中にどのようなスクリプトが存在するか分かりにくい。したがって、既存のシグネチャー基盤検査方法では、非実行ファイルの悪性有無を正しく検査することがほとんど不可能である。
【0005】
非実行ファイルの悪性有無検査のための他の方法として、行為基盤検査方法がある。これは、実際に非実行ファイルを実行させて悪性行為が起こるかを検査する方法である。しかし、非実行ファイルに含まれた悪性コードは、特定条件(例えば、応用プログラムのバージョン、運営体制環境等)が満たされなければいかなる行為も起こらないように設計され得る。したがって、行為基盤検査方法の場合、応用プログラムの全てのバージョンと様々な運営体制環境において非実行ファイルを実行させてみて行為を観察しなければならないため、分析時間が長くかかり、悪性有無を正確に判別することが難しい問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明がなそうとする技術的課題は、応用プログラムのバージョンや運営体制環境等の特定条件が満たされなければ悪性行為が起こらないように設計された非実行ファイルの悪性を効果的に探知することができる非実行ファイルの悪性探知方法及び装置を提供することにある。
【0007】
本発明の解決しようとする課題は以上において言及した課題に制限されず、言及されていない他の課題は下の記載から当業者に明確に理解され得る。
【課題を解決するための手段】
【0008】
前記技術的課題を解決するための本発明に係る非実行ファイルの悪性探知方法は、仮想環境において、非実行ファイルに対応する応用プログラムを駆動して前記非実行ファイルを実行する段階;前記応用プログラムの実行をモニタリングする段階;前記応用プログラムの実行のモニタリング中に、既に設定されたブレークポイントにおいて前記応用プログラムの実行をブレークする段階;前記応用プログラムの実行のブレーク状態で、前記応用プログラムの実行流れが変更されるようにし、前記応用プログラムの実行を再開する段階;前記応用プログラムの実行が再開された後実行される悪性行為を探知する段階を含む。
【0009】
前記技術的課題を解決するための本発明に係る非実行ファイルの悪性探知装置は、仮想環境において、非実行ファイルに対応する応用プログラムを駆動して前記非実行ファイルを実行する応用プログラム駆動部;前記応用プログラムの実行をモニタリングし、前記応用プログラムの実行のモニタリング中に、既に設定されたブレークポイントにおいて前記応用プログラムの実行をブレークし、前記応用プログラムの実行のブレーク状態で、前記応用プログラムの実行流れが変更されるようにし、前記応用プログラムの実行を再開する応用プログラム実行流れ変更部;及び前記応用プログラムの実行が再開された後実行される悪性行為を探知する悪性行為探知部を含む。
【発明の効果】
【0010】
前記の本発明によれば、応用プログラムのバージョンや運営体制環境等の特定条件が満たされなければ悪性行為が起こらないように設計された非実行ファイルの悪性を効果的に探知することができる。
【0011】
本発明の効果は以上において言及した効果に制限されず、言及されていない他の効果は下の記載から当業者に明確に理解され得る。
【図面の簡単な説明】
【0012】
【
図1】本発明の一実施例に係る非実行ファイルの悪性探知装置のブロック図である。
【0013】
【
図2】本発明の一実施例に係る非実行ファイルの悪性探知方法の流れ図である。
【0014】
【
図3】HWPプログラムの実行過程においてフラグを変更することで実行流れを変更する動作の例を示す。
【0015】
【
図4】HWPプログラムが終了せずに継続実行されて悪性行為が探知された結果を示す。
【0016】
【
図5】実行中である仮想環境の特徴情報を確認して仮想環境の場合悪性行為をしないように設計された悪性マクロの一例を示す。
【0017】
【
図6】レジスタに貯蔵された画面サイズ値を変更する例を示す。
【0018】
【
図7】メモリに貯蔵されたサウンドドライバの有無を示す値を変更する例を示す。
【発明を実施するための形態】
【0019】
以下では、図面を参照して本発明の好ましい実施例を詳細に説明する。以下の説明及び添付の図面において実質的に同一の構成要素はそれぞれ同一の符号で示すことで重複説明を省略することにする。また、本発明を説明するにあたり、関連する公知機能あるいは構成についての具体的な説明が本発明の要旨を不必要にぼかされる恐れあると判断される場合、それについての詳細な説明は省略することにする。
【0020】
図1は、本発明の一実施例に係る非実行ファイルの悪性探知装置のブロック図である。
【0021】
本実施例に係る非実行ファイルの悪性探知装置は、使用者インターフェース(110)、仮想環境生成部(120)、応用プログラム貯蔵部(130)、応用プログラム駆動部(140)、応用プログラム実行流れ変更部(150)、及び悪性行為探知部(160)を含む。
【0022】
使用者インターフェース(110)は、検査しようとする非実行ファイルが貯蔵されたディレクトリまたは非実行ファイルを選択するためのインターフェースを提供する。
【0023】
仮想環境生成部(120)は、本発明の実施例に係る非実行ファイルの悪性探知装置が具現されるコンピュータ環境内に仮想環境(180)を生成する。仮想環境(180)は、例えばよく知られているようなサンドボックス(Sandbox)であり得る。仮想環境(180)は、プロセス状態を示すフラグ、レジスタ、メモリを有する。
【0024】
応用プログラム貯蔵部(130)は、検査しようとする非実行ファイルを実行させるための様々な形式の応用プログラムを貯蔵している。応用プログラム貯蔵部(130)は、例えば、アクロバットリーダー、MS Word、パワーポイント、エクセル、アレハングル、イメージビューアプログラム、動画ビューアプログラム、インターネットエクスプローラ等の応用プログラムを貯蔵している。
【0025】
応用プログラム駆動部(140)は、使用者インターフェース(110)を通じて選択された非実行ファイルの形式を判断し、応用プログラム貯蔵部(130)において非実行ファイルの形式に対応する応用プログラムを選択する。そして、応用プログラム駆動部(140)は、選択された応用プログラムを仮想環境(180)において駆動して非実行ファイルを実行させる。
【0026】
本実施例に係る非実行ファイルの悪性探知装置は、応用プログラムのバージョンや運営体制環境等の特定条件と無関係に非実行ファイルの悪性を探知できるようにする応用プログラム実行流れ変更部(150)を含む。
【0027】
悪性非実行ファイルは、応用プログラムのバージョンや運営体制環境等の特定条件が満たされなければ応用プログラムを終了したり、いかなる悪性行為も発生しない流れに分岐する分岐地点を持ち得る。非実行ファイルは事前に分析者により分析され、こうした可能性を持つ分岐地点にブレークポイントが設定され得る。当該分岐地点に関連して、応用プログラムを終了せずに継続実行したり、悪性行為が発生し得る流れに誘導することができる条件が設定され得る。
【0028】
応用プログラム実行流れ変更部(150)は、応用プログラムの実行をモニタリングし、応用プログラムの実行のモニタリング中に、ブレークポイントに設定された分岐地点において応用プログラムの実行をブレークする。そして、応用プログラム実行流れ変更部(150)は、設定された条件を利用して、応用プログラムが継続実行されたり、悪性行為が発生し得るように応用プログラムの実行流れが変更されるようにした後、応用プログラムの実行を再開する。応用プログラム実行流れ変更部(150)は、分岐地点において応用プログラムの実行流れが変更されるようにするために、プロセス状態を変更したり、レジスタの値を変更したり、メモリの特定アドレスの値を変更することができる。
【0029】
悪性行為探知部(160)は、応用プログラムの実行過程をモニタリングして通常の行為基盤検査方法を通じて悪性行為を探知する。応用プログラムの実行流れ変更がなかったならば、探知されなかった悪性行為が、応用プログラム実行流れ変更部(150)を通じて応用プログラムの実行流れが変更されるにつれて現れるので、悪性行為探知部(160)によって感知され得る。
【0030】
図2は、本発明の一実施例に係る非実行ファイルの悪性探知方法の流れ図である。
【0031】
210段階において、応用プログラム駆動部(140)が、仮想環境(180)において非実行ファイルに対応する応用プログラムを駆動して非実行ファイルを実行する。
【0032】
220段階において、応用プログラム実行流れ変更部(150)は、応用プログラムの実行をモニタリングし始める。
【0033】
250段階において、応用プログラム実行流れ変更部(150)は、設定されたブレークポイントにおいて応用プログラムの実行をブレークする。
【0034】
260段階において、応用プログラム実行流れ変更部(150)は、応用プログラムの実行流れが変更されるように、プロセス状態、レジスタ値、またはメモリの特定アドレスの値を変更する。
【0035】
270段階において、応用プログラム実行流れ変更部(150)は、応用プログラムの実行を再開し、継続応用プログラムの実行をモニタリングする。
【0036】
一方、応用プログラムの実行がモニタリングされる間、230段階において悪性行為が発生すると、240段階において悪性行為探知部(160)は当該悪性行為を探知する。
【0037】
悪性行為探知部(160)によって悪性行為が探知されると、非実行ファイルの悪性探知装置は、当該非実行ファイルが悪性であるという探知結果を出力し探知過程を終了することができる。
【0038】
設定された全てのブレークポイントにおいて分岐可能な全ての実行流れに従って応用プログラムが実行されたが、悪性行為探知部(160)によって悪性行為が探知されなければ、非実行ファイルの悪性探知装置は、当該非実行ファイルが悪性でないという探知結果を出力し探知過程を終了することができる。
【0039】
応用プログラム実行流れ変更部(150)がプロセス状態を変更して応用プログラムの実行流れを変更する実施例を説明すると、次の通りである。
【0040】
プロセスは、実行過程においてデータ演算によるプロセス状態をフラグ(eflag)というスイッチの組み合わせ形態の情報として管理する。フラグはそれぞれ0または1の値をもちスイッチのような役割を果たす。プロセス実行過程において分岐地点に接すると、命令語から確認されるスイッチの値(0または1)に従って分岐が行われる。例えば、ある2つの値を比較して値が同じであればZero Flag(ZF)が1に設定され、ある2つの値を足したとき、4バイト(32ビット運営体制基準)を超える値が出ると、Overflow Flag(OF)が1に設定される。その後、条件ジャンプ命令を使用して、例えばZFが0であればジャンプ(JE,Jump if Equal)したり、ZFが1であればジャンプ(JNE,Jump if Not Equal)する形態で実行流れが分岐され得る。
【0041】
図3は、HWPプログラムの実行過程においてフラグを変更することで実行流れを変更する動作の例を示す。
図3を参照すると、0283C769番地のアドレスにおいて、alレジスタの値と10という値とが比較され、2つの値が同じであるか同じでないかのプロセス状態を示すZF(同じであれば1、同じでなければ0)の値が0に設定される。0283C76B番地のアドレスにおいて、先における比較結果が同じであれば、指定されたアドレス(283C825)にジャンプするよう命令を実行するが、このとき、ZFの値を確認してジャンプするか否かを決定する。ここで、比較結果が同じであれば、アドレス283C825にジャンプして応用プログラムは継続実行される。しかし、比較結果が同じでなければ、次の命令語が実行され、結果的に応用プログラムのバージョンが合わないため応用プログラムは強制的に終了する。したがって、応用プログラムの実行流れを変更せずにそのままにすれば、ZFの値は0であるので、応用プログラムは終了するようになる。
【0042】
本発明の実施例では、分岐地点である0283C76B番地のアドレスにブレークポイントが設定され、ZFの値が1に変更されるように設定される。ブレーク状態でZFの値が1に変更され、応用プログラムの実行が再開されると、条件ジャンプ命令に従ってアドレス283C825にジャンプして応用プログラムは継続実行され、応用プログラムの継続実行中に悪性行為が発生するようになる。そうすれば、悪性行為は悪性行為探知部(160)によって感知される。
図4は、HWPプログラムが終了せずに継続実行されて悪性行為探知部(160)によって悪性行為が探知された結果を示す。ZFの値の変更がなかったならば、応用プログラムは強制的に終了するので、悪性行為は探知されない。
【0043】
本実施例において、ZFを変更してプロセス状態を変更する場合を例に挙げたが、ZFだけでなく、Sign Flag(SF)、Overflow Flag(OF)、Auxiliary Carry Flag(AC)、Carry Flag(CF)等の様々なフラグを変更してプロセス状態を変更できることは勿論である。
【0044】
本発明の実施例によれば、悪性行為が動作するための条件(例えば、応用プログラムのバージョン)が合わないため応用プログラムを終了するロジックを非実行ファイルが有する場合、分岐地点においてプロセス状態を変更して応用プログラムが継続実行されるようにすることによって、悪性行為が動作することを正確に探知することができる。
【0045】
応用プログラム実行流れ変更部(150)がレジスタ値を変更して応用プログラムの実行流れを変更する実施例を説明すると、次の通りである。
【0046】
非実行ファイルを実行して悪性と疑われる行為を探知する行為基盤検査方法は、悪性コードを実行するために隔離された仮想環境において分析を行う。仮想環境は固有の特徴情報をもつが、高度に製作された非実行ファイル形態の悪性コードは、仮想環境の特徴情報を確認して悪性行為を発生させないように設計され得る。例えば、ディスプレイのサイズが、定められたサイズより小さい場合、仮想環境と判断して悪性行為をしないように設計されたり、メモリのサイズが、定められたサイズより小さい場合、仮想環境と判断して悪性行為をしないように設計され得る。
【0047】
図5は、エクセル4.0マクロを使用して、実行中の仮想環境の特徴情報を確認して実行中の環境が仮想環境でない場合に悪性行為を実行し、仮想環境の場合悪性行為をしないように設計された悪性マクロの一例を示す。
【0048】
図5を参照すると、2番目のセルと4番目のセルの命令は次の通りである。
【0049】
A2=GET.WORKSPACE(13)
【0050】
A4=IF(A2<770,CLOSE(FALSE),)
【0051】
上の命令は、A2セルにGET.WORKSPACE(13)命令を実行して画面のサイズ(横サイズ)を持ってきて貯蔵し、A4セルにおいてA2値が770より小さいと、CLOSE命令によりマクロを終了する。A2値が770より小さくなければ、次の命令を継続して実行する。仮想環境の画面のサイズは通常770より小さいので、仮想環境の場合、A4セルにおける比較結果に従いマクロが終了するので、既存の行為基盤検査方法では悪性を判別することができない。
【0052】
本発明の実施例では、A4セルに該当する分岐地点のアドレスにブレークポイントが設定され、レジスタに貯蔵された画面サイズ値を変更することによって、マクロが終了せずに継続実行されて悪性行為が発生し得るように誘導する。
【0053】
図6は、本発明の実施例に従い、レジスタに貯蔵された画面サイズ値を変更する例を示す。GET.WORKSPACE(13)命令を通じて持ってきた画面のサイズはEAXレジスタに貯蔵される。
図6を参照すると、実行中の仮想環境における画面のサイズである0×380が貯蔵される。ここで、EAXレジスタの値を十分に大きい値である0×9999に変更すると、A4セルの比較結果、A2値が770より大きいので、次の命令が継続して実行され、悪性行為が起こり得るようになる。
【0054】
本実施例では、EAXレジスタの値を変更して応用プログラムの実行流れを変更する場合を例に挙げたが、EAXレジスタだけでなく、EBXレジスタ、ECXレジスタ、EDXレジスタ、ESIレジスタ、EDIレジスタ、EBPレジスタ、ESPレジスタ等の様々なレジスタの値を変更して応用プログラムの実行流れを変更できることは勿論である。
【0055】
本発明の実施例によれば、実行環境を把握して条件に合わなければマクロを終了するロジックの悪性マクロを含む非実行ファイルの場合、分岐地点においてレジスタに貯蔵された値を変更してマクロが終了せずに継続実行されるようにすることによって、悪性行為が動作することを正確に探知することができる。
【0056】
応用プログラム実行流れ変更部(150)がメモリの特定アドレスの値を変更して応用プログラムの実行流れを変更する実施例を説明すると、次の通りである。
【0057】
再び
図5を参照すると、一番目のセルの命令は次の通りである。
【0058】
A1=IF(GET.WORKSPACE(42),,CLOSE(TRUE))
【0059】
上の命令は、サウンドドライバの有無を確認するGET.WORKSPACE(42)命令の実行結果、サウンドドライバがあれば次の命令を継続して実行し、サウンドドライバがなければCLOSE命令に従いマクロを終了する。仮想環境の場合、サウンドドライバがないので、GET.WORKSPACE(42)命令の実行結果に従いマクロが終了するので、既存の行為基盤検査方法では悪性を判別することができない。
【0060】
本発明の実施例では、A1セルに該当する分岐地点のアドレスにブレークポイントが設定され、メモリの特定アドレスに貯蔵されたサウンドドライバの有無を示す値を変更することによって、マクロが終了せずに継続実行されて悪性行為が発生し得るように誘導する。
【0061】
GET.WORKSPACE(42)命令は、当該戻り値を持ってきてEAXレジスタに貯蔵し、EAXレジスタに貯蔵された値に所定の演算(shr eax,1,and eax,1)を行ってサウンドドライバの有無をブーリアン(boolean)値で表しEDIレジスタが指すメモリアドレスに貯蔵する。
図7は、EDIレジスタが指すアドレス001335A8にサウンドドライバが「なし」を示す「0」が貯蔵されたことを示す。アドレス001335A8に貯蔵された値が0であればサウンドドライバがないと、1であればサウンドドライバがあると判断することができる。EDIレジスタが指すアドレス001335A8の値を「0」から「1」に変更すると、次の命令が継続して実行され、悪性行為が起こり得るようになる。
【0062】
本実施例では、EDIレジスタが指すアドレスの値を変更して応用プログラムの実行流れを変更する場合を例に挙げたが、EDIレジスタだけでなく、EAXレジスタ、EBXレジスタ、ECXレジスタ、EDXレジスタ、ESIレジスタ、EBPレジスタ、ESPレジスタ等の様々なレジスタが指すアドレスの値を変更して応用プログラムの実行流れを変更できることは勿論である。
【0063】
このように本発明の実施例によれば、実行環境を把握して条件に合わなければマクロを終了するロジックの悪性マクロを含む非実行ファイルの場合、分岐地点においてメモリの特定アドレスに貯蔵された値を変更してマクロが終了せずに継続実行されるすることによって、悪性行為が動作することを正確に探知することができる。
【0064】
前述の本発明の実施例によれば、実行条件が合わなければ悪性行為が起こらないように設計された悪性非実行ファイルの場合にも、プロセス状態、レジスタの値、またはメモリに貯蔵された値を操作して悪性行為が起こり得るように誘導することことによって、悪性を正確に探知することができる。
【0065】
本発明に添付されたブロック図の各ブロックと流れ図の各段階との組み合わせは、コンピュータプログラムインストラクションによって行われ得る。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータ、またはその他のプログラム可能なデータプロセッシング装備のプロセッサに搭載され得るので、コンピュータまたはその他のプログラム可能なデータプロセッシング装備のプロセッサを通じて行われるそのインストラクションが、ブロック図の各ブロックまたは流れ図の各段階において説明された機能を行う手段を生成するようになる。これらコンピュータプログラムインストラクションは特定方式で機能を具現するために、コンピュータまたはその他のプログラム可能なデータプロセッシング装備を指向することができるコンピュータ利用可能またはコンピュータ読み取り可能メモリに貯蔵することも可能であるので、そのコンピュータ利用可能またはコンピュータ読み取り可能メモリに貯蔵されたインストラクションは、ブロック図の各ブロックまたは流れ図の各段階において説明された機能を行うインストラクション手段を内包する製造品目を生産することも可能である。コンピュータプログラムインストラクションは、コンピュータまたはその他のプログラム可能なデータプロセッシング装備上に搭載することも可能であるので、コンピュータまたはその他のプログラム可能なデータプロセッシング装備上において一連の動作段階が行われ、コンピュータで実行されるプロセスを生成してコンピュータまたはその他のプログラム可能なデータプロセッシング装備を行うインストラクションは、ブロック図の各ブロック及び流れ図の各段階において説明された機能を実行するための段階を提供することも可能である。
【0066】
また、各ブロックまたは各段階は、特定の論理的機能を実行するための1つ以上の実行可能なインストラクションを含むモジュール、セグメントまたはコードの一部を示し得る。また、いくつかの代替実施例では、ブロックまたは段階において言及された機能が順序を外れて発生することも可能であることに注目しなければならない。例えば、続いて図示されている2つのブロックまたは段階は、事実実質的に同時に行われることも可能であり、またはそのブロックまたは段階が、時々該当する機能に従い逆順に行われることも可能である。
【0067】
以上の説明は、本発明の技術思想を例示的に説明したものに過ぎず、本発明の属する技術分野における通常の知識を有する者であれば、本発明の本質的な特性から逸脱しない範囲で様々な修正及び変形が可能である。したがって、本発明に開示された実施例は、本発明の技術思想を限定するためのものではなく、説明するためのものであり、こうした実施例に基づいて本発明の技術思想の範囲が限定されるのではない。本発明の保護範囲は以下の特許請求の範囲に基づいて解釈されなければならず、それと同等の範囲内にある全ての技術思想は本発明の権利範囲に含まれるものと解釈されなければならない。
【国際調査報告】