(57)【要約】【課題】特定プロセスのメモリ領域内に挿入されたＤＬＬが悪意的な目的で開発されたＤＬＬであるかを判断する装置及び方法を提供する。【解決手段】本発明によるＤＬＬ検出方法は、プロセスが実行される前に前記プロセスのイメージファイルから第１ダイナミックリンクライブラリ（ＤＬＬ）情報を収集する段階と、前記プロセスが実行されることによってメモリにローディングされる第２ＤＬＬ情報を収集する段階と、前記収集された第１ＤＬＬ情報及び第２ＤＬＬ情報を比較し、明示的ＤＬＬ情報を抽出する段階と、前記抽出された明示的ＤＬＬが悪性コードによって挿入されたＤＬＬであるかを判断する段階とを含む。これにより、悪意的な目的で挿入されたＤＬＬ情報を被害システムのための分析ツールとして有用に活用することができる。【選択図】図１
2009129451.tif 000002
【特許請求の範囲】
【請求項１】
プロセスが実行される前に前記プロセスのイメージファイルから第１ダイナミックリンクライブラリ（ＤＬＬ）情報を収集する段階と、
前記プロセスが実行されることによってメモリにローディングされる第２ＤＬＬ情報を収集する段階と、
前記収集された第１ＤＬＬ情報及び第２ＤＬＬ情報を比較し、明示的ＤＬＬ情報を抽出する段階と、
前記抽出された明示的ＤＬＬが悪性コードによって挿入されたＤＬＬであるかを判断する段階と、
を含む、悪性コードによって挿入されたＤＬＬ検出方法。
【請求項２】
前記第１ＤＬＬ情報の収集は、ウィンドウズオペレーティングシステムでのバイナリーファイルが有するＰＥ（Portable Executable）ファイル形式に対する追跡によって行われることを特徴とする請求項１に記載の悪性コードによって挿入されたＤＬＬ検出方法。
【請求項３】
前記第２ＤＬＬ情報の収集は、オペレーティングシステムのプロセスリストに関する情報を提供するＰＳＡＰＩ（Process Status Application Programming Interface）ライブラリを活用して行われることを特徴とする請求項１に記載の悪性コードによって挿入されたＤＬＬ検出方法。
【請求項４】
前記明示的ＤＬＬ情報は、前記第１ＤＬＬ情報には含まれないが、前記第２ＤＬＬ情報には含まれるＤＬＬに関する情報であることを特徴とする請求項１に記載の悪性コードによって挿入されたＤＬＬ検出方法。
【請求項５】
製造会社別に製作されたＤＬＬファイルのＰＥヘッダー情報及び構造特性情報を抽出してプロファイリングＤＢに格納する段階をさらに含むことを特徴とする請求項１に記載の悪性コードによって挿入されたＤＬＬ検出方法。
【請求項６】
前記明示的ＤＬＬが悪性コードによって挿入されたＤＬＬであるかを判断する段階は、
前記プロファイリングＤＢに格納された製造会社別のＤＬＬファイルのＰＥヘッダー及び構造的特性情報と前記明示的ＤＬＬのＰＥヘッダー及び構造的特性情報とを比較し、互いに異なる場合、前記明示的ＤＬＬが悪性コードによって挿入されたＤＬＬであると判断する段階を含むことを特徴とする請求項５に記載の悪性コードによって挿入されたＤＬＬ検出方法。
【請求項７】
プロセスの実行前に前記プロセスのイメージファイルから第１ダイナミックリンクライブラリ（ＤＬＬ）情報を収集し、前記プロセスが実行されることによってメモリにローディングされる第２ＤＬＬ情報を収集するＤＬＬ情報収集部と、
前記収集された第１ＤＬＬ情報及び第２ＤＬＬ情報を比較し、明示的ＤＬＬ情報を抽出し、前記抽出された明示的ＤＬＬが悪性コードによって挿入されたＤＬＬであるかを検出する悪意的ＤＬＬ検出部と、
を含む、悪性コードによって挿入されたＤＬＬ検出装置。
【請求項８】
前記ＤＬＬ情報収集部は、ウィンドウズ環境でのバイナリーファイルが有するＰＥ（Portable Executable）ファイル形式に対する追跡を通じて前記イメージファイルからの第１ＤＬＬ情報を収集する第１ＤＬＬ情報収集部を含むことを特徴とする請求項７に記載の悪性コードによって挿入されたＤＬＬ検出装置。
【請求項９】
前記ＤＬＬ収集部は、オペレーティングシステムのプロセスリストに関する情報を提供するＰＳＡＰＩ（Process Status Application Programming Interface）ライブラリを活用して前記メモリにローディングされる第２ＤＬＬ情報を収集する第２ＤＬＬ情報収集部を含むことを特徴とする請求項７に記載の悪性コードによって挿入されたＤＬＬ検出装置。
【請求項１０】
前記悪意的ＤＬＬ検出部は、前記第１ＤＬＬ情報には含まれないが、前記第２ＤＬＬ情報には含まれるＤＬＬに関する情報を前記明示的ＤＬＬ情報として抽出することを特徴とする請求項７に記載の悪性コードによって挿入されたＤＬＬ検出装置。
【請求項１１】
製造会社別に製作されたＤＬＬファイルのＰＥヘッダー情報及び構造特性情報を格納するプロファイリングＤＢをさらに含むことを特徴とする請求項７に記載の悪性コードによって挿入されたＤＬＬ検出装置。
【請求項１２】
前記悪意的ＤＬＬ検出部は、
前記プロファイリングＤＢに格納された製造会社別のＤＬＬファイルのＰＥヘッダー及び構造的特性情報と前記明示的ＤＬＬのＰＥヘッダー及び構造的特性情報とを比較し、互いに異なる場合、前記明示的ＤＬＬが悪性コードによって挿入されたＤＬＬであると判断することを特徴とする請求項１１に記載の悪性コードによって挿入されたＤＬＬ検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、悪性コードを検出する方法及び装置に関し、特に悪性コードによって挿入されたダイナミックリンクライブラリ（Dynamic Link Library、以下、“ＤＬＬ”という）を検出する装置及び方法に関する。
【背景技術】
【０００２】
通常、コンピューターシステムは、各種ハードウェアがオペレーティングシステムを基盤にして駆動される構造を有する。前記オペレーティングシステムは、システムに電源が供給される時に駆動され、ユーザとハードウェア間のインターフェース機能を行う。前記オペレーティングシステムの種類として、Solaris（登録商標）、Linux（登録商標）、Windows（登録商標）などが存在する。これらのうちウィンドウズ（登録商標）は、仮想メモリ（Virtual Memory）を支援するオペレーティングシステムであって、最も大衆的に用いられている。
【０００３】
前記ウィンドウズ（登録商標）ベースのオペレーティングシステムは、仮想メモリ管理及び効果的なメモリ使用のために実行される一部分の内容のみをメモリに格納し、そうでない部分の内容は、ファイルで必要な時に読み込んでいる。
【０００４】
一方、前記オペレーティングシステムは、有線だけでなく無線通信産業の発達に伴って、通信機能を含むことが一般化されている。しかし、通信機能の使用が一般化されることによって、ユーザには便宜性を提供してはいるが、外部から悪性コードの侵入が頻繁に発生している。前記悪性コードとしては、ウイルス、ワーム、スパイウェアなどに区分される。
【０００５】
前記悪性コードは、ウィンドウズ（登録商標）オペレーティングシステム環境で一般的に使用されるＤＬＬ挿入技術を悪用してオペレーティングシステムに侵入する。このように悪性コードをオペレーティングシステムに伝搬するために使用されるＤＬＬ挿入技術は多様である。
【０００６】
したがって、悪性コードによって挿入されるＤＬＬを探知するための方案が多様な観点で模索されている。例えば、ＤＬＬ挿入と関わるアプリケーションプログラムインターフェース（Application Program Interface、以下、ＡＰＩという）を監視しつつ、ＡＰＩを使用する瞬間にアラーム警告を出す形態や、プロセスにローディングされたＤＬＬを分析する技法がある。そして、知られたシステムＤＬＬのリスト及びハッシュ値を事前に抽出し、これを疑わしい悪性ＤＬＬと比較する技法などが存在する。
【０００７】
前述した従来のＤＬＬ探知方案では、あらかじめ設置された探知ツールを用いて悪性コードによって挿入されるＤＬＬを探知したり、ユーザの経験的知識によって悪意的な目的で挿入されたＤＬＬを判断する方法が使われている。したがって、従来、悪性コードによって悪意的な目的で挿入されるＤＬＬを探知するためには、別途の探知ツールをあらかじめ設置したり、ユーザの経験的知識が必ず前提されなければならなかった。
【０００８】
したがって、ユーザに対する便宜を提供するためには、悪性コードによって悪意的な目的で挿入されるＤＬＬを自動に探索し、自動探索されたＤＬＬ情報をシステム分析ツールとして活用する方案を模索することが至急であると言える。
【０００９】
【特許文献１】大韓民国特許登録第１０−０７６２９７３号明細書
【非特許文献１】Hung-Min Sun et al., “Detecting the Code Injection by Hooking System Calls in Windows Kernel Mode”, 2006年 ICS国際計算機会議, 2007年， http://dspace.lib.fcu.edu.tw/bitstream/2377/3598/1/ce07ics002006000144.pdf
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、特定プロセスのメモリ領域内に挿入されたＤＬＬが悪意的な目的で開発されたＤＬＬであるかを判断する装置及び方法を提供することにある。
【００１１】
また、本発明の他の目的は、ウィンドウズ（登録商標）ベースのオペレーティングシステムで悪性コードによって挿入されたＤＬＬをプロファイリング及びヒュリスティック判断技法によって探知する装置及び方法を提供することにある。
【００１２】
また、本発明のさらに他の目的は、被害システムでハッキングが起きた後、プロセスを検査して悪意的な目的で挿入されたＤＬＬをプロファイリングを利用したヒュリスティック技法を利用して実時間に検索する装置及び方法を提供することにある。
【００１３】
その他の本発明の目的は、下記の説明及び本発明の好ましい実施例によって把握されることができる。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、本発明の一態様に係る悪性コードによって挿入されたＤＬＬ検出方法は、プロセスが実行される前に前記プロセスのイメージファイルから第１ダイナミックリンクライブラリ（ＤＬＬ）情報を収集する段階と、前記プロセスが実行されることによってメモリにローディングされる第２ＤＬＬ情報を収集する段階と、前記収集された第１ＤＬＬ情報及び第２ＤＬＬ情報を比較し、明示的ＤＬＬ情報を抽出する段階と、前記抽出された明示的ＤＬＬが悪性コードによって挿入されたＤＬＬであるかを判断する段階とを含む。
【００１５】
本発明の他の態様に係る悪性コードによって挿入されたＤＬＬ検出装置は、プロセスの実行前に前記プロセスのイメージファイルから第１ＤＬＬ情報を収集し、前記プロセスが実行されることによってメモリにローディングされる第２ＤＬＬ情報を収集するＤＬＬ情報収集部と、前記収集された第１ＤＬＬ情報及び第２ＤＬＬ情報を比較し、明示的ＤＬＬ情報を抽出し、前記抽出された明示的ＤＬＬが悪性コードによって挿入されたＤＬＬであるかを検出する悪意的ＤＬＬ検出部とを含む。
【発明の効果】
【００１６】
本発明によれば、被害システムでハッキングが起きた後、プロセスを検査して悪意的な目的で挿入されたＤＬＬをＤＬＬプロファイリング及びヒュリスティック判断技法を利用して自動に検出することができる。このような方法を利用して被害システム分析ツールとして活用するのに効果的である。
【発明を実施するための最良の形態】
【００１７】
下記で本発明を説明するにあたって、関連された公知の機能または構成に関する具体的な説明が本発明の要旨を不明瞭にすることができると判断される場合には、その詳細な説明を省略する。そして、後述する用語は、本発明での機能を考慮して定義された用語であって、これは、ユーザ、運用者の意図または慣例などによって変わることができる。従って、その定義は、本明細書全般の内容に基づいて行われるべきである。
【００１８】
本発明による好ましい実施例について具体的に説明するに先立って、以下では、ウィンドウズ（登録商標）環境で使用されるＤＬＬ挿入技術について記述する。
【００１９】
一般的にウィンドウズ環境で使用されるＤＬＬ挿入技術は、ウィンドウズ（登録商標）フックを利用する技法と、ＣｒｅａｔｅＲｅｍｏｔｅＴｈｒｅａｄを利用する技法及びデバッギングＡＰＩを利用する技法に分類することができる。
【００２０】
前記ウィンドウズ（登録商標）フックを利用した技法は、ＤＬＬにコードを挿入した後、ウィンドウズ（登録商標）フック（Windows Hook）を通じて遠隔プロセスにＤＬＬをローディングする技術である。前記ウィンドウズ（登録商標）フックは、オペレーティングシステムとアプリケーションプログラムとの間に、またはアプリケーションプログラムの間にやり取りするメッセージの間に位置し、メッセージ監視と操作を可能にするプロシージャである。また、前記ウィンドウズ（登録商標）フックは、メッセージを監視または変更したり、伝達を遮断することも可能である。したがって、フックプロシージャがどんなメッセージを受けるかは、フックタイプとフックの範囲によって変わる。前記フックタイプは、ＷＨ＿と始まるメクロ定数として定義される。例えば、ＷＨ＿ＫＥＹＢＯＡＲＤは、キーボードメッセージを監視し、ＷＨ＿ＣＡＬＬＷＮＤＰＲＯＣは、ＳｅｎｄＭｅｓｓａｇｅ関数でメッセージを送る前に処理し、ＷＨ＿ＣＡＬＬＷＮＤＰＲＯＣＲＥＴは、ウィンドウプロシージャがメッセージを処理した後に呼び出されるフックプロシージャである。一方、前記ウィンドウズ（登録商標）フックを利用した方法は、キー・ロガーのような悪性コードに多く使用される。
【００２１】
ＣｒｅａｔｅＲｅｍｏｔｅＴｈｒｅａｄを利用した技法は、最近悪性コードで最も多く使用する技法の１つである。ＣｒｅａｔｅＲｅｍｏｔｅＴｈｒｅａｄを利用した技法は、ＤＬＬを動的に対象プロセスで実行させることが可能であり、ユーザレベルルートキットのような悪性コードに多く使用される。
【００２２】
次に、デバッギングＡＰＩを利用した技法は、ウィンドウズ（登録商標）で提供する強力なデバッギングＡＰＩを利用する技法である。前記デバッギングＡＰＩを利用した技法は、悪意的な意図よりプログラムをデバッギングする用途に設けられたものであるが、メモリを扱うことができる方法の１つになる。ウィンドウズ（登録商標）環境で代表的なＡＰＩとしては、ＲｅａｄＰｒｏｃｅｓｓＭｅｍｏｒｙとＷｒｉｔｅＰｒｏｃｅｓｓＭｅｍｏｒｙが存在する。前記デバッギングＡＰＩを利用した技法の一例として、ＣｒｅａｔｅＰｒｏｃｅｓｓの因子であるｄｗＣｒｅａｔｉｏｎＦｌａｇでＤＥＢＵＧ＿ＯＮＬＹ＿ＴＨＩＳ＿ＰＲＯＣＥＳＳとＤＥＢＵＧ＿ＰＲＯＣＥＳＳを選択して生成させれば、前記ＣｒｅａｔｅＰｒｏｃｅｓｓを呼び出したプロセスがデバッガになる。これは、ＷａｉｔＦｏｒＤｅｂｕｇＥｖｅｎｔを通じてデバッグイベントを受けることができる。
【００２３】
一方、前述した技法を利用する時、既にコンパイルされたプログラムを通じて悪性コードによるＤＬＬ挿入が発生することができる。それで、ＬｏａｄＬｉｂｒａｒｙ  ＡＰＩを利用した明示的ローディングを利用する。前記明示的ローディングは、ＤＬＬのローディング可否がリンク時に決定されるものではなく、ユーザが希望する時に、当該ＤＬＬをロードして所望の関数を使うことができるようにする方法である。
【００２４】
したがって、本発明では、当該プロセスが実行前にインポートしているＤＬＬ情報と実行後に明示的にローディングされる情報を確保し、前記確保した情報を比較して悪性コードによって悪意的な目的で挿入されるＤＬＬを分析するための範囲を低減できるようにする方案を模索しようとする。
【００２５】
このために、下記の本発明の好ましい実施例では、少なくとも１つの対象プロセスが実行される前のメモリに記録されたイメージファイルを通じてＤＬＬ情報を収集するための動作と、前記少なくとも１つの対象プロセスが実行されることによってローディングされるＤＬＬ情報を収集する動作について説明する。また、前記収集された２つのＤＬＬ情報を比較して明示的ＤＬＬ情報を獲得し、前記獲得した明示的ＤＬＬ情報から悪性コードによって悪意的な目的で挿入されたＤＬＬ情報を検出するための動作について説明する。また、本発明の好ましい実施例では、明示的ＤＬＬ情報から悪意的な目的で挿入されたＤＬＬ情報を検査するために、特定会社別に開発したＤＬＬをプロファイリングしたＤＢを利用したヒュリスティック技法を適用することを前提にする。
【００２６】
以下、本発明の好ましい実施例を添付の図面を参照して詳しく説明する。
図１は、本発明の好ましい実施例に係る悪性コードによって挿入されたＤＬＬを検出するための装置の構成を示す。
【００２７】
図１を参照すれば、ＤＬＬ情報収集部１１０は、悪意的に挿入されたＤＬＬを検出するために少なくとも１つの対象プロセスに関するＤＬＬ情報を収集する。前記ＤＬＬ情報収集部１１０は、収集しようとするＤＬＬ情報の種類によって複数のＤＬＬ情報収集モジュールで構成される。図１では、２つのＤＬＬ情報収集モジュールで構成された例を示す。
【００２８】
ＤＬＬ情報収集部１１０を構成する第１ＤＬＬ情報収集モジュール１１２は、少なくとも１つの対象プロセスが実行される前に前記少なくとも１つの対象プロセスに対応するイメージファイルからＤＬＬ情報を収集する。第１ＤＬＬ情報収集モジュール１１２は、ウィンドウズ（登録商標）で使用されるバイナリーファイルの移植可能プログラム（Portable Executable、以下、“ＰＥ”という）ファイル形式を追跡してインポートテーブル（Import table）の位置を確認し、前記確認された位置のインポートテーブルを通じてシンボルをインポートするＤＬＬ情報を収集する。
【００２９】
前記インポートテーブルは、当該プロセスが使用している外部関数の位置及び名前を格納する。例えば、ｌｉｓｔｂｏｘ.ｅｘｅの場合、内部的にｋｅｒｎｅｌ３２.ｄｌｌとｕｓｅｒ３２.ｄｌｌにある多数の関数を使用している。このような関数の名前は、既に実行ファイル内に格納されており、その格納された位置を通知することがインポートテーブルである。
【００３０】
第１ＤＬＬ情報収集モジュール１１２は、まず、ＰＥヘッダーの位置を確認する。そして、前記確認されたＰＥヘッダーから任意の間隔で離れているインポートテーブルの位置を確認し、前記インポートテーブルの値を参考してＩＭＡＧＥ＿ＩＭＰＯＲＴ＿ＤＥＳＣＲＩＰＴＯＲの位置を確認する。その後、前記確認された位置に存在するＩＭＡＧＥ＿ＩＭＰＯＲＴ＿ＤＥＳＣＲＩＰＴＯＲの内容を分析することによって、呼び出されているＤＬＬ及び関数を確認することができる。
【００３１】
第２ＤＬＬ情報収集モジュール１１４は、少なくとも１つの対象プロセスが実行されることによってメモリにローディングされるＤＬＬ情報を収集する。前記第２ＤＬＬ情報収集モジュール１１４は、ＰＳＡＰＩ（Process Status Application Programming Interface）ライブラリまたはＴｏｏｌＨｅｌｐｅｒ  ＡＰＩのうち１つを利用して現在実行中のプロセスに対応したＤＬＬ情報を収集することができる。
【００３２】
前記ＰＳＡＰＩライブラリファイルには、ウィンドウズ（登録商標）の応用プログラムがシステムで実行中のプロセス及び／または装置ドライバーに関する情報を検索するのに使用されるプログラムコードが入っている。それで、前記ＰＳＡＰＩライブラリによってウィンドウズ（登録商標）ベースのオペレーティングシステムで提供するプロセスリストに関する情報を提供されることができる。
【００３３】
したがって、前記第２ＤＬＬ情報収集モジュール１１４は、前記ＰＳＡＰＩライブラリを利用する場合、前記ＰＳＡＰＩライブラリのＡＰＩのうち現在実行中のプロセスリストに関する情報を得ることができるＡＰＩを使用する。また、前記第２ＤＬＬ情報収集モジュール１１４は、ＴｏｏｌＨｅｌｐｅｒ  ＡＰＩを利用して現在実行中のプロセスに対応したＤＬＬ情報を収集することができる。
【００３４】
前記第１ＤＬＬ情報収集モジュール１１２によって収集されたＤＬＬ情報と前記第２ＤＬＬ情報収集モジュール１１４によって収集されたＤＬＬ情報は、悪意的ＤＬＬ検出部１２０に提供される。
【００３５】
前記悪意的ＤＬＬ検出部１２０は、前記第１及び第２ＤＬＬ情報収集モジュール１１２、１１４によって収集された２つのＤＬＬ情報を比較して明示的ＤＬＬ情報を抽出し、プロファイリングＤＢを用いて前記抽出された明示的ＤＬＬ情報が悪意的ＤＬＬであるかを判断する。前記明示的ＤＬＬは、前記少なくとも１つの対象プロセスが実行される時、追加にローディングされるＤＬＬである。このように明示的ＤＬＬに関する情報を抽出することは、悪性コードによって挿入されるＤＬＬが明示的ＤＬＬである場合が大部分だからである。すなわち悪性コードによってＤＬＬを挿入するＤＬＬ挿入技術を分析して見れば、悪意的なＤＬＬを使用するために対象プロセスのメモリ領域内で明示的にＤＬＬをローディングする特性があることを確認することができる。
【００３６】
したがって、前記悪意的ＤＬＬ検出部１２０は、プロファイリングＤＢを利用して前記獲得された明示的ＤＬＬが悪意的ＤＬＬであるかを判断する。前記プロファイリングＤＢは、製造会社で合法的に製作されたＤＬＬファイルのＰＥヘッダー及び構造特性情報を抽出して格納したＤＢである。前記プロファイリングＤＢに格納されたＤＬＬのヘッダー及び構造特性情報と検査対象ＤＬＬファイルのヘッダー及び構造特性情報を比較することによって、検査対象ＤＬＬファイルが悪意的なＤＬＬであるかを判断する。検査対象ＤＬＬの悪意性有無を判断することができる理由は、特定製造会社で合法的に製作されたＤＬＬファイルのＰＥヘッダーに記録された情報及び構造的特性は、悪意的な目的で開発されたＤＬＬファイルと差異を示すからである。前記ＤＬＬファイルのＰＥヘッダー及び構造的特性情報の例として、ＶＥＲＳＩＯＮＩＮＦＯ、ＰＥ＿ＩＭＡＧＥ＿ＯＰＴＩＯＮＡＬ＿ＨＥＡＤＥＲ、ＳＥＣＴＩＯＮ構造及びその値などが挙げられる。
【００３７】
ＶＥＲＳＩＯＮＩＮＦＯは、ＤＬＬを製作した会社情報である。したがって、検査対象ＤＬＬに対するＶＥＲＳＩＯＮＩＮＦＯ情報が設定されていなければ、前記ＤＬＬファイルは悪意的なものとして判断される。ＰＥ＿ＩＭＡＧＥ＿ＯＰＴＩＯＮＡＬ＿ＨＥＡＤＥＲは、ｐＦｉｌｅに対するデータであって、会社ごとに異なる。検査対象ＤＬＬファイルのＶＥＲＳＩＯＮＩＮＦＯ情報にＡ会社で明示されていても、前記ＤＬＬファイルのＰＥ＿ＩＭＡＧＥ＿ＯＰＴＩＯＮＡＬ＿ＨＥＡＤＥＲ情報とプロファイリングＤＢに貯蔵されたＡ会社のＰＥ＿ＩＭＡＧＥ＿ＯＰＴＩＯＮＡＬ＿ＨＥＡＤＥＲ情報とを比較し、異なる場合には、前記ＤＬＬファイルは、悪意的なＤＬＬとして判断する。これと同様に、ＳＥＣＴＩＯＮ構造も会社ごとに異なることがある。Ａ会社に明示されたＤＬＬファイルのＳＥＣＴＩＯＮ構造とプロファイリングＤＢに貯蔵されたＡ会社のＳＥＣＴＩＯＮ構造とを比較し、異なる場合には、前記ＤＬＬファイルは、悪意的なＤＬＬとして判断する。
【００３８】
すなわち、前記悪意的ＤＬＬ情報検出部１２０は、前記プロファイリングＤＢに貯蔵された製造会社別のＤＬＬファイルのＰＥヘッダー及び構造特性情報と検査対象ＤＬＬのＰＥヘッダー及び構造特性情報とを比較し、異なる場合、悪意的な目的で開発されたＤＬＬとして判断する。
【００３９】
図２は、本発明の好ましい実施例によって悪性コードによって挿入されたダイナミックリンクライブラリを検出するためにオペレーティングシステムで行われる制御流れを示す。
【００４０】
図２を参照すれば、段階２１０で、プロセスが実行される前に、プロセスのイメージファイルからＤＬＬ情報を収集する。
【００４１】
前記イメージファイルからＤＬＬ情報を収集する動作についてさらに具体的に説明すれば、オペレーティングシステムは、ウィンドウズ（登録商標）で使用されるバイナリーファイルのＰＥファイル形式を追跡してインポートテーブル（Import table）の位置を確認する。そして、前記確認された位置のインポートテーブルを通じてシンボルをインポートするＤＬＬ情報を収集する。前記ＰＥファイル形式の一例は、図３に示されている通りである。図３に示されているように、前記ＰＥファイルは、“ＤＯＳ  ＭＺヘッダー（header）”領域、“ＤＯＳスタブ（stub）”領域、“ＰＥヘッダー（header）”領域、“セクションテーブル（Section table）”領域及び複数の“セクション（Section）”領域で構成される。
【００４２】
前記ＤＯＳ  ＭＺヘッダー領域は、ＰＥファイルの初めに位置し、ＭＡＧＩＣ  Ｎｕｍｂｅｒと次に来るＩＭＡＧＥ＿ＮＴ＿ＨＥＡＤＥＲの位置を表示する。前記ＤＯＳスタブ領域は、ＤＯＳで実行した時、エラーメッセージを表示するスタブ（Stub）コードを含んでいる。前記ＰＥヘッダー領域は、ＰＥファイルフォーマットに関する情報を含んでおり、セクションの数及び属性のような情報を含むＩＭＡＧＥ＿ＦＩＬＥ＿ＨＥＡＤＥＲ領域と、ＰＥファイルに関する属性またはイメージベースのような情報を含むＩＭＡＧＥ＿ＯＰＴＩＯＮＡＬ＿ＨＥＡＤＥＲ領域を含む。そして前記セクションテーブル領域は、セクションに関する実質的な情報を含み、前記セクション領域は、実際データが位置する領域である。
【００４３】
前記セクション領域には、ＩＭＡＧＥ＿ＩＭＰＯＲＴ＿ＤＥＳＣＲＩＰＴＯＲという構造体の配列と始まり、リンクされたＤＬＬ個数＋１だけのＩＭＡＧＥ＿ＩＭＰＯＲＴ＿ＤＥＳＣＲＩＰＴＯＲ構造体が連続的に存在し、終わりは、ＮＵＬＬで満たされている。前記ＩＭＡＧＥ＿ＩＭＰＯＲＴ＿ＤＥＳＣＲＩＰＴＯＲ構造体の“ＤＷＯＲＤ  Ｎａｍｅ”変数は、インポートされたＤＬＬの名前を含んでいるＮＵＬＬと終わるアスキー文字列に対するＲＶＡ（Relative Virtual Address）値を有する。前記ＲＶＡは、実行ファイルがメモリにロードされた時、その開始アドレスを０にして計算したアドレスである。すなわち前記ＲＶＡは、実行ファイル開始位置を０にする相対的アドレスに該当する。例えばＲＶＡの値が０ｘ４０であり、実行ファイルがロードされた時、その開始位置が０ｘ１０００であると仮定すれば、実際該当領域がメモリにロードされた時の位置は、０ｘ１０４０になる。
【００４４】
実際ファイルをダンプして見れば、各ＤＬＬによるＩＭＡＧＥ＿ＩＭＰＯＲＴ＿ＤＥＳＣＲＩＰＴＯＲ構造体が各々存在することが分かる。また、ＮＡＭＥのＲＶＡ値をファイルオフセットで変換すれば、実際インポートするＤＬＬ情報を捜すことができる。このように抽出されたＤＬＬですべてインポートする情報を抽出すれば、当該プロセスのＰＥイメージでインポートするＤＬＬの情報をすべて抽出することができる。
【００４５】
次に、段階２１２で、前記プロセスが実行されることによってメモリにローディングされるＤＬＬ情報を収集する。すなわち前記オペレーティングシステムは、ＰＳＡＰＩライブラリを利用して現在実行中のプロセスに対応したＤＬＬ情報を収集することができる。前記ＰＳＡＰＩライブラリは、ウィンドウズ（登録商標）を基盤とするオペレーティングシステムで提供するプロセスリストに関する情報を提供する。したがって、前記オペレーティングシステムは、前記ＰＳＡＰＩライブラリを利用する場合、前記ＰＳＡＰＩライブラリのＡＰＩのうち現在実行中のプロセスリストに関する情報を得ることができるＡＰＩを使用する。また、前記オペレーティングシステムは、ＴｏｏｌＨｅｌｐｅｒ  ＡＰＩを利用して現在実行中のプロセスに対応したＤＬＬ情報を収集することもできる。
【００４６】
段階２１４に進行し、以前に収集された２つのＤＬＬ情報を比較して明示的ＤＬＬ情報を抽出する。前記明示的ＤＬＬ情報は、前記少なくとも１つの対象プロセスが実行される時、追加にローディングされるＤＬＬに関する情報である。
【００４７】
段階２１６で、プロファイリングＤＢに貯蔵された情報に基づいて前記明示的ＤＬＬが悪意的ＤＬＬであるか否かを検査する。前記オペレーティングシステムは、前記獲得された明示的ＤＬＬ情報に対して悪意的ＤＬＬが存在するかを判断するために、プロファイリングＤＢを利用する。
【００４８】
前述したように、本発明の好ましい実施例では、オペレーティングシステムがプロファイリングＤＢを利用してヒュリスティック（heuristic）技法を利用して悪意的な目的で挿入されたＤＬＬを実時間に検出するようにする。悪意的な目的で挿入されたＤＬＬ情報は、被害システムの分析ツールとして活用することができる。
【００４９】
一方、以上では本発明の好ましい実施例について図示し説明したが、本発明は、前述した特定の実施例に限定されず、請求範囲で請求する本発明の要旨を逸脱しない範囲内で当該発明が属する技術分野における通常の知識を有する者によって多様な変形実施が可能であることは勿論であり、このような変形実施は、本発明の技術的思想から個別的に理解すべきものではない。
【００５０】
例えば、前述した本発明の好ましい実施例では、ウィンドウズ（登録商標）ベースのオペレーティングシステムに限定して説明したが、ウィンドウズ（登録商標）環境でのＤＬＬ情報と類似の情報を定義しているオペレーティングシステムに本発明を容易に適用することもできる。
【図面の簡単な説明】
【００５１】
【図１】本発明の好ましい実施例に係る悪性コードによって挿入されたＤＬＬを検出するための装置の構成図である。
【図２】本発明の好ましい実施例によって悪性コードによって挿入されたＤＬＬであるかを判断するために行われる制御流れ図である。
【図３】本発明の好ましい実施例を適用するためのウィンドウズ（登録商標）環境で移植可能プログラムファイル形式の一例を示す図である。
【符号の説明】
【００５２】
１１０  ＤＬＬ情報収集部
１１２  第１ＤＬＬ情報収集モジュール
１１４  第２ＤＬＬ情報収集モジュール
１２０  悪意的ＤＬＬ情報検出部
【図１】
2009129451.tif 000003
【図２】
2009129451.tif 000004
【図３】
2009129451.tif 000005