(57)【要約】【課題】有害である可能性のあるマルウェアを識別する方法を提供することである。【解決手段】この方法は、ａ）実行されようとしている実行ファイルを識別するステップと、ｂ）前記実行ファイルのプロセスによって開始されたスレッドの子孫である全てのスレッドを監視する監視エージェントを提供するステップと、ｃ）前記子孫スレッドのうちの一つが、疑わしいパッチが内部で作成されるターゲットプロセスに到達した場合に、マルウェアが存在する見込みが高いと結論付けるように、前記監視エージェントを構成するステップとを含む。【選択図】図１
2014182837.tif 000002
【特許請求の範囲】
【請求項１】
有害である可能性のあるマルウェアを識別する方法であって、
ａ）実行されようとしている実行ファイルを識別するステップと、
ｂ）前記実行ファイルのプロセスによって開始されたスレッドの子孫である全てのスレッドを監視する監視エージェントを提供するステップと、
ｃ）前記子孫スレッドのうちの一つが、疑わしいパッチが内部で作成されるターゲットプロセスに到達した場合に、マルウェアが存在する見込みが高いと結論付けるように、前記監視エージェントを構成するステップと
を含む方法。
【請求項２】
前記ターゲットプロセスがブラウザである、請求項１に記載の方法。
【請求項３】
前記監視エージェントが、実行されようとしている実行ファイルを識別したとき、前記実行ファイルの暗号ハッシュアルゴリズムをチェックして、前にシステム中で実行されたことがあるかどうか判定する、請求項１に記載の方法。
【請求項４】
前記実行ファイルが初めて実行されつつあると思われる場合は、前記監視エージェントが前記実行ファイルの追跡を継続する、請求項３に記載の方法。
【請求項５】
前記監視エージェントが、前記プロセスが実行される度に前記プロセスを追跡する、請求項３に記載の方法。
【請求項６】
前記監視エージェントがＷｉｎｄｏｗｓ(登録商標)環境で動作する、請求項１に記載の方法。
【請求項７】
前記監視エージェントが、ＣＲＴ（Ｃｒｅａｔｅ  Ｒｅｍｏｔｅ  Ｔｈｒｅａｄ）関数に対してフックを配置することによって前記ＣＲＴ関数を監視する、請求項６に記載の方法。
【請求項８】
前記実行ファイルが、正当なシステムプロセス中でスレッドを作成する、請求項１に記載の方法。
【請求項９】
正当なプロセスによって開かれた各スレッドに対してＣＲＴ監視が行われる、請求項７に記載の方法。
【請求項１０】
前記監視エージェントが、前記新しいスレッドがどのスレッドから生じたかチェックし、前記スレッドが疑わしいスレッドによって（例えばＣＲＴを使用して）開始された場合にのみ前記スレッドを追跡する、請求項７に記載の方法。
【請求項１１】
前記監視エージェントが、疑わしい挙動を伴う正当なプロセスのホワイトリストを維持する、請求項１に記載の方法。
【請求項１２】
マルウェアが存在する見込みがあると前記監視エージェントが結論付けたときに是正アクションが実施される、請求項１に記載の方法。
【請求項１３】
前記暗号ハッシュアルゴリズムがＭＤ５、ＳＨＡ１、及びＳＨＡ２から選択される、請求項３に記載の方法。
【請求項１４】
実行ファイルのプロセスによって開始されたスレッドの子孫である全てのスレッドを追跡するように構成された監視エージェント。
【請求項１５】
前記子孫スレッドのうちの一つが、疑わしいパッチが内部で作成されるターゲットプロセスに到達した場合に、マルウェアが存在する見込みが高いと結論付けるように構成された、請求項１４に記載の監視エージェント。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアセキュリティの分野に関する。
【背景技術】
【０００２】
マルウェア攻撃から防御するための最も効率的な方法の一つは、可能な最も早い時期にマルウェアの存在の可能性を能動的に識別することによるものである。これは、マルウェア（通常はそのシグネチャによって識別される）がないかどうかコンピュータシステムを定期的に走査するという、より受け身的な手法とは対照的である。しかし、マルウェアは絶えず開発されており、より識別されにくくするための種々の方法がある。
【０００３】
技術は常に、マルウェアと戦うための新しい改善された方法を探っているが、現在までのところ、マルウェアが存在する可能性を早期に識別するための解決法はほとんどない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、既存のマルウェア対策解決法の欠点を克服する方法及びシステムであって、コンピュータシステム中にマルウェアが存在する可能性の早期検出をもたらすことのできる方法及びシステムを提供することである。
【０００５】
本発明の別の目的は、それを使用するコンピュータシステムにとってほぼ邪魔にならないマルウェア対策解決法を提供することである。
【０００６】
本発明の他の目的及び利点は、本記述が進行するにつれて明らかになるであろう。
【課題を解決するための手段】
【０００７】
一態様では、本発明は、有害である可能性のあるマルウェアを識別する方法に関し、この方法は、
ａ）実行されようとしている実行ファイルを識別するステップと、
ｂ）前記実行ファイルのプロセスによって開始されたスレッドの子孫（descendent）である全てのスレッドを監視する監視エージェントを提供するステップと、
ｃ）前記子孫スレッドのうちの一つが、疑わしいパッチが内部で作成されるターゲットプロセスに到達した場合に、マルウェアが存在する見込みが高いと結論付けるように、前記監視エージェントを構成するステップとを含む。
【０００８】
本発明の一実施形態では、ターゲットプロセスはブラウザである。本発明の一実施形態によれば、監視エージェントは、実行されようとしている実行ファイルを識別したとき、その暗号ハッシュアルゴリズムをチェックして、前にシステム中で実行されたことがあるかどうか判定する。暗号ハッシュアルゴリズムは、任意の適切なアルゴリズムとすることができ、例えばＭＤ５、ＳＨＡ１、及びＳＨＡ２から選択することができる。本発明の一実施形態では、実行ファイルが初めて実行されつつあると思われる場合は、監視エージェントは実行ファイルの追跡（follow）を継続する。本発明の別の実施形態では、監視エージェントは、プロセスが実行される度にプロセスを追跡する。
【０００９】
本発明はどんな特定のオペレーティングシステムにも限定されないが、本発明の一実施形態によれば、監視エージェントは、Ｗｉｎｄｏｗｓ(登録商標)環境で動作し、ＣＲＴ（Ｃｒｅａｔｅ  Ｒｅｍｏｔｅ  Ｔｈｒｅａｄ）関数を見張り、ＣＲＴへのフック（ｈｏｏｋ）を作成する。
【００１０】
本発明はまた、実行ファイルが正当なシステムプロセス中でスレッドを作成する場合にも、効率的に動作することができる。この場合、本発明の一実施形態によれば、正当なプロセスによって開かれた各スレッドに対して、ＣＲＴ監視が行われる。本発明の代替実施形態では、監視エージェントは、新しいＣＲＴがどのスレッドから生じたかチェックし、前記ＣＲＴが疑わしいスレッドから来たものである場合にのみ、このＣＲＴを追跡する。
【００１１】
監視エージェントはまた、疑わしい挙動を伴う正当なプロセスの、ホワイトリストを維持することができる。これにより監視エージェントの動作を合理化することができるが、本発明は、このようなホワイトリストがなくても動作することができる。
【００１２】
マルウェアが存在する見込みがあると監視エージェントが結論付けたとき、是正アクションが実施される。是正アクションは、どんなタイプのものでもよく、例えば、マルウェアを隔離又はブロックすること、ユーザ又は指定エンティティに危険を警告することなどを含み得る。
【００１３】
別の態様では、本発明は、実行ファイルのプロセスによって開始されたスレッドの子孫である全てのスレッドを追跡するように構成された監視エージェントを対象とする。本発明の一実施形態では、監視エージェントは、前記子孫スレッドのうちの一つが、疑わしいパッチが内部で作成されるターゲットプロセスに到達した場合に、マルウェアが存在する見込みが高いと結論付けるように構成される。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態による方法の概略フローチャートである。
【発明を実施するための形態】
【００１５】
以下の記述では、用語「マルウェア」、「有害である可能性のあるコード」、及び「悪意のあるコード」は、交換可能に使用される。本発明は、多くのタイプのマルウェアによって使用される手口に対処する問題を対象とするが、この手口とは、マルウェアが実行され始めると悪意のあるコードをシステムの正当なプロセスに注入するものである。注入が完了するとすぐに、マルウェアプロセスは終了し、マルウェアは今や、前述の正当なシステムプロセス中で実行されるそれ自体のスレッド中で実行される。プロセスは正当なので、マルウェアの存在を識別することは、大幅により困難になる。
【００１６】
しかし、正当なシステムプロセスにスレッドを注入することは、マルウェアの最終目的ではない。マルウェアは通常、異なるターゲットプロセスを狙う。多くの場合、ターゲットはブラウザであり、この場合、マルウェアは、どのブラウザプロセスが開いているかチェックして、そのブラウザプロセスにコードを注入することになる。
【００１７】
マルウェアが従うプロセスの例示的な流れは、以下のとおりである。
１．定期的（例えば１００ミリ秒ごと）に、システム中の全てのプロセスを列挙する。
２．名前（例えば「firefox.exe」、「iexplore.exe」）によってターゲットプロセスを識別する。
３．例えばＷｒｉｔｅＶｉｒｔｕａｌＭｅｍｏｒｙを使用して、悪意のあるコードをターゲットプロセスに注入する。
４．ＣｒｅａｔｅＲｅｍｏｔｅＴｈｒｅａｄを使用して、悪意のあるコードを本文とするリモートスレッドを作成する。
【００１８】
当業者には明らかであろうが、このプロセス（すなわち、現在マルウェアが実行されている場所とは異なるプロセス中で、新しいスレッドを作成すること）は、複数回実施される可能性があり、それにより、元のマルウェアから生じてターゲットプロセスに至る、スレッドの連鎖が生み出される可能性がある。本発明によれば、システム中で実行されるプロセスを監視することは、マルウェアの起源とターゲットの両方を識別することを含む。例えば、ターゲットプロセス中で新しいスレッドが確立され、この新しいスレッドが実行されたときに、扱いに注意を要するプロセスへのフック又はパッチが識別された場合は、本発明によれば、スレッドの連鎖は疑わしいと考えられる。さらに別の例は、元のプロセスが、Ｐｒｏｇｒａｍ  Ｆｉｌｅｓフォルダから実行されず、Ｔｅｍｐフォルダなど別のフォルダから実行される場合であり、このＴｅｍｐフォルダ自体が疑わしい。この場合、悪意がある可能性があるとしてプロセスを分類することはまた、追加の要素（ディジタルシグネチャの欠落、特に小さいファイルサイズなど）を調べることによって、より確信を持って行うことができる。
【００１９】
したがって、本発明は、プロセススレッドのアクティビティを追跡（follow）することによって機能する。これは本質的に以下のとおりである。
【００２０】
１．本発明による監視エージェントは、実行されようとしている実行ファイルを識別し、その暗号ハッシュアルゴリズム（例えばＭＤ５又はＳＨＡ１又はＳＨＡ２）をチェックし、前にシステム中で実行されたことがあるかどうか判定する。この実行ファイルが初めて実行されると思われる場合は、監視エージェントは実行ファイルの追跡を継続することになる。
【００２１】
２．任意選択で、監視エージェントは、プロセスが実行される度にプロセスを追跡することができる。これは例えば、マルウェアが、その悪意あるアクティビティを開始する前に複数回にわたり無害で実行されるようにプログラムされている場合のためである。
【００２２】
３．Ｗｉｎｄｏｗｓ(登録商標)環境で稼働するとき、監視エージェントは、マルウェアによって通常使用されるＣＲＴ（Ｃｒｅａｔｅ  Ｒｅｍｏｔｅ  Ｔｈｒｅａｄ）関数を見張る（watch）。本発明の監視エージェントは、カーネルドライバ又はユーザ空間実装（userspace implementation）を通して動作することができ、この場合、監視エージェントはＣＲＴへのフックを作成し、疑わしいプロセスがＣＲＴを呼び出したとき、監視エージェントは、ＣＲＴがスレッドをその中で作成するプロセスの識別を検証する。加えて、ターゲットプロセスについても同じことが行われ、そのＣＲＴへのフックが作成される。
【００２３】
４．本発明の一実施形態では、ＣＲＴ監視は、正当なプロセスによって開かれた各スレッドに適用される。本発明の代替実施形態では、監視エージェントは、「自分はどのスレッドで実行されているか」を尋ねることによって、新しいＣＲＴがどのスレッドから生じたものかチェックし、前記ＣＲＴが疑わしいスレッドから来たものである場合にのみ、このＣＲＴを追跡する。この代替実施形態は前の実施形態よりも効率的だが、どちらの代替を使用してもよい。
【００２４】
図１を参照しながら、本発明の一実施形態によるプロセスを概略的に例示する。このプロセスでは、以下のイベントが行われる。
１０１  実行されようとしている実行ファイルが識別される。
１０２  前記実行ファイルのプロセスによって開始されたスレッドの子孫（descendent）である全てのスレッドが監視される。
１０３  全てのスレッドが監視されていない場合、監視プロセスは、新しいスレッドの監視を継続する。
１０４  疑わしいパッチが作成されない場合、監視プロセスは継続する。
１０５  １以上の疑わしいパッチが作成される場合、マルウェアが存在する可能性が決定される。
【００２５】
本発明による監視エージェントは、当業者に知られている任意の適切なタイプのものとすることができ、例えば、ＺｗＣｒｅａｔｅＰｒｏｃｅｓｓカーネル呼出しを監視するカーネルドライバとすることができる。或いは、ほぼ全てのユーザ空間プロセス中で、ＣｒｅａｔｅＰｒｏｃｅｓｓ関数にパッチが当てられる可能性もある。
【００２６】
当業者には理解されるであろうが、一つのスレッドが新しいローカルスレッドを開くことになる可能性があり、これらのローカルスレッドのうちの一つが、外に向けたＣＲＴを行うことになる可能性がある。本発明によれば、監視エージェントは、元のプロセスの子孫である全てのスレッドを監視する。任意選択で、監視プロセスは、スレッドにマーキングすることを含んでよいが、マーキングは、場合によっては便利なこともあるが本発明の実施に必須ではない。これらの子孫スレッドのうちの一つがブラウザに到達し、疑わしいパッチが作成される場合、監視エージェントは、マルウェアが存在する見込みが高いと結論付ける。
【００２７】
マルウェアの可能性が識別された後は、監視エージェントは、ユーザに警告すること、実行ファイルを隔離場所に配置すること、１以上のプロセス／スレッドを停止することなど、任意の適切な措置を講じることができる。これらの措置は全て、従来どおりであって当業者に周知であり、したがってここでは詳細に述べない。
【００２８】
プロセスの少なくとも一部はマルウェアと同様にして挙動するが、最終的には何ら悪意あるイベントを生み出さないといった、完全に正当なプロセスが生じる場合も当然ある。本発明の一実施形態によれば、監視エージェントは、疑わしい挙動を伴うこのような正当なプロセスのホワイトリストを維持して、これらのプロセスを繰り返し監視する必要を回避する。
【００２９】
例
当業者なら、本発明の使用対象となり得るマルウェアを容易に認識するであろう。このようなマルウェアの説明となる一例は、Ｚｅｕｓマルウェアであり、これは、ＣＲＴ連鎖に関する典型的な例である。http://www.mnin.org/write/ZeusMalware.pdfからの、以下の関連する一節に、このことが例示されている。
【００３０】
「このトロイの木馬は特に、まずそのイメージ全体をリモートプロセスのヒープ上の領域に書き込み、次いで、所望のサブルーチンのアドレスを指定するＣｒｅａｔｅＲｅｍｏｔｅＴｈｒｅａｄ（）を呼び出すことにより、リモートプロセス内から、それ自体のコードベースからのスレッドを呼び出す。
（中略）これは（中略）、prg.exeからwinlogon.exeを感染させるのに使用され、また、どのようにwinlogon.exeがsvchost.exeを感染させるかであり、どのようにsvchost.exeが他の全てのプロセスを感染させるかである（中略）。」
上のくだりは、特にブラウザに関連する。この記述はさらに、「（中略）全てのシステムプロセスの内部で実行されるスレッドは、とりわけ、wininet.dllからのHttpSendRequestA()及びHttpSendRequestW()エクスポートをフックすることを担う。したがって、感染したプロセスがＨＴＴＰ通信のためにこれらの関数のうちの一つを呼び出すときはいつでも、リダイレクトされた関数によって要求バッファ中のデータを調べることができる。」と説明する。
【００３１】
以上の記述及び例は全て、例示のために提供したものであり、添付の特許請求の範囲で可能にされる場合を除いては本発明を限定する意図は決してない。
【図１】
2014182837.tif 000003
【外国語明細書】
2014182837000001.pdf