(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-21
(45)【発行日】2022-01-31
(54)【発明の名称】不正検知装置、不正検知ネットワークシステム、及び不正検知方法
(51)【国際特許分類】
G06F 21/56 20130101AFI20220124BHJP
G06F 21/12 20130101ALI20220124BHJP
【FI】
G06F21/56 360
G06F21/12 380
(21)【出願番号】P 2018054629
(22)【出願日】2018-03-22
【審査請求日】2021-01-06
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成28年度国立研究開発法人情報通信研究機構「高度通信・放送研究開発委託研究/Web媒介型攻撃対策技術の実用化に向けた研究開発」、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504377367
【氏名又は名称】株式会社セキュアブレイン
(74)【代理人】
【識別番号】100130111
【氏名又は名称】新保 斉
(72)【発明者】
【氏名】松本 英樹
(72)【発明者】
【氏名】藤原 信代
(72)【発明者】
【氏名】岡田 晃市郎
【審査官】岸野 徹
(56)【参考文献】
【文献】国際公開第2017/077847(WO,A1)
【文献】国際公開第2018/022255(WO,A1)
【文献】特表2011-512576(JP,A)
【文献】特開2017-123143(JP,A)
【文献】米国特許出願公開第2018/0032731(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
G06F 21/12
(57)【特許請求の範囲】
【請求項1】
ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知装置であって、
該マルウェアが該プログラム言語におけるプロパティの変更を行うことを検知対象とし、該プログラム言語の構文上、該プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、該プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、
該グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知手段と、
該グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルールとして保存する検知ルール記憶手段とを備え、
該検知ルール記憶手段に保存された検知ルールに合致した場合に不正検知として出力する
ことを特徴とする不正検知装置。
【請求項2】
前記不正検知装置において、前記グローバルプロパティ変更検知手段が、
前記プロパティに対する値の代入を検知する代入フック処理部と、
検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理部と
から成る請求項1に記載の不正検知装置。
【請求項3】
前記プログラム言語が、JavaScriptであって、
前記プロパティがオブジェクトに関連付けられた変数であり、
JavaScriptに用意されるオブジェクトから検知対象とする対象オブジェクトを予め定め、前記グローバルプロパティ変更検知手段が、対象オブジェクトに係るグローバル変数に値が代入されたことを検知する
請求項1又は2に記載の不正検知装置。
【請求項4】
前記対象オブジェクトが、windowオブジェクト又はElementオブジェクトの少なくともいずれかを含む
請求項3に記載の不正検知装置。
【請求項5】
前記検知ルールが、前記グローバル変数に代入された関数の変更前又は変更後の値を変更パターンとして定められる
請求項3又は4に記載の不正検知装置。
【請求項6】
不正検知装置と、ウェブサーバ装置と、ユーザ端末装置とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムであって、
該不正検知装置が、
該マルウェアが該プログラム言語におけるプロパティの変更を行うことを検知対象とし、該プログラム言語の構文上、該プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、該プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、
該グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知手段と、
該グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルールとして保存する検知ルール記憶手段と、
該ユーザ端末装置からの照会時に、該検知ルール記憶手段に保存された該検知ルールを送信するか、
照会された内容が該検知ルールに該当するかの結果を送信する検知ルール送信手段と
を備えると共に、
該ウェブサーバ装置が、
サービスの提供に用いるウェブコンテンツ情報であって、少なくとも該ユーザ端末装置のウェブブラウザ処理手段によって実行される前記プログラムとを含むウェブコンテンツ情報を記憶する記憶手段と、
該ウェブコンテンツ情報を該ユーザ端末装置に送信するコンテンツ送信手段と
を備えると共に、
該ユーザ端末装置に、
該ウェブコンテンツ情報を受信するコンテンツ受信手段と、
該ウェブコンテンツ
情報を表示すると共に該プログラムを実行するウェブブラウザ処理手段と、
所定の契機で該不正検知装置に対して不正検知のための照会を送信し、該検知ルール送信手段からの受信を行う不正検知装置通信手段と
を備える
ことを特徴とする不正検知ネットワークシステム。
【請求項7】
前記不正検知装置において、前記グローバルプロパティ変更検知手段が、
前記プロパティに対する値の代入を検知する代入フック処理部と、
検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理部と
から成る請求項6に記載の不正検知ネットワークシステム。
【請求項8】
前記プログラム言語が、JavaScriptであって、
前記プロパティがオブジェクトに関連付けられた変数であり、
JavaScriptに用意されるオブジェクトから検知対象とする対象オブジェクトを予め定め、前記グローバルプロパティ変更検知手段が、対象オブジェクトに係るグローバル変数に値が代入されたことを検知する
請求項6又は7に記載の不正検知ネットワークシステム。
【請求項9】
前記対象オブジェクトが、windowオブジェクト又はElementオブジェクトの少なくともいずれかを含む
請求項8に記載の不正検知ネットワークシステム。
【請求項10】
前記検知ルールが、前記グローバル変数に代入された関数の変更前又は変更後の値を変更パターンとして定められる
請求項8又は9に記載の不正検知ネットワークシステム。
【請求項11】
請求項6ないし10のいずれかに記載の前記不正検知ネットワークシステムにおいて用いられる、ユーザ端末装置。
【請求項12】
ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する
不正検知装置の不正検知方法であって、
該マルウェアが該プログラム言語におけるプロパティの変更を行うことを検知対象とし、該プログラム言語の構文上、該プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、該プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、
不正検知装置のグローバルプロパティ変更検知手段が、該グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知ステップ、
該グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を
不正検知装置の検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ、
該検知ルール記憶手段に保存された検知ルールに合致した場合に不正検知として出力する不正検知出力ステップ
を有することを特徴とする不正検知方法。
【請求項13】
前記不正検知方法において、前記グローバルプロパティ変更検知ステップが、
不正検知装置の代入フック処理部が、前記プロパティに対する値の代入を検知する代入フック処理ステップ、
不正検知装置の不正代入検知処理部が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップ
から成る請求項12に記載の不正検知方法。
【請求項14】
不正検知装置と、ウェブサーバ装置と、ユーザ端末装置とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムにおける不正検知方法であって、
該マルウェアが該プログラム言語におけるプロパティの変更を行うことを検知対象とし、該プログラム言語の構文上、該プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、該プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、
該不正検知装置において、予め、
グローバルプロパティ変更検知手段が、該グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知ステップ、
該グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ、
の各ステップを実行処理した上で、
該ウェブサーバ装置が、サービスの提供に用いるウェブコンテンツ情報であって、少なくとも該ユーザ端末装置のウェブブラウザ処理手段によって実行される前記プログラムとを含むウェブコンテンツ情報を記憶しておき、コンテンツ送信手段が、該ウェブコンテンツ情報を該ユーザ端末装置に送信するコンテンツ送信ステップ、
該ユーザ端末装置のコンテンツ受信手段が、該ウェブコンテンツ情報を受信するコンテンツ受信ステップ、
ウェブブラウザ処理手段が、該ウェブコンテンツ
情報を表示すると共に該プログラムを実行するウェブブラウザ処理ステップ、
所定の契機で該不正検知装置に対して不正検知のための照会を送信する照会ステップ、
該不正検知装置の検知ルール送信手段が、該ユーザ端末装置からの照会時に、該検知ルール記憶手段に保存された該検知ルールを送信するか、
照会された内容が該検知ルールに該当するかの結果を送信する検知ルール送信ステップ、
該ユーザ端末装置の不正検知装置通信手段が、該検知ルール送信手段からの受信を行う不正検知装置通信ステップ
を有することを特徴とする不正検知方法。
【請求項15】
前記不正検知方法において、前記グローバルプロパティ変更検知ステップが、
代入フック処理部が、前記プロパティに対する値の代入を検知する代入フック処理ステップ、
不正代入検知処理部が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップ
から成る請求項14に記載の不正検知方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ユーザ端末装置において不正な動作を行われることを検知する不正検知サーバ装置、そのネットワークシステム、方法に関し、より詳しくは、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する技術に係る。
【背景技術】
【0002】
インターネットバンキングなど高度なセキュリティが要求されるサービスの提供が進む中で、マルウェアによる攻撃方法も多様化している。従来のマルウェアでは、ユーザ端末装置がマルウェアに感染すると、ログイン時に入力されるIDやパスワードが読み取られてユーザが意図しない送金などに悪用される例がある。この場合、毎回パスワードが変更されるワンタイムパスワードを導入したり、通信を暗号化することで被害を防止する対策がとられている。
【0003】
また、通常のIDとパスワードによる第1の認証を行って通信セッションを確立した後に、さらに第2の認証を行って不正なアクセスを防止する方法も多く採用されている。第2認証の多くは、予めユーザに付与された乱数表から任意のいくつかの答えだけを問う形式であるため、乱数表全体を入手しないと不正なアクセスに成功しない。そこで、銀行サイトに酷似する画面に誘導して、乱数表の全ての答えを入力させるフィッシングと呼ばれる手法もある。
【0004】
フィッシングの場合はアクセスする先が偽のサイトであるため、ユーザの注意や、セキュリティ対策ソフトによる検知が比較的容易である。
そこで最近では、例えばブラウザのプロセスに入り込むことで第1認証の成功後に、SSLの暗号通信が復号された後の平文を改ざんし、偽の第2認証画面を表示し、ユーザが気がつかないうちに必要な情報を窃取したり、あるいはユーザが意図しない操作を行ってしまう攻撃方法が現れている。この攻撃はMan In The Browser(MITB)攻撃と呼ばれており、正規のサイトに接続された状態で不正動作が行われるためユーザやウイルス検知ソフトによる発見が困難な問題がある。
【0005】
例えば、特許文献1には、ウェブサイトへの外部送出を傍受し、ウェブサイトに関連するトランザクションフィンガープリントに照らし合わせて、ユーザー入力が外部送出を行ったか否かを決定するマン・イン・ザ・ブラウザ攻撃を検出する方法が開示されている。
【0006】
また、非特許文献1には、このようなMITB攻撃への対策としてセキュアモジュールを端末側にインストールすることでマルウェアによる介入を防御するソフトウェア(株式会社FFRI製「Limosa」)が開示されている。本ソフトウェアでは、ユーザーが対象サイトにアクセスし、ログインする際にサイトからセキュアモジュールがダウンロードされ、自動的にブラウザに適用されるとしている。
【0007】
特許文献2は、ユーザ端末上で動作するブラウザを介してマルウェアに感染したユーザ端末装置内のマルウェアを検出する方法であって、前記ユーザ端末上の所定のトリガイベントを検出すると、前記端末にインストールされたセキュリティアプリケーションが1つまたは複数の所定のURLにナビゲートする透明なブラウザを自動的に起動することが開示されている。そして、セキュリティアプリケーションは、透過ブラウザによって開かれた直後に受信された検査されたウェブページのコードをチェックし、透明ブラウザによって少なくとも部分的に処理された後にコードを再検査し、コードが変更された場合、端末がマルウェアに感染していることを示すアラートが発行することを提案している。
【0008】
このように特許文献2は、マルウェアに感染していない場合と、している場合におけるHTMLコードの差異をみてマルウェア感染を検出する方法ということができる。HTMLコードの差異自体は検出が容易であるが、この差異が特定のマルウェアによるものかを判定するロジックが必要となる。
【0009】
特許文献3は、特許文献2と類似するが、ユーザ環境におけるHTMLコードと、記載される発明により提供される環境におけるHTMLコードの差異をユーザ端末で比較を行い、差異がある場合にはマルウェア感染の疑いがあるとして検出する方法である。
【先行技術文献】
【特許文献】
【0010】
【文献】特開2010-182293号公報
【文献】米国特許公開2011/0239300
【文献】特開2014-203464号公報
【非特許文献】
【0011】
【文献】「FFRI Limosa 製品概要」インターネットURL:http://www.ffri.jp/products/limosa/index.htm 2018年3月1日検索
【発明の概要】
【発明が解決しようとする課題】
【0012】
上記の特許文献2及び3の技術では、検知したいマルウェアの特徴を把握し、当該マルウェア特有のHTMLコードの差異を事前に抽出し、検知ロジックとして構築する必要がある。
【0013】
また、比較の基準となるHTMLコードを取得する環境と、比較対象となるHTMLコードを取得する環境とが異なる場合に、どちらかの環境のみに導入された正規のWebブラウザプラグインによるHTMLコードの変化も検知してしまう可能性がある。このような過検知は、正常な使用を妨げるもので使用性の悪化につながる。
【0014】
一方、比較の基準となるHTMLコードを取得する環境と、比較対象となるHTMLコードを取得する環境とが同一である場合に、比較基準となるHTMLコード自体もマルウェアによって改ざんされてしまう可能性がある。
さらに、攻撃マルウェアによっては、HTMLコードを改ざんせずに、JavaScriptコードを改ざんする場合があり、HTMLコードの比較では検知できない場合がある。
このような検知のすり抜けは、当然のことながらセキュリティを脅かすものである。
【0015】
本発明は上記従来技術の有する問題点に鑑みて創出されたものであり、新しい不正検知の方法を提案し、高精度な不正検知の技術を提供することを目的とする。
【課題を解決するための手段】
【0016】
本発明は上記課題を解決するため、本発明は次のような不正検知技術を提供する。
まず、第1の実施態様では、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知装置であって、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知手段と、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルールとして保存する検知ルール記憶手段とを備え、検知ルール記憶手段に保存された検知ルールに合致した場合に不正検知として出力することを特徴とする不正検知装置を提供する。
【0017】
第2の実施態様では、上記の不正検知装置において、上記のグローバルプロパティ変更検知手段が、上記のプロパティに対する値の代入を検知する代入フック処理部と、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理部とから成る不正検知装置を提供する。
【0018】
第3の実施態様では、上記のプログラム言語が、JavaScriptであって、上記のプロパティがオブジェクトに関連付けられた変数であり、JavaScriptに用意されるオブジェクトから検知対象とする対象オブジェクトを予め定め、上記のグローバルプロパティ変更検知手段が、対象オブジェクトに係るグローバル変数に値が代入されたことを検知する不正検知装置を提供する。
【0019】
第4の実施態様では、上記の対象オブジェクトが、windowオブジェクト又はElementオブジェクトの少なくともいずれかを含む不正検知装置を提供する。
【0020】
第5の実施態様では、上記の検知ルールが、上記のグローバル変数に代入された関数の変更前又は変更後の値を変更パターンとして定められる不正検知装置を提供する。
【0021】
第6の実施態様では、不正検知装置と、ウェブサーバ装置と、ユーザ端末装置とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムを提供する。
本システムにおいて、不正検知装置が、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知手段と、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルールとして保存する検知ルール記憶手段と、ユーザ端末装置からの照会時に、検知ルール記憶手段に保存された検知ルールを送信するか、照会内容が検知ルールに当するかの結果を送信する検知ルール送信手段とを備える。
【0022】
また、ウェブサーバ装置が、サービスの提供に用いるウェブコンテンツ情報であって、少なくともユーザ端末装置のウェブブラウザ処理手段によって実行される上記のプログラムとを含むウェブコンテンツ情報を記憶する記憶手段と、ウェブコンテンツ情報をユーザ端末装置に送信するコンテンツ送信手段とを備える。さらに、ユーザ端末装置に、ウェブコンテンツ情報を受信するコンテンツ受信手段と、ウェブコンテンツを表示すると共にプログラムを実行するウェブブラウザ処理手段と、所定の契機で不正検知装置に対して不正検知のための照会を送信し、検知ルール送信手段からの受信を行う不正検知装置通信手段とを備えることを特徴とする不正検知ネットワークシステムを提供する。
【0023】
第7の実施態様では、上記の不正検知装置において、上記のグローバルプロパティ変更検知手段が、上記のプロパティに対する値の代入を検知する代入フック処理部と、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理部とから成る不正検知ネットワークシステムを提供する。
【0024】
第8の実施態様では、上記のプログラム言語が、JavaScriptであって、上記のプロパティがオブジェクトに関連付けられた変数であり、JavaScriptに用意されるオブジェクトから検知対象とする対象オブジェクトを予め定め、上記のグローバルプロパティ変更検知手段が、対象オブジェクトに係るグローバル変数に値が代入されたことを検知する不正検知ネットワークシステムを提供する。
【0025】
第9の実施態様では、上記の対象オブジェクトが、windowオブジェクト又はElementオブジェクトの少なくともいずれかを含む不正検知ネットワークシステムを提供する。
【0026】
第10の実施態様では、上記の検知ルールが、上記のグローバル変数に代入された関数の変更前又は変更後の値を変更パターンとして定められる不正検知ネットワークシステムを提供する。
【0027】
第11の実施態様では、上記記載の不正検知ネットワークシステムにおいて用いられる、ユーザ端末装置を提供することもできる。
【0028】
第12の実施態様では、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知方法であって、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成において、グローバルプロパティ変更検知手段が、グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知ステップ、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ、検知ルール記憶手段に保存された検知ルールに合致した場合に不正検知として出力する不正検知出力ステップを有することを特徴とする不正検知方法を提供する。
【0029】
第13の実施態様では、上記の不正検知方法において、上記のグローバルプロパティ変更検知ステップが、代入フック処理部が、上記のプロパティに対する値の代入を検知する代入フック処理ステップ、不正代入検知処理部が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップから成る不正検知方法を提供する。
【0030】
第14の実施態様では、不正検知装置と、ウェブサーバ装置と、ユーザ端末装置とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムにおける不正検知方法であって、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成である。
【0031】
そして、不正検知装置において、予め、グローバルプロパティ変更検知手段が、グローバルプロパティの定義に変更があったことを検知するグローバルプロパティ変更検知ステップ、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ、の各ステップを実行処理する。
【0032】
その上で、ウェブサーバ装置が、サービスの提供に用いるウェブコンテンツ情報であって、少なくともユーザ端末装置のウェブブラウザ処理手段によって実行される上記のプログラムとを含むウェブコンテンツ情報を記憶しておき、コンテンツ送信手段が、ウェブコンテンツ情報をユーザ端末装置に送信するコンテンツ送信ステップ、ユーザ端末装置のコンテンツ受信手段が、ウェブコンテンツ情報を受信するコンテンツ受信ステップ、ウェブブラウザ処理手段が、ウェブコンテンツを表示すると共にプログラムを実行するウェブブラウザ処理ステップ、所定の契機で不正検知装置に対して不正検知のための照会を送信する照会ステップ、不正検知装置の検知ルール送信手段が、ユーザ端末装置からの照会時に、検知ルール記憶手段に保存された検知ルールを送信するか、照会内容が検知ルールに当するかの結果を送信する検知ルール送信ステップ、ユーザ端末装置の不正検知装置通信手段が、検知ルール送信手段からの受信を行う不正検知装置通信ステップを有することを特徴とする不正検知方法を提供する。
【0033】
第15の実施態様では、上記の不正検知方法において、上記のグローバルプロパティ変更検知ステップが、代入フック処理部が、上記のプロパティに対する値の代入を検知する代入フック処理ステップ、不正代入検知処理部が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップから成る不正検知方法を提供する。
【発明の効果】
【0034】
本発明は以上の構成をとることによって次の効果を奏する。
本発明に係る検知方法では、異なる環境におけるHTMLコードの差異を検出する手法をとらないため、正規のWebブラウザプラグインによるHTMLコードの変化に基づく過検知を抑制することができる。
【0035】
そして、一般に検知したい攻撃の検知ルールを作成する場合には、検知したい攻撃コードは入手済みである。よって、入手済みの攻撃コードの代入のみを解析とすればよい。ブラウザが受信するリソースをすべて解析する必要がない。
【0036】
従来技術のようにHTMLコードを比較する方法ではないため、HTMLコードが難読化されている場合でも、HTMLコードの解析はブラウザが行うため、耐難読性が高い。難読化有無にかかわらずJavaScriptの代入を検知し、代入先も特定可能である。難読化HTMLコードの解釈に時間がとられることはなく、素早く検知ルール作成可能である。
【図面の簡単な説明】
【0037】
【
図1】本発明における不正検知ネットワークシステムの全体図である。
【
図2】本発明に係る不正検知装置のブロック図である。
【
図3】本発明に係るウェブサーバ装置のブロック図である。
【
図4】本発明に係るユーザ端末装置のブロック図である。
【
図5】本発明の不正検知方法のフローチャートである。
【
図6】ログイン画面で表示されるアラートの一例である。
【
図7】ログインページのログインボタンの態様である。
【発明を実施するための形態】
【0038】
以下、本発明の実施形態を図面を用いて説明する。本発明は以下の実施例に限定されず請求項記載の範囲で適宜実施することができる。
図1は、本発明における不正検知ネットワークシステム(1)の全体図である。本システムは、公知のインターネットバンキングや、オンライン証券システムを始めとする特に高いセキュリティが要求されるサービスを提供するシステムに適用可能である。
【0039】
このようなシステムにおいては、ログイン画面を表示し、認証処理を行うことが一般的である。IDとパスワードを入力する基本的な認証処理だけでなく、予めユーザ毎に割当てられた複数の問題とその正解との組み合わせから、ウェブサーバ装置がランダムに選択された問題を送信し、ネットワークで接続されたユーザ端末装置から正解を返信させることにより認証処理を行う方法が公知である。
例えば、インターネットバンキングにおいて契約者ごとに縦横5列の乱数表を配付しておき、乱数表から2つの数字を問う認証方法が用いられている。また、ペットの名前、母親の旧姓など予めユーザが設定した質問とその答えの組み合わせから、いくつかの質問を提示して正解を求める認証方法も知られている。
本発明では、認証方式は限定せず、マルウェアが正規のログイン処理を改変して不正な動作を生じさせる際に適用される技術を提供する。
【0040】
本システム(1)は、インターネット(2)等のネットワークに接続されたウェブサーバ(10)と、ユーザ端末(20)、不正検知装置(30)とから構成され、周知のようにウェブサーバ(10)は多数のユーザ端末(20)からのアクセスを受けてインターネットバンキング等のウェブを用いたサービスを提供する。
【0041】
本発明では、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する。ウェブサーバ(10)とユーザ端末(20)との通信が確立した中で、ウェブサーバ(10)から受信したウェブコンテンツに含まれるスクリプトを書き換えてウェブブラウザで不正に動作させる。ユーザは、接続先自体が正しく見た目もあまり変わらないため、気がつかずに処理を進めてしまう。入力された情報は、マルウェアによってインターネットで接続された不正サーバ(40)に送信されるなど、不正な動作が行われる。
【0042】
図2は不正検知装置(30)のブロック図、
図3はウェブサーバ(10)のブロック図、
図4はユーザ端末(20)のブロック図、
図5は本発明に係る不正検知方法のフローチャートである。以下、図面を参照しながら説明する。
【0043】
本発明に係る不正検知装置(30)は公知の端末装置であって、CPU(30)にはユーザ端末通信部(300)、グローバルプロパティ変更検知部(301)、グローバルプロパティ変更検知部(301)を構成する代入フック処理部(302)、不正代入検知処理部(303)、検知ルール保存部(304)、不正検知判定処理部(305)が実装され、インターネット(2)との通信を行う通信部(31)と、不正検知スクリプト(320)及び検知データベース(321)を格納した記憶部(32)を接続している。不正検知装置(30)は、故意に検知すべきマルウェアを感染させている。
【0044】
ウェブサーバ(10)はコンピュータを用いた公知のサーバ装置であって、CPU(10)においてコンピュータプログラムによって実現されるウェブサーバ処理部(100)と、認証処理部(101)を備えている。また、インターネット(2)との通信を行うネットワークインタフェースである通信部(11)、ハードディスクやメモリで提供される記憶部(12)を備えている。その他の周知の構成については省略する。
記憶部(12)にはサービスを提供するためのコンテンツ情報(120)が格納されている。
【0045】
ユーザ端末(20)もコンピュータを用いた周知の端末装置であって、CPU(20)においてコンピュータプログラムによって実現されるウェブブラウザ部(200)、不正検知装置通信部(201)、認証処理部(202)を備えている。インターネット(2)との通信を行う通信部(21)の他、入力手段として例えばキーボード・マウス(22)や画面表示を行うモニタ(23)を接続している。
【0046】
本発明の実施において必須ではないが、一般的にはSSL通信などのセキュアな通信をウェブサーバ(10)とユーザ端末(20)との間で確立した後、第1認証処理として、ウェブサーバの認証処理部(101)がIDとパスワードを促す画面をユーザ端末(20)に送信し、ユーザが入力した認証情報を認証処理部(202)が返信する。
【0047】
本発明は
図5に示すように、不正検知装置(30)と、ウェブサーバ(10)と、ユーザ端末(20)とから構成され、ウェブブラウザにおいて実行可能な所定のプログラム言語で記載されたプログラムに対してマルウェアが不正な動作を行わせることを検知する不正検知ネットワークシステムにおける不正検知方法を提供する。
本実施例ではプログラム言語としてJavaScriptを用いる。周知のようにJavaScriptの実行はほとんど全てのウェブブラウザアプリケーションが標準で可能である。なお、JavaScriptに限定されず、次のような要件を満たすプログラム言語であればすべて適用可能である。
【0048】
すなわち、マルウェアがプログラム言語におけるプロパティの変更を行うことを検知対象とし、プログラム言語の構文上、プロパティは、変数、関数、定数の少なくともいずれかを定義可能であり、プロパティには定義されるプログラムとは別のプログラムからも参照可能であるグローバルプロパティを含む構成である。
【0049】
JavaScriptにおいて、上記プロパティはオブジェクトに関連付けられた変数であり、オブジェクトである関数もプロパティに格納される。
具体的には、windowオブジェクトやElementオブジェクトを検知対象とする対象オブジェクトとして予め定め、これらがグローバル変数のときに、当該グローバル変数に値が代入されたことを検知する。
【0050】
本発明ではこのようにグローバルプロパティの変化、例えばグローバル変数に対する値の代入を不正検知の方法とすることに特徴を有する。従来このような方法は提供されておらず、以下に説明するように大きな効果を有するものである。
【0051】
不正検知装置(30)において、予め、グローバルプロパティ変更検知部(301)が、グローバル変数の定義に変更があったことを検知するグローバルプロパティ変更検知ステップ(S10)、グローバルプロパティ変更検知手段によって検出された定義の変更パターン又は変更により生じた結果を検知ルール記憶手段が検知ルールとして保存する検知ルール記憶ステップ(S11)、の各ステップを実行処理する。
【0052】
一つの実施例として、グローバルプロパティ変更検知ステップ(S10)が、代入フック処理部(302)が、上記のプロパティに対する値の代入を検知する代入フック処理ステップ(S101)、不正代入検知処理部(303)が、検知されたプロパティがグローバルプロパティであるか判定し、グローバルプロパティの場合に不正な代入と検知する不正代入検知処理ステップ(S102)から構成することができる。
【0053】
より詳しく処理を説明すると、不正検知装置(30)の通信部(31)がウェブサーバ装置(10)からJavaScriptのプログラムを含むコンテンツ情報(120)を受信する。これは、ユーザ端末(20)が受信することと同じ処理であり、不正検知装置(30)でも受信したコンテンツ情報(120)をウェブブラウザによって解析、実行する。
【0054】
検知の対象となるプログラムを受けとるまでの手順は公知であって、例えばまずウェブブラウザがウェブサーバ(10)から受けとったHTMLコードにあるリソースをウェブサーバ(10)に要求し、さらに受けとったリソースを解析、実行する手順でもよい。
【0055】
このようにウェブブラウザによって解析することで、例え難読化されたHTMLコードであっても、参照可能となるので、耐難読性が高い方法をとることができる。難読化の有無にかかわらずJavaScriptの変数への代入を検知し、代入先の特定も可能である。また、難読化HTMLコードの解釈に時間を要することはなく、素早く検知ルールを作成可能である。
【0056】
代入フック処理部(302)は、変数への値の代入を検知する。値の代入とは、HTMLコードにおいて、
var me = new Object(); とオブジェクト型を生成し、
me.name = "Mr.X"; me.name変数にMr.Xを代入
me.age = 20; me.age変数に20を代入
のような処理を指す。これは文字列や数値を代入する例であるが、JavaScriptではプロパティに関数を代入することができ、本発明でも特に関数を代入する場合が主要な検知対象と考えられる。
本実施例の具体例でいえば、window.alertというプロパティ(変数)についてもともと何らかの関数が定義されているところ、マルウェアが別の関数の定義を行うことがwindowプロパティに対する値の代入である。
【0057】
代入フック処理部(302)はウェブブラウザによって解析されたHTMLコードを参照し、上記のような値の代入があった場合に、これを不正代入検知処理部(303)に送る。不正代入検知処理部(303)は、検知されたプロパティがグローバルプロパティであるか判定する。
グローバルプロパティとは、そのプロパティが定義されるスクリプトとは別のスクリプトからも参照可能であり、本発明ではこの代入がマルウェアの挙動の検知に有効であるとともに、上記のように耐難読性に優れたことに着目している。
【0058】
グローバル変数が書き換えられた場合には、不正代入検知処理部(303)は不正検知として、検知ルール保存部(304)が検知ルール(320)を記録する。ここで検知ルール(320)の具体例を説明する。
【0059】
まず、グローバル変数としてwindow.alertというプロパティが好適な検知対象である。window.alert関数は公知のようにJavaScriptにおいてアラートを画面に表示する関数である。
図6に、ログイン画面で表示されるアラートの一例を示す。グローバル変数window.alertに対して、最初に
function alert(){[native code]}
が定義されていれば、window.alert関数が呼び出されたときに、[native code]に定義されたアラートが表示されるはずである。
ところが、マルウェア(悪意のある別のJavaScript)によってこのグローバル変数の書き換えが行われ、
function alert(){
}
が代入されるとする。
何も表示しない関数alert()が代入されると本来アラートを表示すべきところで、表示しないように処理を改ざんすることが可能となる。すなわち、window.alert()関数が呼ばれても、何もしないことでアラート表示を無効化する改ざんが行われる。
【0060】
不正検知装置(30)のグローバルプロパティ変更検知部(301)がwindow.alert変数の代入を検知すると、検知ルール保存部(304)は具体的にどのような書き換えがあったかを抽出し、検知ルール記憶ステップ(S11)として保存する。
【0061】
検知ルール(320)は、変更前あるいは変更後の少なくともいずれかの関数を変更パターンとして格納する。
例えば、window.alert関数の場合、書き換え前が
function alert(){[native code]}
であることをルールとしてもよいし(第1パターン)、逆に書き換え後にこの関数定義がなくなったことをルールとしてもよいし(第2パターン)、書き換え後が、
function alert(){}
であることをルールとしてもよい(第3パターン)。
第2パータンの具体的な記述としては、
window.alert.toString() != 'function alert(){[native code]}'
と定義する。toString()関数は公知のように呼び出されると、その関数定義が返される関数であるので、上記記述によってwindow.alert変数の関数定義を参照し、function alert(){[native code]}でない場合に、不正検知とする。
【0062】
もう一つの例として、Elementプロパティが好適な検知対象である。
document.getElementByld("loginButton").onclick
というグローバル変数は、IDが"loginButton"であるHTMLエレメント(タグ)を参照する。
ボタン等のHTMLエレメントに対してonclick関数を定義することで、クリックされた時に実行される処理をJavaScriptで記述できる。一般にイベントハンドラと呼ばれるものの一例であり、例えばログインページ等におけるログインボタンでonclickイベントハンドラを定義して、ボタンが押された時(ID・パスワードの入力が終わっている時期)に、テキストボックスの入力内容を検査するという使い方などがある。攻撃時には、ボタンが押された時にID・パスワードを攻撃者のサーバーに送信するなどの処理が可能とも言える。
図7にはログインページのログインボタンの態様を示す。
【0063】
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を検知対象とすればよい。
【0064】
不正検知装置(30)のグローバルプロパティ変更検知部(301)がdocument.getElementByld("loginButton").onclick変数の代入を検知すると、検知ルール保存部(304)は具体的にどのような書き換えがあったかを抽出し、検知ルール記憶ステップ(S11)として保存する。
【0065】
この例でも、検知ルール(320)は、変更前あるいは変更後の少なくともいずれかの関数を変更パターンとして格納することができる。
例えば、document.getElementByld("loginButton").onclickの場合、書き換え前が
validate_input_in_textbox()
であることをルールとしてもよいし(第4パターン)、逆に書き換え後にこの関数定義がなくなったことをルールとしてもよいし(第5パターン)、書き換え後が、
send_id_passwd_to_server();
であることをルールとしてもよい(第6パターン)。
第6パターンの具体的な記述としては、
document.getElementById(“loginButton”).onclick ==
‘f () {
send_id_passwd_to_server();
}’
と定義する。(上記は読みやすいように改行を用いた擬似コードで表している)
上記記述によってdocument.getElementById(“loginButton”).onclick変数の関数定義を参照し、send_id_passwd_to_server()が呼び出される場合に、不正検知とする。
【0066】
本発明に係る検知ルール(320)には上記のような定義が変更されたパターンを格納することが簡便であるが、変更により生じた結果を格納してもよい。例えば、グローバル変数に代入が行われたあとのHTMLコードのファイルサイズ、所定位置の文字、ハッシュ値など定義そのものなどを検知ルールとすることもできる。また、アラート画面が開かれない、といった事象を検知ルールとしてもよい。
【0067】
本実施例では、上記のようにグローバルプロパティ変更検知ステップ(S10)を代入フック処理ステップ(S101)と不正代入検知処理ステップ(S102)とから構成しているが、このような2段階の処理ではなく、検知対象とするグローバルプロパティを予め定めておき、当該グローバルプロパティへの代入を直接検知してもよい。
【0068】
本発明では、以上の方法で予め検知ルール(320)を記憶部(32)に格納する。このような検知ルールを生成する方法自体が本発明の第1の実施態様である。不正検知装置(30)は、記憶部(32)に保存された検知ルール(320)に合致した場合に不正検知として出力することができる。
【0069】
不正検知装置(30)をウェブサーバ(10)、ユーザ端末(20)と共に組み合わせて使用する上記システム(1)の説明を続ける。
ウェブサーバ(10)が、サービスの提供に用いるウェブコンテンツ情報(120)であって、少なくともユーザ端末(20)のウェブブラウザ部(200)によって実行されるプログラム(JavaScript)とを含むウェブコンテンツ情報(120)を記憶部(12)に格納する。
【0070】
そして、コンテンツ送信手段として作用するウェブサーバ処理部(100)が、ウェブコンテンツ情報(120)をユーザ端末(20)に送信するコンテンツ送信ステップ(S12)を実行する。対応してユーザ端末(20)のコンテンツ受信手段として作用するウェブブラウザ部(200)が、通信部(21)を用いてウェブコンテンツ情報を受信するコンテンツ受信ステップ(S13)を実行する。この送受信はウェブコンテンツの通信において周知である。
【0071】
さらにウェブブラウザ処理ステップ(S14)として、ユーザ端末(20)のウェブブラウザ部(200)が、ウェブコンテンツを表示すると共にプログラムを実行する。このときマルウェアに感染したユーザ端末(20)では、例えば悪意のあるJavaScriptによって、グローバルプロパティの変更を行う。上記で説明したグローバル変数への代入である。
【0072】
マルウェアに感染したユーザ端末(20)であっても、マルウェア自体がグローバルプロパティを書き換えるためにHTMLコードのレンダリング等は正常に行われるため、本発明による検知が可能である。
そこで、不正検知照会(S15)ステップでは、ユーザ端末(20)に予めインストールする照会プログラムによって不正検知装置通信部(201)が不正検知装置(30)への照会を行う。
【0073】
不正検知装置(30)のユーザ端末通信部(300)は、不正検知装置通信部(201)からの照会を受信し、第1の実施例としては検知ルール(320)をユーザ端末装置(20)に送信する(検知ルール送信ステップ:S16)。
ユーザ端末装置(20)の不正検知判定処理部(203)は、不正検知装置通信ステップ(S17)で検知ルール(320)を受信し、検知ルールに該当するかどうかの判定を行う。
【0074】
不正検知に該当する場合には、通信を遮断する、アラートを表示する、合致すると判定された検知ルールを表示する、などの不正検知対応動作(S18)を行う。
このような一連の処理により、ユーザ端末(20)では簡便に不正検知の判定が行われ、マルウェアによる不正な処理を防ぐことができる。
【0075】
検知ルール送信ステップ(S16)の第2の実施例としては不正検知装置通信部(201)が書き換えられた(可能性のある)HTMLコードをユーザ端末通信部(300)に向けて送信し、不正検知判定処理部(305)が検知ルール(320)に基づいて不正検知を行う。
【0076】
判定結果は、不正検知装置通信ステップ(S17)において、ユーザ端末装置(20)の不正検知判定処理部(203)が受信し、不正検知に該当する場合には、通信を遮断する、アラートを表示する、合致すると判定された検知ルールを表示する、などの不正検知対応動作(S18)を行う。
【0077】
上記実施例では、不正検知装置(30)、ユーザ端末(20)、ウェブサーバ(10)がそれぞれインターネット(2)で接続される別個の装置として説明されているが、例えば不正検知装置(30)とウェブサーバ(10)、不正検知装置(30)とユーザ端末(20)を一体に構成してもよい。
【0078】
不正検知装置(30)とウェブサーバ(10)が一体の場合、不正検知装置を構成するモジュールでは故意にマルウェアに感染させ、ウェブブラウザを備えてグローバルプロパティ変更検知ステップ(S10)を実行する。コンテンツの送受信に係るステップ(S12)(S13)、不正検知照会、検知ルール送信、不正検知装置通信(S15,S16,S17)が一体化された不正検知装置(30)・ウェブサーバ(10)と行われることの他は、各処理は同様である。
【0079】
不正検知装置(30)とユーザ端末(20)を一体に構成した場合、不正検知装置のモジュールは、別のアプリケーションで構成してもよいし、ウェブブラウザのプラグインのようにウェブブラウザ内部にあってもよい。
【0080】
以上に説明した本発明に係る検知方法では、異なる環境におけるHTMLコードの差異を検出する手法をとらず、予め不正検知装置(30)に検知ルールを格納する。検知ルールは、ウェブブラウザが解析するコードを対象とするので耐難読性に優れ、同時に過検知を抑制することができる。
【符号の説明】
【0081】
1 不正検知ネットワークシステム
2 インターネット
10 ウェブサーバ
20 ユーザ端末
30 不正検知装置
40 不正サーバ