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