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