【文献】
林 直樹 Naoki Hayashi,複数の解析環境から取得したマルウェアの振る舞い情報の非類似性尺度に関する検討 A Study on Dissimilarity Measure for Malware’s Behaviors from Multiple Sandboxes,CSS2014 コンピュータセキュリティシンポジウム2014 論文集 合同開催 マルウェア対策研究人材育成ワークショップ2014 情報処理学会シンポジウムシリーズ Vol.2014 No.2 [CD−ROM],日本,一般社団法人情報処理学会 コンピュータセキュリティ研究会,2014年10月15日,第2014巻,p.992−999
(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【0007】
悪意あるスクリプトの実行をブロックするためのシステム及び方法の例示的な態様を開示する。例示的な方法は、
ハードウェアプロセッサによって、クライアントからサーバへのスクリプトの要求を傍受する工程と、
ハードウェアプロセッサによって、傍受したスクリプトのバイトコードを生成する工程と、
ハードウェアプロセッサによって、生成されたバイトコードのハッシュ値を計算する工程と、
ハードウェアプロセッサによって、バイトコードのハッシュ値と、データベースに保存されている悪意ある及びクリーンなスクリプトにおける複数のハッシュ値との間の類似度を決定する工程と、
ハードウェアプロセッサによって、データベースから類似のハッシュ値を識別する工程であって、識別されたハッシュ値とバイトコードのハッシュ値との類似度は、類似性の閾値の範囲内にある、工程と、
ハードウェアプロセッサによって、類似のハッシュ値の信頼係数を決定する工程と、
ハードウェアプロセッサによって、要求されたスクリプトが、類似度及び類似のハッシュ値の信頼係数に基づいて、悪意があるかどうか、を決定する工程と、
ハードウェアプロセッサによって、クライアントでの悪意あるスクリプトの実行をブロックする工程を備えている。
【0008】
1つの例示的態様で、スクリプトの要求を傍受する工程は、
クライアントに、ネットワークのスクリプト要求を傍受するように構成されたドライバを提供する工程を含む。
【0009】
1つの例示的態様で、バイトコードは、スクリプトにおける少なくとも1つのオペコードを含む。
【0010】
1つの例示的態様で、スクリプトのバイトコードを生成する工程は、
ハードウェアプロセッサによって、ディスクへのデータの書き込み、ファイルシステムのオブジェクトの動作、及びプログラムの実行、における機能を担うスクリプトのコマンドを識別する工程と、
ハードウェアプロセッサによって、識別されたスクリプトコマンドをそれらの識別された機能に基づいて複数の機能グループにグループ化する工程と、
ハードウェアプロセッサによって、各機能グループにバイナリの値を割り当てる工程と、
ハードウェアプロセッサによって、バイナリの値からバイトコードを生成する工程を含む。
【0011】
1つの例示的態様で、ハッシュ値は、ファジーハッシュを含む。
【0012】
1つの例示的態様で、一致するハッシュ値の検索には、ファジー検索を含む。
【0013】
悪意あるスクリプトの実行をブロックする例示的なシステムは、
クライアントからサーバへのスクリプトの要求を傍受し、
傍受したスクリプトのバイトコードを生成し、
生成されたバイトコードのハッシュ値を計算し、
バイトコードのハッシュ値と、データベースに保存されている悪意ある及びクリーンなスクリプトにおける複数のハッシュ値との間の類似度を決定し、
データベースから類似のハッシュ値を識別し、識別されたハッシュ値とバイトコードのハッシュ値の類似度は、類似性の閾値の範囲内にあり、
類似のハッシュ値の信頼係数を決定し、
要求されたスクリプトが、類似度及び類似のハッシュ値の信頼係数に基づいて、悪意があるかどうかと決定し、
クライアントでの悪意あるスクリプトの実行をブロックするように構成される。
【0014】
悪意あるスクリプトの実行をブロックするためのコンピュータ実行可能命令を格納している例示的な非一時的なコンピュータ可読媒体であり、
上記命令は、クライアントからサーバへのスクリプトの要求を傍受する命令と、
傍受したスクリプトのバイトコードを生成する命令と、
生成されたバイトコードのハッシュ値を計算する命令と、
バイトコードのハッシュ値と、データベースに保存されている悪意ある及びクリーンなスクリプトにおける複数のハッシュ値の間の類似度を決定する命令と、
データベースからの類似のハッシュ値を識別する命令であって、識別されたハッシュ値とバイトコードのハッシュ値の類似度は、類似性の閾値の範囲内にある、命令と、
類似のハッシュ値の信頼係数を決定する命令と、
要求されたスクリプトが、類似度及び類似のハッシュ値の信頼係数に基づいて、悪意があるかどうかを決定する命令と、
クライアントで悪意あるスクリプトの実行をブロックする命令
を含む。
【0015】
本発明の例示的な態様の上記の簡単な概要は、本発明の基本的な理解を提供するのに役立つ。この概要は、すべての企図される態様の広範な概観ではなく、すべての態様の主要または重要な要素を特定することも、本発明における任意の範囲又はすべての態様を線引きすることも意図されていない。その唯一の目的は、以下の本発明のより詳細な説明の前置きとして簡略化された形式で、一つ又は複数の態様を提示することである。前述の達成のために、本発明の一つ又は複数の態様は、特許請求の範囲で説明され、特に指摘された特徴を含む。
【発明を実施するための形態】
【0017】
本発明の例示的態様は、悪意あるスクリプトの実行をブロックするためのシステム、方法、及びコンピュータプログラム製品における説明で本明細書に記載されている。当業者は、以下の説明は単なる例示であり、いかなる方法においても限定されることを意図するものではないことを理解するであろう。他の態様は、本開示の利益を有する当業者に対して容易に示される。添付の図面に示されるように、参照は例示的態様の実装に対して以下で詳細に説明される。同じ参照指標が、同一または同様の項目を参照するために、図面全体と以下の説明を通じて、可能な限り使用される。
【0018】
以下の説明で使用される定義及び概念には、初めから導入されるものもある。
【0019】
悪意あるスクリプトは、コンピュータ又はコンピュータのユーザデータに害を引き起こすことが可能であるスクリプトかもしれない。引き起こされる害は、例えば、盗難目的として、コンピュータに保存されているデータを含むコンピュータリソースへの不正アクセスであるかもしれず、及び、データの保存、計算の実行等を含むリソースの不正使用もありえる。
【0020】
信頼できるスクリプトとは、コンピュータ又はそのユーザに害を引き起こすことのないスクリプトでありえる。信頼できるスクリプトは、信頼できるソフトウェアの製造元によって開発され、信頼できるソース(信頼できるサイトのライブラリの一員であるサイト等)からダウンロードしたスクリプトであると考えることができる。又、そのスクリプトの識別子(スクリプトファイルのMD5等)は、信頼できるスクリプトのライブラリに格納されている。製造元の識別子(デジタル証明書等)も、信頼できるスクリプトのライブラリに格納することができる。
【0021】
図1は、サーバからの、クライアント(クライアント - サーバのアーキテクチャにおける構成要素)によって要求された悪意あるスクリプトの実行をブロックするための例示的なシステムの図を示す。システムは、サーバ100、クライアント101、傍受モジュール110、バイトコード計算モジュール120、ハッシュ値計算モジュール130、検索モジュール140、解析モジュール150、評価作成モジュール160、ハッシュ値ライブラリ170、及び評価テンプレートライブラリ180を含む。
【0022】
1つの例示的な態様で、サーバ100は、少なくともウェブサーバ(インターネットのページを含む)、又は、ファイルサーバ(スクリプトを含む)でありえる。様々な例示的な態様で、スクリプトは、JavaScript(登録商標)、VBScript等のスクリプト言語で書かれたプログラム、VBA言語(アプリケーション用のVisual Basic)で書かれ、且つ、電子的なMS Officeの文書等に配置されるプログラム、Java(登録商標)言語で書かれたプログラム、ActionScript言語で書かれたプログラム、を含むが、これらに限定されない。スクリプトは、JavaScript(登録商標)コード、VBScript等を含むインターネットページの形式で、サーバ100からクライアント101へ転送され、インターネットサイトからクライアントのブラウザへネットワークによって送信され、又は、(VBAコードを含むMS Office文書等の)ファイル形式で、ファイル・マネージャーから、ファイルで動作するアプリケーション(MS Office等)へ、API関数によって送信される。
【0023】
1つの例示的な態様で、傍受モジュール110は、サーバ100からクライアント101によって要求されたスクリプトを傍受し、その傍受したスクリプトをバイトコード計算モジュール120に送信し、評価作成モジュール160が、その傍受したスクリプトが悪意あるとの決定のアナウンスがあった場合、その傍受したスクリプトの実行をブロックするように構成することができる。
【0024】
1つの例示的な態様で、サーバ100からクライアント101へ送信されるスクリプトの傍受は、この目的のために特別に開発されたドライバを使用して行うことができ、クライアント101からドライバへのスクリプトの伝送路(例えば、データを受信するソースのアドレスを変更することによって)を再ルーティングするように構成することを含む。したがって、クライアント101によって要求され、サーバ100によって送信されるスクリプトは、クライアントではなく、ドライバにおいて終端されることになるだろう。例えば、オペレーティングシステムのAPI関数recvのコールを傍受するドライバは、ネットワークを介して送信されるデータの受信を担っており、着信する全ネットワークトラフィックを受信することができる。様々な例示的な態様では、スクリプトの実行をブロックする工程は、
対応するAPI関数のコールを傍受することによって、傍受したスクリプトの実行を防ぐ工程と、
予め用意した信頼できるスクリプトを実行することを意図したスクリプトに交換する工程と、
起動されたスクリプトによって要求された場所に、予め用意したデータを送信する工程、
を含むが、これらに限定されない。
【0025】
1つの例示的な態様で、バイトコード計算モジュール120は、傍受したスクリプトのバイトコードを計算するように構成することができる。バイトコードは、傍受したスクリプトに含まれる少なくとも1つのコマンドから成るスクリプトコマンドのセット(オペコード)で構成されてもよい。バイトコード計算モジュール120は、その後、ハッシュ値計算モジュール130にバイトコードを送信する。
【0026】
1つの例示的な態様で、傍受したスクリプトのバイトコードは、以下のように形成されてもよい。すべてのスクリプトシーケンスはスクリプトから選択される。予め指定された機能(ディスクへのデータの書き込み、ファイルシステムのオブジェクトの動作、アプリケーションの起動等)を実行していないいくつかのスクリプトコマンドは、選択されたシーケンスから移動させられる。選択されたシーケンスに残っているスクリプトコマンドは、少なくとも1つの各々のスクリプトコマンドを含むコマンドのグループに組み合される(例えば、ファイルへのデータの書き込み、ファイルの起動及びファイルの削除を担うスクリプトコマンドのシーケンスは1つのグループに組み合わされることができる)。各スクリプトコマンド又はスクリプトコマンドのグループは、固有の2バイト値が割り当てられる。2バイト値の得られたシーケンスは、計算されたバイトコードを構成する。
【0027】
1つの例示的な態様で、ハッシュ値計算モジュール130は、算出されたバイトコードのハッシュ値を計算し、算出されたハッシュ値を検索モジュール140に送信するように構成することができる。バイトコードのハッシュ値は、ファジーハッシュ値を計算することによって算出できる。
データのファジーハッシュ値とは、ファジーハッシュ値が計算されるデータ領域とは別のデータ領域から計算されたハッシュ値のセットで構成されるものであり、及び、ファジー検索とは、データ構造(ユークリッド空間、ツリー空間、等の要素)を用いているセットにおいて、要素を検索する技術であり、任意の与えられた空間での比較的少ない数で、検索している要素に最も近いセットの要素を迅速に検索することができる。
【0028】
1つの例示的な態様で、検索モジュール140は、
少なくとも1つのグループをハッシュ値ライブラリ170から選択し、
そのグループにある少なくとも1つのハッシュ値が、ハッシュ値計算モジュール130によって算出されたハッシュ値に対して、予め設定された類似性の閾値に対応する類似度を有し、
少なくとも1つの選択されたグループ及びその決定された類似度を解析モジュール150へ送信するように構成されている。
比較しているハッシュ値の類似度は、比較のハッシュ値が互いにどれほど類似しているかを特徴づける数値でありえ、ハッシュ値を比較する手段によって決定されることができる。
【0029】
ハッシュ値の類似度は、少なくとも、
ファジーハッシュ値を比較する(つまり、ハッシュ値を計算するためのデータにおける類似度を特徴づける数値を計算する)こと、
ファジー検索メトリックを計算する(つまり、検索されるセットのSEEK要素とFIND要素の間の距離を計算する)こと、
によって計算することができる。
【0030】
1つの例示的な態様で、解析モジュール150は、
少なくとも1つのグループを含む少なくとも1つの評価テンプレートを評価テンプレートライブラリ180から選択し、
検索モジュール140によって選択された少なくとも1つのグループに対する上記グループの類似度は、予め設定された閾値に対応しており、
評価テンプレートは、ハッシュ値ライブラリ170からの少なくとも1つのグループ、数値的な値である評価テンプレート信頼係数を含むデータセットから構成され、
及び、選択された評価テンプレートからの評価テンプレート信頼係数と計算された類似度を、評価作成モジュール160へ送信する、
ように構成されることができる。
【0031】
1つの例示的な態様で、評価テンプレートの信頼係数は、0(与えられた評価テンプレートに含まれているグループを取得するために使用される全てのスクリプトが、悪意あることを意味する)から1(与えられた評価テンプレートに含まれるグループを取得するために使用される全てのスクリプトが、信頼できることを意味する)の数値でありえる。
【0032】
1つの例示的な態様で、グループの類似度は、少なくとも、
多次元ベクトル(多次元ベクトルの要素は、グループに含まれるデータである)のベクター積を求めること、とファジー検索メトリックを計算することによって算出することができる。
【0033】
1つの例示的な態様で、評価作成モジュール160は、
解析モジュール150から得られた少なくとも1つの評価テンプレート信頼係数及び検索モジュール140から得られた少なくとも1つのハッシュ値の類似度に基づいて、傍受モジュール110によって傍受したスクリプトが、悪意あるかについて決定し、
且つ、適切な判断を傍受モジュール110へ送信する、ように構成されている。
【0034】
1つの例示的な態様で、傍受モジュール110によって傍受したスクリプトが悪意あるかについての決定をアナウンスすることは、解析モジュール150によって選択された少なくとも1つの評価テンプレート信頼係数とハッシュ値計算モジュール130によって計算された少なくとも1つのハッシュ値の類似度との積の平均値と、設定された閾値とを比較することによって成し遂げられる。
【0035】
1つの例示的な態様で、ハッシュ値ライブラリ170は、データのセットを構成する少なくとも1つのグループを保存するように構成され、そのデータのセットは、悪意あるスクリプトのバイトコードから予め計算された少なくとも2つのハッシュ値、及び、そのグループに含まれる少なくとも2つのハッシュ値に対する少なくとも1つの類似度、を含む。
【0036】
1つの例示的な態様で、評価テンプレートライブラリ180は、少なくとも1つの評価テンプレートを格納するように構成され、そのテンプレートは、ハッシュ値ライブラリ170からの少なくとも1つのグループと、数値的な値である評価テンプレート信頼係数を含むデータのセットである。
【0037】
1つの例示的な態様で、評価テンプレートライブラリ180からの評価テンプレートは、ハッシュ値ライブラリ170からのすべてのグループをまとめて包含することができる。
【0038】
スクリプトの実行をブロックするための上述のシステムの動作は、電子的なMS Word文書に含まれる悪意あるスクリプトをブロックする例に基づいて、次に説明されるだろう。MS Wordプロセッサを起動しているクライアント101を使用しているユーザは、ファイル・マネージャーを起動しているサーバ100から、VBA言語で記述された悪意あるスクリプトを含む電子文書c:\ mydoc.docxの受信を試みる。傍受モジュール110は、ファイル・マネージャーのドライバであって、開かれた文書のスクリプトを傍受し、それをバイトコード計算モジュール120に送る。スクリプトを傍受することは、オペレーティングシステムのAPI関数CreateFile、ReadFile 等のコールを傍受するドライバによって成され、それらは、ファイル・マネージャーから受信したデータに対して責任を担っている。
【0039】
バイトコード計算モジュール120は、傍受したスクリプトのバイトコードを計算する。このために、すべてのスクリプトコマンドのシーケンスは、傍受したスクリプトから選択される。スクリプトコマンドのモジュールのいくつかは、ディスクへのデータの書き込み、ファイルシステムのオブジェクトの動作、アプリケーションの起動等、についての機能的責任に対して責任を担っておらず、選択されたシーケンスから移動させられる。
選択されたシーケンスに残っているスクリプトコマンドは、コマンドのグループに組み込まれる(例えば、ファイルへデータを書き込み、ファイルの起動、及び、ファイルの削除、を担っているスクリプトコマンドのシーケンスは1つのグループに組み込まれる)ことになる。各スクリプトコマンド又はスクリプトコマンドのグループは、固有の2バイトの値を割り当てられる。2バイトの値の得られたシーケンスは、算出されたバイトコードで構成される。
【0040】
ハッシュ値計算モジュール130は、(例えば、オープンソースアルゴリズムfuzzyHashを使用して)受信したバイトコードからファジーハッシュ値を計算する。
ファジーハッシュ値は、ブロックのサイズ(バイトコードが、そのブロックに分割されている)とこれらのブロックのハッシュ値を含むデータのセットである。この後、ハッシュ値計算モジュールは、算出されたハッシュ値を検索モジュール140へ送信する。
【0041】
検索モジュール140は、ハッシュ値ライブラリ170からハッシュ値におけるグループの選択を行い、グループは、悪意あるスクリプトのバイトコードにおける予め計算されたハッシュ値、そのグループに含まれるハッシュ値の間の類似度を含むデータのセットで構成される。
【0042】
ハッシュ値ライブラリ170からの選択の過程で、ハッシュ値ライブラリ170に含まれる各グループのハッシュ値と、ハッシュ値計算モジュール130から受信したハッシュ値とのファジー比較(ファジー検索)が行われる。
2つのハッシュ値のファジー比較の結果は、0から1の範囲の数値である。それは、比較のハッシュ値が互いにどれほど類似しているかを示し、2つのハッシュ値の類似度として知られるものである(例えば、お互いに10%の差異があるスクリプトコマンドを含むスクリプトのバイトコードから計算されたファジーハッシュ値の類似性は、0.9と等しくなるだろう)。
比較対象であるグループの少なくとも1つのハッシュ値とハッシュ値計算モジュール130から得られたハッシュ値との類似度が、設定された閾値(例えば、0.85)より大きい場合、そのグループが発見されたと見なされ、ハッシュ値計算モジュール130から得られたハッシュ値は、比較対象であるグループに属する。この後、選択されたグループと決定された類似度は、解析モジュール150へ送られる。ハッシュ値ライブラリ170にあるグループも更新され、ハッシュ値計算モジュール130から得られたハッシュ値は、選択されたグループに追加される。更新されたグループが、より多くの悪意あるスクリプトのハッシュ値を含むことになるので、これによって、後に傍受されるスクリプトに対するグループ検索の精度が増す。ファイルc:\mydoc.docxから傍受したスクリプトに対して、以下の機能を備えるスクリプトのハッシュ値を含んだグループが選択された。
・グループ#1-ディスクへの書き込み及びファイルの属性の設定(類似度0.98)。
・グループ#2 - タスクマネージャーのブロック、タスクバーを隠す(類似度0.95)。
・グループ#3 - ファイルの削除(類似度0.90)。
・グループ#4 - VBA手段を使用して、Windowsのウィンドウの作成(類似度0.87)。
選択されたグループは、解析モジュール150に送られる。
【0043】
解析モジュール150は、評価テンプレートライブラリ180から評価テンプレート(検索モジュール140から受け取ったグループを含むテンプレート)の選択を実行する。選択プロセスにおいて、どのグループが評価テンプレートライブラリ180の各評価テンプレートに含まれているのか、及び、それらが検索モジュール140から受け取ったグループにどれほど類似しているかについて決定がなされる。用いられる比較の手法は、ファジー検索アルゴリズムであってもよく、その結果は、0から1の範囲の数値となる。それは、比較するグループのセットが互いにどれほど類似しているかを特徴づけるものであり、2つのグループのセットの類似度として知られるものである。検索モジュール140から受け取ったグループに対して、以下の評価テンプレートが選択された。
・テンプレート#1“blocker”:テンプレート信頼係数0.1であり、グループ#1(類似度1.0)、グループ#2(類似度1.0)、グループ#3(類似度0.9)を含む。
・テンプレート#2“cryptor”:テンプレート信頼係数0.3であり、グループ#1(類似度0.7)、グループ#3(類似度1.0)、グループ#4(類似度0.95)を含む。
選択された評価テンプレートのテンプレート信頼係数は、検索モジュール140によって選択されるグループと同様に、評価作成モジュールに送られる。
【0044】
評価作成モジュール160は、受け取った信頼係数(“blocker”評価テンプレートでは0.1)から、選択されたテンプレートに含まれるグループでのハッシュ値における最小の類似度(0.9)を選び、信頼係数と類似度の積(0.09)を計算する。生成された値を最大の許容値(0.2等)と比較した後、傍受したスクリプトは悪意がありブロックされるべきであるという評価をアナウンスし、そして、傍受したスクリプトをブロックするために傍受モジュール110へその決定を送る。この後、傍受モジュール110は、どんなアクションも実行しない空白のスクリプトに取り替えられ、それは、Microsoft Wordの文書における正確な動作に対してのみ必要とされるものである。それによって、傍受したスクリプトをブロックすること、及び、ユーザのコンピュータ・システムで悪意あるスクリプトの実行を阻むことになる。
【0045】
図2は、スクリプトの実行をブロックする例示的な方法を示す。ステップ210で、サーバ100からクライアント101によって要求された少なくとも1つのスクリプトは、傍受モジュール110によって傍受される。ステップ220で、傍受したスクリプトのバイトコードは、バイトコード計算モジュール120によって計算される。ステップ230で、バイトコードのハッシュ値は、ハッシュ値計算モジュール130によって計算される。ステップ240で、少なくとも1つのグループが選択モジュール140によってハッシュ値ライブラリ170から選択され、そのグループにある少なくとも1つのハッシュ値と、ステップ230で計算されたハッシュ値との類似度は、予め設定された類似性の閾値に対応しているものである。ステップ250で、少なくとも1つの評価テンプレートが、解析モジュール150によって、評価テンプレートライブラリ180から選択される。そのテンプレートは、少なくとも1つのグループを含み、そのグループにおける検索モジュール140で選択された少なくとも1つのグループとの類似度が、設定された閾値に対応している。ステップ260で、ステップ250で選択された少なくとも1つの評価テンプレート信頼係数と、ステップ240で決定された少なくとも1つのハッシュ値の類似度に基づいて、ステップ210で傍受したスクリプトが悪意あるかについての決定が評価作成モジュール160によって成される。ステップ270で、ステップ210で傍受したスクリプトは、傍受スクリプトの悪意性に関する評価作成モジュール160による決定に従って、傍受モジュール110によってブロックされる。
【0046】
スクリプトの実行をブロックするための上述の方法における動作は、ブラウザを用いるユーザの視覚に入るウェブサイトのページに含まれる悪意あるスクリプトをブロックするという例に基づいて、次に説明されるだろう。Internet Explorerブラウザを実行しているクライアント101を介して、ユーザは、ページを開くという試みをする。例えば、サイトhttp://tasianits.comであるサーバ100からインターネットのページを受信するものであり、それは、ActiveX を用いてJavaScript(登録商標)言語で書かれた悪意あるスクリプトを含むものである。
【0047】
ステップ210で、傍受モジュール110は、開いている文書のスクリプトを傍受し、バイトコード計算モジュール120に送信する。
【0048】
ステップ220で、バイトコード計算モジュール120は、傍受したスクリプトのバイトコードを計算する。このために、ユーザのコンピュータ・システムと相互にやりとりするという動作(ディスクへの書き込み等)と関連がある動作のコマンドが、傍受スクリプトから選択される。選択された各動作は、2バイト(いわゆるバイトコード)の識別子が割り当てられており、バイトシーケンスは、結果として得られた識別子(バイトコードを構成している識別子)から作られる。その後、バイトコード計算モジュール120は、算出されたバイトコードをハッシュ値計算モジュール130に送信する。
【0049】
ステップ230で、ハッシュ値計算モジュール130は、受信したバイトコードから(例えば、オープンソースのアルゴリズムfuzzyHashを利用して)ファジーハッシュ値を計算し、ファジーハッシュ値は、ブロックのサイズ(バイトコードはハッシュ値を計算するためにそのサイズに分割される)を特徴づける番号、及び、バイトコードから計算された2つのハッシュ値を含むデータのセットである。この後、算出されたハッシュ値を、検索モジュール140へ送る。
【0050】
ステップ240で、検索モジュール140は、ハッシュ値ライブラリ170からハッシュ値のグループを選択する。このために、ハッシュ値ライブラリ170に含まれる各グループのハッシュ値と、ハッシュ値計算モジュール130から受信したハッシュ値とのファジー比較が行われる。
2つのハッシュ値のファジー比較の結果は、0から1の範囲の数値である。それは、比較のハッシュ値が互いにどれほど類似しているかを示し、2つのハッシュ値の類似度として知られるものである。
比較対象であるグループの少なくとも1つのハッシュ値とハッシュ値計算モジュール130から得られたハッシュ値との類似度が、設定された閾値(例えば、0.5)より大きい場合、そのグループが発見されたと見なされ、ハッシュ値計算モジュール130から得られたハッシュ値は、比較対象であるグループに属する。この後、選択されたグループと決定された類似度は、解析モジュール150へ送られる。ハッシュ値ライブラリ170にあるグループも更新される。ハッシュ値計算モジュール130から得られたハッシュ値は、選択されたグループに追加される。これによって、後に傍受されるスクリプトに対するグループ検索の有効性が増す。サイトhttp://tasianits.comから傍受したスクリプトの場合には、以下の機能を備えるスクリプトのハッシュ値を含んだグループが選択された。
・グループ#1 - ディスクへの書き込み、ユーザのコンピュータ・システムでのファイルの実行(類似度0.7)
・グループ#2 - ActiveXの脆弱性を利用した動作のセット(類似度1.0)
【0051】
ステップ250では、解析モジュール150は、評価テンプレートライブラリ180から評価テンプレートを選択し、上記テンプレートは、検索モジュール140から受け取ったグループを含む。
これによって、どのグループが評価テンプレートライブラリ180からの各評価テンプレートに含まれているのか、及び、それらが検索モジュール150から受け取ったグループにどれほど類似しているかについて決定がなされる。用いられる比較の手法は、ファジー検索アルゴリズムをであってもよく、その結果は、0から1の範囲の数値となる。それは、比較するグループのセットが互いにどれほど類似しているかを特徴づけるけるものであり、2つのグループのセットの類似度として知られるものである。検索モジュール140から受け取ったグループに対して、以下の評価テンプレートが選択された。
テンプレート#1 “injector”:テンプレート信頼係数0.0、グループ#1(類似度1.0)、#2(類似度1.0)を含む。選択された評価テンプレートのテンプレート信頼係数は、評価作成モジュール160に送られる。
【0052】
ステップ260では、評価作成モジュール160は、受け取ったテンプレートの信頼係数と類似度に基づいて、信頼係数(0.0)と類似性(0.85)の積を計算する。その後、最大の許容値(0.15)と生成された値を比較し、傍受したスクリプトは悪意がありブロックされるべきであるという評価をアナウンスし、傍受したスクリプトをブロックするために傍受モジュール110へその決定を送る。
【0053】
この後、ステップ270で、傍受モジュールは、傍受スクリプトをブロックし、それによって、ユーザのコンピュータ・システムで悪意あるスクリプトの実行をさせない。
【0054】
図3は、例示的態様に係る、開示されたシステム及び方法が実装されることができる、汎用コンピュータ・システム(パーソナルコンピュータ又はサーバであってもよい)の例である。
示されるように、コンピュータ・システムは、中央処理ユニット21、システムメモリ22及びシステムバス23を含み、システムバスは、様々なシステムコンポーネント(中央処理ユニット21に付随するメモリを含む)に接続している。システムバス23は、先行文献で知られている任意のバス構造のように実現され、順にバスメモリ又はバスメモリコントローラ、周辺バス、及びローカルバスを含み、それは、任意の他のバスアーキテクチャと相互作用することができる。システムメモリは、読み出し専用メモリ(ROM)24及びランダムアクセスメモリ(RAM)25を含む。基本入出力システム(BOIS)26は、パーソナルコンピュータ20の要素間で情報の転送を保証する基本的な手順を含み、ROM24を使用してオペレーティングシステムをロードする時にも同様である。
【0055】
パーソナルコンピュータ20は、順に、データの読み書き用ハードディスク27、リムーバブル磁気ディスク29への読み書き用磁気ディスクドライブ28、及び、リムーバブル光ディスク31(CD-ROM、DVD-ROM又は他の光情報媒体等)への読み書き用光ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28、及び光ドライブ30は、それぞれ、ハードディスクインターフェース32、磁気ディスクインタフェース33及び光ドライブインターフェース34を介してシステムバス23に接続されている。ドライブ及び対応するコンピュータ情報媒体は、パーソナルコンピュータ20のコンピュータ命令、データ構造、プログラムモジュール、及びその他のデータにおける記憶装置に対して電力独立型モジュールである。
【0056】
本開示は、ハードディスク27、リムーバブル磁気ディスク29及びリムーバブル光ディスク31を使用するシステムの実装を提供するが、コンピュータによって読み取り可能な形式でデータを格納することができる他の型のコンピュータ情報媒体56(ソリッドステートドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ(RAM)等)を使用することも可能であることが理解されるべきであり、それらは、コントローラ55を介してシステムバス23に接続される。
【0057】
コンピュータ20は、ファイルシステム36を有し、そこには記録されたオペレーティングシステム35が保持され、及び、追加プログラムアプリケーション37、他のプログラムモジュール38及びプログラムデータ39、もまた同様である。
ユーザは、入力デバイス(キーボード40、マウス42)で、パーソナルコンピュータ20に、コマンドと情報を入力することができる。他の入力デバイス(図示せず)として、マイクロホン、ジョイスティック、ゲームコントローラ、スキャナ等を用いることができる。そのような入力デバイスは、通常、シリアルポート46を介してコンピュータ・システム20に接続され、それは、順番に、システムバスに接続される。それらは、他の方法(例えば、パラレルポート、ゲームポート、又はユニバーサルシリアルバス(USB))を用いて接続できる。モニター47又は他の型の表示デバイスもまた、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続される。モニター47に加えて、パーソナルコンピュータは、ラウドスピーカー、プリンター等の他の周辺出力デバイス(図示せず)を搭載することができる。
【0058】
パーソナルコンピュータ20は、1つ又は複数のリモートコンピュータ49を用いて、ネットワーク環境で作業することができる。リモートコンピュータ(複数可)49も、前述の要素の大モジュール分又は全てを有するパーソナルコンピュータ又はサーバであり、その要素は、パーソナルコンピュータ20の本質を示している。ルータ、ネットワーク局、ピアデバイスまたは他のネットワークノード等、他のデバイスも、コンピュータネットワークに存在できる。
【0059】
ネットワーク接続は、有線及び/または無線ネットワーク等のローカルエリアコンピュータネットワーク(LAN)50、及びワイドエリアコンピュータネットワーク(WAN)を生成することができる。このようなネットワークは、企業コンピュータネットワークと社内ネットワークで使用されており、これらは一般的にインターネットへのアクセス権を有している。LANまたはWANネットワークでは、パーソナルコンピュータ20は、ネットワークで使用しているネットワークアダプタまたはネットワークインタフェース51を介してローカルエリアネットワーク50に接続される。ネットワークが用いられる場合、パーソナルコンピュータ20は、インターネットのようなワイドエリアコンピュータネットワークとの通信を提供するため、モデム54または他のモジュールを使用する。モデム54は、内モジュールまたは外モジュールデバイスであり、シリアルポート46によってシステムバス23に接続される。ネットワーク接続は、単なる例であり、ネットワークの正確な構成を示す必要はないことに留意すべきである。すなわち、現実には技術的な通信モジュールによる他のコンピュータの接続を確立する他の方法がある。
【0060】
様々な態様において、本明細書で説明するシステム及び方法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装することができる。ソフトウェアで実装する場合、その方法は、非一時的なコンピュータ可読媒体の1つまたは複数の命令またはコードとして格納されることができる。コンピュータ可読媒体は、データ記憶を含む。コンピュータ可読媒体を以下に例示するが、限定するものではない。コンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、フラッシュメモリ、又は、他の型の電気的、磁気的、または光記憶媒体、又は他の任意の媒体、を備えることができ、命令またはデータ構造の形で所望のプログラムコードを搬送又は格納するために用いられ、汎用コンピュータのプロセッサによってアクセスすることができる。
【0061】
様々な態様では、システム及び方法は、モジュールの観点から、本開示で説明される。本明細書で使用される用語「モジュール」とは、現実世界のデバイス、コンポーネント、または、ハードウェアを用いて実装されたコンポーネントの配置を言及しており、例えば、または、ハードウェアとソフトウェアの組み合わせとして、特定用途向け集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)などによって実装され、モジュールの機能を実装するマイクロプロセッサシステムと命令セットなどによって、(実行される間に)マイクロプロセッサシステムを専用のデバイスに変換される。モジュールも、2つの組合せとして実装されることができ、ハードウェアだけによって容易とされる特定の機能、及び、ハードウェアとソフトウェアの組み合わせによって容易とされる他の機能と、これらの組み合わせとして実現することができる。特定の実施態様では、少なくとも一部のモジュール、及びいくつかのケースでは、モジュールのすべては、(例えば、
図3で詳細に説明したもののように)汎用コンピュータのプロセッサで実行することができる。したがって、各モジュールは、適切な様々な構成で実現することができ、そして本明細書中に任意の例示的な実施形態に限定されるものではない。
【0062】
明瞭にするために、態様のルーチン機能のすべてが、本明細書に開示されているわけではない。本開示における任意の実際の実装における開発で、多数の実装固有の判断が、開発者の特定の目標を達成するためになされなければならないことが理解されるであろう。さらに、これらの具体的な目標は、異なる実装及び異なる開発者に対して変化することが理解されるであろう。そのような開発努力は複雑で時間がかかるかもしれないが、それでも本開示の利益を有する当業者にとっては、エンジニアリングの日常の仕事であると理解されるであろう。
【0063】
さらに、本明細書で使用される用語又は表現は、説明のためであり、制限するものではなく、つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語または表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであることが理解されるべきである。明示的な記載がない限り、明細書または特許請求の範囲内で、任意の用語に対して、珍しいまたは特別な意味を帰することは意図されていない。本明細書で開示された様々な態様は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。さらに、態様及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。