(57)【要約】      （修正有）【課題】マルウェアが不正な動作を行わせることを検知する高精度な技術を提供する。【解決手段】ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知装置であって、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知手段と、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルールとして保存する検知ルール記憶手段を備え、検知ルールに合致した場合に不正を検知する。【選択図】図２
2019168805.tif 000002
【特許請求の範囲】
【請求項１】
ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知装置であって、
該マルウェアが該プログラム言語におけるプロパティの変更を行うことを検知対象とし、該プログラム言語の構文上、該プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、該プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、
該グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知手段と、
該グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルールとして保存する検知ルール記憶手段とを備え、
該検知ルール記憶手段に保存された検知ルールに合致した場合に不正検知として出力する
ことを特徴とする不正検知装置。
【請求項２】
前記不正検知装置において、前記グローバルプロパティ変更検知手段が、
前記プロパティに対する値の代入を検知する代入フック処理部と、
検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理部と
から成る請求項１に記載の不正検知装置。
【請求項３】
前記プログラム言語が、JavaScriptであって、
前記プロパティがオブジェクトに関連付けられた変数であり、
JavaScriptに用意されるオブジェクトから検知対象とする対象オブジェクトを予め定め、前記グローバルプロパティ変更検知手段が、対象オブジェクトに係るグローバル変数に値が代入されたことを検知する
請求項１又は２に記載の不正検知装置。
【請求項４】
前記対象オブジェクトが、windowオブジェクト又はElementオブジェクトの少なくともいずれかを含む
請求項３に記載の不正検知装置。
【請求項５】
前記検知ルールが、前記グローバル変数に代入された関数の変更前又は変更後の値を変更パターンとして定められる
請求項３又は４に記載の不正検知装置。
【請求項６】
不正検知装置と、ウェブサーバ装置と、ユーザ端末装置とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムであって、
該不正検知装置が、
該マルウェアが該プログラム言語におけるプロパティの変更を行うことを検知対象とし、該プログラム言語の構文上、該プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、該プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、
該グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知手段と、
該グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルールとして保存する検知ルール記憶手段と、
該ユーザ端末装置からの照会時に、該検知ルール記憶手段に保存された該検知ルールを送信するか、該照会内容が該検知ルールに該当するかの結果を送信する検知ルール送信手段と
を備えると共に、
該ウェブサーバ装置が、
サービスの提供に用いるウェブコンテンツ情報であって、少なくとも該ユーザ端末装置のウェブブラウザ処理手段によって実行される前記プログラムとを含むウェブコンテンツ情報を記憶する記憶手段と、
該ウェブコンテンツ情報を該ユーザ端末装置に送信するコンテンツ送信手段と
を備えると共に、
該ユーザ端末装置に、
該ウェブコンテンツ情報を受信するコンテンツ受信手段と、
該ウェブコンテンツを表示すると共に該プログラムを実行するウェブブラウザ処理手段と、
所定の契機で該不正検知装置に対して不正検知のための照会を送信し、該検知ルール送信手段からの受信を行う不正検知装置通信手段と
を備える
ことを特徴とする不正検知ネットワークシステム。
【請求項７】
前記不正検知装置において、前記グローバルプロパティ変更検知手段が、
前記プロパティに対する値の代入を検知する代入フック処理部と、
検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理部と
から成る請求項６に記載の不正検知ネットワークシステム。
【請求項８】
前記プログラム言語が、JavaScriptであって、
前記プロパティがオブジェクトに関連付けられた変数であり、
JavaScriptに用意されるオブジェクトから検知対象とする対象オブジェクトを予め定め、前記グローバルプロパティ変更検知手段が、対象オブジェクトに係るグローバル変数に値が代入されたことを検知する
請求項６又は７に記載の不正検知ネットワークシステム。
【請求項９】
前記対象オブジェクトが、windowオブジェクト又はElementオブジェクトの少なくともいずれかを含む
請求項８に記載の不正検知ネットワークシステム。
【請求項１０】
前記検知ルールが、前記グローバル変数に代入された関数の変更前又は変更後の値を変更パターンとして定められる
請求項８又は９に記載の不正検知ネットワークシステム。
【請求項１１】
請求項６ないし１０のいずれかに記載の前記不正検知ネットワークシステムにおいて用いられる、ユーザ端末装置。
【請求項１２】
ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知方法であって、
該マルウェアが該プログラム言語におけるプロパティの変更を行うことを検知対象とし、該プログラム言語の構文上、該プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、該プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、
グローバルプロパティ変更検知手段が、該グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知ステップ、
該グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ、
該検知ルール記憶手段に保存された検知ルールに合致した場合に不正検知として出力する不正検知出力ステップ
を有することを特徴とする不正検知方法。
【請求項１３】
前記不正検知方法において、前記グローバルプロパティ変更検知ステップが、
代入フック処理部が、前記プロパティに対する値の代入を検知する代入フック処理ステップ、
不正代入検知処理部が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップ
から成る請求項１２に記載の不正検知方法。
【請求項１４】
不正検知装置と、ウェブサーバ装置と、ユーザ端末装置とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムにおける不正検知方法であって、
該マルウェアが該プログラム言語におけるプロパティの変更を行うことを検知対象とし、該プログラム言語の構文上、該プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、該プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、
該不正検知装置において、予め、
グローバルプロパティ変更検知手段が、該グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知ステップ、
該グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ、
の各ステップを実行処理した上で、
該ウェブサーバ装置が、サービスの提供に用いるウェブコンテンツ情報であって、少なくとも該ユーザ端末装置のウェブブラウザ処理手段によって実行される前記プログラムとを含むウェブコンテンツ情報を記憶しておき、コンテンツ送信手段が、該ウェブコンテンツ情報を該ユーザ端末装置に送信するコンテンツ送信ステップ、
該ユーザ端末装置のコンテンツ受信手段が、該ウェブコンテンツ情報を受信するコンテンツ受信ステップ、
ウェブブラウザ処理手段が、該ウェブコンテンツを表示すると共に該プログラムを実行するウェブブラウザ処理ステップ、
所定の契機で該不正検知装置に対して不正検知のための照会を送信する照会ステップ、
該不正検知装置の検知ルール送信手段が、該ユーザ端末装置からの照会時に、該検知ルール記憶手段に保存された該検知ルールを送信するか、該照会内容が該検知ルールに該当するかの結果を送信する検知ルール送信ステップ、
該ユーザ端末装置の不正検知装置通信手段が、該検知ルール送信手段からの受信を行う不正検知装置通信ステップ
を有することを特徴とする不正検知方法。
【請求項１５】
前記不正検知方法において、前記グローバルプロパティ変更検知ステップが、
代入フック処理部が、前記プロパティに対する値の代入を検知する代入フック処理ステップ、
不正代入検知処理部が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップ
から成る請求項１４に記載の不正検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ端末装置において不正な動作を行われることを検知する不正検知サーバ装置、そのネットワークシステム、方法に関し、より詳しくは、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する技術に係る。
【背景技術】
【０００２】
インターネットバンキングなど高度なセキュリティが要求されるサービスの提供が進む中で、マルウェアによる攻撃方法も多様化している。従来のマルウェアでは、ユーザ端末装置がマルウェアに感染すると、ログイン時に入力されるＩＤやパスワードが読み取られてユーザが意図しない送金などに悪用される例がある。この場合、毎回パスワードが変更されるワンタイムパスワードを導入したり、通信を暗号化することで被害を防止する対策がとられている。
【０００３】
また、通常のＩＤとパスワードによる第１の認証を行って通信セッションを確立した後に、さらに第２の認証を行って不正なアクセスを防止する方法も多く採用されている。第２認証の多くは、予めユーザに付与された乱数表から任意のいくつかの答えだけを問う形式であるため、乱数表全体を入手しないと不正なアクセスに成功しない。そこで、銀行サイトに酷似する画面に誘導して、乱数表の全ての答えを入力させるフィッシングと呼ばれる手法もある。
【０００４】
フィッシングの場合はアクセスする先が偽のサイトであるため、ユーザの注意や、セキュリティ対策ソフトによる検知が比較的容易である。
そこで最近では、例えばブラウザのプロセスに入り込むことで第１認証の成功後に、ＳＳＬの暗号通信が復号された後の平文を改ざんし、偽の第２認証画面を表示し、ユーザが気がつかないうちに必要な情報を窃取したり、あるいはユーザが意図しない操作を行ってしまう攻撃方法が現れている。この攻撃はMan In The Browser(MITB)攻撃と呼ばれており、正規のサイトに接続された状態で不正動作が行われるためユーザやウイルス検知ソフトによる発見が困難な問題がある。
【０００５】
例えば、特許文献１には、ウェブサイトへの外部送出を傍受し、ウェブサイトに関連するトランザクションフィンガープリントに照らし合わせて、ユーザー入力が外部送出を行ったか否かを決定するマン・イン・ザ・ブラウザ攻撃を検出する方法が開示されている。
【０００６】
また、非特許文献１には、このようなMITB攻撃への対策としてセキュアモジュールを端末側にインストールすることでマルウェアによる介入を防御するソフトウェア（株式会社ＦＦＲＩ製「Ｌｉｍｏｓａ」）が開示されている。本ソフトウェアでは、ユーザーが対象サイトにアクセスし、ログインする際にサイトからセキュアモジュールがダウンロードされ、自動的にブラウザに適用されるとしている。
【０００７】
特許文献２は、ユーザ端末上で動作するブラウザを介してマルウェアに感染したユーザ端末装置内のマルウェアを検出する方法であって、前記ユーザ端末上の所定のトリガイベントを検出すると、前記端末にインストールされたセキュリティアプリケーションが1つまたは複数の所定のURLにナビゲートする透明なブラウザを自動的に起動することが開示されている。そして、セキュリティアプリケーションは、透過ブラウザによって開かれた直後に受信された検査されたウェブページのコードをチェックし、透明ブラウザによって少なくとも部分的に処理された後にコードを再検査し、コードが変更された場合、端末がマルウェアに感染していることを示すアラートが発行することを提案している。
【０００８】
このように特許文献２は、マルウェアに感染していない場合と、している場合におけるＨＴＭＬコードの差異をみてマルウェア感染を検出する方法ということができる。ＨＴＭＬコードの差異自体は検出が容易であるが、この差異が特定のマルウェアによるものかを判定するロジックが必要となる。
【０００９】
特許文献３は、特許文献２と類似するが、ユーザ環境におけるＨＴＭＬコードと、記載される発明により提供される環境におけるＨＴＭＬコードの差異をユーザ端末で比較を行い、差異がある場合にはマルウェア感染の疑いがあるとして検出する方法である。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−１８２２９３号公報
【特許文献２】米国特許公開２０１１／０２３９３００
【特許文献３】特開２０１４−２０３４６４号公報
【非特許文献】
【００１１】
【非特許文献１】「FFRI Limosa 製品概要」インターネットＵＲＬ：http://www.ffri.jp/products/limosa/index.htm  2018年3月1日検索
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上記の特許文献２及び３の技術では、検知したいマルウェアの特徴を把握し、当該マルウェア特有のＨＴＭＬコードの差異を事前に抽出し、検知ロジックとして構築する必要がある。
【００１３】
また、比較の基準となるＨＴＭＬコードを取得する環境と、比較対象となるＨＴＭＬコードを取得する環境とが異なる場合に、どちらかの環境のみに導入された正規のＷｅｂブラウザプラグインによるＨＴＭＬコードの変化も検知してしまう可能性がある。このような過検知は、正常な使用を妨げるもので使用性の悪化につながる。
【００１４】
一方、比較の基準となるＨＴＭＬコードを取得する環境と、比較対象となるＨＴＭＬコードを取得する環境とが同一である場合に、比較基準となるＨＴＭＬコード自体もマルウェアによって改ざんされてしまう可能性がある。
さらに、攻撃マルウェアによっては、ＨＴＭＬコードを改ざんせずに、JavaScriptコードを改ざんする場合があり、ＨＴＭＬコードの比較では検知できない場合がある。
このような検知のすり抜けは、当然のことながらセキュリティを脅かすものである。
【００１５】
本発明は上記従来技術の有する問題点に鑑みて創出されたものであり、新しい不正検知の方法を提案し、高精度な不正検知の技術を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は上記課題を解決するため、本発明は次のような不正検知技術を提供する。
まず、第１の実施態様では、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知装置であって、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知手段と、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルールとして保存する検知ルール記憶手段とを備え、検知ルール記憶手段に保存された検知ルールに合致した場合に不正検知として出力することを特徴とする不正検知装置を提供する。
【００１７】
第２の実施態様では、上記の不正検知装置において、上記のグローバルプロパティ変更検知手段が、上記のプロパティに対する値の代入を検知する代入フック処理部と、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理部とから成る不正検知装置を提供する。
【００１８】
第３の実施態様では、上記のプログラム言語が、JavaScriptであって、上記のプロパティがオブジェクトに関連付けられた変数であり、JavaScriptに用意されるオブジェクトから検知対象とする対象オブジェクトを予め定め、上記のグローバルプロパティ変更検知手段が、対象オブジェクトに係るグローバル変数に値が代入されたことを検知する不正検知装置を提供する。
【００１９】
第４の実施態様では、上記の対象オブジェクトが、windowオブジェクト又はElementオブジェクトの少なくともいずれかを含む不正検知装置を提供する。
【００２０】
第５の実施態様では、上記の検知ルールが、上記のグローバル変数に代入された関数の変更前又は変更後の値を変更パターンとして定められる不正検知装置を提供する。
【００２１】
第６の実施態様では、不正検知装置と、ウェブサーバ装置と、ユーザ端末装置とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムを提供する。
本システムにおいて、不正検知装置が、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知手段と、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルールとして保存する検知ルール記憶手段と、ユーザ端末装置からの照会時に、検知ルール記憶手段に保存された検知ルールを送信するか、照会内容が検知ルールに当するかの結果を送信する検知ルール送信手段とを備える。
【００２２】
また、ウェブサーバ装置が、サービスの提供に用いるウェブコンテンツ情報であって、少なくともユーザ端末装置のウェブブラウザ処理手段によって実行される上記のプログラムとを含むウェブコンテンツ情報を記憶する記憶手段と、ウェブコンテンツ情報をユーザ端末装置に送信するコンテンツ送信手段とを備える。さらに、ユーザ端末装置に、ウェブコンテンツ情報を受信するコンテンツ受信手段と、ウェブコンテンツを表示すると共にプログラムを実行するウェブブラウザ処理手段と、所定の契機で不正検知装置に対して不正検知のための照会を送信し、検知ルール送信手段からの受信を行う不正検知装置通信手段とを備えることを特徴とする不正検知ネットワークシステムを提供する。
【００２３】
第７の実施態様では、上記の不正検知装置において、上記のグローバルプロパティ変更検知手段が、上記のプロパティに対する値の代入を検知する代入フック処理部と、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理部とから成る不正検知ネットワークシステムを提供する。
【００２４】
第８の実施態様では、上記のプログラム言語が、JavaScriptであって、上記のプロパティがオブジェクトに関連付けられた変数であり、JavaScriptに用意されるオブジェクトから検知対象とする対象オブジェクトを予め定め、上記のグローバルプロパティ変更検知手段が、対象オブジェクトに係るグローバル変数に値が代入されたことを検知する不正検知ネットワークシステムを提供する。
【００２５】
第９の実施態様では、上記の対象オブジェクトが、windowオブジェクト又はElementオブジェクトの少なくともいずれかを含む不正検知ネットワークシステムを提供する。
【００２６】
第１０の実施態様では、上記の検知ルールが、上記のグローバル変数に代入された関数の変更前又は変更後の値を変更パターンとして定められる不正検知ネットワークシステムを提供する。
【００２７】
第１１の実施態様では、上記記載の不正検知ネットワークシステムにおいて用いられる、ユーザ端末装置を提供することもできる。
【００２８】
第１２の実施態様では、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知方法であって、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、グローバルプロパティ変更検知手段が、グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知ステップ、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ、検知ルール記憶手段に保存された検知ルールに合致した場合に不正検知として出力する不正検知出力ステップを有することを特徴とする不正検知方法を提供する。
【００２９】
第１３の実施態様では、上記の不正検知方法において、上記のグローバルプロパティ変更検知ステップが、代入フック処理部が、上記のプロパティに対する値の代入を検知する代入フック処理ステップ、不正代入検知処理部が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップから成る不正検知方法を提供する。
【００３０】
第１４の実施態様では、不正検知装置と、ウェブサーバ装置と、ユーザ端末装置とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムにおける不正検知方法であって、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成である。
【００３１】
そして、不正検知装置において、予め、グローバルプロパティ変更検知手段が、グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知ステップ、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ、の各ステップを実行処理する。
【００３２】
その上で、ウェブサーバ装置が、サービスの提供に用いるウェブコンテンツ情報であって、少なくともユーザ端末装置のウェブブラウザ処理手段によって実行される上記のプログラムとを含むウェブコンテンツ情報を記憶しておき、コンテンツ送信手段が、ウェブコンテンツ情報をユーザ端末装置に送信するコンテンツ送信ステップ、ユーザ端末装置のコンテンツ受信手段が、ウェブコンテンツ情報を受信するコンテンツ受信ステップ、ウェブブラウザ処理手段が、ウェブコンテンツを表示すると共にプログラムを実行するウェブブラウザ処理ステップ、所定の契機で不正検知装置に対して不正検知のための照会を送信する照会ステップ、不正検知装置の検知ルール送信手段が、ユーザ端末装置からの照会時に、検知ルール記憶手段に保存された検知ルールを送信するか、照会内容が検知ルールに当するかの結果を送信する検知ルール送信ステップ、ユーザ端末装置の不正検知装置通信手段が、検知ルール送信手段からの受信を行う不正検知装置通信ステップを有することを特徴とする不正検知方法を提供する。
【００３３】
第１５の実施態様では、上記の不正検知方法において、上記のグローバルプロパティ変更検知ステップが、代入フック処理部が、上記のプロパティに対する値の代入を検知する代入フック処理ステップ、不正代入検知処理部が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップから成る不正検知方法を提供する。
【発明の効果】
【００３４】
本発明は以上の構成をとることによって次の効果を奏する。
本発明に係る検知方法では、異なる環境におけるＨＴＭＬコードの差異を検出する手法をとらないため、正規のＷｅｂブラウザプラグインによるＨＴＭＬコードの変化に基づく過検知を抑制することができる。
【００３５】
そして、一般に検知したい攻撃の検知ルールを作成する場合には、検知したい攻撃コードは入手済みである。よって、入手済みの攻撃コードの代入のみを解析とすればよい。ブラウザが受信するリソースをすべて解析する必要がない。
【００３６】
従来技術のようにＨＴＭＬコードを比較する方法ではないため、ＨＴＭＬコードが難読化されている場合でも、ＨＴＭＬコードの解析はブラウザが行うため、耐難読性が高い。難読化有無にかかわらずJavaScriptの代入を検知し、代入先も特定可能である。難読化HTMLコードの解釈に時間がとられることはなく、素早く検知ルール作成可能である。
【図面の簡単な説明】
【００３７】
【図１】本発明における不正検知ネットワークシステムの全体図である。
【図２】本発明に係る不正検知装置のブロック図である。
【図３】本発明に係るウェブサーバ装置のブロック図である。
【図４】本発明に係るユーザ端末装置のブロック図である。
【図５】本発明の不正検知方法のフローチャートである。
【図６】ログイン画面で表示されるアラートの一例である。
【図７】ログインページのログインボタンの態様である。
【発明を実施するための形態】
【００３８】
以下、本発明の実施形態を図面を用いて説明する。本発明は以下の実施例に限定されず請求項記載の範囲で適宜実施することができる。
図１は、本発明における不正検知ネットワークシステム（１）の全体図である。本システムは、公知のインターネットバンキングや、オンライン証券システムを始めとする特に高いセキュリティが要求されるサービスを提供するシステムに適用可能である。
【００３９】
このようなシステムにおいては、ログイン画面を表示し、認証処理を行うことが一般的である。ＩＤとパスワードを入力する基本的な認証処理だけでなく、予めユーザ毎に割当てられた複数の問題とその正解との組み合わせから、ウェブサーバ装置がランダムに選択された問題を送信し、ネットワークで接続されたユーザ端末装置から正解を返信させることにより認証処理を行う方法が公知である。
例えば、インターネットバンキングにおいて契約者ごとに縦横５列の乱数表を配付しておき、乱数表から２つの数字を問う認証方法が用いられている。また、ペットの名前、母親の旧姓など予めユーザが設定した質問とその答えの組み合わせから、いくつかの質問を提示して正解を求める認証方法も知られている。
本発明では、認証方式は限定せず、マルウェアが正規のログイン処理を改変して不正な動作を生じさせる際に適用される技術を提供する。
【００４０】
本システム（１）は、インターネット（２）等のネットワークに接続されたウェブサーバ（１０）と、ユーザ端末（２０）、不正検知装置（３０）とから構成され、周知のようにウェブサーバ（１０）は多数のユーザ端末（２０）からのアクセスを受けてインターネットバンキング等のウェブを用いたサービスを提供する。
【００４１】
本発明では、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する。ウェブサーバ（１０）とユーザ端末（２０）との通信が確立した中で、ウェブサーバ（１０）から受信したウェブコンテンツに含まれるスクリプトを書き換えてウェブブラウザで不正に動作させる。ユーザは、接続先自体が正しく見た目もあまり変わらないため、気がつかずに処理を進めてしまう。入力された情報は、マルウェアによってインターネットで接続された不正サーバ（４０）に送信されるなど、不正な動作が行われる。
【００４２】
図２は不正検知装置（３０）のブロック図、図３はウェブサーバ（１０）のブロック図、図４はユーザ端末（２０）のブロック図、図５は本発明に係る不正検知方法のフローチャートである。以下、図面を参照しながら説明する。
【００４３】
本発明に係る不正検知装置（３０）は公知の端末装置であって、ＣＰＵ（３０）にはユーザ端末通信部（３００）、グローバルプロパティ変更検知部（３０１）、グローバルプロパティ変更検知部（３０１）を構成する代入フック処理部（３０２）、不正代入検知処理部（３０３）、検知ルール保存部（３０４）、不正検知判定処理部（３０５）が実装され、インターネット（２）との通信を行う通信部（３１）と、不正検知スクリプト（３２０）及び検知データベース（３２１）を格納した記憶部（３２）を接続している。不正検知装置（３０）は、故意に検知すべきマルウェアを感染させている。
【００４４】
ウェブサーバ（１０）はコンピュータを用いた公知のサーバ装置であって、ＣＰＵ（１０）においてコンピュータプログラムによって実現されるウェブサーバ処理部（１００）と、認証処理部（１０１）を備えている。また、インターネット（２）との通信を行うネットワークインタフェースである通信部（１１）、ハードディスクやメモリで提供される記憶部（１２）を備えている。その他の周知の構成については省略する。
記憶部（１２）にはサービスを提供するためのコンテンツ情報（１２０）が格納されている。
【００４５】
ユーザ端末（２０）もコンピュータを用いた周知の端末装置であって、ＣＰＵ（２０）においてコンピュータプログラムによって実現されるウェブブラウザ部（２００）、不正検知装置通信部（２０１）、認証処理部（２０２）を備えている。インターネット（２）との通信を行う通信部（２１）の他、入力手段として例えばキーボード・マウス（２２）や画面表示を行うモニタ（２３）を接続している。
【００４６】
本発明の実施において必須ではないが、一般的にはＳＳＬ通信などのセキュアな通信をウェブサーバ（１０）とユーザ端末（２０）との間で確立した後、第１認証処理として、ウェブサーバの認証処理部（１０１）がＩＤとパスワードを促す画面をユーザ端末（２０）に送信し、ユーザが入力した認証情報を認証処理部（２０２）が返信する。
【００４７】
本発明は図５に示すように、不正検知装置（３０）と、ウェブサーバ（１０）と、ユーザ端末（２０）とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムにおける不正検知方法を提供する。
本実施例ではプログラム言語としてJavaScriptを用いる。周知のようにJavaScriptの実行はほとんど全てのウェブブラウザアプリケーションが標準で可能である。なお、JavaScriptに限定されず、次のような要件を満たすプログラム言語であればすべて適用可能である。
【００４８】
すなわち、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成である。
【００４９】
JavaScriptにおいて、上記プロパティはオブジェクトに関連付けられた変数であり、オブジェクトである関数もプロパティに格納される。
具体的には、windowオブジェクトやElementオブジェクトを検知対象とする対象オブジェクトとして予め定め、これらがグローバル変数のときに、当該グローバル変数に値が代入されたことを検知する。
【００５０】
本発明ではこのようにグローバルプロパティの変化、例えばグローバル変数に対する値の代入を不正検知の方法とすることに特徴を有する。従来このような方法は提供されておらず、以下に説明するように大きな効果を有するものである。
【００５１】
不正検知装置（３０）において、予め、グローバルプロパティ変更検知部（３０１）が、グローバル変数の定義に変更があったことを検知するグローバルプロパティ変更検知ステップ（Ｓ１０）、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ（Ｓ１１）、の各ステップを実行処理する。
【００５２】
一つの実施例として、グローバルプロパティ変更検知ステップ（Ｓ１０）が、代入フック処理部（３０２）が、上記のプロパティに対する値の代入を検知する代入フック処理ステップ（Ｓ１０１）、不正代入検知処理部（３０３）が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップ（Ｓ１０２）から構成することができる。
【００５３】
より詳しく処理を説明すると、不正検知装置（３０）の通信部（３１）がウェブサーバ装置（１０）からJavaScriptのプログラムを含むコンテンツ情報（１２０）を受信する。これは、ユーザ端末（２０）が受信することと同じ処理であり、不正検知装置（３０）でも受信したコンテンツ情報（１２０）をウェブブラウザによって解析、実行する。
【００５４】
検知の対象となるプログラムを受けとるまでの手順は公知であって、例えばまずウェブブラウザがウェブサーバ（１０）から受けとったＨＴＭＬコードにあるリソースをウェブサーバ（１０）に要求し、さらに受けとったリソースを解析、実行する手順でもよい。
【００５５】
このようにウェブブラウザによって解析することで、例え難読化されたＨＴＭＬコードであっても、参照可能となるので、耐難読性が高い方法をとることができる。難読化の有無にかかわらずJavaScriptの変数への代入を検知し、代入先の特定も可能である。また、難読化ＨＴＭＬコードの解釈に時間を要することはなく、素早く検知ルールを作成可能である。
【００５６】
代入フック処理部（３０２）は、変数への値の代入を検知する。値の代入とは、ＨＴＭＬコードにおいて、
var me = new Object();  とオブジェクト型を生成し、
me.name = "Mr.X";    me.name変数にMr.Xを代入
me.age = 20;        me.age変数に20を代入
のような処理を指す。これは文字列や数値を代入する例であるが、JavaScriptではプロパティに関数を代入することができ、本発明でも特に関数を代入する場合が主要な検知対象と考えられる。
本実施例の具体例でいえば、window.alertというプロパティ（変数）についてもともと何らかの関数が定義されているところ、マルウェアが別の関数の定義を行うことがwindowプロパティに対する値の代入である。
【００５７】
代入フック処理部（３０２）はウェブブラウザによって解析されたＨＴＭＬコードを参照し、上記のような値の代入があった場合に、これを不正代入検知処理部（３０３）に送る。不正代入検知処理部（３０３）は、検知されたプロパティがグローバルプロパティであるか判定する。
グローバルプロパティとは、そのプロパティが定義されるスクリプトとは別のスクリプトからも参照可能であり、本発明ではこの代入がマルウェアの挙動の検知に有効であるとともに、上記のように耐難読性に優れたことに着目している。
【００５８】
グローバル変数が書き換えられた場合には、不正代入検知処理部（３０３）は不正検知として、検知ルール保存部（３０４）が検知ルール（３２０）を記録する。ここで検知ルール（３２０）の具体例を説明する。
【００５９】
まず、グローバル変数としてwindow.alertというプロパティが好適な検知対象である。window.alert関数は公知のようにJavaScriptにおいてアラートを画面に表示する関数である。図６に、ログイン画面で表示されるアラートの一例を示す。グローバル変数window.alertに対して、最初に
function alert(){[native code]}
が定義されていれば、window.alert関数が呼び出されたときに、[native code]に定義されたアラートが表示されるはずである。
ところが、マルウェア（悪意のある別のJavaScript）によってこのグローバル変数の書き換えが行われ、
function alert(){
}
が代入されるとする。
何も表示しない関数alert()が代入されると本来アラートを表示すべきところで、表示しないように処理を改ざんすることが可能となる。すなわち、window.alert()関数が呼ばれても、何もしないことでアラート表示を無効化する改ざんが行われる。
【００６０】
不正検知装置（３０）のグローバルプロパティ変更検知部（３０１）がwindow.alert変数の代入を検知すると、検知ルール保存部（３０４）は具体的にどのような書き換えがあったかを抽出し、検知ルール記憶ステップ（Ｓ１１）として保存する。
【００６１】
検知ルール（３２０）は、変更前あるいは変更後の少なくともいずれかの関数を変更パターンとして格納する。
例えば、window.alert関数の場合、書き換え前が
function alert(){[native code]}
であることをルールとしてもよいし（第１パターン）、逆に書き換え後にこの関数定義がなくなったことをルールとしてもよいし（第２パターン）、書き換え後が、
function alert(){}
であることをルールとしてもよい（第３パターン）。
第２パータンの具体的な記述としては、
window.alert.toString() != 'function alert(){[native code]}'
と定義する。toString（）関数は公知のように呼び出されると、その関数定義が返される関数であるので、上記記述によってwindow.alert変数の関数定義を参照し、function alert(){[native code]}でない場合に、不正検知とする。
【００６２】
もう一つの例として、Elementプロパティが好適な検知対象である。
document.getElementByld("loginButton").onclick
というグローバル変数は、IDが"loginButton"であるＨＴＭＬエレメント（タグ）を参照する。
ボタン等のＨＴＭＬエレメントに対してonclick関数を定義することで、クリックされた時に実行される処理をJavaScriptで記述できる。一般にイベントハンドラと呼ばれるものの一例であり、例えばログインページ等におけるログインボタンでonclickイベントハンドラを定義して、ボタンが押された時(ID・パスワードの入力が終わっている時期)に、テキストボックスの入力内容を検査するという使い方などがある。攻撃時には、ボタンが押された時にID・パスワードを攻撃者のサーバーに送信するなどの処理が可能とも言える。図７にはログインページのログインボタンの態様を示す。
【００６３】
onclick関数に対して、最初は入力内容を検査する
f () {
validate_input_in_textbox();
}
が定義されている。これは検査するための関数validate_input_in_textbox()を呼び出すものであるが、マルウェア（悪意のある別のJavaScript）によってこのグローバル変数の書き換えが行われ、
f () {
send_id_passwd_to_server();
}
が代入されるとする。ID・パスワードを攻撃者のサーバーに送信する関数send_id_passwd_to_server()に改ざんされたことになる。指定されたボタンのonclickイベントハンドラが改ざんされると、テキストボックス等に入力されたIDやパスワードを攻撃者のサーバーへ送信して情報窃取されてしまう。
ここでは、説明を分かりやすくするためにsend_id_passwd_to_server()というローカル関数を呼び出す改ざんを検知する例を示したが、ローカルの関数を呼ばずに、情報詐取・外部への通信などを行う処理に書き換えられる場合もグローバルなonclickを検知対象とすればよい。
【００６４】
不正検知装置（３０）のグローバルプロパティ変更検知部（３０１）がdocument.getElementByld("loginButton").onclick変数の代入を検知すると、検知ルール保存部（３０４）は具体的にどのような書き換えがあったかを抽出し、検知ルール記憶ステップ（Ｓ１１）として保存する。
【００６５】
この例でも、検知ルール（３２０）は、変更前あるいは変更後の少なくともいずれかの関数を変更パターンとして格納することができる。
例えば、document.getElementByld("loginButton").onclickの場合、書き換え前が
validate_input_in_textbox()
であることをルールとしてもよいし（第４パターン）、逆に書き換え後にこの関数定義がなくなったことをルールとしてもよいし（第５パターン）、書き換え後が、
send_id_passwd_to_server();
であることをルールとしてもよい（第６パターン）。
第６パターンの具体的な記述としては、
document.getElementById(“loginButton”).onclick ==
‘f () {
send_id_passwd_to_server();
}’
と定義する。（上記は読みやすいように改行を用いた擬似コードで表している）
上記記述によってdocument.getElementById(“loginButton”).onclick変数の関数定義を参照し、send_id_passwd_to_server()が呼び出される場合に、不正検知とする。
【００６６】
本発明に係る検知ルール（３２０）には上記のような定義が変更されたパターンを格納することが簡便であるが、変更により生じた結果を格納してもよい。例えば、グローバル変数に代入が行われたあとのＨＴＭＬコードのファイルサイズ、所定位置の文字、ハッシュ値など定義そのものなどを検知ルールとすることもできる。また、アラート画面が開かれない、といった事象を検知ルールとしてもよい。
【００６７】
本実施例では、上記のようにグローバルプロパティ変更検知ステップ（Ｓ１０）を代入フック処理ステップ（Ｓ１０１）と不正代入検知処理ステップ（Ｓ１０２）とから構成しているが、このような２段階の処理ではなく、検知対象とするグローバルプロパティを予め定めておき、当該グローバルプロパティへの代入を直接検知してもよい。
【００６８】
本発明では、以上の方法で予め検知ルール（３２０）を記憶部（３２）に格納する。このような検知ルールを生成する方法自体が本発明の第１の実施態様である。不正検知装置（３０）は、記憶部（３２）に保存された検知ルール（３２０）に合致した場合に不正検知として出力することができる。
【００６９】
不正検知装置（３０）をウェブサーバ（１０）、ユーザ端末（２０）と共に組み合わせて使用する上記システム（１）の説明を続ける。
ウェブサーバ（１０）が、サービスの提供に用いるウェブコンテンツ情報（１２０）であって、少なくともユーザ端末（２０）のウェブブラウザ部（２００）によって実行されるプログラム（JavaScript)とを含むウェブコンテンツ情報（１２０）を記憶部（１２）に格納する。
【００７０】
そして、コンテンツ送信手段として作用するウェブサーバ処理部（１００）が、ウェブコンテンツ情報（１２０）をユーザ端末（２０）に送信するコンテンツ送信ステップ（Ｓ１２）を実行する。対応してユーザ端末（２０）のコンテンツ受信手段として作用するウェブブラウザ部（２００）が、通信部（２１）を用いてウェブコンテンツ情報を受信するコンテンツ受信ステップ（Ｓ１３）を実行する。この送受信はウェブコンテンツの通信において周知である。
【００７１】
さらにウェブブラウザ処理ステップ（Ｓ１４）として、ユーザ端末（２０）のウェブブラウザ部（２００）が、ウェブコンテンツを表示すると共にプログラムを実行する。このときマルウェアに感染したユーザ端末（２０）では、例えば悪意のあるJavaScriptによって、グローバルプロパティの変更を行う。上記で説明したグローバル変数への代入である。
【００７２】
マルウェアに感染したユーザ端末（２０）であっても、マルウェア自体がグローバルプロパティを書き換えるためにＨＴＭＬコードのレンダリング等は正常に行われるため、本発明による検知が可能である。
そこで、不正検知照会（Ｓ１５）ステップでは、ユーザ端末（２０）に予めインストールする照会プログラムによって不正検知装置通信部（２０１）が不正検知装置（３０）への照会を行う。
【００７３】
不正検知装置（３０）のユーザ端末通信部（３００）は、不正検知装置通信部（２０１）からの照会を受信し、第１の実施例としては検知ルール（３２０）をユーザ端末装置（２０）に送信する（検知ルール送信ステップ：Ｓ１６）。
ユーザ端末装置（２０）の不正検知判定処理部（２０３）は、不正検知装置通信ステップ（Ｓ１７）で検知ルール（３２０）を受信し、検知ルールに該当するかどうかの判定を行う。
【００７４】
不正検知に該当する場合には、通信を遮断する、アラートを表示する、合致すると判定された検知ルールを表示する、などの不正検知対応動作（Ｓ１８）を行う。
このような一連の処理により、ユーザ端末（２０）では簡便に不正検知の判定が行われ、マルウェアによる不正な処理を防ぐことができる。
【００７５】
検知ルール送信ステップ（Ｓ１６）の第２の実施例としては不正検知装置通信部（２０１）が書き換えられた（可能性のある）ＨＴＭＬコードをユーザ端末通信部（３００）に向けて送信し、不正検知判定処理部（３０５）が検知ルール（３２０）に基づいて不正検知を行う。
【００７６】
判定結果は、不正検知装置通信ステップ（Ｓ１７）において、ユーザ端末装置（２０）の不正検知判定処理部（２０３）が受信し、不正検知に該当する場合には、通信を遮断する、アラートを表示する、合致すると判定された検知ルールを表示する、などの不正検知対応動作（Ｓ１８）を行う。
【００７７】
上記実施例では、不正検知装置（３０）、ユーザ端末（２０）、ウェブサーバ（１０）がそれぞれインターネット（２）で接続される別個の装置として説明されているが、例えば不正検知装置（３０）とウェブサーバ（１０）、不正検知装置（３０）とユーザ端末（２０）を一体に構成してもよい。
【００７８】
不正検知装置（３０）とウェブサーバ（１０）が一体の場合、不正検知装置を構成するモジュールでは故意にマルウェアに感染させ、ウェブブラウザを備えてグローバルプロパティ変更検知ステップ（Ｓ１０）を実行する。コンテンツの送受信に係るステップ（Ｓ１２）（Ｓ１３）、不正検知照会、検知ルール送信、不正検知装置通信（Ｓ１５，Ｓ１６，Ｓ１７）が一体化された不正検知装置（３０）・ウェブサーバ（１０）と行われることの他は、各処理は同様である。
【００７９】
不正検知装置（３０）とユーザ端末（２０）を一体に構成した場合、不正検知装置のモジュールは、別のアプリケーションで構成してもよいし、ウェブブラウザのプラグインのようにウェブブラウザ内部にあってもよい。
【００８０】
以上に説明した本発明に係る検知方法では、異なる環境におけるＨＴＭＬコードの差異を検出する手法をとらず、予め不正検知装置（３０）に検知ルールを格納する。検知ルールは、ウェブブラウザが解析するコードを対象とするので耐難読性に優れ、同時に過検知を抑制することができる。
【符号の説明】
【００８１】
１  不正検知ネットワークシステム
２  インターネット
１０  ウェブサーバ
２０  ユーザ端末
３０  不正検知装置
４０  不正サーバ
【図１】
2019168805.tif 000003
【図２】
2019168805.tif 000004
【図３】
2019168805.tif 000005
【図４】
2019168805.tif 000006
【図５】
2019168805.tif 000007
【図６】
2019168805.tif 000008
【図７】
2019168805.tif 000009