(57)【特許請求の範囲】
【請求項１】
非実行ファイルのマルウェアと関連する悪意のある候補アドレス情報をロードするデータローディング部と、
前記非実行ファイルに対応する応用プログラムが駆動されれば、メモリにロードされるモジュールの正常アドレス範囲情報を獲得し、前記悪意のある候補アドレス情報に対応する悪意のある候補アドレスを前記応用プログラムの中止点に設定するプログラム連結部と、
前記中止点に対するイベントが発生すれば、次の実行アドレスが前記正常アドレス範囲情報に属するかを判断する悪意判断部
を含む非実行ファイル検査装置。
【請求項２】
前記悪意判断部は、
前記実行アドレスが前記正常アドレス範囲情報に属さないと判断されれば、前記非実行ファイルを悪意のあるファイルと判断することを特徴とする請求項１に記載の非実行ファイル検査装置。
【請求項３】
前記悪意判断部は、
前記実行アドレスが前記正常アドレス範囲情報に属さないと判断されれば、前記実行アドレスが指示するメモリ領域が実行属性か否かを判断し、前記判断結果に基づいて前記非実行ファイルに対する悪意の有無を判断することを特徴とする請求項１に記載の非実行ファイル検査装置。
【請求項４】
前記悪意判断部は、
前記実行アドレスが指示するメモリ領域が実行属性でない場合、前記実行アドレスが指示するメモリ領域に格納されたコードの実行による異常なイベントの発生有無をチェックして前記非実行ファイルに対する悪意の有無を判断することを特徴とする請求項３に記載の非実行ファイル検査装置。
【請求項５】
前記悪意判断部は、
前記異常なイベントが発生していない場合、前記実行アドレスの後、既に設定されたステップまでの実行アドレスが前記正常アドレス範囲情報を指示するかをチェックして前記非実行ファイルに対する悪意の有無を判断することを特徴とする請求項４に記載の非実行ファイル検査装置。
【請求項６】
前記悪意判断部は、
前記実行アドレスが指示するメモリ領域が実行属性である場合、前記非実行ファイルを正常と判断することを特徴とする請求項３に記載の非実行ファイル検査装置。
【請求項７】
前記悪意のある候補アドレス情報のセットが格納されたデータベース部を更に含み、
前記悪意のある候補アドレス情報は、命令語実行アドレスが悪意のあるシェルコード領域を指示した前例があるモジュールの相対仮想アドレス（ＲＶＡ）情報であることを特徴とする請求項１に記載の非実行ファイル検査装置
【請求項８】
前記データローディング部は、
前記非実行ファイルのファイル形式を判断し、前記悪意のある候補アドレス情報のセットのうち、前記判断されたファイルの形式に対応する悪意のある候補アドレス情報をロードすることを特徴とする請求項７に記載の非実行ファイル検査装置。
【請求項９】
悪意のあるファイルと判定された非実行ファイルのマルウェアを実行ファイル形態又は実行可能なファイル形態で抽出するマルウェア抽出部を更に含むことを特徴とする請求項２又は３に記載の非実行ファイル検査装置。
【請求項１０】
前記相対仮想アドレスと脆弱性情報との比較を通じて、エクスプロイトの発生原因を分析する原因分析部を更に含むことを特徴とする請求項７に記載の非実行ファイル検査装置。
【請求項１１】
前記正常アドレス範囲情報は、前記応用プログラムの駆動によってロードされるモジュールの開始アドレスと終了アドレスを含むことを特徴とする請求項１に記載の非実行ファイル検査装置。
【請求項１２】
前記実行アドレスは、中央処理ユニットのＥＩＰレジスタから提供されることを特徴とする請求項１に記載の非実行ファイル検査装置。
【請求項１３】
前記悪意判断部は、
前記正常アドレス範囲情報から逸脱した実行アドレスの直前に実行された命令語の実行アドレスを格納することを特徴とする請求項１に記載の非実行ファイル検査装置。
【請求項１４】
非実行ファイルのマルウェアと関連する悪意のある候補アドレス情報をロードする段階と、
前記非実行ファイルに対応する応用プログラムが駆動されれば、メモリにロードされるモジュールの正常アドレス範囲情報を獲得する段階と、
前記悪意のある候補アドレス情報に対応する悪意のある候補アドレスを前記応用プログラムの中止点に設定する段階と、
前記中止点に対するイベントが発生すれば、次の実行アドレスが前記正常アドレス範囲情報に属するかを判断する段階
を含む非実行ファイル検査方法。
【請求項１５】
前記実行アドレスが前記正常アドレス範囲情報に属さないと判断されれば、前記非実行ファイルを悪意のあるファイルと判断することを特徴とする請求項１４に記載の非実行ファイル検査方法。
【請求項１６】
前記判断する段階は、
前記実行アドレスが前記正常アドレス範囲情報に属さないと判断されれば、前記実行アドレスが指示するメモリ領域が実行属性か否かを判断する段階と、
前記実行アドレスが指示するメモリ領域が実行属性か否かによって前記非実行ファイルに対する悪意の有無を判断する段階
を含むことを特徴とする請求項１４に記載の非実行ファイル検査方法。
【請求項１７】
前記メモリ領域が実行属性か否かを判断する段階は、
前記実行アドレスが指示するメモリ領域が実行属性でない場合、前記実行アドレスが指示するメモリ領域に格納されたコードの実行による異常なイベントの発生有無をチェックする段階を含み、
前記異常なイベントが発生する場合、前記非実行ファイルを悪意があると判断することを特徴とする請求項１６に記載の非実行ファイル検査方法。
【請求項１８】
前記非実行ファイルを悪意があると判断する段階は、
前記異常なイベントが発生していない場合、前記実行アドレスの後、既に設定されたステップまでの実行アドレスが前記正常アドレス範囲情報から逸脱した前記メモリ領域を指示するかをチェックする段階と、
前記既に設定されたステップまでの実行アドレスが前記正常アドレス範囲情報から逸脱したメモリ領域を指示する場合、前記非実行ファイルを悪意があると判断する段階
を含むことを特徴とする請求項１７に記載の非実行ファイル検査方法。
【請求項１９】
前記悪意のある候補アドレス情報のセットを格納する段階を更に含み、
前記悪意のある候補アドレス情報は、命令語実行アドレスが悪意のあるシェルコード領域を指示した前例があるモジュールの相対仮想アドレス（ＲＶＡ）情報であることを特徴とする請求項１４に記載の非実行ファイル検査方法。
【請求項２０】
前記ロードする段階は、
前記非実行ファイルのファイル形式を判断する段階と、
前記悪意のある候補アドレス情報のセットのうち、前記判断されたファイルの形式に対応する悪意のある候補アドレス情報をロードする段階
を含むことを特徴とする請求項１９に記載の非実行ファイル検査方法。
【請求項２１】
前記悪意のあるファイルと判定された非実行ファイルのマルウェアを実行ファイル形式又は実行可能なファイル形式で抽出する段階を更に含むことを特徴とする請求項１５又は１６に記載の非実行ファイル検査方法。
【請求項２２】
前記相対仮想アドレスと脆弱性情報との比較を通じて、エクスプロイトの発生原因を分析する段階を更に含むことを特徴とする請求項１９に記載の非実行ファイル検査方法。
【請求項２３】
前記正常アドレス範囲情報は、前記応用プログラムの駆動によってロードされるモジュールの開始アドレスと終了アドレスを含むことを特徴とする請求項１４に記載の非実行ファイル検査方法。
【請求項２４】
前記実行アドレスは、中央処理ユニットのＥＩＰレジスタから提供されることを特徴とする請求項１４に記載の非実行ファイル検査方法。
【請求項２５】
前記判断する段階は、
前記駆動される応用プログラムの命令語の種類に基づいて前記実行アドレスが前記正常アドレス範囲に属するかを判断することを特徴とする請求項１４に記載の非実行ファイル検査方法。
【請求項２６】
前記命令語が構造化例外処理（ＳＥＨ）である場合、前記構造化例外処理のチェーン値が前記正常アドレス範囲情報に属するかを判断することを特徴とする請求項２５に記載の非実行ファイル検査方法。
【請求項２７】
前記命令語がリターン、コール又はジャンプである場合、１ステップを進行して前記命令語が指示する前記実行アドレスが前記正常アドレス範囲情報に属するかを判断することを特徴とする請求項２５に記載の非実行ファイル検査方法。
【請求項２８】
所定のディレクトリに格納されている複数の非実行ファイルのそれぞれに対して前記非実行ファイル検査方法が行われることを特徴とする請求項１４に記載の非実行ファイル検査方法。
【請求項２９】
前記マルウェアは、悪意のあるシェルコードであることを特徴とする請求項１４に記載の非実行ファイル検査方法。
【請求項３０】
請求項１４〜２９の何れか一項に記載の方法によるそれぞれの段階を行う命令語を含むプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非実行（Ｎｏｎ-ＰＥ：Ｎｏｎ-Ｐｏｒｔａｂｌｅ Ｅｘｅｃｕｔａｂｌｅ）ファイル検査装置及び方法に関するものである。具体的には、本発明は、非実行ファイルのマルウェアと関連する悪意のある候補アドレス情報を用いて、非実行ファイルがマルウェアを含んでいるかを検査する装置、方法及びコンピュータプログラムが記録されたコンピュータ読み取り可能な記録媒体に関するものである。
【背景技術】
【０００２】
周知のように、インターネット及び無線通信機器の普及に伴い、マルウェア（ｍａｌｉｃｉｏｕｓ ｃｏｄｅ）の感染経路が多様化しており、これによる被害の程度が年々増えている。
【０００３】
本明細書に記載した「マルウェア」とは、ユーザの意思と利益に反してシステムを破壊したり、情報を流出させたりするなどの悪意のある活動を行うように意図的に製作されたソフトウェアを意味する。マルウェアとは、ウイルス（ｖｉｒｕｓ）、ワーム（ｗｏｒｍ）、トロイの木馬（ｔｒｏｊａｎ）、バックドア（ｂａｃｋｄｏｏｒ）、論理爆弾（ｌｏｇｉｃ ｂｏｍｂ）、トラップドア（ｔｒａｐ ｄｏｏｒ）などのハッキングツール、悪意のあるスパイウェア（ｓｐｙｗａｒｅ）、アドウェア（ａｄ-ｗａｒｅ）などが挙げられる。
【０００４】
このようなマルウェアは、自己複製や自動繁殖機能を通じて、ユーザ識別情報（ＩＤ）とパスワードなどの個人情報の流出、対象システムの統制、ファイルの削除／変更、システムの破壊、アプリケーションプログラム／システムのサービス拒否、機密資料の流出、他のハッキングプログラムのインストールなどの問題を起こしており、その被害も非常に多様、且つ、深刻になっている。
【０００５】
一方、近年、話題となっているアドバンスドパーシスタントスレット（ＡＰＴ：Ａｄｖａｎｃｅｄ Ｐｅｒｓｉｓｔｅｎｔ Ｔｈｒｅａｔ）攻撃は、攻撃者が特定のターゲットを定め、目標とした情報を盗み取るために、高度な攻撃技法を適用して持続的に多様な形態のマルウェアを活用する。特に、ＡＰＴ攻撃は、初期の侵入段階で検知できない場合が多く、主にマルウェアを含む非実行ファイルを用いる場合が多い。これは、非実行ファイルを実行する応用プログラム（例えば、文書又は画像処理プログラム）が基本的にある程度のセキュリティ脆弱性を有しているだけでなく、マルウェアを非実行ファイルに含めれば、ファイルの変更によって簡単に変種のマルウェアを生成できるためである。
【０００６】
このような特性のため、ＡＰＴ攻撃は、悪意のある非実行ファイルエクスプロイト（ｅｘｐｌｏｉｔ）を用いてゼロデイ（Ｚｅｒｏ Ｄａｙ）攻撃を行う事例が多い。例えば、受信者が電子メールに添付された悪意のある非実行ファイルを何気なく開く場合、受信者のコンピュータは、悪意のあるファイルにより感染し、他のコンピュータを攻撃する可能性もあり、システムに侵入して機密資料を外部に流出する可能性がある。それだけでなく、非実行ファイルが多様な形式（フォーマット）を有しているため、悪意のある非実行ファイルを用いたゼロデイ・エクスプロイト（Ｚｅｒｏ-Ｄａｙ Ｅｘｐｌｏｉｔ）は、分析家が非実行ファイルの悪意の有無を判断し、悪意のあるビヘイビアを分析するのにかなりの時間と努力が必要であり、分析期間中に発生する変形、又は新たに生成される数多くの悪意のある非実行ファイルに対応することは、殆ど不可能であると言える。
【０００７】
現在、このようなマルウェアを検知し、治療するためのマルウェア治療システム（ワクチンプログラム）に対する研究が持続的に行われており、これまで知られている大部分のマルウェア治療システム（ワクチンプログラム）は、実行ファイル内でマルウェアを検出するのが大半である。
【０００８】
このようにマルウェア治療システムが実行ファイルを対象にしてマルウェアを検出する理由は、大部分のマルウェアが特定のシステムで実行されるためには、該当システムで実行可能な形態となっているという点に起因する。
【０００９】
例えば、マルウェアがウィンドウシステムで実行されるためのファイルの拡張子は、ｅｘｅ、ｃｐｌ、ｏｃｘ、ｄｌｌ、ｖｘｄ、ｓｙｓ、ｓｃｒ、ｄｒｖなどがある。
【００１０】
しかし、近年、注目を集めている悪意のあるシェルコード（ｓｈｅｌｌ ｃｏｄｅ）は、非実行ファイルのフォーマットを有する各種のファイルに挿入され、マルウェア治療システム及び、分析家からのがれる技術が利用されている。例えば、ウィンドウシステムでマルウェアの有する非実行ファイルの拡張子は、ＨＷＰ、ＤＯＣ、ＸＬＳ、ＪＳ、ＨＴＭＬ、ＪＰＧなどが挙げられる。
【００１１】
このような非実行ファイルに対する悪意の有無の検査のためには、分析家がファイル別に悪意の有無を判断しなければならない。特に、ゼロデイ・エクスプロイトを用いた非実行ファイルは、分析家が悪意の有無を判断し、悪質なビヘイビアを分析するまでかなりの時間と努力が必要なため、分析期間中に発生する変形又は、新たに生成される数多くの悪意のある非実行ファイルに対応することは殆ど不可能であると見られる。
【００１２】
ところが、前述したように、最近、ＡＰＴ攻撃シナリオを成功させるために、悪意のある非実行エクスプロイトを用いる事例が増加し、これを防御できる技術の開発が切実となっている。
【００１３】
従来技術による非実行ファイルに対する悪意の有無の検査方法としては、シグネチャ基盤の悪意の有無の検査方法が挙げられる。しかし、このような方法は、多様な形態の攻撃方法を検知するためには、大量のシグネチャデータベースを保有していなければならないため、現実的にはゼロデイ・エクスプロイトを防御できない。
【００１４】
非実行ファイルでマルウェアを検知する従来の他の方法としては、攻撃者が悪意のある非実行ファイルに含まれているシェルコードを如何なる方式で設計するかによって変わるビヘイビアを検知し、マルウェアを含む非実行ファイルを探し出す方法がある。しかし、このような方法は、多様な攻撃者に対する設計方法などの情報が必要なため、多くの誤検出（ｆａｌｓｅ ｐｏｓｉｔｉｖｅ）と見逃し（ｆａｌｓｅ ｎｅｇａｔｉｖｅ）が発生するという問題がある。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】韓国公開特許 第２０１０-５５１８号
【発明の概要】
【発明が解決しようとする課題】
【００１６】
本発明は、このような従来技術の問題を解決するためのものであり、その目的は、非実行ファイルのマルウェアと関連する悪意のある候補アドレス情報を用いて非実行ファイルがマルウェアを含んでいるか否かを判断できる非実行ファイル検査装置及び方法を提供することにある。
【００１７】
また、本発明の目的は、命令語実行アドレスがマルウェア領域を指示した前例があるモジュールの相対仮想アドレス（ＲＶＡ：Ｒｅｌａｔｉｖｅ Ｖｉｒｔｕａｌ Ａｄｄｒｅｓｓ）を用いて同一のエクスプロイトを試みる悪意のある非実行ファイルを一括して検出できる非実行ファイル検査装置及び方法を提供することにある。
【００１８】
更に、本発明の他の目的は、悪意のある非実行ファイルを用いたゼロデイ・エクスプロイトを用いるＡＰＴ攻撃を効果的に防御できる非実行ファイル検査装置及び方法を提供することにある。
【００１９】
本発明の目的は、以上で言及した目的に制限されず、言及していない他の目的は、以下の記載から本発明の属する通常の知識を有する者に明確に理解され得る。
【課題を解決するための手段】
【００２０】
前記目的を達成するために、本発明の一態様によれば、非実行ファイルのマルウェアと関連する悪意のある候補アドレス情報をロードするデータローディング部と、前記非実行ファイルに対応する応用プログラムが駆動されれば、メモリにロードされるモジュールの正常アドレス範囲情報を獲得し、前記悪意のある候補アドレス情報に対する中止点（ｂｒｅａｋｐｏｉｎｔ）を設定するプログラム連結部と、前記中止点に対するイベントが発生すれば、次の実行アドレスが前記正常アドレス範囲情報に属するかを判断する悪意判断部を含む非実行ファイル検査装置が提供される。
【００２１】
この場合、前記実行アドレスが前記正常アドレス範囲情報に属さないと判断されれば、前記非実行ファイルは悪意のあるファイルと判断され得る。
【００２２】
また、前記悪意判断部は、前記実行アドレスが前記正常アドレス範囲情報に属さないと判断されれば、前記実行アドレスが指示するメモリ領域が実行属性か否かを判断し、前記判断結果に基づいて前記非実行ファイルに対する悪意の有無を判断できる。
【００２３】
更に、前記悪意判断部は、前記メモリ領域が実行属性である場合、前記実行アドレスが指示するメモリ領域に格納されたコードの実行による異常なイベントの発生有無をチェックして前記非実行ファイルに対する悪意の有無を判断できる。
【００２４】
また、前記悪意判断部は、前記異常なイベントが発生していない場合、前記実行アドレスの後、既に設定されたステップまでの実行アドレスが前記正常アドレス範囲情報を指示するかをチェックして前記非実行ファイルに対する悪意の有無を判断できる。
【００２５】
更に、前記悪意判断部は、前記メモリ領域が非実行属性であると判断される場合、前記非実行ファイルを悪意があると判断できる。
【００２６】
また、非実行ファイル検査装置は、前記悪意のある候補アドレス情報のセットが格納されたデータベース部を更に含み、前記悪意のある候補アドレス情報は、非実行ファイルのマルウェアと関連するモジュールの相対仮想アドレス（ＲＶＡ）に関する情報であり得る。
【００２７】
また、前記データローディング部は、前記非実行ファイルのファイル形式を判断し、前記悪意のある候補アドレス情報のセットのうち、前記判断されたファイルの形式に対応する悪意のある候補アドレス情報をロードできる。
【００２８】
更に、非実行ファイル検査装置は、悪意のあるファイルと判定された非実行ファイルのマルウェアを実行ファイル形態又は実行可能なファイル形態で抽出するマルウェア抽出部を更に含むことができる。
【００２９】
また、非実行ファイル検査装置は、前記相対仮想アドレスと脆弱性情報との比較を通じて、エクスプロイトの発生原因を分析する原因分析部を更に含むことができる。
【００３０】
一方、前記正常アドレス範囲情報は、前記応用プログラムの駆動によってロードされるモジュールの開始アドレスと終了アドレスを含むことができる。
【００３１】
そして、前記実行アドレスは、中央処理ユニットのＥＩＰ（Ｅｘｔｅｎｄｅｄ Ｉｎｓｔｒｕｃｔｉｏｎ Ｐｏｉｎｔｅｒ）レジスタから提供され得る。
【００３２】
また、前記悪意判断部は、前記正常アドレス範囲情報から逸脱した実行アドレスの直前に実行された命令語の実行アドレスを格納できる。
【００３３】
前記目的を達成するために、本発明の他の態様によれば、非実行ファイルのマルウェアと関連する悪意のある候補アドレス情報をロードする段階と、前記非実行ファイルに対応する応用プログラムが駆動されれば、メモリにロードされるモジュールの正常アドレス範囲情報を獲得する段階と、前記悪意のある候補アドレス情報に対する中止点を設定する段階と、前記中止点に対するイベントが発生すれば、次の実行アドレスが前記正常アドレス範囲情報に属するかを判断する段階とを含む非実行ファイル検査方法が提供される。
【００３４】
この場合、前記実行アドレスが前記正常アドレス範囲情報に属さないと判断されれば、前記非実行ファイルは悪意のあるファイルと判断され得る。
【００３５】
また、前記判断する段階は、前記実行アドレスが前記正常アドレス範囲情報に属さないと判断されれば、前記実行アドレスが指示するメモリ領域が実行属性か否かを判断する段階と、前記実行アドレスが指示するメモリ領域が実行属性か否かによって前記非実行ファイルに対する悪意の有無を判断する段階とを含むことができる。
【００３６】
更に、前記メモリ領域が実行属性か否かを判断する段階は、前記メモリ領域が実行属性である場合、前記実行アドレスが指示するメモリ領域に格納されたコードの実行による異常なイベントの発生有無をチェックする段階を含み、前記異常なイベントが発生する場合、前記非実行ファイルを悪意があると判断できる。
【００３７】
また、前記非実行ファイルを悪意があると判断する段階は、前記異常なイベントが発生していない場合、前記実行アドレスの後、既に設定されたステップまでの実行アドレスが前記正常アドレス範囲情報から逸脱した前記メモリ領域を指示するかをチェックする段階と、前記既に設定されたステップまでの実行アドレスが前記正常アドレス範囲情報から逸脱したメモリ領域を指示する場合、前記非実行ファイルを悪意があると判断する段階とを含むことができる。
【００３８】
更に、非実行ファイル検査方法は、前記悪意のある候補アドレス情報のセットを格納する段階を更に含み、前記悪意のある候補アドレス情報は、非実行ファイルのマルウェアと関連するモジュールの相対仮想アドレス（ＲＶＡ）に関する情報であり得る。
【００３９】
また、前記ロードする段階は、前記非実行ファイルのファイル形式を判断する段階と、前記悪意のある候補アドレス情報のセットのうち、前記判断されたファイルの形式に対応する悪意のある候補アドレス情報をロードする段階とを含むことができる。
【００４０】
更に、非実行ファイル検査方法は、悪意のあるファイルと判定された非実行ファイルのマルウェアを実行ファイル形態又は、実行可能なファイル形態で抽出する段階を更に含むことができる。
【００４１】
また、非実行ファイル検査方法は、前記相対仮想アドレスと脆弱性情報との比較を通じて、エクスプロイトの発生原因を分析する段階を更に含むことができる。
【００４２】
更に、前記正常アドレス範囲情報は、前記応用プログラムの駆動によってロードされるモジュールの開始アドレスと終了アドレスを含むことができる。
【００４３】
また、前記実行アドレスは、中央処理ユニットのＥＩＰレジスタから提供され得る。
【００４４】
更に、前記判断する段階は、前記駆動される応用プログラムの命令語の種類に基づいて前記実行アドレスが前記正常アドレス範囲に属するかを判断できる。
【００４５】
一方、前記命令語がリターン（ｒｅｔｕｒｎ）、コール（ｃａｌｌ）又はジャンプ（ｊｕｍｐ）である場合、１つのステップを進行して前記実行アドレスが前記正常アドレス範囲に属するかを判断できる。
【００４６】
反面、前記命令語が構造化例外処理（ＳＥＨ）である場合、前記構造化例外処理のチェーン（ｃｈａｉｎ）値が前記正常アドレス範囲情報に属するかを判断できる。
【００４７】
また、所定のディレクトリに格納されている複数の非実行ファイルのそれぞれに対して本非実行ファイル検査方法が遂行され得る。
【００４８】
このとき、前記マルウェアは、悪意のあるシェルコードを含むことができる。
【００４９】
また、本発明の更に他の態様によれば、前記非実行ファイル検査方法によるそれぞれの段階を行う命令語を含むプログラムが記録されたコンピュータ読み取り可能な記録媒体が提供される。
【発明の効果】
【００５０】
本発明によれば、非実行ファイルに対応する応用プログラムが駆動されることによってロードされる命令語実行アドレスがマルウェア領域を指示した前例があるモジュールの相対仮想アドレス（ＲＶＡ）セットを格納し、非実行ファイルの形式による相対仮想アドレス（ＲＶＡ）をロードした後、この相対仮想アドレスに中止点を設定し、中止点に関するイベントが発生する場合に非実行ファイルが悪意のあるファイルか否かを検査することで、特定の相対仮想アドレス（ＲＶＡ）を用いて同一のエクスプロイトを試みて悪意のあるビヘイビアを行おうとする多くの悪意のある非実行ファイルを一括して検出できるという効果を奏する。
【００５１】
また、本発明によれば、命令語実行アドレスがマルウェア領域を指示した前例があるモジュールの相対仮想アドレス（ＲＶＡ）に中止点を設定し、中止点に関するイベントが発生する場合に、次の実行ファイルが正常アドレス範囲から逸脱し、悪意のあるシェルコードを指示するか否かを通じて非実行ファイルが悪意のあるシェルコードを含む悪意のあるファイルか否かを検査することで、特定の相対仮想アドレス（ＲＶＡ）で悪意のあるシェルコードに分岐するか否かだけ判断すれば良いため、多様な変種の悪意のある非実行ファイルを高速に検知できるという効果を奏する。
【００５２】
更に、本発明によれば、悪意のある非実行ファイルを用いたゼロデイ・エクスプロイトを用いるＡＰＴ攻撃を効果的に防御できるという効果を奏する。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施形態による非実行ファイル検査装置のブロック図である。
【図２】本発明の実施形態による非実行ファイル検査方法を説明するためのフローチャートである。
【図３】本発明の実施形態による非実行ファイル検査装置により行われる非実行ファイル検査方法に対する理解を促進するための概念図である。
【図４】本発明の他の実施形態によって実行アドレスが正常アドレス範囲情報から外れた領域を指示する場合、非実行ファイル検査装置の動作過程を示すフローチャートである。
【発明を実施するための形態】
【００５４】
本発明の利点及び特徴、そしてそれらを達成する方法は、添付される図面と共に詳細に後述されている実施形態を参照すれば明確になる。しかし、本発明は、以下で開示される実施形態に限定されるものではなく、互いに異なる多様な形態で実現されることができ、但し、本実施形態は、本発明の開示が完全なようにし、本発明の属する技術分野において通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求範囲の範疇により定義されるだけである。
【００５５】
本発明の実施形態を説明するには公知の機能又は、構成についての具体的な説明が本発明の要旨を不要に曖昧にするおそれがあると判断される場合には、その詳細説明については省略する。そして、後述する用語は、本発明の実施形態での機能を考慮して定義された用語であって、これはユーザ、運用者の意図又は慣例などによって変わり得る。従って、その定義は、本明細書全般に亘る内容に基づいて下されるべきである。
【００５６】
本明細書で用いられる「非実行ファイル」とは、実行ファイル又は実行可能なファイルと反対概念であって、自ら実行されないファイルを意味する。例えば、非実行ファイルは、アレアハングルファイル、ワードファイルのような文書ファイル、ＪＰＧファイルのようなイメージファイル、動画ファイル、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔファイル、ＨＴＭＬファイルなどに該当するが、これに限定されない。
【００５７】
マルウェアを含む悪意のある非実行ファイルは、電子メールに添付される方式又は、ネットワークを介して転送される方式などを通じてＡＰＴ攻撃などで使用され得る。この場合、マルウェアは、シェルコード（ｓｈｅｌｌ ｃｏｄｅ）であることより、このような悪意のあるシェルコードは、非実行ファイルの形式（フォーマット）に対応する応用プログラムの実行時に実行され得る。非実行ファイルの形式は、例えば、ｈｗｐファイル、ｄｏｃファイル、ｐｄｆファイル、ＪＰＧファイル、ｊｓファイル、ＨＴＭＬファイルなどになり得る。
【００５８】
特に、本発明の実施形態による非実行ファイル検査装置及び方法は、命令語実行アドレスが悪意のあるシェルコード領域を指示した前例があるモジュールの相対仮想アドレス（ＲＶＡ）を予め確保した状況でこれをデータベース部などに格納し、非実行ファイル検査に用いることで、より迅速、且つ、効果的に悪意のある非実行ファイルを検知できる。
【００５９】
これと関連して、このような相対仮想アドレスを確保する過程についてまず詳察する。
【００６０】
悪意のある非実行ファイルは、悪意のあるシェルコードを含むことができ、悪意のあるシェルコードを含んでいる悪意のある非実行ファイルは如何なる方式を通じてでも結局のところ、命令語を実行する際に悪意のあるシェルコード領域に移動する。このような悪意のあるシェルコード領域への移動は、実行アドレスを確認すれば、予め予測できる。例えば、ＣＰＵのような中央処理ユニットのレジスタの１つであるＥＩＰレジスタに格納された値を通じて次の実行アドレスを確認できる。従って、正常なアドレス範囲から逸脱し、悪意のあるシェルコード領域に移動する命令語を有する非実行ファイルは悪意があると判別及び、分類ができる。また、これらの情報を用いて命令語実行アドレスが悪意のあるシェルコード領域を指示した前例があるモジュールの仮想アドレスを予め確保できる。ここで、仮想アドレスは、ハードウェアの変化などのようなプログラム駆動環境の変化によって、その値が変化するため、相対仮想アドレス（ＲＶＡ）に置換する必要があり、本発明の実施形態では、このような理由で非実行ファイルの悪意の有無を検査する際に、このような相対仮想アドレスを用いる。
【００６１】
図１は、本発明の実施形態による非実行ファイル検査装置のブロック図である。
【００６２】
図示のように、非実行ファイル検査装置１００は、データローディング部１１０、プログラム連結部１２０、悪意判断部１３０、悪意シェルコード抽出部１４０、原因把握部１５０、データベース部１６０、メモリ170などを含むことができる。
【００６３】
データベース部１６０には、命令語実行アドレスが悪意のあるシェルコード領域を指示した前例があるモジュールの相対仮想アドレス（ＲＶＡ）情報のセットが格納され、このような相対仮想アドレス情報は、非実行ファイルに対して悪意の有無を検査する際に悪意のある候補アドレス情報（Ｃａｎｄｉｄａｔｅ ａｄｄｒｅｓｓ）として利用される。即ち、悪意のある候補アドレス情報のセットとは、悪意のあるシェルコード領域に移動しようとした前例があるモジュールの仮想アドレス情報（ＲＶＡ）のセットを意味する。この場合、モジュールは、ダイナミックリンクライブラリ（ＤＬＬ：Ｄｙｎａｍｉｃ Ｌｉｎｋｉｎｇ Ｌｉｂｒａｒｙ）になり得る。
【００６４】
また、データベース部１６０には、相対仮想アドレス情報とマッピングして脆弱性情報が格納される。ここで、脆弱性情報は、相対仮想アドレス情報との比較を通じて特定の相対仮想アドレスを有するエクスプロイトに対してその発生原因を把握する際に利用できる。一実施形態によれば、非実行ファイルのファイル形式別に他の複数の悪意のある候補アドレス情報のセットがデータベース部１６０に格納され得る。
【００６５】
データローディング部１１０は、非実行ファイルに対する悪意の有無を検査する際にデータベース部１６０から相対仮想アドレスに基づく悪意のある候補アドレス情報をロードする。実施形態によれば、データローディング部１１０は、悪意の有無の検査の対象である非実行ファイルのファイル形式を判断した後に、データベース部１６０に格納された複数の悪意のある候補アドレス情報のセットのうち、非実行ファイルのファイル形式に符合する悪意のある候補アドレス情報を中止点の設定のためにロードする。
【００６６】
プログラム連結部１２０は、悪意の有無の検査の対象である非実行ファイルに対応する応用プログラムが実行されれば、仮想メモリにロードされたモジュールの開始アドレスと終了アドレスを含む正常なアドレス範囲情報を獲得し、データローディング部１１０によりロードされた悪意のある候補アドレス情報によって悪意のある候補アドレス情報に対応する悪意のある候補アドレスを応用プログラムの中止点として設定する。このようなプログラム連結部１２０は、実施形態によって、応用プログラムを直接実行させてもよく、別途のプログラム駆動部（図示せず）に該当する応用プログラムの実行を要請してもよい。
【００６７】
悪意判断部１３０は、プログラム連結部１２０により設定された中止点によりイベントが発生すれば、次の実行アドレスが正常アドレス範囲情報に属するかを判断し、次の実行アドレスが正常アドレス範囲情報に属すれば、非実行ファイルを正常ファイルと判断し、反対に、次の実行アドレスが正常アドレス範囲情報から逸脱すれば、非実行ファイルを悪意があると判断する。ここで、悪意判断部１３０は、中央処理ユニットのＥＩＰレジスタに格納された後、実行アドレスを利用できる。実施形態によれば、悪意判断部１３０は、命令語の種類によって、１ステップ（ｓｔｅｐ）を進行して次の実行アドレスが正常なアドレス範囲情報に属するかを判断するか、１ステップを進行せず、直ぐ次の実行アドレスが正常なアドレス範囲情報に属するかを判断できる。例えば、命令語が構造化例外処理（ＳＥＨ：Ｓｔｒｕｃｔｕｒｅｄ Ｅｘｃｅｐｔｉｏｎ Ｈａｎｄｌｉｎｇ）である場合、悪意判断部１３０は、構造化例外処理のチェーン値と正常アドレス範囲情報間の比較を行える。また、リターン、コール又はジャンプなどのような命令語は、１ステップを進行して次の実行アドレスが正常アドレス範囲情報に属するかを判断できる。ここで、構造化例外処理のチェーン値は、実行するアドレスを意味する。
【００６８】
但し、悪意判断部１３０は、正常応用プログラムが非実行ファイルをロードするために、正常モジュールの正常アドレス範囲情報の外で命令語を実行することは例外処理することもできる。
【００６９】
例外処理される場合について説明すれば、悪意判断部１３０は、実行アドレスが正常アドレス範囲情報から逸脱する場合、実行アドレスが指示するメモリ 170の領域の属性を判断し、判断の結果、メモリ170の領域の属性が実行属性でない場合、実行アドレスが指示するメモリ170の領域に格納されたコードの実行によって発生するイベントが異常なイベントかを判断する。
【００７０】
ここで、異常なイベントの例としては、
Ａｃｃｅｓｓ Ｖｉｏｌａｔｉｏｎ；
ＥＸＣＥＰＴＩＯＮ_ＡＲＲＡＹ_ＢＯＵＮＤＳ_ＥＸＣＥＥＤＥＤ；
ＥＸＣＥＰＴＩＯＮ_ＤＡＴＡＴＹＰＥ_ＭＩＳＡＬＩＧＮＭＥＮＴ；
ＥＸＣＥＰＴＩＯＮ_ＦＬＴ_ＤＥＮＯＲＭＡＬ_ＯＰＥＲＡＮＤ；
ＥＸＣＥＰＴＩＯＮ_ＦＬＴ_ＤＩＶＩＤＥ_ＢＹ_ＺＥＲＯ；
ＥＸＣＥＰＴＩＯＮ_ＦＬＴ_ＩＮＥＸＡＣＴ_ＲＥＳＵＬＴ；
ＥＸＣＥＰＴＩＯＮ_ＦＬＴ_ＩＮＶＡＬＩＤ_ＯＰＥＲＡＴＩＯＮ；
ＥＸＣＥＰＴＩＯＮ_ＦＬＴ_ＯＶＥＲＦＬＯＷ；
ＥＸＣＥＰＴＩＯＮ_ＦＬＴ_ＳＴＡＣＫ_ＣＨＥＣＫ；
ＥＸＣＥＰＴＩＯＮ_ＦＬＴ_ＵＮＤＥＲＦＬＯＷ；
ＥＸＣＥＰＴＩＯＮ_ＧＵＡＲＤ_ＰＡＧＥ；
ＥＸＣＥＰＴＩＯＮ_ＩＬＬＥＧＡＬ_ＩＮＳＴＲＵＣＴＩＯＮ；
ＥＸＣＥＰＴＩＯＮ_ＩＮ_ＰＡＧＥ_ＥＲＲＯＲ；
ＥＸＣＥＰＴＩＯＮ_ＩＮＴ_ＤＩＶＩＤＥ_ＢＹ_ＺＥＲＯ；
ＥＸＣＥＰＴＩＯＮ_ＩＮＴ_ＯＶＥＲＦＬＯＷ；
ＥＸＣＥＰＴＩＯＮ_ＩＮＶＡＬＩＤ_ＤＩＳＰＯＳＩＴＩＯＮ；
ＥＸＣＥＰＴＩＯＮ_ＩＮＶＡＬＩＤ_ＨＡＮＤＬＥ；
ＥＸＣＥＰＴＩＯＮ_ＮＯＮＣＯＮＴＩＮＵＡＢＬＥ_Ｅｘｃｅｐｔｉｏｎ；
ＥＸＣＥＰＴＩＯＮ_ＰＲＩＶ_ＩＮＳＴＲＵＣＴＩＯＮ；
ＥＸＣＥＰＴＩＯＮ_ＳＴＡＣＫ_ＯＶＥＲＦＬＯＷ
などが挙げられるが、これに限定しない。
【００７１】
異常なイベントが発生する場合、悪意判断部１３０は、非実行ファイルをマルウェアと判断すると共に、正常アドレス範囲情報から逸脱する実行アドレスの命令語の直前に実行された命令語の実行アドレスを仮想メモリに格納できる。
【００７２】
一方、異常なイベントが発生していない場合、悪意判断部１３０は、既に設定されたステップ、例えば３〜５ステップまでの命令語に対する実行アドレスと正常アドレス範囲情報間の比較を通じて非実行ファイルに対する悪意の有無を判断できる。即ち、悪意判断部１３０は、既に設定されたステップまでの命令語に対する実行アドレスが正常アドレス範囲情報から逸脱する場合、非実行ファイルを悪意があると判断し、既に設定されたステップ以前の命令語に対する実行アドレスが正常アドレス範囲情報である場合、非実行ファイルを正常と判断し、以後のステップに対する命令語を行える。
【００７３】
悪意シェルコード抽出部１４０は、非実行ファイルの駆動プログラムが仮想メモリにデコードしておいた悪意のあるシェルコードを実行ファイル形態又は実行可能なファイル形態で抽出する。例えば、悪意シェルコード抽出部１４０は、デコードされた悪意のあるシェルコードを拡張子がｅｘｅ、ｃｐｌ、ｏｃｘ、ｄｌｌ、ｖｘｄ、ｓｙｓ、ｓｃｒ又はｄｒｖの何れか１つのファイル形態で抽出できる。しかし、抽出できるファイル形態の拡張子は、これらに限定されない。
【００７４】
また、マルウェア抽出部１４０は、実行ファイル形態又は実行可能なファイル形態で抽出されたコードを通信網（図示せず）に連結されたマルウェア検査及び分析サーバ（図示せず）に転送し、分析を依頼することもできる。
【００７５】
原因把握部１５０は、悪意判断部１３０が悪意のあるファイルに分類した非実行ファイルの相対仮想アドレスとデータベース部１６０に既に格納された脆弱性情報との比較を通じて、エクスプロイトの発生原因を把握し、把握されたエクスプロイトの発生原因を報告（レポート）する。
【００７６】
本発明の実施形態では、原因分析部１１２が非実行ファイル検査装置の内部に設けられることを例として説明したが、通信網を介して連結された別途の分析サーバ（図示せず）に設けられてもよい。
【００７７】
一実施形態において、本発明の非実行ファイル検査装置は、複数の非実行ファイルが格納されているディレクトリが選択されれば、該当ディレクトリに格納されている複数の非実行ファイルのそれぞれに対して非実行ファイルの検査を行える。
【００７８】
また、他の一実施形態において、本発明の非実行ファイル検査装置は、ネットワークを介して転送される非実行ファイルの悪意の有無をリアルタイムでモニタリングすることもできる。
【００７９】
図２は、本発明の実施形態による非実行ファイル検査方法を説明するためのフローチャートである。
【００８０】
図示のように、非実行ファイル検査方法は、命令語実行アドレスが悪意のあるシェルコード領域を指示した前例があるモジュールの相対仮想アドレスを予め確保した状況で、悪意の有無の検査の対象である非実行ファイルに対応する応用プログラムの実行によってロードされたモジュールの正常アドレスの範囲情報を獲得する段階（Ｓ２０１〜Ｓ２０７）と、相対仮想アドレスに基づく悪意のある候補アドレス情報によって中止点を設定する段階（Ｓ２０９）と、設定された中止点に対するイベントが発生すれば、次の実行アドレスが正常アドレス範囲情報に属するかを判断する段階（Ｓ２１１及びＳ２１３）と、次の実行アドレスがアドレス範囲情報から逸脱すれば、非実行ファイルを悪意があると判断する段階（Ｓ２１５）と、応用プログラムが仮想メモリにデコードしておいた悪意のあるシェルコードを実行ファイル形態又は実行可能なファイル形態で抽出する段階（Ｓ２１７）と、相対仮想アドレスと既に獲得した脆弱性情報との比較を通じて、エクスプロイトの発生原因を分析し報告する段階（Ｓ２１９）と、段階Ｓ２１３で次の実行アドレスが正常なアドレス範囲情報に属すると判断されれば、非実行ファイルに対する検査が終了するまで段階Ｓ２１１による中止点イベントの発生をモニタリングする段階（Ｓ２２１）とを含む。
【００８１】
以下、本発明の実施形態による非実行ファイル検査装置による非実行ファイル検査方法を説明するに先立ち、本発明の理解を促進するために、非実行ファイル検査装置１００のデータベース部１６０に格納される相対仮想アドレス（即ち、命令語実行アドレスが悪意のあるシェルコード領域を指示した前例があるモジュールの相対仮想アドレス）のセットを確保する過程について実施形態を通じて詳察する。以下では、このような相対仮想アドレスの確保過程を非実行ファイル検査装置１００が直接行う場合を例示する。
【００８２】
まず、ユーザがユーザインターフェースを用いて非実行ファイルが格納された所定のディレクトリを選択すれば、データローディング部１１０は、選択されたディレクトリ内の非実行ファイルの形式を把握してプログラム連結部１２０に提供する。
【００８３】
すると、プログラム連結部１２０は、非実行ファイルに対応する応用プログラムを直接実行させるか、別途のシステム（図示せず）に該当駆動プログラムの実行を要請し、該当応用プログラムの実行によってロードされたモジュールの命令語別の実行アドレス情報を悪意判断部１３０に提供する。ここで、実行アドレス情報は、モジュール内の命令語が実行されるとき、仮想メモリ上のアドレスを意味し、ＥＩＰレジスタに格納されている情報であり得る。
【００８４】
そして、プログラム連結部１２０は、プログラムの実行によって仮想メモリにロードされるモジュールの仮想メモリ上の開始アドレスと終了アドレスからなる正常アドレス範囲を仮想メモリに格納する。
【００８５】
その後、悪意判断部１３０は、プログラム連結部１２０から出力される実行アドレス情報と正常アドレス範囲間の比較を通じて実行アドレス情報が正常アドレス範囲に含まれるかを判断する。
【００８６】
ここで、実行アドレス情報が正常アドレス範囲に含まれる場合に、悪意判断部１３０は、次の命令語に対する実行アドレス情報をプログラム連結部１２０から提供を受けた後、次の命令語の実行アドレス情報が正常アドレス範囲に含まれるかを判断する。
【００８７】
実行アドレス情報が正常アドレス範囲から逸脱する場合に、CPUレジスタの値の一つであるEIPが悪意のあるシェルコード領域に移動するため、悪意判断部１３０は、非実行ファイルを悪意があると分類した後、応用プログラムの駆動を中止させる。
【００８８】
その後、悪意判断部１３０は、悪意のあるシェルコード領域に移動する前の実行アドレス情報と応用プログラム内の該当モジュール（脆弱性を有するモジュール）の情報を仮想メモリに格納した後、これを原因把握部１５０に提供する。
【００８９】
一方、悪意シェルコード抽出部１４０は、アドレス範囲から逸脱する実行アドレス情報が指示する領域、即ち、悪意のあるシェルコード領域に対するコードを実行ファイル形態又は実行可能なファイル形態で抽出した後、これを仮想メモリに格納する。
【００９０】
原因把握部１５０は、悪意判断部１３０から提供を受けた実行アドレス及びモジュールの情報を既に格納された脆弱性情報間の比較を通じて脆弱性の発生原因を把握した後、これをユーザ又は分析家に提供することで、該当非実行ファイルに対する分析の結果をレポートできる。
【００９１】
その後、ディレクトリ内に他の非実行ファイルが存在する場合に、非実行ファイル検査装置１００は、他の非実行ファイルのそれぞれに対して前述した非実行ファイルの検査過程を再び行う。
【００９２】
以上で説明した非実行ファイル検査装置による悪意のある非実行ファイルに対する検査過程からも分かるように、悪意のある非実行ファイルは、マルウェア、例えば、悪意のあるシェルコードを共通して含んでおり、悪意のあるシェルコードを含んでいる悪意のある非実行ファイルは如何なる方式を通じてでも結局のところ、悪意のあるシェルコードに関する命令語を実行する際に悪意のあるシェルコード領域に移動する。このような悪意のあるシェルコード領域への移動は、次の実行アドレスを確認すれば、予め予測できる。例えば、中央処理ユニットのレジスタの１つであるＥＩＰレジスタに格納された値を通じて次の実行アドレスを確認できる。従って、正常なアドレス範囲から逸脱し、悪意のあるシェルコード領域に移動する命令語を有する非実行ファイルは悪意があると判別及び、分類できる。また、これらの情報を用いて命令語実行アドレスが悪意のあるシェルコード領域を指示した前例があるモジュールの仮想アドレスを予め確保できる。ここで、モジュールがロードされる仮想アドレスは、ハードウェアの変化などのようなプログラム駆動環境の変化によってロードされる度にその値が変化するため、相対仮想アドレスに置換する必要があり、本発明の実施形態による非実行ファイル検査装置１００は、非実行ファイルの悪意の有無を検査するために、このような相対仮想アドレスをデータベース部１６０に予め格納する。
【００９３】
以下、図１及び図３を参照して本発明の実施形態による非実行ファイル検査装置による非実行ファイルの検査過程を詳細に説明する。ここで、本発明の一実施形態によるプログラム連結部１２０は、実行が必要な特定の応用プログラムを直接実行させることもできる。これは、本発明の非実行ファイル検査装置１００が特定の応用プログラム又はこれを含む各種プログラムをプログラム格納部などのような格納手段に直接格納できることを意味すると言える。
【００９４】
まず、本発明の実施形態によって非実行ファイル検査装置１００が特定の応用プログラムを直接実行する場合を説明する。
【００９５】
検査の対象である非実行ファイルが格納されたディレクトリがユーザインターフェースなどを通じて選択されれば、データローディング部１１０は、該当ディレクトリに格納された非実行ファイルのファイル形式情報３０３に基づいてファイルの形式を判断する。例えば、ドライブ１の下位に存在するルートフォルダ１〜ルートフォルダＮの中からルートフォルダ２（３０１）がユーザインターフェースなどを通じて、選択されれば、ルートフォルダ２（３０１）に格納された非実行ファイルのファイル形式情報を確認し、該当非実行ファイルのファイル形式を判断する（Ｓ２０１）。
【００９６】
そして、データローディング部１１０は、データベース部１６０に格納された複数の悪意のある候補アドレス情報のセットのうち、非実行ファイルのファイル形式に符合する悪意のある候補アドレス情報３０５をロードする（Ｓ２０３）。
【００９７】
プログラム連結部１２０は、悪意の有無の検査の対象である非実行ファイルに対応する応用プログラム３０７を実行し（Ｓ２０５）、該当応用プログラムの実行によってロードされたモジュール３０９の正常なアドレス範囲情報を獲得して格納する（Ｓ２０７）。ここで、モジュールの例としては、ダイナミックリンクライブラリＤＬＬが挙げられる。例えば、プログラム連結部１２０は、プログラム格納部（図示せず）などのような格納手段に格納された応用プログラムのうち、該当する応用プログラムをロードして仮想環境で実行できる。
【００９８】
更に、プログラム連結部１２０は、データローディング部１１０によりロードされた悪意のある候補アドレス情報３０５により、悪意のある候補アドレス情報３０５に対応する悪意のある候補アドレスを応用プログラムの中止点に設定３１１する（Ｓ２０９）。
【００９９】
その後、段階Ｓ２０９で設定された中止点により、中止点エクセプションイベント（ｅｘｃｅｐｔｉｏｎ ｅｖｅｎｔ）が発生（Ｓ２１１）すれば、段階Ｓ２０７で次の実行アドレスが獲得された正常なアドレス範囲情報に属するかを判断し（Ｓ２１３）、次の実行アドレスが正常なアドレス範囲情報から逸脱すれば、非実行ファイルを悪意があると分類（３１３）及び、判断する（Ｓ２１５）。ここで、悪意判断部１３０は、中央処理ユニットのＥＩＰレジスタに格納された次の実行アドレスを用いて該当命令語が正常なアドレス範囲から逸脱し、悪意のあるシェルコード領域に移動するかを判断できる。
【０１００】
一方、段階Ｓ２１３で悪意判断部１３０は、命令語の種類によって１ステップを進行して次の実行アドレスが正常なアドレス範囲情報に属するかを判断するか、１ステップを進行せず、直ぐ次の実行アドレスが正常なアドレス範囲情報に属するかを判断できる。例えば、悪意判断部１３０は、リターン、コール又は、ジャンプなどのような命令語は、１ステップを進行して次の実行アドレスが正常なアドレス範囲情報に属するかを判断し、命令語がＳＥＨである場合に、ＳＥＨのチェーン値が正常なアドレス範囲情報に属するかを判断できる。
【０１０１】
すると、悪意シェルコード抽出部１４０は、非実行ファイルの応用プログラムが仮想メモリにデコードしておいた悪意のあるシェルコードを実行ファイル形態又は、実行可能なファイル形態で抽出する。例えば、悪意シェルコード抽出部１４０は、デコードされた悪意のあるシェルコードを実行ファイル又は実行可能なファイルで抽出できる。このとき、実行ファイル又は、実行可能なファイルは、拡張子がｅｘｅ、ｃｐｌ、ｏｃｘ、ｄｌｌ、ｖｘｄ、ｓｙｓ、ｓｃｒ又は、ｄｒｖの何れか１つのファイル形態で抽出できる。しかし、抽出できるファイル形態の拡張子は、これらに限定されない。このように抽出された悪意のあるシェルコード実行ファイルは、悪意のあるシェルコードの動作方式を分析する際に利用できる（Ｓ２１７）。
【０１０２】
また、原因把握部１５０は、悪意判断部１３０が悪意のあるファイルに分類した非実行ファイルの相対仮想アドレスと、データベース部１６０に既に格納された脆弱性情報との比較を通じて、エクスプロイトの発生原因を把握し、把握されたエクスプロイトの発生原因をレポートする（Ｓ２１９）。ここで、脆弱性情報としては、ＣＶＥ（Ｃｏｍｍｏｎ Ｖｕｌｎｅｒａｂｉｌｉｔｉｅｓ ａｎｄ Ｅｘｐｏｓｕｒｅｓ）、Ｍｉｃｒｏｓｏｆｔ Ｓｅｃｕｒｉｔｙ Ｂｕｌｌｅｔｉｎ（例えば、ＭＳ１１-００２）、ＮＶＤ（Ｎａｔｉｏｎａｌ Ｖｕｌｎｅｒａｂｉｌｉｔｙ Ｄａｔａｂａｓｅ）、ＵＳ-ＣＥＲＴ Ｂｕｌｌｅｔｉｎなどで提供した情報であり得るが、これらに限定されない。
【０１０３】
段階Ｓ２１３で次の実行アドレスが正常なアドレス範囲情報に属すると判断されれば、正常ファイルに分類（３１５）して非実行ファイルに対する検査が終了するまで、段階Ｓ２１１による中止点エクセプションイベントの発生をモニタリングする（Ｓ２２１）。なお、現在の検査の対象である非実行ファイルに対する悪意の有無の検査が終了すれば、同一のディレクトリに存在する他の非実行ファイルに対する悪意の有無を検査する。
【０１０４】
また、前述したように、本発明の他の実施形態では、非実行ファイル検査装置１００が特定の応用プログラムを直接実行せず、別途のシステムに特定の応用プログラムの実行を要請することで、前述した非実行ファイルの検査方法を行うこともできる。ここで、システムの例としては、マルウェア検査装置が設けられた個人用端末、通信網（図示せず）を介して連結されたプログラム提供サーバなどを意味し得、これに限定されるものではない。
【０１０５】
一方、前述した実施形態では、実行アドレスが正常アドレス範囲情報から逸脱する場合、これを悪意があると判断する例として説明したが、実行アドレスが指示するメモリ170の領域に実行属性がある場合、これを例外処理できるが、これに関する説明は、以下の通りである。
【０１０６】
図４は、本発明の他の実施形態によって実行アドレスが正常アドレス範囲情報から逸脱した領域を指示する場合、非実行ファイル検査装置の動作過程を示すフローチャートである。
【０１０７】
図４に示すように、第１実行アドレスが正常アドレス範囲情報から逸脱したメモリ170の領域を指示する場合、悪意判断部１３０は、カウンタ値を既に設定された初期値、例えば「０」にセット（Ｓ４００）した後、第１実行アドレスが指示するメモリ170の領域に対する属性を検査して属性が実行属性かを判断する（Ｓ４０２）。
【０１０８】
Ｓ４０２の判断結果、実行属性でない場合、悪意判断部１３０は、第１実行アドレスが指示するメモリ170の領域内のコードを実行（Ｓ４０４）させ、実行によって発生するイベントが異常なイベントかを検査する（Ｓ４０６）。
【０１０９】
一方、Ｓ４０２で実行属性である場合、悪意判断部１３０は、非実行ファイルを正常と判断（Ｓ４０８）して次の実行アドレス、即ち、第２実行アドレスと正常アドレス範囲情報間の比較を行う。また、Ｓ４０６の検査結果、異常なイベントが発生する場合も悪意判断部１３０は、非実行ファイルを悪意があると判断する（Ｓ４１０）。
【０１１０】
Ｓ４０６の検査結果、異常なイベントが発生していない場合、悪意判断部１３０は、カウンタ値を「１」増加（Ｓ４１２）させた後、カウンタ値が閾値以下であるかを判断する（Ｓ４１４）。
【０１１１】
Ｓ４１４の判断結果、カウンタ値が閾値以下である場合、悪意判断部１３０は、プログラム連結部１２０から提供を受けた後、ステップの命令語に対する第２実行アドレスが正常アドレス範囲情報から逸脱するかを判断する（Ｓ４１６）。
【０１１２】
Ｓ４１６の判断結果、次のステップの命令語に対する次の実行アドレス、即ち、第２実行アドレスが正常アドレス範囲情報から逸脱する場合、悪意判断部１３０は、第２実行アドレスが指示するメモリ170の領域に対する実行属性を検査するＳ４０２に進み、以後の段階を行う。
【０１１３】
一方、Ｓ４１４の判断結果、カウンタ値が閾値を超える場合、悪意判断部１３０は、非実行ファイルを悪意があると判断する。
【０１１４】
また、Ｓ４１６の判断結果、次のステップの命令語に対する第２実行アドレスが正常アドレス範囲情報を指示する場合、悪意判断部１３０は、次の命令語に対する第３実行アドレスと正常アドレス範囲情報間の比較を行う。
【０１１５】
本発明に添付されたブロック図の各ブロックとフローチャートの各段階の組み合わせは、コンピュータ・プログラム・インストラクションにより実行されることもできる。これらのコンピュータ・プログラム・インストラクションは、汎用コンピュータ、特殊用コンピュータ又はその他プログラム可能なデータプロセシング装置のプロセッサに搭載され得るので、コンピュータ又はその他プログラム可能なデータプロセシング装置のプロセッサを通じて行われるそのインストラクションがブロック図の各ブロック又はフローチャートの各段階で説明された機能を行う手段を生成するようになる。これらのコンピュータ・プログラム・インストラクションは、特定の方式で機能を実現するために、コンピュータ又はその他プログラム可能なデータプロセシング装置を指向できるコンピュータの利用可能又は、コンピュータ読み取り可能なメモリに格納されることも可能であるので、そのコンピュータ利用可能又は、コンピュータ読み取り可能なメモリに格納されたインストラクションは、ブロック図の各ブロック又は、フローチャートの各段階で説明された機能を行うインストラクション手段を内包する製造品目を生産することも可能である。コンピュータ・プログラム・インストラクションは、コンピュータ又は、その他プログラム可能なデータプロセシング装置上に搭載されることも可能であるので、コンピュータ又は、その他プログラム可能なデータプロセシング装置上で一連の動作段階が行われ、コンピュータで実行されるプロセスを生成してコンピュータ又は、その他プログラム可能なデータプロセシング装置を行うインストラクションは、ブロック図の各ブロック及びフローチャートの各段階で説明された機能を実行するための段階を提供することも可能である。
【０１１６】
また、各ブロック又は各段階は、特定の（各）論理的機能を実行するための１つ以上の実行可能なインストラクションを含むモジュール、セグメント又は、コードの一部を示すことができる。また、幾つかの代替実施形態では、各ブロック又は、各段階で言及された機能が順序外れで発生することも可能であることに注目すべきである。例えば、相次いで示されている２つのブロック又は、段階は実際に、実質的に同時に行われることも可能であり、又は、その各ブロック又は、各段階が時折該当する機能によって逆順に行われることも可能である。
【０１１７】
以上の説明は、本発明の技術思想を例示的に説明したものに過ぎず、本発明の属する技術分野において通常の知識を有する者であれば、本発明の本質的な特性から逸脱しない範囲で多様な修正及び、変形が可能である。従って、本発明に開示された実施形態は、本発明の技術思想を限定するためのものではなく、説明するためのものであって、このような実施形態によって本発明の技術思想の範囲が限定されるわけではない。本発明の保護範囲は、以下の請求範囲によって解釈されるべきであり、それと同等な範囲内にある全ての技術思想は、本発明の権利範囲に含まれるものと解釈されるべきである。
【符号の説明】
【０１１８】
１００…非実行ファイル検査装置
１１０…データローディング部
１２０…プログラム連結部
１３０…悪意判断部
１４０…悪意シェルコード抽出部
１５０…原因把握部
１６０…データベース部
【要約】本発明は、非実行ファイル検査装置に関し、非実行ファイルのマルウェアと関連する悪意のある候補アドレス情報をロードするデータローディング部と、非実行ファイルに対応する応用プログラムが駆動されれば、メモリにロードされるモジュールの正常アドレス範囲情報を獲得し、悪意のある候補アドレス情報に対する中止点を設定するプログラム連結部と、中止点に対するイベントが発生すれば、次の実行アドレスが正常アドレス範囲情報に属するかを判断する悪意判断部とを含む。従って、本発明は、非実行ファイル内のマルウェアが実行される前に悪意のある非実行ファイルを迅速、且つ、正確に検知できるという効果を奏する。
【選択図】図２【図１】
0005326062.tif 000002
【図２】
0005326062.tif 000003
【図３】
0005326062.tif 000004
【図４】
0005326062.tif 000005