(57)【特許請求の範囲】
【請求項１】
オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）から受信される入力メッセージをフック（Ｈｏｏｋ）を利用してモニタリングする段階と、
前記入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断する段階と、
当該判断結果を利用してマクロハック（Ｍａｃｒｏ Ｈａｃｋ）の発生の有無を探知する段階と、を含むことを特徴とするフックを利用したコンピュータセキュリティサービス提供方法。
【請求項２】
前記マクロハックの発生の有無を探知する段階において、
前記入力メッセージに前記仮想入力メッセージフラグが含まれている場合、前記入力メッセージが第１タイプの仮想入力メッセージであると判断し、マクロハックが発生したものと判断することを特徴とする請求項１に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項３】
前記第１タイプの仮想入力メッセージは、ユーザレベルのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｇｒａｍｍｉｎｇ Ｉｎｔｅｒｆａｃｅ）を利用して発生した仮想入力メッセージであることを特徴とする請求項２に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項４】
マクロハックが発生したと探知された場合、前記入力メッセージをフィルタリングする段階をさらに含むことを特徴とする請求項１に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項５】
前記フックは、キーボードローレベルフックまたはマウスローレベルフックを含むことを特徴とする請求項１に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項６】
前記フックは、全てのメッセージが一時的に保存されるシステムメッセージキューにインストールされることを特徴とする請求項１に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項７】
仮想入力を発生させて前記オペレーティングシステムに提供する段階と、
前記仮想入力に基づいて生成された第１入力メッセージを前記フックを利用してモニタリングすることにより、前記第１入力メッセージの変更の有無を判断する段階と、をさらに含むことを特徴とする請求項１に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項８】
前記第１入力メッセージの変更の有無を判断する段階において、
前記第１入力メッセージに前記仮想入力メッセージフラグが含まれていない場合、前記第１入力メッセージが変更されたと判断することを特徴とする請求項７に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項９】
前記入力メッセージを利用してカーネルレベルでの第１時間情報を生成する段階と、
前記第１時間情報が各入力メッセージ毎に同一である場合、前記入力メッセージが第２タイプの仮想入力メッセージであると判断し、マクロハックが発生したものと判断する段階と、をさらに含むことを特徴とする請求項１に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項１０】
前記第２タイプの仮想入力メッセージは、カーネルレベルで仮想入力ドライバを利用して発生したものであることを特徴とする請求項９に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項１１】
前記第１時間情報は、前記入力メッセージから得られるキーダウン時間とキーアップ時間との差値であることを特徴とする請求項９に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項１２】
前記入力メッセージから得られるカーネルレベルでの第１時間情報と、時間関連ＡＰＩから得られるユーザレベルでの第２時間情報と、を利用してスピードハックの発生の有無を探知する段階をさらに含むことを特徴とする請求項１に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項１３】
第１時間情報は、カーネルレベルでのキーダウン時間とキーアップ時間との差値であり、第２時間情報は、時間関連ＡＰＩを利用して算出されたユーザレベルでのキーダウン時間とキーアップ時間との差値であることを特徴とする請求項１２に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項１４】
前記スピードハックの発生の有無を探知する段階において、
前記第１時間情報と前記第２時間情報との差が閾値以上である場合、前記スピードハックが発生したものと判断することを特徴とする請求項１２に記載のフックを利用したコンピュータセキュリティサービス提供方法。
【請求項１５】
請求項１から１４のいずれか一つに記載の方法を行うためのコンピュータプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【請求項１６】
オペレーティングシステムから受信される入力メッセージをフックを利用してモニタリングするフック管理モジュールと、
前記入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断することにより、マクロハックの発生の有無を探知するマクロハック探知モジュールと、
マクロハックが発生したと探知されると、前記入力メッセージをフィルタリングするフィルタリングモジュールと、を含むことを特徴とするフックを利用したコンピュータセキュリティサービス提供装置。
【請求項１７】
前記マクロハック探知モジュールは、前記入力メッセージに前記仮想入力メッセージフラグが含まれている場合、前記入力メッセージが第１タイプの仮想入力メッセージであると判断し、マクロハックが発生したものと判断することを特徴とする請求項１６に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【請求項１８】
前記第１タイプの仮想入力メッセージは、ユーザレベルのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｇｒａｍｍｉｎｇ Ｉｎｔｅｒｆａｃｅ）を利用して発生した仮想入力メッセージであることを特徴とする請求項１７に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【請求項１９】
前記フックは、キーボードローレベルフックまたはマウスローレベルフックを含むことを特徴とする請求項１６に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【請求項２０】
前記フック管理モジュールは、前記オペレーティングシステムから伝達される全てのメッセージが一時的に保存されるシステムメッセージキューにインストールされることを特徴とする請求項１６に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【請求項２１】
仮想入力を発生させて前記オペレーティングシステムに提供する仮想入力発生部と、
前記仮想入力に基づいて生成された第１入力メッセージに前記仮想入力メッセージフラグが含まれていない場合、前記第１入力メッセージが変更されたと判断する変更判断モジュールと、をさらに含むことを特徴とする請求項１６に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【請求項２２】
前記入力メッセージを利用してカーネルレベルでの第１時間情報を生成する時間情報生成モジュールをさらに含み、
前記マクロハック探知モジュールは、前記第１時間情報が各入力メッセージ毎に同一である場合、前記入力メッセージが第２タイプの仮想入力メッセージであると判断し、マクロハックが発生したものと判断することを特徴とする請求項１６に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【請求項２３】
前記第２タイプの仮想入力メッセージは、仮想入力ドライバを利用して発生したものであることを特徴とする請求項２２に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【請求項２４】
前記入力メッセージから得られるカーネルレベルでの第１時間情報と、時間関連ＡＰＩから得られるユーザレベルでの第２時間情報とを生成する時間情報生成モジュールと、
前記第１時間情報及び第２時間情報を利用してスピードハックの発生の有無を探知するスピードハック探知モジュールと、をさらに含むことを特徴とする請求項１６に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【請求項２５】
前記時間情報生成モジュールは、カーネルレベルでのキーダウン発生時間とキーアップ発生時間との差値を利用して前記第１時間情報を算出し、時間関連ＡＰＩから得られるユーザレベルでのキーダウン発生時間とキーアップ発生時間との差値を利用して前記第２時間情報を生成することを特徴とする請求項２４に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【請求項２６】
前記スピードハック探知モジュールは、前記第１時間情報と前記第２時間情報との差が閾値以上である場合、前記スピードハックが発生したと判断することを特徴とする請求項２４に記載のフックを利用したコンピュータセキュリティサービス提供装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータセキュリティに関し、より詳細にはフック（Ｈｏｏｋ）を利用したコンピュータセキュリティに関する。
【背景技術】
【０００２】
通信技術の発達及び超高速インターネットの普及により、従来はオフラインで行われていた多くの業務がオンラインで行われるようになっており、最近は、オンラインで行うことができる業務分野が拡大し、ゲームサービスもオンラインを介して提供されている。
【０００３】
特に、オンラインゲームサービスの提供が急激に増加するにつれて、多様なゲームハッキング（ハック）の試みが発生している。このようなゲームハックの代表的な類型としては、マクロハック（Ｍａｃｒｏ  Ｈａｃｋ）とスピードハック（Ｓｐｅｅｄ  Ｈａｃｋ）とが挙げられる。
【０００４】
マクロハックとは、マウスの入力を自動的にゲームに伝送し、ユーザがいなくても自動的にゲームを実行可能にするオートマウス（Ａｕｔｏ  Ｍｏｕｓｅ）の発展した形態であり、プログラムを作るように所望のキーボードやマウスの入力を作った後、その入力を自動的にゲームに伝送し、繰り返し実行されるようにすることを意味する。
【０００５】
また、スピードハックとは、コンピュータの時間関連情報を変更し、コンピュータの時間を実際の時間より速く、または遅くすることにより、ゲームプログラムの反応速度を変更することを意味する。このようなスピードハックを用いると、ゲーム内のキャラクタの動きや攻撃速度などが数倍から数百倍速くなり、クライアントからサーバに伝送されるパケットの速度もともに速くなる。
【０００６】
このようなゲームハッキングは、一般的なハッキングと異なり、ゲームプロセスのメモリを操作してキャラクタの能力値や体力などの特定データを変更するため、ユーザ間のバランスが崩れるだけでなく、ゲームサーバに大きな負荷をかけるなど深刻な問題を引き起こす。そのため、このような多様なゲームハッキングを防止するためのゲームセキュリティの認識及び概念に対する関心が増加している。
【０００７】
一例として、マクロハックにより悪意的なユーザが仮想入力を発生させることを防止するために、仮想入力の発生に利用されるＡＰＩのフックを行うことにより当該ＡＰＩの呼出を遮断する方式が提案されている。
【０００８】
しかし、上述した方法の場合、仮想入力の発生に利用される全てのＡＰＩに制御用Ｄｌｌをインジェクションしなければならないため、メモリ及びＣＰＵの使用量が増加することによりコンピュータの速度が低下し、各ＡＰＩに対するフックを行う際に衝突が発生する可能性があるという問題がある。
【０００９】
また、既存の方法は、カーネルレベルでの仮想入力ドライバを利用したマクロハックの試みを遮断することができないという問題がある。
【００１０】
また、スピードハックの場合は、図１に示されるような時間関連ＡＰＩをフックすることによって行われるため、このようなスピードハックを防止するためには、時間関連ＡＰＩがフックされたか否かを判断し、時間関連ＡＰＩがフックされたと判断される場合にスピードハックであると判断する方法が提示されているが、時間関連ＡＰＩがフックされたか否かを判断することは容易ではないという問題がある。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、上述の問題点を解決するためのものであり、入力メッセージについて仮想入力メッセージフラグの有無を判断したり、またはカーネルレベルでの時間情報を利用してハッキングの試みを探知することができるフックを利用したコンピュータセキュリティサービス提供方法及び装置を提供することを技術的な課題とする。
【００１２】
また、本発明は、自主的に発生させた仮想入力メッセージを利用して、入力メッセージの変更の有無を判断することができるフックを利用したコンピュータセキュリティサービス提供方法及び装置を提供することを他の技術的な課題とする。
【００１３】
また、本発明は、フックをシステムメッセージキューにインストールすることにより、コンピュータの負荷を低減させることができるフックを利用したコンピュータセキュリティサービス提供方法及び装置を提供することをさらに他の技術的な課題とする。
【００１４】
また、本発明は、入力メッセージから得られるカーネルレベルでの時間と時間関連ＡＰＩから得られるユーザレベルでの時間との差を利用してハッキングの試みを探知することができるフックを利用したコンピュータセキュリティサービス提供方法及び装置を提供することをさらに他の技術的な課題とする。
【課題を解決するための手段】
【００１５】
上述の目的を果たすための本発明の一実施例におけるフックを利用したコンピュータセキュリティサービス提供方法は、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から受信される入力メッセージをフック（Ｈｏｏｋ）を利用してモニタリングする段階と、入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断する段階と、当該判断結果を利用してマクロハック（Ｍａｃｒｏ  Ｈａｃｋ）の発生の有無を探知する段階と、を含む。
【００１６】
一実施例において、マクロハックの発生の有無を探知する段階において、入力メッセージに仮想入力メッセージフラグが含まれている場合、入力メッセージが第１タイプの仮想入力メッセージであると判断し、マクロハックが発生したものと判断することを特徴とする。
【００１７】
この際、第１タイプの仮想入力メッセージは、ユーザレベルのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を利用して発生した仮想入力メッセージであることを特徴とする。
【００１８】
また、マクロハックが発生したと探知された場合、入力メッセージをフィルタリングする段階をさらに含んでもよい。
【００１９】
一実施例において、フックは、キーボードローレベルフックまたはマウスローレベルフックを含むことを特徴とする。
【００２０】
一方、フックは、全てのメッセージが一時的に保存されるシステムメッセージキューにインストールされることを特徴とする。
【００２１】
一方、仮想入力を発生させてオペレーティングシステムに提供する段階と、仮想入力に基づいて生成された第１入力メッセージをフックを利用してモニタリングすることにより、第１入力メッセージの変更の有無を判断する段階と、をさらに含んでもよい。
【００２２】
この際、第１入力メッセージの変更の有無を判断する段階において、第１入力メッセージに仮想入力メッセージフラグが含まれていない場合、第１入力メッセージが変更されたと判断することを特徴とする。
【００２３】
一実施例において、入力メッセージを利用してカーネルレベルでの第１時間情報を生成する段階と、第１時間情報が各入力メッセージ毎に同一である場合、入力メッセージが第２タイプの仮想入力メッセージであると判断し、マクロハックが発生したものと判断する段階と、をさらに含んでもよい。
【００２４】
この際、第２タイプの仮想入力メッセージは、カーネルレベルで仮想入力ドライバを利用して発生したものであることを特徴とし、第１時間情報は、前記入力メッセージから得られるキーダウン時間とキーアップ時間との差値であることを特徴とする。
【００２５】
一方、前記入力メッセージから得られるカーネルレベルでの第１時間情報と、時間関連ＡＰＩから得られるユーザレベルでの第２時間情報と、を利用してスピードハックの発生の有無を探知する段階をさらに含んでもよい。
【００２６】
この際、第１時間情報は、カーネルレベルでのキーダウン時間とキーアップ時間との差値であり、第２時間情報は、時間関連ＡＰＩを利用して算出されたユーザレベルでのキーダウン時間とキーアップ時間との差値であることを特徴とする。
【００２７】
また、スピードハックの発生の有無を探知する段階において、第１時間情報と第２時間情報との差が閾値以上である場合、前記スピードハックが発生したものと判断することを特徴とする。
【００２８】
上述の目的を果たすための本発明の一実施例におけるフックを利用したコンピュータセキュリティサービス提供装置は、オペレーティングシステムから受信される入力メッセージをフックを利用してモニタリングするフック管理モジュールと、入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断することにより、マクロハックの発生の有無を探知するマクロハック探知モジュールと、マクロハックが発生したと探知されると、入力メッセージをフィルタリングするフィルタリングモジュールと、を含む。
【発明の効果】
【００２９】
本発明によると、入力メッセージに仮想入力メッセージフラグが存在するか否かを判断することにより、ユーザレベルで試みられるマクロハックを探知したり、カーネルレベルでの時間情報を利用してカーネルレベルで試みられるマクロハックを探知したりすることができるため、コンピュータセキュリティの実現が容易であるという効果がある。
【００３０】
また、本発明は、自主的に発生させた仮想入力メッセージを利用して入力メッセージの変更の有無を判断することができるため、入力メッセージに含まれている仮想入力メッセージフラグを削除してマクロハックの試みを隠匿することを根本的に防止することができるという効果がある。
【００３１】
また、本発明は、フックをシステムメッセージキューにインストールすることにより、コンピュータの負荷を低減させることができるという効果がある。
【００３２】
また、本発明は、入力メッセージから得られるカーネルレベルでの時間と、時間関連ＡＰＩから得られるユーザレベルでの時間と、の差のみを利用してスピードハックの試みを探知することができるため、スピードハックの探知の実現が容易であるという効果がある。
【図面の簡単な説明】
【００３３】
【図１】従来技術におけるスピードハックを遮断する方法を示す図面である。
【図２】本発明の一実施例におけるコンピュータセキュリティサービス提供装置の概略的なブロック図である。
【図３】本発明の第１実施例におけるマクロハックを遮断する方法を示すフローチャートである。
【図４】本発明の第２実施例におけるマクロハックを遮断する方法を示すフローチャートである。
【図５】本発明の第３実施例におけるスピードハックを遮断する方法を示すフローチャートである。
【発明を実施するための形態】
【００３４】
本発明について説明する前に、本発明で用いられる入力メッセージとフックとについて簡単に説明する。
【００３５】
まず、入力メッセージとは、キーボードやマウスなどの入力装置によって発生する実際の入力、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）や装置ドライバを利用してソフトウェア的に発生させる仮想入力、仮想入力ドライバを利用して発生させる仮想入力に基づき、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）によって生成されるメッセージを意味する。オペレーティングシステムによって生成された入力メッセージは、システムメッセージキューに一時的に保存された後、各プロセス毎に分類され、各プロセス毎のスレッドメッセージキューに割り当てられる。一実施例において、上述した入力メッセージはウィンドウ入力メッセージであってもよく、以下では説明の便宜上、入力メッセージがウィンドウ入力メッセージであると仮定して説明するが、これは一例に過ぎず、入力メッセージがウィンドウ入力メッセージに限定されるものではない。
【００３６】
次に、フック（Ｈｏｏｋ）とは、入力メッセージのトラフィックをモニタリングするためにアプリケーションとしてインストールすることができるシステムメッセージハンドリングメカニズムを意味する。このようなフックを利用して、オペレーティングシステムから伝達されるウィンドウ入力メッセージの内容を確認することができる。一実施例において、このようなフックはウィンドウメッセージをフックするためのウィンドウメッセージフックであってもよく、以下では説明の便宜上、フックがウィンドウメッセージフックであると仮定して説明するが、これは一例に過ぎず、フックがウィンドウメッセージフックに限定されるものではない。
【００３７】
以下、添付の図面を参照して本発明の実施例について詳細に説明する。
【００３８】
図２は本発明の一実施例におけるコンピュータセキュリティサービス提供装置をコンピュータシステムに適用した図である。本発明の一実施例におけるコンピュータセキュリティサービス提供装置３００は、コンピュータシステム３０２と連動することにより、悪意的なユーザがゲームで利益を取るために試みるマクロハック（Ｍａｃｒｏ  Ｈａｃｋ）やスピードハック（Ｓｐｅｅｄ  Ｈａｃｋ）を探知し、マクロハックやスピードハックを遮断する役割を遂行する。
【００３９】
このようなコンピュータセキュリティサービス提供装置３００は、図示されているように、ウィンドウメッセージフック管理モジュール３１０と、マクロハック探知モジュール３２０と、フィルタリングモジュール３３０と、を含む。
【００４０】
まず、ウィンドウメッセージフック管理モジュール３１０は、ウィンドウメッセージフック（Ｈｏｏｋ）をインストールし（Ｉｎｓｔａｌｌ）、インストールされたウィンドウメッセージフックを利用してオペレーティングシステム３４０から受信されるウィンドウ入力メッセージをモニタリングする。
【００４１】
この際、ウィンドウメッセージフック管理モジュール３１０は、オペレーティングシステム３４０から伝達される全てのウィンドウメッセージが一時的に保存されるシステムメッセージキュー３５０にウィンドウメッセージフックをインストールすることができる。本発明において、ウィンドウメッセージフック管理モジュール３１０がウィンドウメッセージフックをシステムメッセージキュー３５０にインストールするのは、各プロセス毎のウィンドウメッセージが一時的に保存されるスレッドメッセージキュー３６０にウィンドウメッセージフックをインストールすると、各スレッドメッセージキュー３６０毎にウィンドウメッセージフックを全てインストールしなければならないため、システムの負荷が加重される可能性があるためである。
【００４２】
一実施例において、ウィンドウメッセージフック管理モジュール３１０によってインストールされるウィンドウメッセージフックは、キーボードローレベルメッセージフックまたはマウスローレベルメッセージフックを含んでもよい。
【００４３】
上述のウィンドウメッセージフック管理モジュール３１０は、下記のような関数を呼び出すことによりウィンドウメッセージフックをインストールしてもよい。
【００４４】
0005580878.tif 000002
【００４５】
ここで、ＩｄＨｏｏｋはインストールすべきウィンドウメッセージフックタイプを意味するものであり、一実施例においてフックタイプは、上述したように、キーボードローレベルメッセージフックまたはマウスローレベルメッセージフックであってもよい。フックタイプがキーボードローレベルメッセージフックである場合、フックタイプは「ＷＨ＿ＫＥＹＢＯＡＲＤ＿ＬＬ」に設定され、フックタイプがマウスローレベルメッセージフックである場合、フックタイプは「ＷＨ＿ＭＯＵＳＥ＿ＬＬ」に設定されてもよい。
【００４６】
次に、Ｉｐｆｎはウィンドウメッセージフック管理モジュール３１０のポインタを意味し、ｈＭｏｄはウィンドウメッセージフック管理モジュール３１０を有するＤＬＬのハンドルを意味する。また、ｄｗＴｈｒｅａｄＩｄはウィンドウメッセージフック管理モジュール３１０に関するスレッドメッセージキューの識別子を意味するものであり、その値が０に設定されている場合、当該ウィンドウメッセージフック管理モジュール３１０はシステムに存在する全てのスレッドメッセージキューに関するウィンドウメッセージフック管理モジュール３１０であることを示す。
【００４７】
次に、マクロハック探知モジュール３２０は、ウィンドウ入力メッセージフック管理モジュール３１０によりモニタリングされたウィンドウ入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断することにより、マクロハックの試みがあるか否かを探知する。
【００４８】
ここで、仮想入力メッセージフラグとは、ユーザレベルでウィンドウＡＰＩを利用して仮想入力が発生すると、オペレーティングシステム３４０が仮想入力に基づいてウィンドウ入力メッセージを生成する際に、ウィンドウ入力メッセージに挿入されるフラグを意味する。
【００４９】
従って、マクロハック探知モジュール３２０は、モニタリングされたウィンドウ入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断することにより、当該ウィンドウ入力メッセージが仮想入力メッセージであるか否かを判断することができる。
【００５０】
判断結果、ウィンドウ入力メッセージに仮想入力メッセージフラグが含まれている場合、マクロハック探知モジュール３２０は、当該ウィンドウ入力メッセージを仮想入力メッセージであると決め、悪意的なユーザによってマクロハックが試みられていると判断する。
【００５１】
一方、マクロハック探知モジュール３２０によって仮想入力メッセージではないと判断されたウィンドウ入力メッセージは、システムメッセージキュー３５０からスレッドメッセージキュー３６０に割り当てられた後、メッセージ処理部４１０によって処理される。
【００５２】
フィルタリングモジュール３３０は、マクロハック探知モジュール３２０によってマクロハックの試みがあると判断されると、当該ウィンドウ入力メッセージをフィルタリングすることにより、当該ウィンドウ入力メッセージがシステムメッセージキュー３５０からスレッドメッセージキュー３６０に割り当てられないようにする。
【００５３】
このように本発明は、悪意的なユーザがマクロハックを試みるためにウィンドウＡＰＩを利用して仮想入力を発生させた場合、当該仮想入力に基づいて生成されたウィンドウ入力メッセージに仮想入力メッセージフラグが存在するか否かを判断することによりマクロハックの試みを探知することができ、マクロハックの試みが探知された場合、当該ウィンドウ入力メッセージをフィルタリングすることによりマクロハックの試みを遮断する。
【００５４】
上述の実施例では、マクロハック探知モジュール３２０は、ウィンドウ入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断することによりマクロハックを探知すると記載した。
【００５５】
しかし、ウィンドウメッセージフック管理モジュール３１０がシステムメッセージキュー３５０にウィンドウメッセージフックをインストールした後、悪意的なユーザがシステムメッセージキュー３５０にさらにウィンドウメッセージフックをインストールする場合、悪意的なユーザがウィンドウメッセージフック管理モジュール３１０より先にウィンドウ入力メッセージをモニタリングすることができるため、悪意的なユーザがウィンドウ入力メッセージから仮想入力メッセージフラグを削除することができるようになる。
【００５６】
この場合、ウィンドウメッセージフック管理モジュール３１０によりモニタリングされるウィンドウ入力メッセージが仮想入力メッセージである場合にも、既に悪意的なユーザによってウィンドウ入力メッセージから仮想入力メッセージフラグが削除されているため、マクロ探知モジュール３２０は当該ウィンドウ入力メッセージを仮想入力メッセージであると判断せず、そのためマクロハックの試みでないと判断するようになる。
【００５７】
これを防止するために、本発明によるコンピュータセキュリティサービス提供装置３００は、仮想入力発生モジュール３７０と変更判断モジュール３８０とをさらに含んでもよい。
【００５８】
仮想入力発生モジュール３７０は、自主的に仮想入力を発生させて、オペレーティングシステム３４０及び後述する変更判断モジュール３８０に提供する役割を遂行する。一実施例において、仮想入力発生モジュール３７０は、仮想入力を発生させるにあたり、仮想入力がコンピュータシステムに影響を与えないようにするために、「ＯｘＦＦ」のように何の意味も有しない値を利用して仮想入力を発生させてもよい。
【００５９】
以後、オペレーティングシステム３４０は、仮想入力発生モジュール３７０によって生成された仮想入力に基づいてウィンドウ入力メッセージを生成する際に、一般的なウィンドウ入力メッセージのようにウィンドウ入力メッセージに仮想入力メッセージフラグを挿入する。
【００６０】
変更判断モジュール３８０は、オペレーティングシステム３４０から伝達されるウィンドウ入力メッセージのうち仮想入力発生モジュール３７０による仮想入力に基づいて生成されたウィンドウ入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断する。判断結果、当該ウィンドウ入力メッセージに仮想入力メッセージフラグが含まれていない場合、当該ウィンドウ入力メッセージが変更されたと判断する。
【００６１】
即ち、自主的に発生させた仮想入力に基づいて生成されたウィンドウ入力メッセージは仮想入力メッセージであるため仮想入力メッセージフラグが含まれていなければならないにも関わらず、当該仮想入力に基づいて生成されたウィンドウ入力メッセージに仮想入力メッセージフラグが含まれていないということは、ユーザが人為的にウィンドウ入力メッセージから仮想入力メッセージフラグを削除したということを意味し、これは、悪意的なユーザがウィンドウメッセージフックを利用してウィンドウ入力メッセージを変更したことを意味する。
【００６２】
一方、上述の実施例では、コンピュータセキュリティサービス提供装置３００がウィンドウＡＰＩを利用して発生された仮想入力を利用して試みられるマクロハックを遮断すると記載した。しかし、マクロハックは、ウィンドウＡＰＩを利用して発生された仮想入力だけでなく、カーネルレベルで仮想入力ドライバを利用して生成された仮想入力を利用して試みられてもよい。この場合には、上述したようにウィンドウ入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断してマクロハックを探知することができない。
【００６３】
従って、本発明は、カーネルレベルで仮想入力ドライバを利用して発生させた仮想入力を利用して試みられるマクロハックを遮断するために、図示されているように、時間情報生成モジュール３９０をさらに含んでもよい。
【００６４】
時間情報生成モジュール３９０は、ウィンドウメッセージフック管理モジュール３１０によってモニタリングされたウィンドウ入力メッセージを利用してカーネルレベルでの第１時間情報を生成する。一実施例において、時間情報生成モジュール３９０は、ウィンドウ入力メッセージから得られるカーネルレベルでのキーダウン発生時間とキーアップ発生時間との差値を利用して第１時間情報を算出してもよい。
【００６５】
このような実施例によると、マクロハック探知モジュール３２０は、時間情報生成モジュール３９０によって生成された第１時間情報が各ウィンドウ入力メッセージ毎に同一であるか否かを判断する。判断結果、第１時間情報がウィンドウ入力メッセージ毎に同一である場合、マクロハック探知モジュール３２０は当該ウィンドウ入力メッセージがカーネルレベルでの仮想入力メッセージであると判断し、マクロハックが発生したものと判断する。
【００６６】
ここで、第１時間情報が各ウィンドウ入力メッセージ毎に同一である場合、マクロハック探知モジュール３２０が当該ウィンドウ入力メッセージを仮想入力メッセージであると判断するのは、仮想入力ドライバを利用して機械的に発生する仮想入力の場合、キーダウン発生時間とキーアップ発生時間との差値である第１時間情報が全てのウィンドウ入力メッセージにおいて同一である可能性が高いためである。
【００６７】
一方、上述した実施例では、コンピュータセキュリティサービス提供装置３００が仮想入力を利用して試みられるマクロハックを探知すると記載したが、スピードハック探知モジュール４００をさらに含むことにより、時間関連ＡＰＩのフックを利用したスピードハックの試みも探知することができる。
【００６８】
スピードハック探知のために、上述した時間情報生成モジュール３９０は、ウィンドウ入力メッセージから得られるカーネルレベルでの第１時間情報だけでなく、時間関連ＡＰＩから得られるユーザレベルでの第２時間情報を生成する。ここで、時間関連ＡＰＩは、ＧｅｔＴｉｃｋＣｏｕｎｔ、ＳｅｔＴｉｍｅｒ、ｔｉｍｅＧｅｔＴｉｍｅなどを含んでもよく、第２時間情報は、時間関連ＡＰＩから得られるユーザレベルでのキーダウン発生時間とキーアップ発生時間との差値を利用して生成されてもよい。
【００６９】
スピードハック探知モジュール４００は、上述の時間情報生成モジュール３９０により生成された第１時間情報及び第２時間情報を利用してスピードハックの発生の有無を探知する。具体的には、スピードハック探知モジュール４００は、第１時間情報と第２時間情報との差が閾値以上である場合、スピードハックが発生したと判断する。即ち、第１時間情報と第２時間情報との差が閾値以上であるということは、悪意的なユーザがユーザレベルで時間関連ＡＰＩを利用して時間を変更したことを意味するため、スピードハックが発生したと判断するのである。
【００７０】
以下、図３から図５を参照して、本発明に係るフックを利用したコンピュータセキュリティサービス提供方法について説明する。
【００７１】
図３は本発明の第１実施例において、ウィンドウメッセージフックを利用してマクロハックを遮断する方法を示すフローチャートである。図３に示されたマクロハックを遮断する方法は、悪意的なユーザがユーザレベルでウィンドウＡＰＩを利用して発生させた仮想入力を利用して試みられるマクロハックを遮断する方法を示す。
【００７２】
図示されているように、まず、ウィンドウメッセージフックをインストールする（Ｓ４００）。一実施例において、ウィンドウメッセージフックは全てのウィンドウメッセージが一時的に保存されるシステムメッセージキューにインストールされてもよく、この際インストールされるウィンドウメッセージフックは、キーボードローレベルメッセージフックまたはマウスローレベルメッセージフックを含んでもよい。
【００７３】
その後、ウィンドウメッセージフックが正常にインストールされたか否かを判断し（Ｓ４０５）、正常にインストールされた場合、インストールされたウィンドウメッセージフックを利用してオペレーティングシステムから受信されるウィンドウ入力メッセージをモニタリングする（Ｓ４１０）。
【００７４】
次に、モニタリングされるウィンドウ入力メッセージに仮想入力メッセージフラグが含まれているか否かを判断する（Ｓ４２０）。
【００７５】
判断結果において、ウィンドウ入力メッセージに仮想入力メッセージフラグが含まれている場合、当該ウィンドウ入力メッセージを仮想入力メッセージであると判断することにより、マクロハックが発生したと判断し、当該ウィンドウ入力メッセージをフィルタリングする（Ｓ４３０）。
【００７６】
Ｓ４２０で、ウィンドウ入力メッセージに仮想入力メッセージフラグが含まれていない場合、当該ウィンドウ入力メッセージを仮想入力メッセージではないと判断し、当該ウィンドウメッセージをメッセージループによって処理する（Ｓ４４０）。
【００７７】
一方、上述の図３には示していないが、ウィンドウメッセージフックがインストールされた後、悪意的なユーザがさらにウィンドウメッセージフックをインストールする場合、悪意的なユーザが先にウィンドウ入力メッセージをモニタリングし、ウィンドウ入力メッセージから仮想入力メッセージフラグを削除してマクロハックを隠匿する可能性がある。
【００７８】
これを防止するために、本発明は、上述したウィンドウメッセージフックをインストールする過程の後、自主的に仮想入力を発生させてオペレーティングシステムに提供する過程（不図示）と、自主的に発生された仮想入力に基づいて生成されたウィンドウ入力メッセージをモニタリングすることにより、ウィンドウ入力メッセージの変更の有無を判断する過程（不図示）と、をさらに含んでもよい。
【００７９】
この際、ウィンドウ入力メッセージの変更の有無を判断する際、自主的に発生された仮想入力に基づいて生成されたウィンドウ入力メッセージに仮想入力メッセージフラグが含まれていない場合、当該ウィンドウ入力メッセージが変更されたと判断してもよい。
【００８０】
図４は本発明の第２実施例において、フックを利用してマクロハックを遮断する方法を示すフローチャートである。図４に示されたマクロハックを遮断する方法は、悪意的なユーザがカーネルレベルで仮想入力ドライバを利用して発生させた仮想入力を利用して試みられるマクロハックを遮断する方法を示す。
【００８１】
図示されているように、まず、ウィンドウメッセージフックをインストールする（Ｓ５００）。第１実施例と同様に、ウィンドウメッセージフックは全てのウィンドウメッセージが一時的に保存されるシステムメッセージキューにインストールされてもよく、この際にインストールされるウィンドウメッセージフックは、キーボードローレベルメッセージフックまたはマウスローレベルメッセージフックであってもよい。
【００８２】
その後、ウィンドウメッセージフックが正常にインストールされたか否かを判断し（Ｓ５０５）、正常にインストールされた場合、インストールされたウィンドウメッセージフックを利用してオペレーティングシステムから受信されるウィンドウ入力メッセージをモニタリングする（Ｓ５１０）。
【００８３】
次に、モニタリングされたウィンドウ入力メッセージを利用してカーネルレベルでの第１時間情報を生成する（Ｓ５２０）。一実施例において、第１時間情報はウィンドウ入力メッセージから得られるキーダウン時間とキーアップ時間との差値を利用して生成されてもよい。
【００８４】
その後、Ｓ５２０で生成された第１時間情報が各ウィンドウ入力メッセージ毎に同一であるか否かを判断する（Ｓ５３０）。
【００８５】
判断結果において、各ウィンドウ入力メッセージ毎に第１時間情報が同一である場合、当該ウィンドウ入力メッセージを仮想入力メッセージであると判断することにより、マクロハックが発生したと判断し、当該ウィンドウ入力メッセージをフィルタリングする（Ｓ５４０）。
【００８６】
Ｓ５３０の判断結果において、各ウィンドウ入力メッセージ毎に第１時間情報が同一でない場合、当該ウィンドウ入力メッセージを仮想入力メッセージでないと判断し、当該ウィンドウメッセージをメッセージループによって処理する（Ｓ５５０）。
【００８７】
一方、第２実施例においても、第１実施例と同様に、悪意的なユーザがウィンドウ入力メッセージから仮想入力メッセージフラグを削除してマクロハックを秘匿することを防止するために、上述のウィンドウメッセージフックをインストールする過程の後、自主的に仮想入力を発生させてオペレーティングシステムに提供する過程（不図示）と、自主的に発生された仮想入力に基づいて生成されたウィンドウ入力メッセージをウィンドウメッセージフックを利用してモニタリングすることにより、ウィンドウ入力メッセージの変更の有無を判断する過程（不図示）と、をさらに含んでもよい。これについての説明は、既に具体的に説明したため詳細な説明は省略する。
【００８８】
上述した実施例では、ユーザレベルでのウィンドウＡＰＩを利用したマクロハックの探知とカーネルレベルでの仮想入力ドライバを利用したマクロハックの探知とが別の過程により行われることを記載したが、変形された実施例では一つに統合されて行われてもよい。
【００８９】
即ち、ユーザレベルでのウィンドウＡＰＩを利用したマクロハックの探知過程を行った後、カーネルレベルでの仮想入力ドライバを利用したマクロハックの探知過程を行ってもよく、カーネルレベルでの仮想入力ドライバを利用したマクロハックの探知過程を行った後、ユーザレベルでのウィンドウＡＰＩを利用したマクロハックの探知過程を行ってもよい。
【００９０】
図５は本発明の第３実施例において、フックを利用してスピードハックを遮断する方法を示すフローチャートである。
【００９１】
図示されているように、まず、ウィンドウメッセージフックをインストールする（Ｓ６００）。第１実施例と同様に、ウィンドウメッセージフックは全てのウィンドウメッセージが一時的に保存されるシステムメッセージキューにインストールされてもよく、この際にインストールされるウィンドウメッセージフックは、キーボードローレベルメッセージフックまたはマウスローレベルメッセージフックであってもよい。
【００９２】
その後、ウィンドウメッセージフックが正常にインストールされたか否かを判断し（Ｓ６０５）、正常にインストールされた場合、インストールされたウィンドウメッセージフックを利用してオペレーティングシステムから受信されるウィンドウ入力メッセージをモニタリングする（Ｓ６１０）。
【００９３】
次に、モニタリングされたウィンドウ入力メッセージを利用してカーネルレベルでの第１時間情報を生成し、時間関連ＡＰＩを利用してユーザレベルでの第２時間情報を生成する（Ｓ６２０）。
【００９４】
一実施例において、第１時間情報はウィンドウ入力メッセージから得られるキーダウン発生時間とキーアップ発生時間との差値を利用して生成されてもよく、第２時間情報は時間関連ＡＰＩを利用して得られるキーダウン発生時間とキーアップ発生時間との差値を利用して生成されてもよい。
【００９５】
その後、第１時間情報と第２時間情報との差値を算出し（Ｓ６３０）、算出された差値が閾値以上であるか否かを判断する（Ｓ６４０）。
【００９６】
判断結果において、算出された差値が閾値以上である場合、スピードハックの試みがあると判断し、当該ウィンドウ入力メッセージをフィルタリングする（Ｓ６５０）。また、算出された差値が閾値未満である場合、当該ウィンドウ入力メッセージをメッセージループによって処理する（Ｓ６６０）。
【００９７】
上述のコンピュータセキュリティサービス提供方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態において実現され、コンピュータ読み取り可能な記録媒体に記録されてもよい。この際、コンピュータ読み取り可能な記録媒体は、プログラム命令、データファイル、データ構造などを単独で、または組み合わせて含んでもよい。一方、記録媒体に記録されるプログラム命令は、本発明のために特に設計及び構成されたものであってもよく、コンピュータソフトウェア分野の当業者に公知であって使用可能なものであってもよい。
【００９８】
コンピュータ読み取り可能な記録媒体としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体（Ｍａｇｎｅｔｉｃ Ｍｅｄｉａ）、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体（Ｏｐｔｉｃａｌ Ｍｅｄｉａ）、フロプティカルディスク（Ｆｌｏｐｔｉｃａｌ Ｄｉｓｋ）のような磁気−光媒体（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ Ｍｅｄｉａ）、及びＲＯＭ、ＲＡＭ、フラッシュメモリなどのような、プログラム命令を保存及び実行するように特に構成されたハードウェア装置が含まれる。
【００９９】
また、プログラム命令としては、コンパイラによって作られるもののような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。前記ハードウェア装置は、本発明の動作を行うために一つ以上のソフトウェアモジュールとして作動するように構成されてもよく、その逆も同様である。
【０１００】
本発明の属する技術分野における当業者は、本発明がその技術的思想や本質的特徴を変更することなく、他の具体的な形態に実施されてもよいと理解すべきである。
【０１０１】
従って、上述の実施例は、あらゆる面で例示的なものであり、限定的なものではないと理解すべきである。本発明の範囲は、上記の詳細な説明ではなく、添付の特許請求の範囲によって規定され、特許請求の範囲の意味及び範囲、及びその等価概念から導き出されるあらゆる変更または変形された形態が本発明の範囲に含まれると解釈されるべきである。
【符号の説明】
【０１０２】
３１０  ウィンドウメッセージフック管理モジュール
３２０  マクロハック探知モジュール
３３０  フィルタリングモジュール
３７０  仮想入力発生モジュール
３８０  変更判断モジュール
３９０  時間情報生成モジュール
４００  スピードハック探知モジュール
【図１】
0005580878.tif 000003
【図２】
0005580878.tif 000004
【図３】
0005580878.tif 000005
【図４】
0005580878.tif 000006
【図５】
0005580878.tif 000007