説明

フィルタリング方法、フィルタリングシステム及びフィルタリングプログラム

【課題】URLを部分的に変更することで行なわれる攻撃を簡易かつ確実に防御すること。
【解決手段】部分URL生成部15は、悪質な資源情報の格納先を示すURLである悪性URLから、当該悪性URLの中で変更されることが推定される文字列以外の文字列から構成される部分URLを生成し、当該生成した部分URLを部分URL記憶部16に格納する。フィルタリング部17は、部分URL記憶部16に格納された部分URLを包含するURLを悪性URLとしてURLフィルタリングを行なう。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施の形態は、フィルタリング方法、フィルタリングシステム及びフィルタリングプログラムに関する。
【背景技術】
【0002】
WWW(World Wide Web)に存在する多数のWebサイトの中には、悪質なWebサイトや悪質なWebコンテンツが存在することが知られている。そこで、従来、悪質なWebサイトや悪質なWebコンテンツからWWWを利用するユーザを保護するために、フィルタリングが実施されている。
【0003】
フィルタリングは、悪質なWebサイトや悪質なWebコンテンツをリスト化したブラックリストを利用することで行なわれる。ブラックリストに含まれる悪質なWebサイトや悪質なWebコンテンツに対する通信は、DNS(Domain Name System)サーバやWebプロキシサーバなどのネットワーク装置でフィルタリングされる。
【0004】
また、ブラックリストによるフィルタリングには、DNS、統一資源位置指定子(URL:Uniform Resource Locator)、IP(Internet Protocol)アドレスそれぞれを対象としたDSNフィルタリング、URLフィルタリング、IPフィルタリングなどがある。DSNフィルタリングは、通信先ドメインに基づいてフィルタリングを行う。また、URLフィルタリングは、HTTP(HyperText Transfer Protocol)のリクエストURLに基づいてフィルタリングを行うものである。また、IPフィルタリングは、通信先ホストのIPアドレスに基づいてフィルタリングを行うものである。
【0005】
フィルタリングに用いられるブラックリストは、アンチウィルスベンダ、セキュリティSI(System Integration)事業者、通信事業組織などの営利組織や、大学などの非営利組織など様々な組織によって独自の観点で作成及び運用されている。ブラックリストの利用形態は、クライアント端末上での利用形態とネットワーク装置上での利用形態とに分けられる。
【0006】
クライアント端末上でのブラックリストの利用形態には、クライアント端末に搭載されたWebブラウザ上でフィルタリングを実施する形態や、クライアント端末にブラックリストをhostsファイルとして提供することでフィルタリングを実施する形態がある。
【0007】
また、ネットワーク装置上でのブラックリストの利用形態には、ブラックリストをDNSBL(DNS-based Blackhole List)として利用する形態や、セキュリティアプライアンス装置などでフィルタリングを実施する形態などがある。さらに、ブラックリストの利用形態には、Google(登録商標)のSB(Safe Browsing)サービス(登録商標)のように、アプリケーションサービス上で適用される形態や、Webサイトの検索エンジンによる検索結果に活用される形態などがある。例えば、検索エンジンには、ブラックリストを参照することで、検索結果に悪質なWebサイトが含まれる場合、警告を表示する仕様になっているものがある。
【0008】
このように、ブラックリストは、フィルタリングを支える重要な情報原であり、悪質なWebサイトや悪質なWebコンテンツに対する対策の効果は、ブラックリストの品質に依存する。ここで、Webを対象としてフィルタリングを行なう場合、Webコンテンツを単位とするURLフィルタリングが適している。
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】“DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION”、1987、[online]、[平成22年10月8日検索]、インターネット<http://www.ietf.org/rfc/rfc1035.txt>
【非特許文献2】“Uniform Resource Locators (URL) ”、1994、[online]、[平成22年10年8日検索]、インターネット<http://www.ietf.org/rfc/rfc1738.txt>
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかし、URLフィルタリングに用いられるブラックリストのURLに存在するWebサイトやWebコンテンツは、時間経過と共に消失する場合がある。また、悪質なWebサイトや悪質なWebコンテンツが新規に生成された場合、ブラックリストは、新規の情報が追加される必要がある。すなわち、URLフィルタリングに用いられるブラックリストは、常に維持管理をする必要がある。ブラックリストの維持管理を行なう際には、新規に生成された悪質なWebサイトや悪質なWebコンテンツをWeb空間から検出して、検出した情報を追加する必要があるが、Web空間は、数百億ページ存在すると言われており、また、Webコンテンツは、日々、更新され続けているため、ブラックリストの維持管理コストは、膨大となる。
【0011】
また、攻撃者は、URLを部分的に変更することで、ブラックリストを用いた完全一致のフィルタリングを回避する事ができる。例えば、攻撃者は、新規ドメインの取得によるURLのホスト名の部分変更や、URLのパス名やサブドメイン名の部分変更を行なうことができる。ここで、攻撃者にとっては、新規ドメインを確保するよりは、新たなパス名やサブドメイン名を生成する方がコストを低減できる。このため、攻撃者は、URLのパス名やサブドメイン名の部分変更により、フィルタリングを回避することが多いと考えられる。例えば、攻撃者が悪質なWebサイトや悪質なWebコンテンツのURLのドメイン管理者である場合、該当するドメインに対する任意のサブドメイン名を生成する事ことができる。また、攻撃者がサイトの管理権限を持つ場合、攻撃者は、悪性コンテンツの再配置によりURLのパス名を任意に変更できる。
【0012】
すなわち、従来のURLフィルタリングは、ブラックリストの維持管理コストがかかるうえに、ブラックリストに登録されているURLとの完全一致により行なわれているため、URLを部分的に変更することで行なわれる攻撃を簡易かつ確実に防御することができなかった。
【0013】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、URLを部分的に変更することで行なわれる攻撃を簡易かつ確実に防御することが可能となるフィルタリング方法、フィルタリングシステム及びフィルタリングプログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上述した課題を解決し、目的を達成するために、本願の開示するフィルタリング方法は、コンピュータが、悪質な資源情報の格納先を示すURLである悪性URLから、当該悪性URLの中で変更されることが推定される文字列以外の文字列から構成される部分URLを生成し、当該生成した部分URLを部分URL記憶部に格納する部分URL生成ステップと、前記部分URL記憶部に格納された前記部分URLを包含するURLを悪性URLとしてURLフィルタリングを行なうフィルタリングステップと、を含んだことを特徴とする。
【0015】
また、本願の開示するフィルタリングシステムは、悪質な資源情報の格納先を示すURLである悪性URLから、当該悪性URLの中で変更されることが推定される文字列以外の文字列から構成される部分URLを生成し、当該生成した部分URLを部分URL記憶部に格納する部分URL生成手段と、前記部分URL記憶部に格納された前記部分URLを包含するURLを悪性URLとしてURLフィルタリングを行なうフィルタリング手段と、を備えたことを特徴とする。
【0016】
また、本願の開示するフィルタリングプログラムは、上記のフィルタリング方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【0017】
本願の開示するフィルタリング方法、フィルタリングシステム及びフィルタリングプログラムによれば、URLを部分的に変更することで行なわれる攻撃を簡易かつ確実に防御することが可能となる。
【図面の簡単な説明】
【0018】
【図1】図1は、実施例1に係るフィルタリングシステムの構成例を説明するための図である。
【図2】図2は、実施例1に係るフィルタリング装置の構成例を説明するための図である。
【図3】図3は、URL記憶部が記憶するURLの一例を説明するための図である。
【図4】図4は、変換部が行なう木構造変換処理の一例を説明するための図(1)である。
【図5】図5は、変換部が行なう木構造変換処理を説明するための図(2)である。
【図6】図6は、変換部が行なう木構造変換処理を説明するための図(3)である。
【図7】図7は、変換部が行なう木構造変換処理を説明するための図(4)である。
【図8】図8は、変換部が行なう木構造の統合処理を説明するための図である。
【図9】図9は、部分URL生成部が行なう木構造からURLへの復元処理を説明するための図(1)である。
【図10】図10は、部分URL生成部が行なう木構造からURLへの復元処理を説明するための図(2)である。
【図11】図11は、実施例1に係る部分URL生成部により生成される部分URLの一例を説明するための図である。
【図12】図12は、実施例1に係るフィルタリング装置の部分URL生成処理を説明するためのフローチャートである。
【図13】図13は、実施例1に係るフィルタリング装置のフィルタリング処理を説明するためのフローチャートである。
【図14】図14は、実施例2に係る部分URL生成部の部分URL生成処理を説明するための図(1)である。
【図15】図15は、実施例2に係る部分URL生成部の部分URL生成処理を説明するための図(2)である。
【図16】図16は、実施例2に係る部分URL生成部の部分URL生成処理を説明するための図(3)である。
【図17】図17は、実施例2に係る部分URL生成部の部分URL生成処理を説明するための図(4)である。
【図18】図18は、実施例2に係る部分URL生成部による候補ノード設定処理の変形例を説明するための図である。
【図19】図19は、実施例2に係るフィルタリング装置の部分URL生成処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0019】
以下、本願の開示するフィルタリング方法、フィルタリングシステム及びフィルタリングプログラムの実施例を詳細に説明する。以下では、本願の開示するフィルタリング方法を実行するフィルタリング装置が組み込まれたフィルタリングシステムを実施例として説明する。なお、以下の実施例により本発明が限定されるものではない。
【実施例1】
【0020】
まず、実施例1に係るフィルタリングシステムについて、図1を参照して説明する。図1は、実施例1に係るフィルタリングシステムの構成例を説明するための図である。
【0021】
図1に示すように、実施例1におけるフィルタリングシステムは、ユーザ端末2と、プロキシサーバ1と、ウェブサーバ群3とを有し、ユーザ端末2と、プロキシサーバ1と、ウェブサーバ群3とは、インターネットなどの通信ネットワークを介してそれぞれ接続されている。なお、図1に示すフィルタリングシステムにおいては、ユーザ端末2が1台のみ示されているが、実際には、複数のユーザ端末がプロキシサーバ1を介してウェブサーバ群3と接続されている。
【0022】
ユーザ端末2は、例えば、パーソナルコンピュータやワークステーション、家庭用ゲーム機、インターネットTVや、PDA(Personal Digital Assistants)、携帯電話、PHS(Personal Handyphone System)など、ユーザが利用する端末装置である。また、ユーザ端末2は、Webブラウザが組み込まれている。Webブラウザは、プロキシサーバ1を介してウェブサーバ群3に対しWebサイトやWebコンテンツなどの資源情報の閲覧要求を送信したり、閲覧要求に応じてウェブサーバ群3が送信した資源情報を、ユーザ端末2のモニタに表示させたりする。
【0023】
すなわち、ユーザ端末2は、ユーザがWebブラウザを起動させて統一資源位置指定子(URL:Uniform Resource Locator)を入力した場合、当該URLで指定される格納先に格納されている資源情報(Webコンテンツ)の閲覧要求をプロキシサーバ1に対し送信する。プロキシサーバ1は、ウェブサーバ群3の中で、ユーザが入力したURLにて指定したウェブサーバに対して資源情報の閲覧要求を送信し、資源情報の閲覧要求を受信したウェブサーバは、該当する情報資源のデータを、プロキシサーバ1を介してユーザ端末2に送信する。
【0024】
プロキシサーバ1は、ユーザ端末2とウェブサーバ群3との間に設置されるネットワーク装置であり、ネットワーク網に出入りするアクセスの一元管理を行なう。例えば、プロキシサーバ1は、ユーザ端末2から送信されたURLを受信し、当該URLにて指定される位置にあるウェブサーバに対して資源情報を要求する。そして、プロキシサーバ1は、ウェブサーバから送信された資源情報をユーザ端末2に送信する。また、プロキシサーバ1は、外部ネットワークからユーザ端末2への不正なアクセスを遮断したり、ユーザ端末2から特定の外部ネットワークへの接続のみを許可したりする。
【0025】
そして、プロキシサーバ1は、図1に示すフィルタリング装置10により、URLフィルタリングを行なう。ここで、従来のURLフィルタリングでは、悪質な資源情報の格納先を示すURLである悪性URLの集合(リスト)をブラックリストとして登録しておき、ユーザ端末2から送信されたURLがブラックリストに登録されている悪性URLのいずれかと完全一致している場合、当該URLによるアクセスを不許可としていた。
【0026】
しかし、攻撃者は、例えば、URLのパス名やサブドメイン名の部分変更を行なうことで、悪性URLを部分的に変更することができる。悪性URLが部分的に変更された場合、プロキシサーバ1は、完全一致を条件とする限り、URLフィルタリングを行なうことができない。
【0027】
そこで、図1に示すフィルタリング装置10は、URLを部分的に変更することで行なわれる攻撃を簡易かつ確実に防御するため、以下の処理を行なう。すなわち、実施例1に係るフィルタリング装置10は、悪性URLの中で変更されることが推定される文字列以外の文字列から構成される部分URLを生成し、当該生成した部分URLを部分URL記憶部に格納する。そして、フィルタリング装置10は、部分URL記憶部に格納された部分URLを包含するURLを悪性URLとしてURLフィルタリングを行なう。
【0028】
具体的には、上述した処理を行なうため、実施例1に係るフィルタリング装置10は、図2に示すように、構成される。図2は、実施例1に係るフィルタリング装置の構成例を説明するための図である。
【0029】
図2に示すように、実施例1に係るフィルタリング装置10は、URL収集部11と、URL記憶部12と、変換部13と、木構造記憶部14と、部分URL生成部15と、URL記憶部16と、フィルタリング部17とを有する。
【0030】
URL収集部11は、悪性URLが含まれるURLの集合(リスト)を収集し、収集したURLのリストをURL記憶部12に格納する。
【0031】
悪性URLのリストのみを収集する場合、URL収集部11は、例えば、悪性URLのリスト作成を行なっている組織がWeb上で公開している悪性URLのリストを収集する。悪性URLの作成を行なっている組織としては、アンチウィルスベンダ、セキュリティSI(System Integration)事業者、通信事業組織などの営利組織や、大学などの非営利組織などが挙げられる。
【0032】
また、悪性URLと悪性でないURLとが混合されたリストを収集する場合、URL収集部11は、悪性URLのリストを収集する他に、例えば、自装置をハニーポットとして、以下に説明する処理を行なう。すなわち、URL収集部11は、Webブラウザとして故意に種々のサイトにアクセスし、攻撃を受けたアクセス先のサイトのURLを悪性サイトとして収集する。例えば、URL収集部11は、受信したWebコンテンツを解析し、解析したWebコンテンツにマルウェアなどが含まれているか否かを判定することで、アクセス先のサイトが悪質であるか否かを判定する。その際、URL収集部11は、攻撃を受けなかったアクセス先のサイトのURLも収集する。
【0033】
ここで、攻撃を受ける際には、悪性サイトにアクセスするとリンクで別のサイトに次々と飛ばされ、その過程で、例えば、マルウェアに感染することもあり、どこに真の悪性サイトが潜んでいるのかわからない場合がある。そこで、URL収集部11は、攻撃を受けるまでWeb空間を巡回し、真の悪性サイトに到達するまでの経路に位置する踏み台となるサイト全てのURLも悪性URLとして収集することも可能である。なお、URL記憶部12に格納されるURLのリストは、URL収集部11により収集されたリストに限定されるものではなく、他の装置により収集されたURLのリストやフィルタリング装置10の管理者により収集されたURLのリストなど、何らかの手段によって作成されたURLのリストであれば本実施例に適用可能である。
【0034】
以下では、URL収集部11が悪性URLと悪性でないURLとが混合されたリストを収集する場合について説明する。なお、本実施例1は、プロキシサーバ1の管理者が悪性URLを含むURLのリストを収集する場合であっても適用可能である。また、本実施例1は、URL収集部11が収集するURLが全て悪性URLである場合であっても適用可能である。
【0035】
URL記憶部12は、URL収集部11が収集した悪性URLが含まれるURLのリストを記憶する。図3は、URL記憶部が記憶するURLの一例を説明するための図である。
【0036】
例えば、URL記憶部12は、URL収集部11が収集したURL1〜URL7などを記憶し、更に、URL1、URL2、URL5、URL6などが悪性URLであると記憶する。
【0037】
図2に戻って、変換部13は、URL記憶部12に格納された各URLを木構造に変換する。ここで、変換部13は、URLを分割した文字列を以下に説明する連結順序により連結することでURLの木構造への変換処理を行なう。ここで、以下では、情報資源を格納するホスト(ウェブサーバ)が所属する所属ドメイン空間を示すURLの文字列を「ホスト部」と定義する。また、以下では、「ホスト部」においてホストが所属ドメイン空間にて位置する特定のドメイン空間を示す文字列を「ドメイン名」と定義する。また、以下では、ホスト内で情報資源が配置される位置を示すURLの文字列を「パス部」と定義する。
【0038】
変換部13は、URLの「ドメイン名」を根ノードとし、「ドメイン名」以外の「ホスト部」の文字列を「ホスト部」に固有の区切り文字により区切った文字列をノードとして、当該文字列の後方から前方に向かった順に、根ノードに対する子ノード、当該子ノードに対する子ノード、として順次連結する。そして、変換部13は、更に、URLの「パス部」を「パス部」に固有の区切り文字により区切った文字列をノードとして、当該文字列の前方から後方に向かった順に、ホスト部に由来する子ノードの中で末端に位置するノードに対する子ノード、当該子ノードに対する子ノード、として順次連結する。換言すると、変換部13は、資源情報が格納される位置情報が階層構造で示されるURLの各文字列要素を、上位の概念から下位の概念に向かった順番に連結することで、木構造変換処理を行なう。
【0039】
以下、図4〜図7を用いて変換部13が行なう木構造変換処理を具体的に説明する。図4〜図7は、変換部が行なう木構造変換処理を説明するための図である。
【0040】
まず、変換部13は、URLをホスト部とパス部とに分割する。ここで、HTTP(HyperText Transfer Protocol)のURLは、図4の(A)に示す形態を取る。図4の(A)に示す「<host>」は、Webサイトを示すFQDN(Fully Qualified Domain Name)、又は、IPアドレスである。「<host>」の文字列は、「.(ドット)」で区切られる。また、ここで、図4の(A)に示す「:<port>」は、Webに対して接続するためのポート番号である。HTTPスキームでは、デフォルトポート番号として「80番」が定義されており、ポート番号が省略される場合は、デフォルトポート番号である「80」が適用される。デフォルトポート番号とは異なるポート番号をサイトが利用する場合、ホスト部においては、ポート番号が「:(コロン)」を用いて 「<host>」 と区切って付与される。
【0041】
また、図4の(A)に示す「<path>」は、Webサイト内での特定のコンテンツが格納される位置を示すものであり、図4の(A)に示す「<searchpart>」 は、クエリー文字列である。ここで、「<path>」は、「<searchpart>」及び「<searchpart>」の前の 「?」とともに省略可能である。なお、「<path>」の文字列は、階層構造を示す「/(スラッシュ)」で区切られる。
【0042】
かかるURLの形態に基づいて、変換部13は、図4の(A)に示すように、「<host>:<port>」をホスト部として抽出し、「<path>?<searchpart>」をパス部として抽出する。なお、「:<port>」及び「?<searchpart>」は省略可能なため、変換部13は、「<host> 」と「<path>」とのみを抽出する。
【0043】
例えば、図4の(B)に示すように、処理対象となるURLが「http://www.example.com/test/index.html」である場合、変換部13は、「www.example.com」をホスト部として抽出し、「test/index.html」をパス部として抽出する。
【0044】
そして、変換部13は、抽出したホスト部を「.(ドット)」を区切り文字として文字列に分解し、分解した文字列を後方から前方に向かって列挙する。ただし、ドメイン名に関しては、一つの文字列とする。上述したように、ドメイン名は、情報資源を格納するホストが所属する所属ドメイン空間にて位置する特定のドメイン空間を示す文字列であり、具体的には、一般的なドメイン空間を示すパブリックサフィックス(例えば、com,net,co.jpなど)からパブリックサフィックスの前方に付与された文字列まで(例えば、example.com,example.co.jpなど)を示す。なお、ドメイン名は、プライベートサフィックスとも呼ばれる。
【0045】
すなわち、変換部13は、図5の(A)に示すように、抽出したホスト部が「H1.H2.H3.H4」であり、ドメイン名が「H3.H4」である場合、後方から前方に向かう連結方向にて、「H3.H4、H2、H1」の順に並べる。
【0046】
具体的には、変換部13は、図5の(B)に示すように、抽出したホスト部が「www.example.com」である場合、「example.com」を「ドメイン名」として特定し、「example.com、www」の順に並べる。また、変換部13は、図5の(C)に示すように、抽出したホスト部が「test1.www.example.co.jp」である場合、「example.co.jp」を「ドメイン名」として特定し、「example.co.jp、www、test1」の順に並べる。
【0047】
そして、変換部13は、抽出したパス部を「/(スラッシュ)」を区切り文字として文字列に分解し、分解した文字列を前方から後方に向かって列挙する。
【0048】
すなわち、変換部13は、図6の(A)に示すように、抽出したパス部が「P1/P2/P3/P4」である場合、前方から後方に向かう連結方向にて、「P1、P2、P3、P4」の順に並べる。
【0049】
具体的には、変換部13は、図6の(B)に示すように、抽出したパス部が「news/old/test.html」である場合、「news、old、test.html」の順に並べる。
【0050】
ここで、変換部13は、図6の(C)に示すように、抽出したパス部が「P1/P2/P3/」のようにスラッシュで終わる場合、末尾の要素を空集合である「(null)」として扱い、前方から後方に向かう連結方向にて、「P1、P2、P3、(null)」の順に並べる。
【0051】
具体的には、変換部13は、図6の(D)に示すように、抽出したパス部が「news/old/」である場合、「news、old、(null)」の順に並べる。
【0052】
そして、変換部13は、連結順序に準じて並べ替えたホスト部及びパス部の各要素(各文字列)に対して、ホスト部の文字列に対してはホスト部由来であることを示す識別子「H」を付与し、パス部の文字列に対してはパス部由来であることを示す識別子「P」を付与する。また、変換部13は、末尾の要素(末端ノード)に対しては末尾であることを示す識別子「L」を付与する。更に、変換部13は、処理対象となるURLが悪性URLである場合、末尾の要素(末端ノード)に対し、更に、悪性URL由来であることを示す識別子「M」を付与する。
【0053】
すなわち、変換部13は、「http://H1.H2.H3.H4/P1/P2/P3/P4」が悪性URLであり、「H3.H4」がドメイン名である場合、図7の(A)に示すように、ホスト部の配列「H3.H4、H2、H1」に対して識別子「H」を付与し、パス部の配列「P1/P2/P3/P4」に対して識別子「P」を付与する。さらに、変換部13は、図7の(A)に示すように、悪性URL由来の末端ノードである「P4」に対して識別子「L」及び識別子「M」を付与する。そして、変換部13は、各要素を連結順序に沿って連結することで、URLを木構造に変換する。例えば、変換部13は、図7の(A)に示すように、各要素に付与された識別子に基づいて、ホスト部要素を矩形で、パス部要素を楕円で、パス部末尾要素を二重の楕円で表した木構造に変換する。なお、図示していないが、パス部末尾要素に識別子「M」が付与されている場合、変換部13は、パス部末尾要素(末端ノード)が悪性URL由来であることを表わすために、例えば、二重の楕円内を点でハッチングする。
【0054】
例えば、変換部13は、「http://www.example.com/news/old/news.html」を、図7の(B)に示すように、「example.com」を根ノードとし、「example.com」から順にホスト部ノード「www」、パス部ノード「news」、パス部ノード「old」、末端ノード「news.html」が連結された木構造に変換する。
【0055】
また、変換部13は、「http://www.example.com/news/old/」を、図7の(C)に示すように、「example.com」を根ノードとし、「example.com」から順にホスト部ノード「www」、パス部ノード「news」、パス部ノード「old」、末端ノード「(null)」が連結された木構造に変換する。
【0056】
また、変換部13は、「http://www.example.com/news/new/index.html」を、図7の(D)に示すように、「example.com」を根ノードとし、「example.com」から順にホスト部ノード「www」、パス部ノード「news」、パス部ノード「new」、末端ノード「index.html」が連結された木構造に変換する。
【0057】
そして、変換部13は、図4〜図7を用いて説明した木構造変換処理を、URL記憶部12に格納された各URLに対して実行し、各URLから変換した木構造を共通するノードに基づいて統合する。そして、変換部13は、統合した木構造を木構造記憶部14に格納する。図8は、変換部が行なう木構造の統合処理を説明するための図である。
【0058】
例えば、変換部13は、図8に示すように、図7の(A)、(B)及び(C)で例示した3つの木構造を共通するノードに基づいて統合する。なお、図8に示す一例では、一つの根ノードからなる木構造を示しているが、収集した全URLのドメイン部の文字列が異なる場合に変換部13により統合される木構造は、複数の根ノードからなる木構造となる。
【0059】
図2に戻って、部分URL生成部15は、木構造記憶部14に格納された木構造からURLを復元する機能を有する。ここで、木構造からURLを復元する際、部分URL生成部15は、変換部13の木構造変換処理における文字列の連結順序に準じて木構造からURLを復元する。
【0060】
部分URL生成部15が行なう木構造からURLへの復元処理について、図9及び図10を用いて説明する。図9及び図10は、部分URL生成部が行なう木構造からURLへの復元処理を説明するための図である。
【0061】
まず、部分URL生成部15は、復元対象となる木構造を末端ノードから順に親ノードを根ノードに至るまで辿ることで、複数の文字列からなる配列を生成する。例えば、図9の(A)に示す木構造が復元対象となる場合、部分URL生成部15は、「news.html, old, news, www, example.com」からなる配列を生成する。そして、部分URL生成部15は、木構造に付与された識別子に基づいて、生成した配列を、パス部に由来するパス列と、ホスト部に由来するホスト列とに分割する。例えば、部分URL生成部15は、図9の(A)に示すように、生成した配列を、パス列「news.html, old, news」とホスト列「www, example.com」に分割する。
【0062】
そして、部分URL生成部15は、ホスト列については、ホスト列の各ノードを、列挙された順番に「.(ドット)」を付与して文字列の連結を行なう。例えば、部分URL生成部15は、図9の(B)に示すように、ホスト列「www, example.com」の「www」を先頭にし、「www」「.」「example.com」の順に連結することで、ホスト部「www.example.com」を復元する。
【0063】
また、部分URL生成部15は、パス列については、パス列の各ノードを、列挙された順番とは逆の順番に「/(スラッシュ)」を付与して文字列の連結を行なう。例えば、部分URL生成部15は、図9の(C)に示すように、パス列「news.html, old, news」の「news」を先頭にし、「news」「/」「old」「/」「news.html」の順に連結することで、パス部「news/old/news.html」を復元する。
【0064】
そして、部分URL生成部15は、復元したホスト部及びパス部を「/(スラッシュ)」で連結し、更に、URLにおけるHTTPのscheme「http://」を接頭辞として付与することで、木構造からURLを復元する。例えば、部分URL生成部15は、図9の(D)に示すように、ホスト部「www.example.com」とパス部「news/old/news.html」とを「/」で連結し、更に、「http://」を先頭に付与することで、URL「http://www.example.com/news/old/news.html」を復元する。
【0065】
ここで、部分URLは、木構造の中間ノードを末端ノードとすることで、URLを部分的に復元することも可能である。すなわち、図10の(A)に示す一例では、部分URL生成部15は、元々の末端ノードが末端ノードであることから、元々のURL「http://www.example.com/news/old/news.html」を復元する。一方、図10の(B)に示す一例では、部分URL生成部15は、元々の末端ノードの親ノード「old」が末端ノードであることから、URL「http://www.example.com/news/old/」を復元する。また、図10の(C)に示す一例では、部分URL生成部15は、元々の末端ノードの親ノードの親ノード「news」が末端ノードであることから、URL「http://www.example.com/news/」を復元する。
【0066】
図2に示す部分URL生成部15は、上述したURL復元機能を用いて、悪性URLが変更されることが推定される文字列以外の文字列から構成される部分URLを生成する。具体的には、部分URL生成部15は、変換部13により統合された木構造において、悪性URLの末端ノードの根ノードから当該末端ノードの親ノードまでを連結順序に準じてURLとして復元することで部分URLを生成する。そして、部分URL生成部15は、生成した部分URLを部分URL記憶部16に格納する。具体的には、部分URL生成部15は、生成した部分URLの中で未格納の部分URLを部分URL記憶部16に格納する。
【0067】
例えば、部分URL生成部15は、図8にて例示した木構造を木構造記憶部14から読み出す。ここで、図8に例示した木構造の末端ノードが全て悪性URL由来の末端ノードであるとする。以下では、悪性URL由来の末端ノードを、悪性末端ノードと記載する場合がある。かかる場合、部分URL生成部15は、図11に示すように、「news.html」の根ノード「example.com」から「news.html」の親ノード「old」までを連結順序に準じてURLとして復元することで部分URL「http://www.example.com/news/old/」を生成する。ここで、部分URL「http://www.example.com/news/old/」が未格納である場合、部分URL生成部15は、当該部分URLを新規の部分URLとして部分URL記憶部16に格納する。
【0068】
また、部分URL生成部15は、図11に示すように、「(null)」の根ノード「example.com」から「(null)」の親ノード「old」までを連結順序に準じてURLとして復元することで部分URL「http://www.example.com/news/old/」を生成する。ただし、部分URL生成部15は、生成した部分URL部分「http://www.example.com/news/old/」が格納済みであることから、格納処理を行なわない。
【0069】
また、部分URL生成部15は、図11に示すように、「index.html」の根ノード「example.com」から「index.html」の親ノード「new」までを連結順序に準じてURLとして復元することで部分URL「http://www.example.com/news/new/」を生成し、新規の部分URLとして部分URL記憶部16に格納する。
【0070】
図2に戻って、フィルタリング部17は、部分URL記憶部16に格納された部分URLを包含するURLを悪性URLとしてURLフィルタリングを行なう。すなわち、フィルタリング部17は、部分URLがアクセス先のURLの文字列に先頭から含まれるかどうかを調べることで、URLフィルタリングを行なう。例えば、フィルタリング部17は、ユーザ端末2から受信したURLに包含される部分URLが部分URL記憶部16に格納されている場合、当該URLによるアクセスを不許可とする。
【0071】
続いて、図12及び図13を用いて、実施例1に係るフィルタリングシステムが有するフィルタリング装置10の処理の手順を説明する。図12は、実施例1に係るフィルタリング装置の部分URL生成処理を説明するためのフローチャートである。また、図13は、実施例1に係るフィルタリング装置のフィルタリング処理を説明するためのフローチャートである。
【0072】
図12に示すように、実施例1に係るフィルタリング装置10は、URL収集部11の処理により、悪性URLを含むURLのリストがURL記憶部12に格納されたか否かを判定する(ステップS101)。ここで、URLのリストが格納されない場合(ステップS101否定)、フィルタリング装置10は、待機状態となる。
【0073】
一方、URLのリストが格納された場合(ステップS101肯定)、変換部13は、全URLを木構造に変換し、各URLから変換した木構造を共通するノードに基づいて統合する(ステップS102)。そして、部分URL生成部15は、統合された木構造の末端ノード数(N)を取得し、各末端ノード(L)に対してID(i=1〜N)を割り振る(ステップS103)。なお、「i」は、「1〜N」の整数となる。
【0074】
続いて、部分URL生成部15は、「i=1」と設定し(ステップS104)、悪性末端ノードであることを示す識別子「M」が付与されているか否かを判定することで、L(i)が悪性であるか否かを判定する(ステップS105)。ここで、L(i)が悪性である場合(ステップS105肯定)、部分URL生成部15は、L(i)の根ノードからL(i)の親ノードまでをURLとして復元することで部分URLを生成し(ステップS106)、生成した部分URLが部分URL記憶部16に格納済みであるか否かを判定する(ステップS107)。
【0075】
ここで、生成した部分URLが部分URL記憶部16に未格納である場合(ステップS107否定)、部分URL生成部15は、L(i)の根ノードからL(i)の親ノードまでの部分URLを部分URL記憶部16に格納する(ステップS108)。
【0076】
L(i)が悪性でない場合(ステップS105否定)、又は、ステップS108の処理を行なった場合、部分URL生成部15は、「i=N」であるか否かを判定する(ステップS109)。また、部分URLが部分URL記憶部16に格納済みである場合(ステップS107肯定)、部分URL生成部15は、ステップS106にて生成した部分URLを格納せずに、「i=N」であるか否かを判定する(ステップS109)。
【0077】
ここで、「i=N」でない場合(ステップS109否定)、部分URL生成部15は、「i」をインクリメントして「i=i+1」とし(ステップS110)、ステップS105の判定処理を行なう。
【0078】
一方、「i=N」である場合(ステップS109肯定)、部分URL生成部15は、部分URLの生成処理を終了する。
【0079】
そして、図13に示すように、実施例1に係るフィルタリング装置10は、ユーザ端末2からURLを受信したか否かを判定する(ステップS201)。ここで、URLを受信しない場合(ステップS201否定)、フィルタリング装置10は、待機状態となる。
【0080】
一方、URLを受信した場合(ステップS201肯定)、フィルタリング部17は、受信したURLを包含する部分URLが部分URL記憶部16に格納されているか否かを判定する(ステップS202)。ここで、格納されていない場合(ステップS202否定)、フィルタリング部17は、受信したURLによるアクセスを許可し(ステップS204)、フィルタリング処理を終了する。
【0081】
一方、格納されている場合(ステップS202肯定)、フィルタリング部17は、受信したURLによるアクセスを不許可とし(ステップS203)、フィルタリング処理を終了する。
【0082】
なお、URL収集部11によるURLリストの収集は、例えば、フィルタリング装置10の管理者の設定により定期的に実行され、URL記憶部12に格納されるURLは、定期的に更新される。URLのリストが更新された場合、変換部13は、更新された全URLについて木構造の変換処理を行なう。そして、変換部13は、更新された全URLから変換した木構造と統合済みの木構造とを共通するノードに基づいて再度統合する。そして、部分URL生成部15は、新たに統合された木構造を用いて、部分URLの生成処理及び部分URLの格納処理を行なう。
【0083】
上述したように、実施例1によれば、部分URL生成部15は、悪質な資源情報の格納先を示すURLである悪性URLから、当該悪性URLの中で変更されることが推定される文字列以外の文字列から構成される部分URLを生成し、当該生成した部分URLを部分URL記憶部16に格納する。
【0084】
具体的には、まず、URL収集部11は、悪性URLが含まれるURLの集合(リスト)を収集してURL記憶部12に格納する。そして、変換部13は、情報資源を格納するホストが所属する所属ドメイン空間を示すURLのホスト部において当該ホストが当該所属ドメイン空間にて位置する特定のドメイン空間を示すドメイン名を根ノードとし、当該ドメイン名以外のホスト部の文字列をホスト部に固有の区切り文字により区切った文字列をノードとして、当該文字列の後方から前方に向かった順に、根ノードに対する子ノード、当該子ノードに対する子ノード、として順次連結し、更に、ホスト内で情報資源が配置される位置を示す当該URLのパス部をパス部に固有の区切り文字により区切った文字列をノードとして、当該文字列の前方から後方に向かった順に、ホスト部に由来する子ノードの中で末端に位置するノードに対する子ノード、当該子ノードに対する子ノード、として順次連結する連結順序を用いることで当該URLを木構造に変換する。
【0085】
変換部13は、かかる木構造変換処理を、URL記憶部12に格納された各URLに対して実行し、各URLから変換した木構造を共通するノードに基づいて統合する。そして、部分URL生成部15は、統合された木構造において、悪性URLの末端ノードの根ノードから当該末端ノードの親ノードまでを連結順序に準じてURLとして復元することで部分URLを生成し、当該生成した部分URLの中で未格納の部分URLを部分URL記憶部16に格納する。そして、フィルタリング部17は、部分URL記憶部16に格納された部分URLを包含するURLを悪性URLとしてURLフィルタリングを行なう。
【0086】
すなわち、実施例1では、悪性末端ノードの根ノードから悪性末端ノードの親ノードまでの文字列を、悪性URLの中で変更されることが推定される文字列以外の文字列として特定し、部分URLを生成する。これにより、実施例1では、悪性URLが部分的に変更される場合でも、部分URLを包含するURLに対してURLフィルタリングを行なえる部分URLのリストを作成することができる。また、実施例1では、URLにて定義される位置情報の概念に沿って、収集した全URLを木構造に変換及び統合することにより、部分URLとして復元するための末端ノードを簡易に特定することができる。また、実施例1では、部分URLを用いることで既存の悪性URLの部分的変化に対応できるので、完全一致を判断基準とするURLフィルタリングと比較して、悪性URLのリストの維持管理にかかるコストを低減することができる。
【0087】
従って、実施例1では、URLを部分的に変更することで行なわれる攻撃を簡易かつ確実に防御することが可能となる。
【実施例2】
【0088】
実施例2では、実施例1で説明した部分URL生成方法とは異なる方法により、部分URLを生成する場合について説明する。
【0089】
実施例2に係るフィルタリングシステムは、図1を用いて説明した実施例1に係るフィルタリングシステムと同様に構成され、実施例2に係るフィルタリング装置10は、図2を用いて説明した実施例1に係るフィルタリング装置10と同様に構成される。しかし、実施例2に係る部分URL生成部15は、実施例1とは異なる処理により部分URLを生成する。以下、これを中心に説明する。
【0090】
実施例2に係る部分URL生成部15は、悪性URLの末端ノードの親ノードを部分URLの生成に用いられる末端ノードの候補ノードと設定する。そして、部分URL生成部15は、設定した候補ノードの親ノードの全子ノード数に対する候補ノード数の割合に応じて、当該親ノードを候補ノードとして新たに設定する。具体的には、部分URL生成部15は、設定した候補ノードの親ノードの全子ノード数に対する候補ノード数の割合が所定の閾値以上である場合、当該親ノードを候補ノードとして新たに設定する。例えば、部分URL生成部15は、所定の閾値を「100%」とし、設定した候補ノードの親ノードの子ノードがすべて候補ノードと設定されている場合、当該親ノードを候補ノードとして新たに設定する。
【0091】
更に、部分URL生成部15は、新たに設定した候補ノードの親ノードの全子ノード数に対する候補ノード数の割合に応じて、当該親ノードを候補ノードとして新たに設定する。具体的には、部分URL生成部15は、新たに設定した候補ノードの親ノードの全子ノード数に対する候補ノード数の割合が所定の閾値以上である場合、当該親ノードを候補ノードとして新たに設定する。例えば、部分URL生成部15は、所定の閾値を「100%」とし、新たに設定した候補ノードの親ノードの子ノードがすべて候補ノードと設定されている場合、当該親ノードを候補ノードとして新たに設定する。
【0092】
そして、部分URL生成部15は、上述した候補ノードの設定処理を、変換部13により統合された木構造の各根ノードについて実行した後、当該木構造の各根ノードを起点とする経路それぞれにおいて最上位に位置する候補ノードを特定し、当該特定した候補ノードを末端ノードとして部分URLを生成する。
【0093】
ここで、実施例2に係る部分URL生成部15は、候補ノードとして設定したノード、及び、新たに候補ノードとして設定するか否かを判定したノードまでを探索対象とした深さ優先探索(depth-first search)を行なう。すなわち、実施例2に係る部分URL生成部15は、最初に設定した候補ノード配下のノードを探索対象から除外する。そして、実施例2に係る部分URL生成部15は、候補ノードの探索を行なって、新たに候補ノードとして設定するか否かを判定したノード配下のノードも探索対象から除外する。図14〜図17は、実施例2に係る部分URL生成部の部分URL生成処理を説明するための図である。
【0094】
まず、変換部13により統合された木構造が、図14に例示するように、根ノード「example.com」の3つの末端ノード(exploit1.html, exploit2.html, exploit3.html)が全て悪性末端ノードであった場合について説明する。
【0095】
図14に例示する木構造から部分URLを生成する場合、実施例1では、3つの悪性末端ノードそれぞれの親ノード(malice-path1,malice-path2,malice-path3)に悪質なコンテンツが存在することから、これら3つの親ノードそれぞれを末端ノードとすることで部分URLを生成する。すなわち、図14に例示する木構造を部分URLの生成対象とする場合、実施例1では、「http://www.examle.com/malice-path1」、「http://www.examle.com/malice-path2」、「http://www.examle.com/malice-path3」の3つが部分URLとして生成されることとなる。かかる場合、仮に、攻撃者が新たなパス「malice-path4」を生成して、「malice-path4」の下に悪質なコンテンツを配置した場合、フィルタリング部17によるフィルタリングが実行されないこととなる。
【0096】
そこで、実施例2に係る部分URL生成部15は、図14に例示する木構造から、攻撃者が新たなパス「malice-path4」の下に悪質なコンテンツを配置してもフィルタリングが実行可能な部分URLを生成するため、まず、図15の(A)に示す候補ノード設定処理を行なう。
【0097】
すなわち、実施例2に係る部分URL生成部15は、図15の(A)に示すように、まず、3つの悪性末端ノードそれぞれの親ノード(malice-path1,malice-path2,malice-path3)を候補ノードとして設定する。そして、部分URL生成部15は、図15の(B)に示すように、根ノードを起点として候補ノードの深さ優先探索を開始し、「malice-path1」を候補ノードとして探索する。そして、部分URL生成部15は、図15の(B)に示すように、「malice-path1」の親ノードである「www」を親ノードとする2つの子ノード「malice-path2,malice-path3」が全て候補ノードであるか否かを探索する。
【0098】
ここで、「malice-path2,malice-path3」が全て候補ノードとして設定されていることから、実施例2に係る部分URL生成部15は、図15の(B)に示すように、「www」を新たに候補ノードとして設定する。そして、部分URL生成部15は、根ノード「example.com」の子ノード「www」が候補ノードであるので深さ優先探索を終了する。
【0099】
そして、実施例2に係る部分URL生成部15は、図15の(C)に示すように、根ノード「example.com」を起点とする経路で最上位にある候補ノード「www」を末端ノードとする部分URL「http://www.examle.com/」を生成する。これにより、攻撃者が新たなパス「malice-path4」の下に悪質なコンテンツを配置しても、フィルタリング部17は、部分URLを用いることで、フィルタリングを実行することができる。
【0100】
次に、1つの悪性URL「http://www.examle.com/malice-user1/exploit1.html」と、悪性でない2つのURL「http://www.examle.com/ligitimate-user1/index.html, http://www.examle.com/ligitimate-user2/index.html」との3つのURLから「example.com」を根ノードとする木構造が部分URLの生成対象となる場合について説明する。
【0101】
かかる場合、実施例2に係る部分URL生成部15は、図16の(A)に示すように、まず、1つの悪性末端ノード(exploit1.html)の親ノード(malice-user1)を候補ノードとして設定する。
【0102】
そして、部分URL生成部15は、図16の(B)に示すように、根ノードを起点として候補ノードの深さ優先探索を開始し、「malice-user1」を候補ノードとして探索する。そして、部分URL生成部15は、図16の(B)に示すように、「malice-user1」の親ノードである「www」を親ノードとする2つの子ノード「ligitimate-user1,malice-path3」が全て候補ノードであるか否かを探索する。
【0103】
ここで、「ligitimate-user1,malice-path3」が候補ノードとして設定されていないことから、実施例2に係る部分URL生成部15は、深さ優先探索を継続する。そして、部分URL生成部15は、深さ優先探索が終了した結果、図16の(C)に示すように、根ノード「example.com」を起点とする経路で最上位にある候補ノード「malice-user1」を末端ノードとする部分URL「http://www.examle.com/malice-user1」を生成する。すなわち、図16の(C)で例示した場合に生成される部分URLは、実施例1の部分URL生成部15により生成される部分URLと同様となる。
【0104】
図15及び図16で説明した実施例2に係る部分URL生成部15の処理を、図17を用いて改めて説明する。
【0105】
図17の(A)に例示する木構造は、根ノード「R」を起点とする16個の末端ノード(N1〜N16)からなる。また、図17の(A)に例示する木構造は、末端ノード「L1〜L16」の中で「L1,L2,L3,L4,L5,L9,L13,L15」が悪性末端ノードである。
【0106】
そして、部分URL生成部15は、図17の(B)に示すように、末端ノードの親ノード「N1〜N8」の中で、「L1」及び「L2」の親ノード「N1」と、「L3」及び「L4」の親ノード「N2」と、「L5」の親ノード「N3」と、「L9」の親ノード「N5」と、「L13」の親ノード「N7」と、「L15」の親ノード「N8」とをそれぞれ候補ノードとして設定する。
【0107】
そして、部分URL生成部15は、図17の(C)に示すように、候補ノード「N1」の親ノード「N9」に連結される他の子ノード「N2」が候補ノードであることから、「N9」を候補ノードとして設定する。また、部分URL生成部15は、図17の(C)に示すように、候補ノード「N7」の親ノード「N12」に連結される他の子ノード「N8」が候補ノードであることから、「N12」を候補ノードとして設定する。ここで、部分URL生成部15は、図17の(C)に示すように、候補ノード「N3」の親ノード「N10」に連結される他の子ノード「N4」が候補ノードでないことから、「N10」を候補ノードとして設定しない。また、部分URL生成部15は、図17の(C)に示すように、候補ノード「N5」の親ノード「N11」に連結される他の子ノード「N6」が候補ノードでないことから、「N11」を候補ノードとして設定しない。
【0108】
そして、部分URL生成部15は、図17の(D)に示すように、根ノード「R」を起点とする経路それぞれにおいて最上位に位置する候補ノード「N9,N3,N5,N12」を特定する。そして、部分URL生成部15は、図17の(D)に示すように、根ノード「R」から候補ノード「N9」までの部分URLと、根ノード「R」から候補ノード「N3」までの部分URLと、根ノード「R」から候補ノード「N5」までの部分URLと、根ノード「R」から候補ノード「N12」までの部分URLとを生成する。
【0109】
なお、統合された木構造の根ノードが複数である場合、部分URL生成部15は、根ノードごとに候補ノードの探索及び新規の候補ノードの設定を行なう。ここで、統合された木構造の根ノードが複数である場合、部分URL生成部15は、部分URLの生成処理を、全ての根ノードについて候補ノードの設定処理が終わった後に一括して実行しても良いし、根ノードごとの候補ノードの探索及び新規の候補ノードの設定が終わった後に根ノード単位で実行しても良い。
【0110】
そして、実施例2においても、部分URL生成部15は、生成した部分URLの中で、未格納の部分URLを部分URL記憶部16に格納する。そして、実施例2においても、フィルタリング部17は、部分URL記憶部16に格納された部分URLを包含するURLに対して、フィルタリングを行なう。
【0111】
上記で説明した部分URL生成法により生成される部分URLを用いることで、フィルタリング部17は、上述したように、パス部の変更に対応したURLフィルタリングを行なうことができる。すなわち、複数のディレクトリ配下に悪性コンテンツを持つドメインが存在する場合、部分URL生成部15は、URLの分岐点配下をURLフィルタリングの対象範囲としてURLフィルタリングを行なうことができる部分URLを生成することができる。例えば、「http://example.com/path_1/path2_1/exploit.html」と「http://example.com/path_1/path2_2/exploit.php」とが悪性URLとして存在する場合、部分URL生成部15は、「http://example.com/path_1/」を部分URLとして生成することができる。
【0112】
また、上記で説明した部分URL生成法により生成される部分URLを用いることで、フィルタリング部17は、ホスト部の変更にも対応したURLフィルタリングを行なうことができる。すなわち、特定プライベートサフィックスの配下に複数のサブドメインを持ち、そのサブドメイン上に悪性コンテンツが存在する場合、部分URL生成部15は、プライベートサフィックスまでをフィルタリング対象範囲とすることで、攻撃者が新たにサブドメインを生成したとしても一括してURLフィルタリングを行なうことができる部分URLを生成することができる。例えば、「http://malicious.example.com/exploit.html」と「http://exploit.example.com/exploit.php」とが悪性URLとして存在する場合、部分URL生成部15は、「http://*.example.com/」を部分URLとして生成することができる。ここで、「*」は、ワイルドカードであることを表す記号である。
【0113】
なお、上記では、部分URL生成部15が、候補ノードの親ノードの子ノードが全て候補ノードである場合、当該親ノードを候補ノードとして新たに設定する場合について説明した。しかし、実施例2に係る部分URL生成部15は、候補ノードの親ノードの全子ノード数に対する候補ノード数の割合が所定の閾値以上である場合、当該親ノードを候補ノードとして新たに設定しても良い。図18は、実施例2に係る部分URL生成部による候補ノード設定処理の変形例を説明するための図である。
【0114】
例えば、所定の閾値として「75%」が設定されている場合について説明する。かかる場合、部分URL生成部15は、図18に示すように、親ノード「P」の5個の子ノードの中で4個の子ノードが候補ノードであり、75%以上が候補ノードであることから、親ノード「P」を新規の候補ノードとして設定する。なお、上記の変形例では、候補ノード設定に用いられる所定の閾値が、全木構造において同一である場合について説明した。しかし、本変形例は、候補ノードの設定に用いられる所定の閾値が、木構造における根ノードからの深さごとに異なる値で個別に設定される場合であっても良いし、各ノードにおいて個別に設定される場合であっても良い。
【0115】
続いて、図19を用いて、実施例2に係るフィルタリングシステムが有するフィルタリング装置10の処理の手順を説明する。図19は、実施例2に係るフィルタリング装置の部分URL生成処理を説明するためのフローチャートである。なお、実施例2に係るフィルタリングシステムが有するフィルタリング装置10のフィルタリング処理は、図13を用いて説明した実施例1の処理と同様であるので、説明を省略する。
【0116】
図19に示すように、実施例2に係るフィルタリング装置10は、URL収集部11の処理により、悪性URLを含むURLのリストがURL記憶部12に格納されたか否かを判定する(ステップS301)。ここで、URLのリストが格納されない場合(ステップS301否定)、フィルタリング装置10は、待機状態となる。
【0117】
一方、URLのリストが格納された場合(ステップS301肯定)、変換部13は、全URLを木構造に変換し、各URLから変換した木構造を共通するノードに基づいて統合する(ステップS302)。そして、部分URL生成部15は、統合された木構造の根ノード数(M)を取得し、各根ノード(R)に対してID(j=1〜M)を割り振り、(ステップS303)、「j=1」と設定する(ステップS304)。なお、「j」は、「1〜M」の整数となる。
【0118】
続いて、部分URL生成部15は、識別子「M」が付与されているか否かを判定することで、ステップS302にて統合された木構造から悪性末端ノードを抽出し(ステップS305)、抽出した悪性末端ノードの親ノードを候補ノードに設定する(ステップS306)。そして、部分URL生成部15は、ステップS306にて設定した候補ノードまでを探索対象として設定する(ステップS307)。
【0119】
その後、部分URL生成部15は、根ノード「R(j)」を起点とする候補ノードの深さ優先探索を開始し(ステップS308)、候補ノードを探索したか否かを判定する(ステップS309)。ここで、候補ノードを探索していない場合(ステップS309否定)、部分URL生成部15は、ステップS307で設定した探索対象にて、根ノード「R(j)」を起点とする候補ノードの深さ優先探索を継続し(ステップS310)、ステップS309の判定処理を行なう。
【0120】
一方、候補ノードを探索した場合(ステップS309肯定)、部分URL生成部15は、探索した候補ノードの親ノードの子ノード全てが候補ノードか否かを判定する(ステップS311)。ここで、探索した候補ノードの親ノードの子ノード全てが候補ノードでない場合(ステップS311否定)、部分URL生成部15は、探索した候補ノードの親ノード配下のノードを探索対象から除外する(ステップS314)。
【0121】
一方、探索した候補ノードの親ノードの子ノード全てが候補ノードである場合(ステップS311肯定)、部分URL生成部15は、探索した候補ノードの親ノードを候補ノードに設定し(ステップS312)、ステップS312で設定した候補ノード配下のノードを探索対象から除外する(ステップS313)。
【0122】
そして、ステップS313又はステップS314において探索対象の再設定を行なった部分URL生成部15は、根ノード「R(j)」の探索処理が終了したか否かを判定する(ステップS315)。ここで、根ノード「R(j)」の探索処理が終了していない場合(ステップS315否定)、部分URL生成部15は、ステップS313又はステップS314で再設定した探査対象にて根ノード「R(j)」の深さ優先探索を継続し(ステップS316)、ステップS309の判定処理を行なう。
【0123】
一方、根ノード「R(j)」の探索処理が終了した場合(ステップS315肯定)、部分URL生成部15は、根ノード「R(j)」を起点とする各経路にて最上位に位置する候補ノードを特定する(ステップS317)。そして、部分URL生成部15は、根ノード「R(j)」からステップS317で特定した候補ノードまでの部分URLのうち、未格納の部分URLを部分URL記憶部16に格納する(ステップS318)。
【0124】
そして、部分URL生成部15は、「j=M」であるか否かを判定する(ステップS319)。ここで、「j=M」でない場合(ステップS319否定)、部分URL生成部15は、「j」をインクリメントして「j=j+1」とし(ステップS320)、ステップS308に戻って、根ノード「R(j)」を起点とする候補ノードの深さ優先探索を開始する。
【0125】
なお、実施例2においても、URL収集部11によるURLリストの収集は、例えば、フィルタリング装置10の管理者の設定により定期的に実行され、URL記憶部12に格納されるURLは、定期的に更新される。URLのリストが更新された場合、変換部13は、更新された全URLについて木構造の変換処理を行なう。そして、変換部13は、更新された全URLから変換した木構造と統合済みの木構造とを共通するノードに基づいて再度統合する。そして、部分URL生成部15は、新たに統合された木構造を用いて、部分URLの生成処理及び部分URLの格納処理を行なう。
【0126】
上述したように、実施例2によれば、部分URL生成部15は、悪性URLの末端ノードの親ノードを部分URLの生成に用いられる末端ノードの候補ノードと設定し、当該設定した候補ノードの親ノードの全子ノード数に対する候補ノード数の割合に応じて、当該親ノードを候補ノードとして新たに設定する。更に、部分URL生成部15は、当該新たに設定した候補ノードの親ノードの全子ノード数に対する候補ノード数の割合に応じて、当該親ノードを候補ノードとして新たに設定する。
【0127】
そして、部分URL生成部15は、かかる候補ノードの設定処理を変換部13により統合された木構造の各根ノードについて実行した後、当該木構造の各根ノードを起点とする経路それぞれにおいて最上位に位置する候補ノードを特定し、当該特定した候補ノードを末端ノードとして部分URLを生成する。
【0128】
すなわち、実施例2では、悪質な資源情報を格納するパスの最上位に位置する可能性の高いパス名を、木構造の同一階層にある各ノード配下にあるノードが候補ノードである割合に基づいて特定する。かかる処理により特定されたパス名は、攻撃者が管理する悪質な資源情報の格納先を示す情報として変更せずに用いられる可能性が高い。すなわち、実施例2では、最上位にある候補ノードの配下のノードが、攻撃者により変更されることが推定されるURLの部分であり、最上位にある候補ノードを末端ノードとする部分URLを、悪性URL間で共有される可能性が高いURLとして生成する。なお、初期設定後、新たに候補ノードが設定されない場合、実施例2で生成される部分URLは、実施例1で生成される部分URLと同じとなる。
【0129】
従って、実施例2では、新たなパスを用いた悪性URLによる攻撃に対してもフィルタリングを行なうことができ、URLを部分的に変更することで行なわれる攻撃をより確実に防御することが可能となる。
【0130】
なお、本実施例2で用いられるURLのリストは、実施例1と同様に、悪性URLを含むURLのリストである場合でも、全てが悪性URLであるURLのリストであっても良い。ただし、実施例2では、末端ノードのレベルで悪性末端ノードでない末端ノードが混在することが、悪性URL間で共有される可能性が高い部分を統計的に精度よく特定することに繋がるので、悪性でないURLが混在するURLのリストを用いることが望ましい。
【0131】
また、実施例2によれば、部分URL生成部15は、候補ノードとして設定したノード、及び、新たに候補ノードとして設定するか否かを判定したノードまでを探索対象とした深さ優先探索を行なう。従って、実施例2では、候補ノードの探索及び候補ノードの新規設定に要する負荷を低減することが可能となる。
【0132】
なお、上記した実施例1及び2では、URLのホスト部におけるポート番号「:<port>」を木構造の変換対象から除外した場合について説明した。しかし、上記した実施例1及び2は、ポート番号「:<port>」も含めてURLを木構造に変換する場合であっても適用可能である。「:<port>」が付与されているURLを木構造に変換する際、変換部13により変換される木構造においては、ドメイン部とパス部の間にポート番号が挿入される形になる。すなわち、変換部13は、「.(ドット)」及び「:(コロン)」をドメイン部固有の区切り文字として用いて用いる。例えば、変換部13は、「http://www.example.com:8080/path/index.html」を、根ノードが「example.com」であり、「example.com」に対して順に「www」、「8080」、「path」及び「index.html」が子ノードとして連結される木構造に変換する。
【0133】
ここで、ポート番号がデフォルトポート番号の「80番」であることから、変換対象となるURLにポート番号が記述されていない場合、変換部13は、ホスト部のノードとパス部のノードとの間に「80」のノードを追加することで、木構造変換処理を行なう。例えば、変換部13は、「http://www.example.com/path/index.html」を、根ノードが「example.com」であり、「example.com」に対して順に「www」、「80」、「path」及び「index.html」が子ノードとして連結される木構造に変換する。
【0134】
そして、木構造にポート番号のノードが含まれる場合、変換部13は、悪性末端ノードの根ノードから悪性末端ノードの親ノードまで、又は、候補ノードの根ノードから候補ノードまでを、ポート番号を含めてURLとして復元することで、部分URLを生成する。そして、フィルタリング部17は、ポート番号を含む部分URLを用いる場合、受信したURLにポート番号が省略されているならば、当該URLに「:80」を挿入したうえで、フィルタリングを行なうか否かを判定する。
【0135】
また、上記した実施例1及び2では、フィルタリング装置10がプロキシサーバ1に設置される場合について説明した。しかし、実施例1及び2で説明したフィルタリング装置10は、プロキシサーバ1以外のネットワーク装置や、エンドホスト上の装置に設置される場合であってもよい。プロキシサーバ1以外のネットワーク装置としては、ネットワーク型IDS(Intrusion Detection System)/IPS(Intrusion Prevention System)などが挙げられる。また、エンドホスト上の装置としては、アンチウィルスソフトやWebブラウザのフィルタリング機能を行なうための装置が挙げられる。これらの装置は、フィルタリング用のURLをインポート可能なものが多く、実施例1及び2で説明したフィルタリング方法により生成した部分URLを入力することでフィルタリングが可能になる。
【0136】
また、上記した実施例1及び2では、フィルタリング方法が一つの装置にて実行される場合について説明した。しかし、実施例1及び2で説明したフィルタリング方法は、複数の装置にて分散されて実行される場合であっても良い。例えば、実施例1及び2で説明したフィルタリング方法は、URL収集部11の機能を有する装置と、変換部13及び部分URL生成部15の機能を有する装置と、フィルタリング部17の機能を有する装置とが一つの仮想的なフィルタリング装置10として機能することにより実現される場合であっても良い。また、1装置または2以上の装置からなるシステム内に、仮想マシンが起動される環境であって、この仮想マシン上で複数の仮想化されたコンピュータが動作するものであり、この仮想化されたコンピュータ上で実施例1及び2で説明したフィルタリング方法が実行される場合であってもよい。
【0137】
また、上記した実施例1及び2で説明したフィルタリング方法は、あらかじめ用意されたフィルタリングプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。なお、実施例1及び2で説明したフィルタリング方法は、上述したように、一つのコンピュータにて実行される場合であっても、複数のコンピュータにて分散されて実行される場合であっても良い。また、実施例1及び2で説明したフィルタリング方法は、上述したように、仮想化されたコンピュータ上で実行される場合であっても良い。
【産業上の利用可能性】
【0138】
以上のように、本発明に係るフィルタリング方法、フィルタリングシステム及びフィルタリングプログラムは、URLフィルタリングを行なう場合に有用であり、特に、URLを部分的に変更することで行なわれる攻撃を簡易かつ確実に防御することに適する。
【符号の説明】
【0139】
1 プロキシサーバ
10 フィルタリング装置
11 URL収集部
12 URL記憶部
13 変換部
14 木構造記憶部
15 部分URL生成部
16 URL記憶部
17 フィルタリング部
2 ユーザ端末
3 ウェブサーバ群

【特許請求の範囲】
【請求項1】
コンピュータが、
悪質な資源情報の格納先を示すURLである悪性URLから、当該悪性URLの中で変更されることが推定される文字列以外の文字列から構成される部分URLを生成し、当該生成した部分URLを部分URL記憶部に格納する部分URL生成ステップと、
前記部分URL記憶部に格納された前記部分URLを包含するURLを悪性URLとしてURLフィルタリングを行なうフィルタリングステップと、
を含んだことを特徴とするフィルタリング方法。
【請求項2】
コンピュータが、
悪性URLが含まれるURLの集合を収集してURL記憶部に格納する格納ステップと、
情報資源を格納するホストが所属する所属ドメイン空間を示すURLのホスト部において当該ホストが当該所属ドメイン空間にて位置する特定のドメイン空間を示すドメイン名を根ノードとし、当該ドメイン名以外のホスト部の文字列をホスト部に固有の区切り文字により区切った文字列をノードとして、当該文字列の後方から前方に向かった順に、前記根ノードに対する子ノード、当該子ノードに対する子ノード、として順次連結し、更に、前記ホスト内で前記情報資源が配置される位置を示すURLのパス部をパス部に固有の区切り文字により区切った文字列をノードとして、当該文字列の前方から後方に向かった順に、前記ホスト部に由来する子ノードの中で末端に位置するノードに対する子ノード、当該子ノードに対する子ノード、として順次連結する連結順序を用いることで当該URLを木構造に変換する処理を、前記URL記憶部に格納された各URLに対して実行し、各URLから変換した木構造を共通するノードに基づいて統合する変換ステップと、
をさらに含み、
前記部分URL生成ステップは、前記変換ステップにより統合された木構造において、悪性URLの末端ノードの根ノードから当該末端ノードの親ノードまでを前記連結順序に準じてURLとして復元することで前記部分URLを生成し、当該生成した部分URLの中で未格納の部分URLを前記部分URL記憶部に格納することを特徴とする請求項1に記載のフィルタリング方法。
【請求項3】
前記部分URL生成ステップは、悪性URLの末端ノードの親ノードを前記部分URLの生成に用いられる末端ノードの候補ノードと設定し、当該設定した候補ノードの親ノードの全子ノード数に対する候補ノード数の割合に応じて、当該親ノードを候補ノードとして新たに設定し、更に、当該新たに設定した候補ノードの親ノードの全子ノード数に対する候補ノード数の割合に応じて、当該親ノードを候補ノードとして新たに設定する設定処理を前記変換ステップにより統合された木構造の各根ノードについて実行した後、当該木構造の各根ノードを起点とする経路それぞれにおいて最上位に位置する候補ノードを特定し、当該特定した候補ノードを末端ノードとして前記部分URLを生成することを特徴とする請求項2に記載のフィルタリング方法。
【請求項4】
悪質な資源情報の格納先を示すURLである悪性URLから、当該悪性URLの中で変更されることが推定される文字列以外の文字列から構成される部分URLを生成し、当該生成した部分URLを部分URL記憶部に格納する部分URL生成手段と、
前記部分URL記憶部に格納された前記部分URLを包含するURLを悪性URLとしてURLフィルタリングを行なうフィルタリング手段と、
を備えたことを特徴とするフィルタリングシステム。
【請求項5】
請求項1〜3のいずれか一つに記載のフィルタリング方法をコンピュータに実行させることを特徴とするフィルタリングプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2012−94071(P2012−94071A)
【公開日】平成24年5月17日(2012.5.17)
【国際特許分類】
【出願番号】特願2010−242716(P2010−242716)
【出願日】平成22年10月28日(2010.10.28)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】