JP5326063B1 - デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法 - Google Patents

デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法 Download PDF

Info

Publication number
JP5326063B1
JP5326063B1 JP2013113021A JP2013113021A JP5326063B1 JP 5326063 B1 JP5326063 B1 JP 5326063B1 JP 2013113021 A JP2013113021 A JP 2013113021A JP 2013113021 A JP2013113021 A JP 2013113021A JP 5326063 B1 JP5326063 B1 JP 5326063B1
Authority
JP
Japan
Prior art keywords
malicious
executable file
address
debug event
mother
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013113021A
Other languages
English (en)
Other versions
JP2014056563A (ja
Inventor
チャ・スン・リム
ジュ・ソク・リ
Original Assignee
アンラブ,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アンラブ,インコーポレイテッド filed Critical アンラブ,インコーポレイテッド
Application granted granted Critical
Publication of JP5326063B1 publication Critical patent/JP5326063B1/ja
Publication of JP2014056563A publication Critical patent/JP2014056563A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10TTECHNICAL SUBJECTS COVERED BY FORMER US CLASSIFICATION
    • Y10T24/00Buckles, buttons, clasps, etc.
    • Y10T24/14Bale and package ties, hose clamps
    • Y10T24/1457Metal bands
    • Y10T24/1459Separate connections
    • Y10T24/1476Wire

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本発明は、デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法に関し、実施形態は、非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、デバッグイベントが発生すれば、既に獲得したアドレス範囲情報を用いて非実行ファイルに対する悪意の有無を判断する悪意判断部とを含む。従って、本発明の実施形態は、マルウェアが実行される前に短時間で悪意のある非実行ファイルを正確に検知できるという効果を奏する。
【選択図】 図1

Description

本発明は、デバッグイベント(debug event)を用いた悪意のあるシェルコードの検知装置及び方法に関するものである。具体的には、本発明は、デバッグイベントを用いて非実行ファイルが悪意のあるシェルコード(malicious shell code)を含んでいるか否かを検査する装置、方法及びコンピュータプログラムが記録されたコンピュータ読み取り可能な記録媒体に関するものである。
広範囲なインターネット及び無線通信機器の普及に伴い、悪意のあるソフトウェア又はマルウェアの感染経路が多様化しており、これによる被害の程度が年々増加している。マルウェアとは、ユーザの意思と利益に反してシステムを破壊したり、情報を流出させたりするなどの悪意のある活動を行うように意図的に製作されたソフトウェアを意味する。マルウェアは、ウイルス(virus)、ワーム(worm)、トロイの木馬(trojan)、バックドア(backdoor)、論理爆弾(logic bomb)、トラップドア(trap door)などのハッキングツール、悪意のあるスパイウェア(spyware)、アドウェア(ad−ware)などが挙げられる。マルウェアは、自己複製や自動繁殖機能を通じて、ユーザ識別情報(ID)とパスワードなどの個人情報の流出、対象システムの統制、ファイルの削除/変更、システムの破壊、アプリケーションプログラム/システムのサービス拒否、機密資料の流出、他のハッキングプログラムのインストールなどの問題を起こしており、その被害も非常に多様、且つ、深刻になっている。
このような問題を解決するために、マルウェアを検知し治療するマルウェア治療システム(ワクチンプログラム)が開発されている。現在まで知られているマルウェア治療システム(ワクチンプログラム)の大部分は、ファイル基盤診断法を用いている。これは、大部分のマルウェアが特定のシステムで実行されるためには、該当システムで実行可能なファイル形態になっている点に起因するものである。例えば、マルウェアがウィンドウシステム(例えば、Win32オペレーティングシステム)で実行されるためには、携帯実行可能(PE:Portable Executable)ファイルのフォーマットを有しているのが大部分である。例えば、携帯実行可能ファイルの拡張子は、exe、cpl、ocx、dll、vxd、sys、scr、drvなどがある。
このような実行ファイル又は実行可能ファイル形式のマルウェアを診断するためには、マルウェア治療システムもこのようなファイル形式を認識し、マルウェアと判断できる特定形式のシグネチャ(signature)を有していなければならない。このような診断法が大部分のマルウェア治療システムが用いるシグネチャ基盤又はストリング(string)検査方式のような診断法である。このようなシグネチャ基盤の診断法は、マルウェアに分類されるファイルの特定部分又は固有な部分を検査の対象とするため、誤検出(false positive)と見逃し(false negative)を最小化する正確な診断が可能であるという点とファイルの検査時にファイルの特徴的な部分のみ比較することによって、迅速なスキャンが可能であるという長所を有する。しかし、このようなシグネチャ基盤診断法は、マルウェアのファイル自体が数百バイトだけ変わっても診断されない見逃しが発生するため、ファイルが少しだけ変更された新しい変形に対しては対応できなくなる。そして、既知のマルウェアに対してのみ対応できるので、新しい形態の未知のマルウェアに対しては対応できないという短所を有している。
一方、近年、話題となっているアドバンスドパーシスタントスレット(APT:Advanced Persistent Threat)攻撃は、攻撃者が特定のターゲットを定め、目標とした情報を盗み取るために、高度の攻撃技法を適用して持続的に多様な形態のマルウェアを活用する。特に、APT攻撃は、初期の侵入段階で検知できない場合が多く、主にマルウェアを含む非実行ファイルを利用する場合が多い。 例えば、ウィンドウシステム(例えば、Win32オペレーティングシステム)の非携帯実行可能(Non−PE:Non−Portable Executable)ファイルを利用する。これは、非携帯実行可能ファイルを実行するプログラム(例えば、文書の作成又はイメージプログラム)が基本的にある程度のセキュリティ脆弱性を有しているだけでなく、マルウェアを非携帯実行可能ファイルに含めれば、ファイルの変更によって簡単に変種のマルウェアを生成できるためである。
このような特性のため、APT攻撃は、悪意のある非実行ファイルエクスプロイト(exploit)を用いてゼロデイ(Zero Day)攻撃を行う事例が多い。例えば、受信者が電子メールに添付された悪意のある非実行ファイルを何気なく開く場合、受信者のコンピュータは、悪意のあるファイルにより感染し、他のコンピュータを攻撃する可能性もあり、システムに侵入して核心資料を外部に流出する可能性もある。それだけでなく、非実行ファイルが多様な形式(フォーマット)を有しているため、悪意のある非実行ファイルを用いたゼロデイ・エクスプロイト(Zero−Day Exploit)は、分析家が非実行ファイルの悪意の有無を判断し、悪意のあるビヘイビアを分析するのにかなりの時間と努力が必要であり、分析期間中に変形、又は新たに生成される数多くの悪意のある非実行ファイルに対応することは従来技術では殆ど不可能であると言える。
例えば、従来のシグネチャ基盤の検査方法は、多様な形態の攻撃方法を検知するために、大量のシグネチャデータベースを保有していなければならないため、現実的には、悪意のある非実行ファイルを用いたゼロデイ・エクスプロイトを防御できないという問題がある。
また、従来のビヘイビアベース検査方法も多様な攻撃者に対するビヘイビアを検知しなければならないため、設計方法などの情報が必要であり、このため、多くの誤検出と見逃しが発生するという問題がある。
従って、このような問題を解決するために、非実行ファイルがマルウェアを含んでいるか否かを迅速、且つ、正確に検査できるマルウェア治療システムが開発される必要がある。
韓国公開特許第2010−5518号
本発明は、このような従来技術の問題を解決するためのものであり、その目的は、非実行ファイルのプログラムが実行されることによって、ロードされる正常モジュールのアドレス範囲情報を獲得し、デバッグイベントの発生時に既に獲得したアドレス範囲情報を用いて非実行ファイルの悪意の有無を判断できるデバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法を提供することにある。
本発明の目的は、以上で言及した目的に制限されず、言及していない他の目的は、以下の記載から本発明の属する通常の知識を有する者に明確に理解され得るはずである。
前記目的を達成するために、本発明の一態様によれば、非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する悪意判断部を含むデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
ここで、前記警報設定部は、前記マザープロセスにより前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトするデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
前記情報格納部は、前記正常モジュールがロードされる前記メモリの開始アドレスと終了アドレスを格納するデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
前記悪意判断部は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
前記悪意判断部は、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理(SEH:Structured Exception Handling)の感染如何によって前記非実行ファイルに対する悪意の有無を判断するデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
前記悪意判断部は、前記構造化例外処理のチェーン値を求めた後に、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値が同一であれば、前記構造化例外処理が感染したと判定し、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
前記悪意判断部は、中央処理ユニットレジスタの追加のデータセグメントを用いてデバッガの前記チェーン値を求めるデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
前記追加のデータセグメントは、FS(data register F)セグメントであるデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
前記悪意判断部は、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値が同一でなければ、前記チェーン値の現在のアドレスが正常にロードされたモジュール内に存在しない場合に、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
前記悪意判断部は、前記チェーン値の現在のアドレスが正常にロードされたモジュール内に存在する場合には、前記構造化例外処理チェーンに対するカウント値が既に設定された値以上である場合に、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
前記非実行ファイルが悪意があると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスと関連する命令語を含むモジュールと脆弱性情報との比較を通じて脆弱性の発生原因を分析する原因分析部を更に含むデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
また、前記非実行ファイルが悪意があると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスに対応する領域内のコードを抽出するマルウェア抽出部を更に含むデバッグイベントを用いた悪意のあるシェルコードの検知装置を提供できる。
本発明の他の態様によれば、非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階と、前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階と、前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する段階とを含むデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
ここで、前記設定する段階は、前記マザープロセスにより前記デバッグイベントが発生するかを確認する段階と、前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトする段階とを含むデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
前記獲得する段階は、前記正常モジュールがロードされる前記メモリの開始アドレスと終了アドレスを格納するデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
前記判断する段階は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
前記判断する段階は、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理の感染如何によって前記非実行ファイルに対する悪意の有無を判断するデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
前記判断する段階は、前記構造化例外処理のチェーン値を求める段階と、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値が同一であれば、前記構造化例外処理が感染したと判定し、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
前記チェーン値を求める段階は、中央処理ユニットレジスタの追加のデータセグメントを用いてデバッガの前記チェーン値を求めるデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
前記追加のデータセグメントは、FSセグメントであるデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
前記判断する段階は、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値が同一でなければ、前記チェーン値の現在のアドレスが正常にロードされたモジュール内に存在しない場合に、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
前記判断する段階は、前記チェーン値の現在のアドレスが正常にロードされたモジュール内に存在する場合には、前記構造化例外処理チェーンに対するカウント値が既に設定された値以上である場合に、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
前記非実行ファイルが悪意があると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスと関連する命令語を含むモジュールと脆弱性情報との比較を通じて脆弱性の発生原因を分析する段階を更に含むデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
また、前記非実行ファイルが悪意があると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスに対応する領域内のコードを抽出する段階を更に含むデバッグイベントを用いた悪意のあるシェルコードの検知方法を提供できる。
本発明の更に他の態様によれば、前述した悪意のあるシェルコードの検知方法によるそれぞれの段階を行う命令語を含むプログラムが記録されたコンピュータ読み取り可能な記録媒体を提供できる。
本発明によれば、プログラムが駆動されることによって、正常にロードされる正常モジュールの開始アドレスと終了アドレスからなるアドレス範囲情報を獲得した後、マザープロセスによりデバッグイベントが発生すれば、既に獲得したアドレス範囲情報を用いて非実行ファイルに対する悪意の有無を判断することで、マルウェアが実行される前に悪意のある非実行ファイルを検知できるという効果を奏する。
また、本発明によれば、マザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生すれば、非実行ファイルに対する悪意の有無を判断することで、悪意のある候補アドレスを利用する検査方法などに比べると、もっと短時間で悪意のある非実行ファイルを検知できるだけでなく、悪意のある候補アドレスに含まれていない場合にも、悪意のある非実行ファイルと判断できるため、検知の正確度が更に高い。即ち、従来のあらゆる疑わしいアドレス(suspicious address)を対象にして悪意のある非実行ファイルを検知する場合に比べても、同一の検知性能を提供する。
従って、悪意のある非実行ファイルの脆弱性を用いたAPT攻撃シナリオなどに対して効果的に防御できるという効果を奏する。
本発明の実施形態によるデバッグイベントを用いた悪意のあるシェルコード検知装置のブロック構成図である。 本発明の実施形態によるデバッグイベントを用いた悪意のあるシェルコードの検知方法を説明するためのフローチャートである。 本発明の実施形態による非実行メモリの警報設定過程を説明するためのフローチャートである。 本発明の実施形態による悪意のあるファイルの判断過程を説明するためのフローチャートである。 本発明の実施形態による構造化例外処理の感染如何の判断過程を説明するためのフローチャートである。
本発明の利点及び特徴、そしてそれらを達成する方法は、添付される図面と共に詳細に後述されている実施形態を参照すれば明確になる。しかし、本発明は、以下で開示される実施形態に限定されるものではなく、互いに異なる多様な形態で実現されることができ、但し、本実施形態は、本発明の開示が完全なようにし、本発明の属する技術分野において通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求範囲の範疇により定義されるだけである。
本発明の実施形態を説明するには公知の機能又は、構成についての具体的な説明が本発明の要旨を不要に曖昧にするおそれがあると判断される場合には、その詳細説明については省略する。そして、後述する用語は、本発明の実施形態での機能を考慮して定義された用語であって、これはユーザ、運用者の意図又は慣例などによって変わり得る。従って、その定義は、本明細書全般にわたる内容に基づいて下されるべきである。
本明細書で用いられる「非実行ファイル」とは、実行ファイル又は実行可能なファイルと反対概念であって、自ら実行されないファイルを意味する。例えば、非実行ファイルは、アレアハングルファイル、ワードファイルなどのような文書ファイル、JPGファイルなどのようなイメージファイル、動画ファイル、Java(登録商標)Script(登録商標)ファイル、HTMLファイルなどに該当するが、これに限定されない。
マルウェアを含む悪意のある非実行ファイルは、電子メールに添付される方式又はネットワークを介して悪意のある非実行ファイル自体が転送される方式などを通じてAPT攻撃などで使用され得る。この場合、マルウェアは、シェルコード(shell code)であることより、このような悪意のあるシェルコードは、非実行ファイルの形式(フォーマット)に対応するプログラムの実行時に実行され得る。非実行ファイルの形式は、例えば、hwpファイル、docファイル、pdfファイル、JPGファイル、jsファイル、HTMLファイルなどになり得る。
悪意のある非実行ファイルは、悪意のあるシェルコードを含むことができ、悪意のあるシェルコードを含んでいる悪意のある非実行ファイルは、如何なる方式を通じてでも、結局のところ、命令語を実行する際に悪意のあるシェルコード領域に移動する。このような悪意のあるシェルコード領域への移動は、実行アドレスを確認すれば、予め予測できる。例えば、CPUのような中央処理ユニットのレジスタの1つであるEIP(Extended Instruction Pointer)レジスタに格納されている値を通じて次に実行すべき命令語の実行アドレスを確認できる。従って、正常な正常アドレス範囲から逸脱し、悪意のあるシェルコード領域に移動する命令語を有するか否かは、非実行ファイルの悪意の有無を判断する上で重要な基準になり得る。
図1は、本発明の実施形態によるデバッグイベントを用いた悪意のあるシェルコード検知装置のブロック構成図である。
図1に示すように、本発明の実施形態による悪意のあるシェルコード検知装置は、非実行ファイルをマザープログラムにロードして実行させ、マザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生すれば、非実行ファイル内にマルウェアが含まれているか否かを分析した後、これを分析及び報告できる。このために、悪意のあるシェルコード検知装置は、インターフェース部110、プロセス実行部120、警報設定部130、情報格納部140、悪意判断部150、原因分析部160、マルウェア抽出部170などを含むことができる。
インターフェース部110は、検査しようとする非実行ファイルが格納されたディレクトリ又は非実行ファイルを選択するためのインターフェースを提供できる。
プロセス実行部120は、インターフェース部110を通じて選択された非実行ファイルの形式を判断し、判断された形式によってマザープログラムを用いて非実行ファイルを実行する。このようなプロセス実行部120は、中央処理ユニット(CPU:Central Processing Unit)のレジスタに格納された情報を用いて命令語に対する実行アドレスを提供できる。その例として、中央処理装置のEIPレジスタには、次に実行すべき命令語のメモリアドレスが格納され得る。
警報設定部130は、マザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する。例えば、警報設定部130は、マザープロセスによりカーネルモジュール(例えば、Kernel32.DLLモジュール)ロードデバッグイベントなどのようなデバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセス、つまり実行属性のないコードを実行しようとしているマザープロセスにインジェクトできる。
情報格納部140は、マザープログラムが駆動されることによって、マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得して格納する。例えば、正常モジュールがロードされるメモリの開始アドレスと終了アドレスからなるアドレス範囲情報を格納できる。
悪意判断部150は、マザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生すれば、情報格納部140に既に獲得したアドレス範囲情報を用いて非実行ファイルに対する悪意の有無を判断する。例えば、悪意判断部150は、マザープログラムのモジュール内の各命令語が実行されるとき、各命令語の実行アドレスが既に獲得したアドレス範囲情報から逸脱するか否かに基づいて非実行ファイルに対する悪意の有無を判断できる。
例えば、悪意判断部150は、マザープロセスによる命令語の実行アドレスが情報格納部140に既に獲得したアドレス範囲情報から逸脱すれば、該当非実行ファイルを悪意があると判定できる。即ち、中央処理ユニットのEIPレジスタに格納された実行アドレスが正常なアドレス範囲情報から逸脱する場合に、非実行ファイルを悪意があると分類する。
また、悪意判断部150は、命令語の実行アドレスが既に獲得した正常なアドレス範囲情報に属すれば、構造化例外処理の感染如何によって非実行ファイルに対する悪意の有無を判断できる。ここで、構造化例外処理のチェーン値を求めた後に、チェーン値の現在のアドレスと次の構造化例外処理のチェーン値が同一であれば、構造化例外処理が感染したと判定し、非実行ファイルを悪意があると判定できる。このために、中央処理ユニットレジスタの追加のデータセグメント(例えば、FS(data register F)セグメント)を用いてデバッガのチェーン値を求めることができる。
そして、悪意判断部150は、チェーン値の現在のアドレスと次の構造化例外処理のチェーン値が同一でなければ、チェーン値の現在のアドレスが正常にロードされたモジュール内に存在しない場合に、非実行ファイルを悪意があると判定できる。チェーン値の現在のアドレスが正常にロードされたモジュール内に存在する場合には、構造化例外処理チェーンに対するカウント値が既に設定された値以上である場合に、非実行ファイルを悪意があると判定できる。
原因分析部160は、悪意判断部150により非実行ファイルが悪意があると判定されれば、正常なアドレス範囲情報から逸脱する実行アドレスと関連する命令語を含むモジュールと脆弱性情報との比較を通じて脆弱性の発生原因を分析でき、分析された脆弱性の発生原因を通信網(図示せず)に連結されたマルウェアの検査及び分析サーバ(図示せず)に転送するか、特定のユーザ又は分析家に提供できる。ここで、脆弱性情報としては、CVE(Common Vulnerabilities and Exposures)、Microsoft Security Bulletin(例えば、MS11−002)、NVD(National Vulnerability Database)、US−CERT Bulletinなどで提供した情報であり得るが、これらに限定されない。
マルウェア抽出部170は、悪意判断部150により非実行ファイルが悪意があると判定されれば、正常なアドレス範囲情報から逸脱する実行アドレスに対応する領域内のコードを実行ファイル又は実行可能なファイル形態で抽出できる。ここで、実行ファイル又は実行可能なファイル形態は、exe、cpl、dll、ocx、vxd、sys、scr、drvなどになり得るが、これに限定しない。また、マルウェア抽出部170は、実行ファイル又は実行可能なファイル形態で抽出されたコードを通信網(図示せず)に連結されたマルウェアの検査及び分析サーバ(図示せず)に転送し、分析を依頼できる。
本発明の実施形態では、原因分析部160が悪意のあるシェルコード検知装置100の内部に設けられるものとして例を挙げて説明したが、通信網を介して連結された別途の分析サーバ(図示せず)に設けられてもよい。
図2は、本発明の実施形態によるデバッグイベントを用いた悪意のあるシェルコードの検知方法を説明するためのフローチャートである。
これに示すように、本発明の実施形態による悪意のあるシェルコードの検知方法は、非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階(S201〜S207)と、マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階(S209)と、デバッグイベントが発生すれば、既に獲得したアドレス範囲情報を用いて非実行ファイルに対する悪意の有無を判断する段階(S211〜S215)と、非実行ファイルが悪意のあると判定されれば、アドレス範囲情報から逸脱する実行アドレスと関連する命令語を含むモジュールと脆弱性情報との比較を通じて脆弱性の発生原因を分析する段階(S217)と、非実行ファイルが悪意のあると判定されれば、アドレス範囲情報から逸脱する実行アドレスに対応する領域内のコードを抽出する段階(S219)と、脆弱性の発生原因及びマルウェア抽出の結果をレポートしながら、該当非実行ファイルの実行を中止する段階(S221及びS223)とを含む。
図3は、本発明の実施形態による非実行メモリの警報設定過程を説明するためのフローチャートであり、図4は、本発明の実施形態による悪意のあるファイルの判断過程を説明するためのフローチャートであり、図5は、本発明の実施形態による構造化例外処理の感染如何の判断過程を説明するためのフローチャートである。これらは、以下で説明される悪意のあるシェルコード検知装置による悪意のあるシェルコードの検知方法に対する細部説明から十分に理解できる。
以下、図1〜図5を参照して本発明の実施形態による悪意のあるシェルコード検知装置による悪意のあるシェルコードの検知方法について説明する。
まず、ユーザがインターフェース部110を用いて非実行ファイルが格納されたディレクトリを選択すれば、プロセス実行部120は、選択されたディレクトリ内の非実行ファイルの形式を把握する。即ち、検査の対象である非実行ファイルが格納されたディレクトリがインターフェース部110を通じて選択(S201)されれば、プログラム実行部120は、該当ディレクトリに格納された非実行ファイルのファイル形式情報に基づいてファイルの形式を判断する。例えば、ドライブ1の下位に存在する多数のルートフォルダの中から特定のルートフォルダがインターフェース部110を通じて選択されれば、特定のルートフォルダに格納された非実行ファイルのファイル形式情報を確認し、該当非実行ファイルのファイル形式を把握する(S203)。
その次に、プロセス実行部120は、非実行ファイルの形式に合うマザープロセスを実行する(S205)。ここで、プロセス実行部120は、実行が必要な特定のプログラムを直接実行させ、マザープロセスを実行してもよく、別途のシステム(図示せず)に特定のプログラムの実行を要請してもよい。このようなプロセス実行部120は、マザープロセス内のモジュールによる命令語の実行アドレスを提供できる。ここで、実行アドレスは、モジュール内の命令語が実行されるとき、メモリ上のアドレスを意味し、EIPレジスタに格納されている。
このように、マザープロセスが実行される環境で警報設定部130は、マザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する(S207)。
このような警報設定部130による非実行メモリの警報設定過程は、図3の例示を通じて詳察すると、プロセス実行部120により非実行ファイルマザープロセスが実行されるとき(S301)、警報設定部130は、マザープロセスによりカーネルモジュール(例えば、Kernel32.DLLモジュール)ロードデバッグイベントが発生(S303)すれば、データ実行警報スレッドを検出対象プロセスにインジェクトする(S305)。ここで、インジェクション時点は、実施例を示したものに過ぎない。例えば、マザープロセスによりntdll.dllがロードされた後、インジェクトできるなどのように複数の時点でインジェクトできる。このような状況で悪意判断部150は、メモリの実行時にデバッグイベントが発生(S307)すれば、非実行ファイルが悪意のあるシェルコードを含む悪意のあるファイルであるかを判断できる(S309)。このような悪意の判断過程は、図2を更に参照して説明する。
段階S207のように、非実行メモリの実行に対する警報が設定された状態で情報格納部140はマザープロセスの実行によってメモリにロードされる正常モジュールの開始アドレスと終了アドレスからなる正常アドレス範囲情報をプロセス実行部120から獲得して格納する(S209)。
その後、悪意判断部150は、非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生(S211)すれば、情報格納部140に既に格納されたアドレス範囲情報を用いた悪意のあるシェルコードを検知し(S213)、非実行ファイルに対する悪意の有無を判断する(S215)。
図4を参照して悪意判断部150による悪意のあるファイルの判断過程を詳細に詳察すると、悪意判断部150は、マザープロセスによる命令語の実行アドレスが情報格納部140に格納されている正常なアドレス範囲情報から逸脱すれば、非実行ファイルを悪意があると判定する(S401、S403、S409)。しかし、命令語の実行アドレスが正常なアドレス範囲情報に属すれば、構造化例外処理の感染如何によって非実行ファイルに対する悪意の有無を判断する(S405、S407、S409)。
図5を参照して悪意判断部150による構造化例外処理に対する感染如何の検査過程を詳細に詳察すると、まず悪意判断部150は、構造化例外処理のチェーン値を求める。例えば、中央処理ユニットレジスタの追加のデータセグメント(例えば、FS(data register F)セグメント)を用いてデバッガのチェーン値を求める(S501)。
その後、構造化例外処理チェーンをカウントし(S503)、チェーン値の現在のアドレスと次の構造化例外処理のチェーン値が同一であれば、構造化例外処理が感染したと判定し、非実行ファイルを悪意があると判定する(S505、S515)。
しかし、悪意判断部150は、チェーン値の現在のアドレスと次の構造化例外処理のチェーン値が同一でなければ、チェーン値の現在のアドレスが正常にロードされたモジュール内に存在しない場合に、非実行ファイルを悪意があると判定する(S507、S515)。
また、悪意判断部150は、チェーン値の現在のアドレスが正常にロードされたモジュール内に存在する場合には、段階S503による構造化例外処理チェーンに対するカウント値が既に設定された値以上である場合に、非実行ファイルを悪意があると判定する(S509、S515)。ここで、段階S509で非実行ファイルに対する悪意の有無を判定するための構造化例外処理チェーンに対するカウントの最大値は、悪意有無判定の所要時間などを考慮して任意に設定できる。
次に、段階S509で構造化例外処理のカウント値が既に設定された最大値以上にならない場合には、構造化例外処理アドレスが正常な終了値であるかを判定し(S511)、構造化例外処理アドレスが正常な終了値(例えば、OFFFFFFFFF)である場合には、非実行ファイルを正常と判定する(S511)。ここで、構造化例外処理アドレスが正常な終了値でない場合には、再び段階S503から再実行する。
また図2を参照すれば、悪意判断部150が非実行ファイルを悪意のあるファイルと判断すれば、原因分析部160は、情報格納部140に既に格納された正常なアドレス範囲情報から逸脱する実行アドレスと関連する命令語を含むモジュールと脆弱性情報との比較を通じて脆弱性の発生原因を分析する。例えば、非実行ファイルエクスプロイトの発生原因を分析し、分析ログを、例えば情報格納部140に記録する(S217)。ここで、脆弱性情報としては、CVE、Microsoft Security Bulletin(例えば、MS11−002)、NVD、US−CERT Bulletinなどで提供した情報であり得るが、これらに限定されない。
そして、マルウェア抽出部170は、悪意判断部150が非実行ファイルを悪意のあるファイルと判断すれば、情報格納部140に既に格納された正常なアドレス範囲情報から逸脱する実行アドレスに対応する領域内のコードを抽出する。例えば、非実行ファイルのマザープログラムが仮想メモリにデコードしておいたマルウェアを実行ファイル形態又は実行可能なファイル形態で抽出する。例えば、マルウェア抽出部170は、デコードされたマルウェアを拡張子がexe、cpl、ocx、dll、vxd、sys、scr又はdrvのうちの何れか1つのファイル形態で抽出できる。しかし、抽出できるファイル形態の拡張子は、これらに限定されない。このように抽出されたマルウェア実行ファイルは、マルウェアの動作方式を分析する際に利用できる(S219)。
最後に、原因分析部160は、脆弱性発生原因の分析ログを通信網(図示せず)に連結されたマルウェアの検査及び分析サーバ(図示せず)に転送するか、特定のユーザ又は分析家に提供でき、マルウェア抽出部170は、実行ファイル又は実行可能なファイル形態で抽出されたコードを通信網(図示せず)に連結されたマルウェアの検査及び分析サーバ(図示せず)に転送し、分析を依頼できる。そして、悪意判断部150は、悪意があると判定された非実行ファイルに対する実行を中止する(S223)。このような非実行ファイルに対する実行中止の手順は、段階S215で悪意があると判定された後であれば、いつでも行える。
本発明に添付されたブロック図の各ブロックとフローチャートの各段階の組み合わせは、コンピュータ・プログラム・インストラクションにより実行されることもできる。これらのコンピュータ・プログラム・インストラクションは、汎用コンピュータ、特殊用コンピュータ又はその他プログラム可能なデータプロセシング装置のプロセッサに搭載され得るので、コンピュータ又はその他プログラム可能なデータプロセシング装置のプロセッサを通じて行われるそのインストラクションがブロック図の各ブロック又はフローチャートの各段階で説明された機能を行う手段を生成するようになる。これらのコンピュータ・プログラム・インストラクションは、特定の方式で機能を実現するために、コンピュータ又はその他プログラム可能なデータプロセシング装置を指向できるコンピュータ利用可能又はコンピュータ読み取り可能なメモリに格納されることも可能であるので、そのコンピュータ利用可能又はコンピュータ読み取り可能なメモリに格納されたインストラクションは、ブロック図の各ブロック又はフローチャートの各段階で説明された機能を行うインストラクション手段を内包する製造品目を生産することも可能である。コンピュータ・プログラム・インストラクションは、コンピュータ又はその他プログラム可能なデータプロセシング装置上に搭載されることも可能であるので、コンピュータ又はその他プログラム可能なデータプロセシング装置上で一連の動作段階が行われ、コンピュータで実行されるプロセスを生成してコンピュータ又はその他プログラム可能なデータプロセシング装置を行うインストラクションは、ブロック図の各ブロック及びフローチャートの各段階で説明された機能を実行するための段階を提供することも可能である。
また、各ブロック又は各段階は、特定の(各)論理的機能を実行するための1つ以上の実行可能なインストラクションを含むモジュール、セグメント又はコードの一部を示すことができる。また、幾つかの代替実施形態では、各ブロック又は各段階で言及された機能が順序外れで発生することも可能であることに注目すべきである。例えば、相次いで示されている2つのブロック又は段階は実際に、実質的に同時に行われることも可能であり、又はその各ブロック又は各段階が時折該当する機能によって逆順に行われることも可能である。
以上の説明は、本発明の技術思想を例示的に説明したものに過ぎず、本発明の属する技術分野において通常の知識を有する者であれば、本発明の本質的な特性から逸脱しない範囲で多様な修正及び変形が可能である。従って、本発明に開示された実施形態は、本発明の技術思想を限定するためのものではなく、説明するためのものであって、このような実施形態によって本発明の技術思想の範囲が限定されるわけではない。本発明の保護範囲は、以下の請求範囲によって解釈されるべきであり、それと同等な範囲内にある全ての技術思想は、本発明の権利範囲に含まれるものと解釈されるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、
前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、
前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する悪意判断部
を含み、
前記警報設定部は、前記マザープロセスにより前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトするデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[2]前記情報格納部は、前記正常モジュールがロードされる前記メモリの開始アドレスと終了アドレスを格納することを特徴とする上記[1]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[3]前記悪意判断部は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定することを特徴とする上記[1]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[4]前記悪意判断部は、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理(SEH)の感染如何によって前記非実行ファイルに対する悪意の有無を判断することを特徴とする上記[3]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[5]非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、
前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、
前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する悪意判断部
を含み、
前記悪意判断部は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定し、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理(SEH)の感染如何によって前記非実行ファイルに対する悪意の有無を判断し、前記構造化例外処理のチェーン値を求めた後に、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値のアドレスが同一であれば、前記構造化例外処理が感染したと判定し、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[6]前記悪意判断部は、中央処理ユニットレジスタの追加のデータセグメントを用いてデバッガの前記チェーン値を求めることを特徴とする上記[5]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[7]前記追加のデータセグメントは、FS(data register F)セグメントであることを特徴とする上記[6]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[8]前記悪意判断部は、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値のアドレスが同一でなければ、前記チェーン値の現在のアドレスがモジュールがロードされるメモリのアドレスの範囲内に存在しない場合に、前記非実行ファイルを悪意があると判定することを特徴とする上記[5]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[9]前記悪意判断部は、前記チェーン値の現在のアドレスがモジュールがロードされるメモリのアドレスの範囲内に存在する場合には、前記構造化例外処理チェーンに対するカウント値が既に設定された値以上である場合に、前記非実行ファイルを悪意があると判定することを特徴とする上記[8]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[10]非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、
前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、
前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する悪意判断部と、
前記非実行ファイルが悪意のあると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスと関連する命令語を含むモジュールと脆弱性情報との比較を通じて脆弱性の発生原因を分析する原因分析部
を含み、
前記警報設定部は、前記マザープロセスにより前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトするデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[11]非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、
前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、
前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する悪意判断部と、
前記非実行ファイルが悪意のあると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスに対応する領域内のコードを抽出するマルウェア抽出部
を含み、
前記警報設定部は、前記マザープロセスにより前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトするデバッグイベントを用いた悪意のあるシェルコードの検知装置。
[12]非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階と、
前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階と、
前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する段階
を含み、
前記設定する段階は、前記マザープロセスにより前記デバッグイベントが発生するかを確認する段階と、
前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトする段階
を含むデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[13]前記獲得する段階は、前記正常モジュールがロードされる前記メモリの開始アドレスと終了アドレスを格納することを特徴とする上記[12]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[14]前記判断する段階は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定することを特徴とする上記[12]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[15]前記判断する段階は、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理(SEH)の感染如何によって前記非実行ファイルに対する悪意の有無を判断することを特徴とする上記[14]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[16]非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階と、
前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階と、
前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する段階
を含み、
前記判断する段階は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定し、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理(SEH)の感染如何によって前記非実行ファイルに対する悪意の有無を判断し、前記構造化例外処理のチェーン値を求めた後に、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値のアドレスが同一であれば、前記構造化例外処理が感染したと判定し、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[17]前記チェーン値を求める段階は、中央処理ユニットレジスタの追加のデータセグメントを用いてデバッガの前記チェーン値を求めることを特徴とする上記[16]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[18]前記追加のデータセグメントは、FS(data register F)セグメントであることを特徴とする上記[17]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[19]前記判断する段階は、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値のアドレスが同一でなければ、前記チェーン値の現在のアドレスがモジュールがロードされるメモリのアドレスの範囲内に存在しない場合に、前記非実行ファイルを悪意があると判定することを特徴とする上記[16]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[20]前記判断する段階は、前記チェーン値の現在のアドレスがモジュールがロードされるメモリのアドレスの範囲内に存在する場合には、前記構造化例外処理チェーンに対するカウント値が既に設定された値以上である場合に、前記非実行ファイルを悪意があると判定することを特徴とする上記[19]に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[21]非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階と、
前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階と、
前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する段階と、
前記非実行ファイルが悪意があると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスと関連する命令語を含むモジュールと脆弱性情報との比較を通じて脆弱性の発生原因を分析する段階
を含み、
前記設定する段階は、前記マザープロセスにより前記デバッグイベントが発生するかを確認する段階と、
前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトする段階
を含むデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[22]非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階と、
前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階と、
前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する段階と、
前記非実行ファイルが悪意があると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスに対応する領域内のコードを抽出する段階
を含み、
前記設定する段階は、前記マザープロセスにより前記デバッグイベントが発生するかを確認する段階と、
前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトする段階
を含むデバッグイベントを用いた悪意のあるシェルコードの検知方法。
[23]上記[12]〜[22]の何れか一項に記載の方法によるそれぞれの段階を行う命令語を含むプログラムが記録されたコンピュータ読み取り可能な記録媒体。
100 悪意のあるシェルコード検知装置
110 インターフェース部
120 プロセス実行部
130 警報設定部
140 情報格納部
150 悪意判断部
160 原因分析部
170 マルウェア抽出部

Claims (23)

  1. 非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、
    前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、
    前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する悪意判断部
    を含み、
    前記警報設定部は、前記マザープロセスにより前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトするデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  2. 前記情報格納部は、前記正常モジュールがロードされる前記メモリの開始アドレスと終了アドレスを格納することを特徴とする請求項1に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  3. 前記悪意判断部は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定することを特徴とする請求項1に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  4. 前記悪意判断部は、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理(SEH)の感染如何によって前記非実行ファイルに対する悪意の有無を判断することを特徴とする請求項3に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  5. 非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、
    前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、
    前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する悪意判断部
    を含み、
    前記悪意判断部は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定し、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理(SEH)の感染如何によって前記非実行ファイルに対する悪意の有無を判断し、前記構造化例外処理のチェーン値を求めた後に、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値のアドレスが同一であれば、前記構造化例外処理が感染したと判定し、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  6. 前記悪意判断部は、中央処理ユニットレジスタの追加のデータセグメントを用いてデバッガの前記チェーン値を求めることを特徴とする請求項5に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  7. 前記追加のデータセグメントは、FS(data segment)であることを特徴とする請求項6に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  8. 前記悪意判断部は、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値のアドレスが同一でなければ、前記チェーン値の現在のアドレスがモジュールがロードされるメモリのアドレスの範囲内に存在しない場合に、前記非実行ファイルを悪意があると判定することを特徴とする請求項5に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  9. 前記悪意判断部は、前記チェーン値の現在のアドレスがモジュールがロードされるメモリのアドレスの範囲内に存在する場合には、前記構造化例外処理チェーンに対するカウント値が既に設定された値以上である場合に、前記非実行ファイルを悪意があると判定することを特徴とする請求項8に記載のデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  10. 非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、
    前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、
    前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する悪意判断部と、
    前記非実行ファイルが悪意のあると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスと関連する命令語を含むモジュールと脆弱性情報との比較を通じて脆弱性の発生原因を分析する原因分析部
    を含み、
    前記警報設定部は、前記マザープロセスにより前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトするデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  11. 非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する警報設定部と、
    前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を格納する情報格納部と、
    前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する悪意判断部と、
    前記非実行ファイルが悪意のあると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスに対応する領域内のコードを抽出するマルウェア抽出部
    を含み、
    前記警報設定部は、前記マザープロセスにより前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトするデバッグイベントを用いた悪意のあるシェルコードの検知装置。
  12. 非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階と、
    前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階と、
    前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する段階
    を含み、
    前記設定する段階は、前記マザープロセスにより前記デバッグイベントが発生するかを確認する段階と、
    前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトする段階
    を含むデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  13. 前記獲得する段階は、前記正常モジュールがロードされる前記メモリの開始アドレスと終了アドレスを格納することを特徴とする請求項12に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  14. 前記判断する段階は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定することを特徴とする請求項12に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  15. 前記判断する段階は、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理(SEH)の感染如何によって前記非実行ファイルに対する悪意の有無を判断することを特徴とする請求項14に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  16. 非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階と、
    前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階と、
    前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する段階
    を含み、
    前記判断する段階は、前記マザープロセスによる命令語の実行アドレスが前記アドレス範囲情報から逸脱すれば、前記非実行ファイルを悪意があると判定し、前記命令語の実行アドレスが前記アドレス範囲情報に属すれば、構造化例外処理(SEH)の感染如何によって前記非実行ファイルに対する悪意の有無を判断し、前記構造化例外処理のチェーン値を求めた後に、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値のアドレスが同一であれば、前記構造化例外処理が感染したと判定し、前記非実行ファイルを悪意があると判定するデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  17. 前記チェーン値を求める段階は、中央処理ユニットレジスタの追加のデータセグメントを用いてデバッガの前記チェーン値を求めることを特徴とする請求項16に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  18. 前記追加のデータセグメントは、FS(data segment)であることを特徴とする請求項17に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  19. 前記判断する段階は、前記チェーン値の現在のアドレスと次の構造化例外処理のチェーン値のアドレスが同一でなければ、前記チェーン値の現在のアドレスがモジュールがロードされるメモリのアドレスの範囲内に存在しない場合に、前記非実行ファイルを悪意があると判定することを特徴とする請求項16に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  20. 前記判断する段階は、前記チェーン値の現在のアドレスがモジュールがロードされるメモリのアドレスの範囲内に存在する場合には、前記構造化例外処理チェーンに対するカウント値が既に設定された値以上である場合に、前記非実行ファイルを悪意があると判定することを特徴とする請求項19に記載のデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  21. 非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階と、
    前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階と、
    前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する段階と、
    前記非実行ファイルが悪意があると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスと関連する命令語を含むモジュールと脆弱性情報との比較を通じて脆弱性の発生原因を分析する段階
    を含み、
    前記設定する段階は、前記マザープロセスにより前記デバッグイベントが発生するかを確認する段階と、
    前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトする段階
    を含むデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  22. 非実行ファイルを実行するマザープログラムにより生成されたマザープロセスが実行属性のないコードを実行しようとするとき、デバッグイベントが発生するように設定する段階と、
    前記マザープロセスが用いる正常モジュールがロードされるメモリのアドレス範囲情報を獲得する段階と、
    前記デバッグイベントが発生すれば、既に獲得した前記アドレス範囲情報を用いて前記非実行ファイルに対する悪意の有無を判断する段階と、
    前記非実行ファイルが悪意があると判定されれば、前記アドレス範囲情報から逸脱する実行アドレスに対応する領域内のコードを抽出する段階
    を含み、
    前記設定する段階は、前記マザープロセスにより前記デバッグイベントが発生するかを確認する段階と、
    前記デバッグイベントが発生すれば、データ実行警報スレッドを検出対象プロセスにインジェクトする段階
    を含むデバッグイベントを用いた悪意のあるシェルコードの検知方法。
  23. 請求項12〜22の何れか一項に記載の方法によるそれぞれの段階を行う命令語を含むプログラムが記録されたコンピュータ読み取り可能な記録媒体。
JP2013113021A 2012-09-11 2013-05-29 デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法 Active JP5326063B1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20120100255A KR101244731B1 (ko) 2012-09-11 2012-09-11 디버그 이벤트를 이용한 악성 쉘 코드 탐지 장치 및 방법
KR10-2012-0100255 2012-09-11

Publications (2)

Publication Number Publication Date
JP5326063B1 true JP5326063B1 (ja) 2013-10-30
JP2014056563A JP2014056563A (ja) 2014-03-27

Family

ID=48182074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013113021A Active JP5326063B1 (ja) 2012-09-11 2013-05-29 デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法

Country Status (4)

Country Link
US (1) US8646076B1 (ja)
JP (1) JP5326063B1 (ja)
KR (1) KR101244731B1 (ja)
WO (1) WO2014042344A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101311367B1 (ko) * 2013-04-09 2013-09-25 주식회사 안랩 메모리 보호기능 우회 공격 진단 장치 및 방법
KR101621170B1 (ko) * 2014-11-03 2016-05-13 (주)스마일게이트엔터테인먼트 온라인 게임에서의 메모리 감시를 이용한 해킹 방지 방법
CN105488405A (zh) * 2014-12-25 2016-04-13 哈尔滨安天科技股份有限公司 一种基于pdb调试信息的恶意代码分析方法及系统
CN104573421B (zh) * 2014-12-30 2017-12-22 北京兆易创新科技股份有限公司 一种基于若干分区的mcu芯片信息保护方法和装置
US20220075871A1 (en) * 2020-09-09 2022-03-10 Microsoft Technology Licensing, Llc Detecting hacker tools by learning network signatures
KR102560431B1 (ko) * 2022-09-21 2023-07-27 시큐레터 주식회사 자식 프로세스의 악성 행위를 검사하기 위한 방법 및 이를 위한 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003515219A (ja) * 1999-11-14 2003-04-22 クリックネット ソフトウエア,インク. アプリケーションプログラムインターフェースを阻害する方法及びシステム
WO2004075060A1 (ja) * 2003-02-21 2004-09-02 Tabei, Hikaru コンピュータウィルス検出装置
WO2005029328A1 (ja) * 2003-09-18 2005-03-31 Denki Hompo Ltd. オペレーティングシステム、及びそれを記録した記録媒体
KR100991807B1 (ko) * 2008-05-20 2010-11-04 주식회사 웰비아닷컴 마이크로소프트 윈도우 운영체제를 사용하는 컴퓨터시스템에서의 악성코드 탐지 및 처리 시스템 및 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2191205A1 (en) * 1994-06-01 1995-12-07 John Schnurer Computer virus trap
JP4145582B2 (ja) * 2002-06-28 2008-09-03 Kddi株式会社 コンピュータウィルス検査装置およびメールゲートウェイシステム
US7437759B1 (en) * 2004-02-17 2008-10-14 Symantec Corporation Kernel mode overflow attack prevention system and method
KR100850361B1 (ko) 2007-03-14 2008-08-04 한국전자통신연구원 실행 가능한 코드 탐지 방법 및 장치
KR100945247B1 (ko) * 2007-10-04 2010-03-03 한국전자통신연구원 가상 환경을 이용한 비실행 파일 내의 악성 코드 분석 방법및 장치
US8037529B1 (en) * 2008-03-19 2011-10-11 Symantec Corporation Buffer overflow vulnerability detection and patch generation system and method
KR100992434B1 (ko) 2008-07-07 2010-11-05 주식회사 안철수연구소 확장자를 위장한 파일을 탐지하는 방법 및 그 장치
US8136158B1 (en) * 2008-07-21 2012-03-13 Google Inc. User-level segmentation mechanism that facilitates safely executing untrusted native code
KR101056283B1 (ko) 2009-10-29 2011-08-11 주식회사 반딧불소프트웨어 악성코드 검출 장치 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003515219A (ja) * 1999-11-14 2003-04-22 クリックネット ソフトウエア,インク. アプリケーションプログラムインターフェースを阻害する方法及びシステム
WO2004075060A1 (ja) * 2003-02-21 2004-09-02 Tabei, Hikaru コンピュータウィルス検出装置
WO2005029328A1 (ja) * 2003-09-18 2005-03-31 Denki Hompo Ltd. オペレーティングシステム、及びそれを記録した記録媒体
KR100991807B1 (ko) * 2008-05-20 2010-11-04 주식회사 웰비아닷컴 마이크로소프트 윈도우 운영체제를 사용하는 컴퓨터시스템에서의 악성코드 탐지 및 처리 시스템 및 방법

Also Published As

Publication number Publication date
US8646076B1 (en) 2014-02-04
WO2014042344A1 (ko) 2014-03-20
JP2014056563A (ja) 2014-03-27
KR101244731B1 (ko) 2013-03-18

Similar Documents

Publication Publication Date Title
JP5326062B1 (ja) 非実行ファイル検査装置及び方法
JP5265061B1 (ja) 悪意のあるファイル検査装置及び方法
US10984097B2 (en) Methods and apparatus for control and detection of malicious content using a sandbox environment
Kharaz et al. {UNVEIL}: A {Large-Scale}, automated approach to detecting ransomware
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
CN109583202B (zh) 用于检测进程的地址空间中的恶意代码的系统和方法
US8918878B2 (en) Restoration of file damage caused by malware
US20190087572A1 (en) Ransomware attack monitoring
US20140053267A1 (en) Method for identifying malicious executables
JP5326063B1 (ja) デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法
US20140289851A1 (en) Malware Discovery Method and System
JP2019169121A (ja) ウィルス対策レコードを作成するシステムと方法
Ramilli et al. Multi-stage delivery of malware
Joy et al. Rootkit detection mechanism: A survey
US9959406B2 (en) System and method for zero-day privilege escalation malware detection
Wichmann et al. Using infection markers as a vaccine against malware attacks
KR101311367B1 (ko) 메모리 보호기능 우회 공격 진단 장치 및 방법
CN105844161A (zh) 安全防御方法、装置与系统
Grill et al. A practical approach for generic bootkit detection and prevention
Al-Sofyani et al. A Survey of Malware Forensics Analysis Techniques and Tools
Muthumanickam COPDA: concealed process and service discovery algorithm to reveal rootkit footprints
Behrozinia et al. KLrtD: kernel level rootkit detection
KR20130078960A (ko) 오피스 프로그램의 취약점을 이용한 악성코드의 행위기반 진단 및 차단방법
Shanmugam et al. Hybrid malware detect memory mapper in kernel centric virtual machine

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130702

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130722

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5326063

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250