(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】情報処理装置及び情報処理プログラム
(51)【国際特許分類】
G06F 21/55 20130101AFI20240109BHJP
G06N 20/00 20190101ALI20240109BHJP
【FI】
G06F21/55
G06N20/00 130
(21)【出願番号】P 2020090226
(22)【出願日】2020-05-25
【審査請求日】2023-02-28
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001210
【氏名又は名称】弁理士法人YKI国際特許事務所
(72)【発明者】
【氏名】古川 泰之
【審査官】岸野 徹
(56)【参考文献】
【文献】特開2019-103069(JP,A)
【文献】国際公開第2016/140038(WO,A1)
【文献】国際公開第2018/236915(WO,A1)
【文献】特開2019-133470(JP,A)
【文献】特表2019-512761(JP,A)
【文献】国際公開第2018/008605(WO,A1)
【文献】米国特許第8881281(US,B1)
【文献】米国特許第10581885(US,B1)
【文献】特開2018-133004(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
プロセッサを備え、
前記プロセッサは、
接続先ホストを示す情報及び当該接続先ホストの脅威の有無を学習データとし、接続先ホストを示す情報が入力されたときに当該接続先ホストの脅威度を出力するように学習された第1学習器に対して、対象接続先ホストの情報を入力することで得られた前記対象接続先ホストの脅威度と、
接続元端末からの通信の通信履歴を学習データとし、前記接続元端末からの通信の異常度である通信異常度を出力するように学習された第2学習器に対して、対象接続元端末の通信履歴を入力することで得られた前記対象接続元端末の通信異常度と、
に基づいて、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であるか否かを判定する、
ことを特徴とする情報処理装置。
【請求項2】
前記プロセッサは、前記対象接続先ホストの脅威度が脅威度閾値以上となった場合に、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であると判定し、
前記対象接続元端末の通信異常度が大きい程、前記脅威度閾値が小さい、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記プロセッサは、
前記第1学習器が出力した前記対象接続先ホストの脅威度を所定時間保持し、
保持した前記対象接続先ホストの脅威度に基づいて、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であるか否かの判定を間欠的に実行する、
ことを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記プロセッサは、
第2学習器が出力した前記対象接続元端末の通信異常度を所定時間保持し、
保持した前記対象接続元端末の通信異常度に基づいて、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であるか否かの判定を間欠的に実行する、
ことを特徴とする請求項1又は2に記載の情報処理装置。
【請求項5】
前記第1学習器は、教師有り学習により学習され、
前記第2学習器は、教師無し学習により学習される、
ことを特徴とする請求項1から3のいずれか1項に記載の情報処理装置。
【請求項6】
コンピュータに、
接続先ホストを示す情報及び当該接続先ホストの脅威の有無を学習データとし、接続先ホストを示す情報が入力されたときに当該接続先ホストの脅威度を出力するように学習された第1学習器に対して、対象接続先ホストの情報を入力することで得られた前記対象接続先ホストの脅威度と、
接続元端末からの通信の通信履歴を学習データとし、前記接続元端末からの通信の異常度である通信異常度を出力するように学習された第2学習器に対して、対象接続元端末の通信履歴を入力することで得られた前記対象接続元端末の通信異常度と、
に基づいて、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であるか否かを判定断させる、
ことを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【0002】
従来、インターネットなどの通信回線を介して接続元端末から接続先ホストにアクセスする際に、当該接続先ホストの脅威の有無を判定することが提案されている。脅威が有る接続先ホストとは、例えば、悪意のあるソフトウェアであるマルウェアを接続元端末に送り付けるなど、接続元端末に対して不当に悪影響を及ぼす(あるいはその可能性がある)ホストを意味する。
【0003】
例えば、特許文献1には、対象通信先の脅威度(悪性度)を算出する装置であって、悪性又は良性であることが既知の既知通信先及び対象通信先についての、良性通信先リスト及び悪性通信先リストへの掲載の有無の時間変化に基づいて、既知通信先及び対象通信先の特徴情報を抽出し、当該特徴情報に基づいて対象通信先の悪性度を算出する装置が開示されている。また、特許文献2には、接続元端末におけるマルウェアの感染履歴などである文脈情報を考慮して、当該接続元端末と通信する接続先ホストの脅威の有無を検出する方法が開示されている。
【0004】
また、マルウェアに感染した接続元端末は、当該接続元端末の利用者の意に反して種々の接続先ホストとの間で通信を行う場合があるところ、従来、接続元端末がマルウェアに感染しているか否かを検出する技術が提案されている。
【0005】
例えば、特許文献3には、接続元端末であるIoT端末と接続先ホストとの間の通信に関する通信発生の頻度、あるいは接続先ホストの種類数などの特徴量に基づいて、当該IoT端末がマルウェアに感染しているか否かを検出する異常検知システムが開示されている。また、特許文献4には、ネットワークを流れるセキュリティ攻撃パケット(悪意のあるパケット)のヘッダ情報から、セキュリティ攻撃通信の通信パターンを学習器に学習させることで、セキュリティ攻撃パケットを検出するセキュリティ脅威システムが開示されている。
【0006】
脅威の有る接続先ホストへの通信、及び、マルウェアに感染した接続元端末からの通信は、いずれも接続先端末あるいはその利用者に不利益を与え得る通信である。本明細書では、(マルウェアに感染しているか否かに関わらず)接続元端末と脅威の有る接続先ホストとの間の通信、又は、マルウェアに感染した接続元端末と(脅威の有無に関わらず)接続先ホストとの間の通信を「不良通信」と呼ぶ。
【先行技術文献】
【特許文献】
【0007】
【文献】特許第6196008号公報
【文献】特許第5961183号公報
【文献】特開2018-133004号公報
【文献】特許第6078179号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、従来における接続先ホストの脅威の有無を判定する装置においては、脅威の有無を判定する装置にとって既知の接続先ホストに関する脅威の有無を判定していた。換言すれば、従来、脅威の有無を判定する装置がドメイン名やIPアドレスを把握している接続先ホストの脅威の有無を判定していた。一方、脅威を検出する装置にとって未知の接続先ホストの脅威の有無を検出することは、従来困難であった。
【0009】
また、マルウェアに感染した接続元端末は、多種多様の接続先ホストに多種多様の通信態様にて接続し得る。したがって、マルウェアに感染した接続元端末の接続先ホストや通信態様を予め定義してくことが困難であり、あるいは、学習器を用いたとしてもそのような通信態様を学習させることが困難であり、接続元端末からの通信の通信態様に基づいて、それがマルウェアによる通信であるか否かを判定することが困難となる場合があった。
【0010】
上述の通り、未知の接続先ホストの脅威の有無を検出することが困難であること、又は、接続元端末からの通信がマルウェアによる通信であるか否かを判定することが困難であることから、従来、接続元端末から未知の接続先ホストへの通信が不良通信であるか否かを判定することが困難であった。
【0011】
本発明の目的は、接続元端末から未知の接続先ホストへの通信が不良通信であるか否かを判定することにある。
【課題を解決するための手段】
【0012】
請求項1に係る発明は、プロセッサを備え、前記プロセッサは、接続先ホストを示す情報及び当該接続先ホストの脅威の有無を学習データとし、接続先ホストを示す情報が入力されたときに当該接続先ホストの脅威度を出力するように学習された第1学習器に対して、対象接続先ホストの情報を入力することで得られた前記対象接続先ホストの脅威度と、接続元端末からの通信の通信履歴を学習データとし、前記接続元端末からの通信の異常度である通信異常度を出力するように学習された第2学習器に対して、対象接続元端末の通信履歴を入力することで得られた前記対象接続元端末の通信異常度と、に基づいて、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であるか否かを判定する、ことを特徴とする情報処理装置である。
請求項2に係る発明は、前記プロセッサは、前記対象接続先ホストの脅威度が脅威度閾値以上となった場合に、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であると判定し、前記対象接続元端末の通信異常度が大きい程、前記脅威度閾値が小さい、ことを特徴とする請求項1に記載の情報処理装置である。
請求項3に係る発明は、前記プロセッサは、
前記第1学習器が出力した前記対象接続先ホストの脅威度を所定時間保持し、保持した前記対象接続先ホストの脅威度に基づいて、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であるか否かの判定を間欠的に実行する、ことを特徴とする請求項1又は2に記載の情報処理装置である。
請求項4に係る発明は、前記プロセッサは、第2学習器が出力した前記対象接続元端末の通信異常度を所定時間保持し、保持した前記対象接続元端末の通信異常度に基づいて、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であるか否かの判定を間欠的に実行する、ことを特徴とする請求項1又は2に記載の情報処理装置である。
請求項5に係る発明は、前記第1学習器は、教師有り学習により学習され、前記第2学習器は、教師無し学習により学習される、ことを特徴とする請求項1から3のいずれか1項に記載の情報処理装置である。
請求項6に係る発明は、コンピュータに、接続先ホストを示す情報及び当該接続先ホストの脅威の有無を学習データとし、接続先ホストを示す情報が入力されたときに当該接続先ホストの脅威度を出力するように学習された第1学習器に対して、対象接続先ホストの情報を入力することで得られた前記対象接続先ホストの脅威度と、接続元端末からの通信の通信履歴を学習データとし、前記接続元端末からの通信の異常度である通信異常度を出力するように学習された第2学習器に対して、対象接続元端末の通信履歴を入力することで得られた前記対象接続元端末の通信異常度と、に基づいて、前記対象接続元端末から前記対象接続先ホストへの通信が不良通信であるか否かを判定断させる、ことを特徴とする情報処理プログラムである。
【発明の効果】
【0013】
請求項1、5、又は6に係る発明によれば、接続元端末から未知の接続先ホストへの通信が不良通信であるか否かを判定することができる。
請求項2に係る発明によれば、対象接続元端末の通信異常度が大きい程、対象接続先ホストの脅威度がより低くても、対象接続元端末から対象接続先ホストへの通信が不良通信であると判定することができる。
請求項3に係る発明によれば、接続元端末から未知の接続先ホストへの通信が不良通信であるか否かを判定する際における、プロセッサ及び学習済みの第1学習器の処理量を低減することができる。
請求項4に係る発明によれば、接続元端末から未知の接続先ホストへの通信が不良通信であるか否かを判定する際における、プロセッサ及び学習済みの第2学習器の処理量を低減することができる。
【図面の簡単な説明】
【0014】
【
図1】本実施形態に係るネットワークシステムの構成概略図である。
【
図4】本実施形態に係るセキュリティサーバの構成概略図である。
【
図6】キャッシュデータの第1の例を示す図である。
【
図7】キャッシュデータの第2の例を示す図である。
【
図9】第2学習器の構造の第1の例を示す図である。
【
図10】接続元端末別のクエリタイプ列を示す図である。
【
図11】クエリタイプ列における学習用入力データと評価データを示す第1の図である。
【
図12】クエリタイプ列における学習用入力データと評価データを示す第2の図である。
【
図13】第2学習器の構造の第2の例を示す図である。
【
図14】通信異常度取得部の処理の第1の例を示す図である。
【
図15】通信異常度取得部の処理の第2の例を示す図である。
【発明を実施するための形態】
【0015】
図1は、本実施形態に係るネットワークシステム10の構成概略図である。ネットワークシステム10は、1又は複数の接続元端末12、1又は複数の接続先ホスト14、ネットワーク装置16、DNS(Domain Name System)サーバ18、1又は複数のネームサーバ20、及び、本発明に係る情報処理装置としてのセキュリティサーバ22を含んで構成されている。接続元端末12とネットワーク装置16は、LAN(Local Area Network)などのイントラネットにより通信可能に接続されている。また、接続先ホスト14、ネットワーク装置16、DNSサーバ18、ネームサーバ20、及びセキュリティサーバ22は、インターネット及びLANなどを含む通信回線24により互いに通信可能に接続されている。
【0016】
接続元端末12は、利用者(ユーザ)が使用する端末であり、例えばパーソナルコンピュータである。また、接続元端末12としては、タブレット端末などの携帯端末であってもよい。接続元端末12は、ネットワーク装置16と通信するため、あるいは、ネットワーク装置16を介して接続先ホスト14と通信するための通信インターフェースと、ハードディスク、ROM(Read Only Memory)、あるいはRAM(Random Access Memory)などから構成されるメモリと、液晶表示器などから構成されるディスプレイと、マウスやキーボードあるいはタッチパネルなどから構成される入力インターフェースと、CPU(Central Processing Unit)やマイクロコンピュータなどから構成されるプロセッサと、を含む。
【0017】
接続先ホスト14は、例えば、1つのサーバ(例えばウェブサーバ)であってよく、通信回線24を介してアクセスしてきた装置に対して各種データ(例えばウェブページデータなど)を提供するものである。また、バーチャルホストと呼ばれる技術により、1つのサーバにおいて、仮想的に複数の接続先ホスト14が定義される場合もある。複数の接続先ホスト14の中には、接続元端末12に不当に悪影響を与える(例えばマルウェアなどを送り付ける)ような、脅威の有る接続先ホスト14が存在する。また、複数の接続先ホスト14の中には、接続元端末12がアクセスしたことのない接続先ホスト14も存在し得る。そのような接続先ホスト14の中にも脅威を有する接続先ホスト14が存在し得る。
【0018】
ネットワーク装置16は、通信経路において接続元端末12と接続先ホスト14との間に介在する装置である。本実施形態では、ネットワーク装置16は、複数の接続元端末12に接続され、当該各接続元端末12が通信回線24を介して接続先ホスト14と通信を行う際において、以下に説明する処理を実行する。
【0019】
第1に、ネットワーク装置16は、接続元端末12からの要求に応じて、種々のリクエストをDNSサーバ18に送信する。例えば、接続元端末12においてユーザが接続先ホスト14のURL(Uniform Resource Locator)を指定した場合(つまり、接続元端末12から接続先ホスト14への通信を試みる場合)、当該URLに含まれる、接続先ホスト14を示すドメイン名としてのFQDN(Fully Qualified Domain Name;例えば「www.fujixerox.co.jp」など)の名前解決のリクエストをDNSサーバ18に送信する。また、ネットワーク装置16は、名前解決の他、例えばDNSサーバ18に記憶されている種々の情報(例えばFQDNに関するコメントなど)を取得する際にも、DNSサーバ18にリクエストを送信する。
【0020】
ネットワーク装置16がDNSサーバ18に送信するリクエストには、DNSサーバ18に要求する情報の種類を示すクエリタイプ(DNSレコードタイプとも呼ばれる)が含まれる。クエリタイプとしては、これらに限られないが、例えば、FQDNのIPv4形式のIPアドレスを示す「A」、FQDNのIPv6形式のIPアドレスを示す「AAAA」、FQDNの別名(別ドメイン名)を示す「CNAME」、FQDNに関するコメントなどのテキスト情報を示す「TXT」などがある。例えば、あるFQDNのIPv4形式のIPアドレスを取得する場合、ネットワーク装置16は、当該FQDNとクエリタイプ「A」を含むリクエストをDNSサーバ18に送信する。
【0021】
ネットワーク装置16からDNSサーバ18にリクエストが送信される度に、当該リクエストの送信履歴を示すクエリログ16aがネットワーク装置16に蓄積記憶される。
図2に、1回のリクエストに対応するクエリログ16aの例が示されている。クエリログ16aには、当該リクエストがDNSサーバ18に送信された日時を示すリクエスト日時、ネットワーク装置16に当該リクエストの送信を要求した接続元端末12のIPアドレス、及び、当該リクエストのクエリタイプを示す情報が含まれている。なお、接続元端末12のIPアドレスは、接続元端末12を一意に識別する識別子として用いられるため、接続元端末12を一意に識別可能である限りにおいて、接続元端末12のIPアドレスに代えて、他の情報がクエリログ16aに含められてもよい。
【0022】
接続先ホスト14のFQDNがネットワーク装置16からDNSサーバ18に送信されると、DNSサーバ18において名前解決処理(詳細後述)が行われ、DNSサーバ18は、当該接続先ホスト14のIPアドレスをネットワーク装置16に送信する。これにより、ネットワーク装置16は、当該IPアドレスに基づいて接続先ホスト14にアクセス可能となる。
【0023】
第2に、ネットワーク装置16は、接続元端末12と接続先ホスト14とが通信する度に、当該通信の履歴を示す通信ログ16bを取得して蓄積記憶する。本実施形態では、1セッションの通信毎に、通信ログ16bとして、ICMP(Internet Control Message Protocol)セッション情報を含む情報が記憶される。ICMPセッション情報とは、イーサネットフレームのペイロード内のIPヘッダ及びICMPメッセージに含まれる情報である。
【0024】
図3に、1回のセッションに対応する通信ログ16bの例が示されている。通信ログ16bには、通信日時、タイムゾーン、接続元端末12のIPアドレス、接続先ホスト14のIPアドレス、及び、接続先ホスト14のIPアドレスの保有国を示す情報が含まれる。通信日時は、接続元端末12が接続先ホスト14に接続した時刻、換言すれば、接続元端末12と接続先ホスト14との間の通信が開始された時刻である。タイムゾーンは、接続元端末12が接続先ホスト14に接続した時間帯を示す情報であり、本実施形態では、0~23までの値を取り得る。例えば、タイムゾーンが「1」である場合、当該通信ログ16bが示す通信は、午前1:00~午前2:00までの間に行われたことを示す。また、接続先ホスト14のIPアドレスの保有国を示す情報は、例えば、ネットワーク装置16が、各IPアドレスの所有者に関する情報を保有しているサービスであるWhoisに問い合わせることなどで取得することができる。
【0025】
第3に、ネットワーク装置16は、接続元端末12が接続先ホスト14と通信する際におけるセキュリティの担保に関する処理を実行する。換言すれば、ネットワーク装置16は、脅威の有る接続先ホスト14から接続元端末12を守る働きをする。例えば、ネットワーク装置16は、接続先ホスト14から送られてくるデータ(例えばパケット)を検証し、当該データが不正データであると判断した際に、接続元端末12と接続先ホスト14との間の通信を遮断するファイアウォールあるいはIPS(Intrusion Prevention System;侵入防止システム)を備えている。ここで、不正データとは、接続元端末12に不当な悪影響を生じさせる(あるいはその可能性がある)データである。
【0026】
具体的には、ネットワーク装置16は、接続先ホスト14から受信したデータ(例えばパケット)が不正データであるか否かをファイアウォールあるいはIPSなどによって判定する。例えば、ネットワーク装置16は、接続元端末12においてユーザが接続先ホスト14のURLを指定した場合における、当該URLに基づく接続元端末12と接続先ホスト14との間の通信を監視して、接続先ホスト14から送信されてくる不正データを検出する。当該データが不正データでないと判定した場合、ネットワーク装置16は当該データを接続元端末12に送信する。これにより、接続元端末12と接続先ホスト14との間の通信が許可される。一方、当該データが不正データであると判定した場合、ネットワーク装置16は当該データを遮断し、すなわち、接続元端末12と接続先ホスト14との間の通信を禁止し、接続先ホスト14との間の通信が禁止されたことを接続元端末12に通知する。
【0027】
上述の判定の結果が判定ログ16cとしてネットワーク装置16のメモリに記憶される。接続先ホスト14からのデータが不正データであるか否かに関わらず、接続元端末12と接続先ホスト14との間における通信が行われる度に、上述の判定の結果が判定ログ16cとして蓄積記憶されていく。判定ログ16cには、判定時刻(通信時刻)、接続先ホスト14を示す情報、及び、当該接続先ホスト14の脅威の有無(不正データの検出有無)が含まれる。本実施形態では、接続先ホスト14を示す情報として、少なくとも、接続先ホスト14のドメイン名(すなわちFQDN)が判定ログ16cに含められる。好適には、判定ログ16cには、接続先ホスト14を示す情報として、接続先ホスト14のIPアドレス、当該FQDNを管理するネームサーバ20(詳細後述)の名前(ネームサーバ名)及びIPアドレス、接続先ホスト14のIPアドレスの保有国、並びに、接続先ホストのIPアドレスのネットワーク名などが含まれてもよい。ネットワーク名とは、地域インターネットレジストリ(IPアドレスの管理を行う組織)が所有者に対してIPアドレスを付与する際に、当該IPアドレスに付与されるユニークな(すなわち一意に識別可能な)識別子である。所有者が複数のIPアドレスを所望した場合は、当該複数のIPアドレスには同一の(ただし当該複数のIPアドレス以外のIPアドレスに対してはユニークである)ネットワーク名が付される。接続先ホストのIPアドレスのネットワーク名は、ネットワーク装置16が、上述のWhoisに問い合わせることなどで取得することができる。
【0028】
DNSサーバ18は、ネットワーク装置16などの種々の装置からのリクエストに応じて、種々の情報を送信する装置である。特に、DNSサーバ18は、ドメイン名とIPアドレスの相互変換処理を行う装置である。
【0029】
DNSサーバ18は、ネットワーク装置16から、接続元端末12が指定した接続先ホスト14のFQDNとクエリタイプ「A」を含むリクエストを受信すると、ネットワーク装置16から受信したFQDNについて名前解決処理を行い、当該FQDNが示す接続先ホスト14のIPアドレスを特定する。本実施形態におけるDNSサーバ18は、いわゆるフルサービスリゾルバであり、複数のネームサーバ20との協働により名前解決処理を実行する。
【0030】
各ネームサーバ20は、いわゆる権威サーバであり、それぞれ特定の範囲のドメイン名を管理する装置である。例えば、あるネームサーバ20は「xxx.net」というドメイン名を管理し、また、他のネームサーバ20は「xxx.org」というドメイン名を管理する、の如くである。具体的には、各ネームサーバ20は、自装置が管理する範囲のドメイン名に関する情報を含むゾーンファイルと呼ばれるファイルを有しており、当該ゾーンファイルを参照することで、自装置が管理しているドメイン名の範囲を把握する。
【0031】
DNSサーバ18は、ネットワーク装置16から受信したFQDNを複数のネームサーバ20に送信する。FQDNを受信した複数のネームサーバ20のうち、当該FQDNを管理しているネームサーバ20は、自装置のゾーンファイルを参照して当該FQDNに対応するIPアドレスを特定し、特定したIPアドレスをDNSサーバ18に送信する。そして、DNSサーバ18は、ネームサーバ20から受信したIPアドレス(すなわち接続先ホスト14のIPアドレス)、及び、当該FQDNを管理している(すなわち当該IPアドレスをDNSサーバ18に送信した)ネームサーバ20のIPアドレスをネットワーク装置16に送信する。
【0032】
なお、DNSサーバ18と、少なくとも一部のネームサーバ20とが一体となっていてもよい。その場合、DNSサーバ18自体が、ある範囲のドメイン名を管理することになり、すなわち、ある範囲のドメイン名の情報を含むゾーンファイルをDNSサーバ18が有することになる。
【0033】
セキュリティサーバ22は、サーバコンピュータなどから構成される。セキュリティサーバ22は、接続元端末12から未知の接続先ホスト14への通信が不良通信であるか否かを判定する。すなわち、セキュリティサーバ22は、脅威の有る接続先ホスト14への通信、又は、マルウェアに感染した接続元端末12からの通信を検出する。ここで、未知の接続先ホスト14とは、接続元端末12が過去にアクセスしたことがなく、ネットワーク装置16が当該接続先ホスト14から送られてきたデータが不正データであるか否かを過去に判定したことがない接続先ホスト14を意味する。
【0034】
図4は、セキュリティサーバ22の構成概略図である。以下、
図4を参照しながら、セキュリティサーバ22の各部について説明する。
【0035】
通信インターフェース30は、例えばネットワークアダプタなどを含んで構成される。通信インターフェース30は、通信回線24を介して他の装置(例えばネットワーク装置16など)と通信する機能を発揮する。
【0036】
メモリ32は、例えばハードディスク、SSD(Solid State Drive)、ROM、あるいはRAMなどを含んで構成されている。メモリ32は、後述のプロセッサ42とは別に設けられてもよいし、少なくとも一部がプロセッサ42の内部に設けられていてもよい。メモリ32には、セキュリティサーバ22の各部を動作させるための情報処理プログラムが記憶される。また、
図4に示す通り、メモリ32には、第1学習器34、第2学習器36、閾値対応情報38、及びキャッシュデータ40が記憶される。
【0037】
第1学習器34は、例えばディープニューラルネットワークなどのモデルによって構成される。第1学習器34は、接続先ホスト14を示す情報及び当該接続先ホスト14の脅威の有無を学習データとし、接続先ホスト14を示す情報が入力されたときに当該接続先ホスト14の脅威度を出力するように学習される学習器である。学習済みの第1学習器34に処理対象の接続先ホスト14である対象接続先ホスト14aを示す情報を入力することで、第1学習器34は、対象接続先ホスト14aの脅威度を出力できる。脅威度とは、接続先ホスト14に脅威が有る可能性(あるいは確率と言ってもよい)を表す数値である。本実施形態では、脅威度は0~1の値を取り、その値が大きい程、接続先ホスト14に脅威が有る可能性が大きいことを表す。第1学習器34の詳細については、後述の学習処理部44の処理と共に後述する。
【0038】
第2学習器36は、例えばRNN(Recurrent Neural Network;リカレントニューラルネットワーク)などのニューラルネットワークモデル、あるいは、自己符号化器(オートエンコーダとも呼ばれる)などによって構成される。第2学習器36は、接続元端末12からの通信の通信履歴を学習データとし、接続元端末12からの通信の通信履歴を入力されたときに当該接続元端末12からの通信の異常度である通信異常度を出力するように学習される学習器である。第2学習器36は、接続元端末12からの通信の通信履歴に基づいて、接続元端末12からよく行われる通信の特徴(いわば「いつもの」通信の特徴)を学習する。学習済みの第2学習器36に処理対象の接続元端末12である対象接続元端末12aの通信履歴を入力することで、第2学習器36は、対象接続元端末12aの通信異常度を出力できる。通信異常度とは、学習済みである、接続元端末12からよく行われる通信の特徴と、対象接続元端末12aの通信履歴が示す通信の特徴との差異の大きさを表す数値である。正常時(接続元端末12がマルウェアに感染していないとき)の接続元端末12からよく行われる通信の特徴と、異常時(接続元端末12がマルウェアに感染しているとき)の通信の特徴とは、互いに異なるのが一般的である。そして、正常時における接続元端末12からよく行われる通信の特徴は、それほど大きく変動しないのが一般的である。したがって、通信異常度とは、接続元端末12がマルウェアに感染している可能性を示す指標であるとも言える。本実施形態では、通信異常度も0~1の値を取り、その値が大きい程、学習済みの通信の特徴と、対象接続元端末12aの通信履歴が示す通信の特徴との差異が大きいことを表す。第2学習器36の詳細についても、後述の学習処理部44の処理と共に後述する。
【0039】
なお、第1学習器34あるいは第2学習器36の実体は、学習器の構造を定義するプログラム、学習器に関する各種パラメータ、及び、入力データに対して処理を行うための処理実行プログラムなどである。したがって、メモリ32に第1学習器34あるいは第2学習器36が記憶されるとは、上記プログラムや各種パラメータがメモリ32に記憶されることを意味する。
【0040】
閾値対応情報38は、接続元端末12の通信異常度と、接続先ホスト14の脅威度に関する閾値である脅威度閾値とが対応付けられている情報である。
図5に、閾値対応情報38の例が示されている。
図5の例では、「0.1以上0.8未満」の接続元端末12の通信異常度αに対して脅威度閾値「0.99」が対応付けられ、「0.8以上0.9未満」の通信異常度αに対して脅威度閾値「0.90」が対応付けられ、「0.9以上0.99未満」の接続元端末12の通信異常度αに対して脅威度閾値「0.80」が対応付けられ、「0.99以上1.0未満」の接続元端末12の通信異常度αに対して脅威度閾値「0.70」が対応付けられている。このように、閾値対応情報38においては、通信異常度αが大きい程、より小さい脅威度閾値が対応付けられている。閾値対応情報38は、後述の通信判定部50によって参照されるため、閾値対応情報38の利用方法は、通信判定部50の処理と共に後述する。
【0041】
キャッシュデータ40は、メモリ32に一時的に(換言すれば時限的に)記憶されるデータである。キャッシュデータ40の実態は、第1学習器34が出力した接続先ホスト14の脅威度を示す情報、あるいは、第2学習器36が出力した接続元端末12の通信異常度を示す情報である。
【0042】
図6に、キャッシュデータ40の第1の例である接続先ホスト14の脅威度を示す情報が示されている。
図6にはテーブルが示されているが、当該テーブルの1つのレコードが1つのキャッシュデータ40を表すものである。
図6に示されるキャッシュデータ40は、接続先ホスト14を識別する情報(
図6の例では接続先ホスト14のFQDN)と、当該接続先ホスト14の脅威度と、当該キャッシュデータ40の保持期限とが関連付けられて記憶される。保持期限は、当該キャッシュデータ40がメモリ32に保持される期限を示すものであり、適宜予め定められておいてよい(例えば当該キャッシュデータ40がメモリ32に記憶されてから一定時間後など)。保持期限が到来すると、当該キャッシュデータ40はメモリ32から消去される。
【0043】
図7に、キャッシュデータ40の第2の例である接続元端末12の通信異常度を示す情報が示されている。
図7においても、テーブルの1つのレコードが1つのキャッシュデータ40を表すものである。
図7に示されるキャッシュデータ40は、接続元端末12を識別する情報(
図7の例では接続元端末12のIPアドレス)と、当該接続元端末12の通信異常度と、当該キャッシュデータ40の保持期限とが関連付けられて記憶される。
【0044】
図4に戻り、プロセッサ42は、広義的な処理装置を指し、汎用的な処理装置(例えばCPUなど)、及び、専用の処理装置(例えばGPU(Graphics Processing Unit)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、あるいは、プログラマブル論理デバイスなど)の少なくとも1つを含んで構成される。プロセッサ42としては、1つの処理装置によるものではなく、物理的に離れた位置に存在する複数の処理装置の協働により構成されるものであってもよい。
図4に示す通り、プロセッサ42は、メモリ32に記憶された情報処理プログラムにより、学習処理部44、脅威度取得部46、通信異常度取得部48、通信判定部50、及び不良通信対応処理部52としての機能を発揮する。
【0045】
学習処理部44は、第1学習器34及び第2学習器36を学習させる学習処理を行う。
【0046】
まず、第1学習器34の学習処理について説明する。学習処理部44は、接続先ホスト14を示す情報及び当該接続先ホスト14の脅威の有無を学習データとし、接続先ホスト14を示す情報が入力されたときに当該接続先ホスト14の脅威度を出力するように第1学習器34を学習させる。学習データとしては、種々の団体から提供されている、脅威の有るFQDNのリストである脅威FQDNリスト、及び、脅威の無いFQDNのリストである安全FQDNリストを用いることができる。この場合、脅威FQDNリストに含まれるFQDNが接続先ホスト14を示す情報であり「脅威有り」が教師データとなり、あるいは、安全FQDNリストに含まれるFQDNが接続先ホスト14を示す情報であり「脅威無し」が教師データとなる。これにより、第1学習器34は、脅威の有るFQDNの特徴及び脅威の無いFQDNの特徴を学習し、未知のFQDNが示す未知の接続先ホスト14の脅威度を予測して出力することができるようになる。
【0047】
また、学習処理部44は、ネットワーク装置16から受信した判定ログ16cに基づくデータを学習データとして用いて、第1学習器34を学習させてもよい。詳しくは、学習処理部44は、判定ログ16cに含まれる、接続先ホスト14を示す情報としてのFQDN(つまり過去に接続元端末12がアクセスした接続先ホスト14のFQDN)と、当該接続先ホスト14の脅威の有無を学習データとして用いて第1学習器34の学習処理を行う。
【0048】
図8に、学習処理部44による第1学習器34の学習処理の一例の概念図が示されている。学習処理部44は、判定ログ16cに含まれる、接続先ホスト14のFQDNを第1学習器34に入力し、第1学習器34に当該接続先ホスト14の脅威度を出力させ、出力された当該接続先ホスト14の脅威度と、教師データである当該接続先ホスト14の脅威の有無(実績)との差分に基づいて、第1学習器34を学習させる。学習処理部44が上述の学習処理を繰り返すことで、学習済みの第1学習器34は、接続先ホスト14のFQDNを入力として、当該接続先ホスト14の脅威度を出力することができるようになる。
【0049】
また、学習データである接続先ホストを示す情報として、接続先ホスト14のFQDNに代えてあるいは加えて、判定ログ16cに含まれる、接続先ホスト14のIPアドレス、当該FQDNを管理するネームサーバ20の名前(ネームサーバ名)及びIPアドレスが用いられてもよい。
【0050】
接続先ホスト14を示す情報として、接続先ホスト14のIPアドレスのみならず、当該接続先ホスト14のFQDNを管理するネームサーバ20の名前やIPアドレスを用いるのは、接続先ホスト14が名前ベースバーチャルホストである場合に接続先ホスト14を一意に特定するためである。接続先ホスト14が名前ベースバーチャルホストである場合、上述のように、1つのIPアドレスには複数の接続先ホスト14が割り当てられるが、接続先ホスト14のIPアドレスと、当該接続先ホスト14のドメイン名を管理するネームサーバ20を示す情報との組み合わせによって、接続先ホスト14を一意に特定し得る。なぜならば、同一IPアドレスに割り当てられた複数の接続先ホスト14(名前ベースバーチャルホスト)は、互いにドメイン名が異なることから、各接続先ホスト14の各ドメイン名を管理するネームサーバ20が互いに異なる場合が多い。したがって、接続先ホスト14のIPアドレスと、当該接続先ホスト14のドメイン名を管理するネームサーバを示す情報との組み合わせによって、接続先ホスト14を一意に特定することができる。
【0051】
また、第1学習器34がより高精度に接続先ホスト14の脅威度を出力できるように、学習データには、接続先ホスト14のIPアドレスの保有国、及び、接続先ホストのIPアドレスのネットワーク名のうちの少なくとも1つが加えられてもよい。
【0052】
接続先ホスト14のIPアドレスの保有国毎に、脅威が有る接続先ホスト14の数に差異があるならば、学習データに接続先ホスト14のIPアドレスの保有国が加えられることで、第1学習器34は、接続先ホスト14のIPアドレスの保有国に基づいて、当該接続先ホスト14の脅威度を予測することができるようになる。
【0053】
また、悪意のある者が、地域インターネットレジストリに対して複数のIPアドレスを申請した場合、当該複数のIPアドレスには同一のネットワーク名が付与されることとなる。そして、同一のネットワーク名が付された当該複数のIPアドレスが示す複数の接続先ホスト14は、当該悪意のある者が管理するものとなり、いずれも脅威の有るものとなる場合が多いと言える。したがって、学習データに接接続先ホストのIPアドレスのネットワーク名が加えられることで、第1学習器34は、接続先ホスト14のIPアドレスのネットワーク名に基づいて、当該接続先ホスト14の脅威度を予測することができるようになる。具体的には、既に脅威が有ると判定された接続先ホスト14のIPアドレスと同一のネットワーク名が付されたIPアドレスが示す他の接続先ホスト14の脅威度をより高く予測することができる。
【0054】
上記いずれの学習方法であっても、学習データに教師データが含まれ、第1学習器34の出力と教師データとの差分に基づいて第1学習器34が学習されるから、第1学習器34は、教師有り学習により学習されると言える。なお、第1学習器34としては、接続先ホスト14を示す情報及び当該接続先ホスト14の脅威の有無を学習データとし、接続先ホスト14を示す情報が入力されたときに当該接続先ホスト14の脅威度を出力するように学習される限りにおいて、どのような学習器であってもよい。
【0055】
次に、第2学習器36の学習処理について説明する。上述の通り、学習処理部44は、接続元端末12からの通信の通信履歴を学習データとし、接続元端末12からの通信の通信履歴が入力されたときに当該接続元端末12の通信異常度を出力するように第2学習器36を学習させる。
【0056】
第2学習器36の一つの代表的な態様としては、
図9に示すような、RNNを拡張したLSTM(Long Short-Term Memory)である。LSTMには、順番に並ぶ複数の入力データが順次入力される。LSTMには、前の入力データに対する出力が、次の入力データと共に自らに入力される。これにより、LSTMは、前の入力データの特徴を考慮して次の入力データを出力することができる。このような学習器は、再帰型ニューラルネットワークとも呼ばれる。
【0057】
学習処理部44は、ネットワーク装置16から受信した、接続元端末12からの通信の通信履歴としてのクエリログ16aに基づくデータを学習データとして用いて、LSTMを学習させる学習処理を行う。
【0058】
まず、学習処理部44は、各クエリログ16aに含まれる接続元端末12を識別する情報(本実施形態では接続元端末のIPアドレス)に基づいて、クエリログ16aを接続元端末12毎に区別する。そして、接続元端末12毎に、各クエリログ16aに含まれるリクエスト日時に基づいて、対応するリクエストが送信された順番に時系列にクエリログ16aを並べる。さらに、時系列に並べられた各クエリログ16aからクエリタイプを抽出する。これにより、学習処理部44は、クエリタイプが(送信された順番で)時系列に並べられた接続元端末12毎のクエリタイプ列を取得する。
図10には、学習処理部44が取得したクエリタイプ列の例が示されている。
【0059】
学習処理部44は、上述のようにして取得した接続元端末12毎のクエリタイプ列を学習データとして用いて、接続元端末12毎にLSTMを学習させる。具体的には、学習処理部44は、入力されたクエリタイプ列の特徴を出力するようにLSTMを学習させる。なお、接続元端末12毎にLSTMを学習させるとは、学習データと共に接続元端末12を識別する情報をLSTMに入力するようにしてもよいし、接続元端末12毎に別個のLSTMを用意するようにしてもよい。以下においては、特定の1つの接続元端末12に関するLSTMを学習させる場合について説明する。
【0060】
クエリタイプ列は、複数のクエリタイプが並べられた1つの列であるため、学習データ数(サンプル数)を増やすために、学習処理部44は、クエリタイプ列の一部分であって、クエリタイプ列において連続する複数のクエリタイプからなる部分クエリタイプ列を1つの学習データとする。例えば、
図11に示すように、クエリタイプ列が「・・・,A,AAAA,A,TXT,NS,A,CNAME,AAAA,・・・」である場合、その部分クエリタイプ列である「・・・,A,AAAA,A,TXT」を学習データとする。本実施形態では、部分クエリタイプ列の末尾のクエリタイプ(上例では「TXT」)を学習データのうちの評価データとし、部分クエリタイプ列の評価データ以外の部分(上例では「・・・,A,AAAA,A」)を学習データのうちの学習用入力データとする。
【0061】
また、同クエリタイプ列から、
図12に示すような学習データを定義することもできる。
図12の例では、部分クエリタイプ列「・・・,A,AAAA,A,TXT,NS」が学習データとされており、そのうち、「・・・,A,AAAA,A,TXT」が学習用入力データであり、「NS」が評価データである。
【0062】
学習処理部44は、学習データのうち、学習用入力データをLSTMに入力する。LSTMには、学習用入力データに含まれる複数のクエリタイプが順次入力される。例えば、学習用入力データが「A,AAAA,A,TXT」である場合、まず、1番目のクエリタイプ「A」がLSTMに入力されると、LSTMは、クエリタイプ「A」の特徴を出力する。当該出力は隠れ状態ベクトルとも呼ばれる。次いで、学習用入力データの2番目のクエリタイプ「AAAA」がLSTMに入力されると、LSTMは、1番目のクエリタイプ「A」に対する出力(隠れ状態ベクトル)と、入力されたクエリタイプ「AAAA」の双方を考慮して、隠れ状態ベクトルを出力する。当該隠れ状態ベクトルは、2番目のクエリタイプ「AAAA」の特徴のみならず、1番目のクエリタイプ「A」の特徴を考慮したものとなる。このような処理を繰り返し、学習用入力データの最後のクエリタイプ「TXT」がLSTMに入力されると、LSTMは、それまでに入力されたクエリタイプ「A,AAAA,A」の特徴及び入力されたクエリタイプ「TXT」の特徴を考慮してLSTMの出力として出力する。
【0063】
本実施形態では、LSTMは、複数のクエリタイプそれぞれについての、入力された学習用入力データに後続するクエリタイプである確率を数値として出力する。例えば、入力された学習用入力データに後続するクエリタイプが「A」である確率が「0.95」、「AAAA」である確率が「0.03」、「TXT」である確率が「0.00000007」の如くである。
【0064】
なお、LSTMが学習用入力データに後続するクエリタイプを予測するには、学習用入力データに所定数以上のクエリタイプが含まれている必要がある。したがって、学習処理部44は、学習用入力データが所定数以上となるように、クエリタイプ列において学習データを定義する。
【0065】
学習処理部44は、LSTMの出力と、評価データ(すなわち正解データ)との差分に基づいて、LSTMを学習させる。
【0066】
学習処理部44が上述の学習処理を繰り返すことで、学習済みのLSTMは、入力されたクエリタイプ列に基づいて、当該クエリタイプ列の特徴を出力することができるようになる。本実施形態では、学習済みのLSTMは、入力された学習用入力データの特徴を考慮し、当該学習用入力データに後続するクエリタイプの確率を出力できるようになる。
【0067】
正常時、つまり、接続元端末12がマルウェアに感染していない場合において、接続元端末12からの要求に応じてDNSサーバ18に送信される複数のリクエストから取得されるクエリタイプ列は、特定の特徴を有している場合が多い。例えば、ある接続元端末12に対応するクエリタイプ列は、「A,AAAA,A,TXT」のパターンが多い、の如くである。このようなクエリタイプ列の特徴は接続元端末12によって異なり得る。これは、接続元端末12を使用するユーザが特定の行動パターンで行動している場合が多いことなどに起因するものである。例えば、ある接続元端末12を使用するユーザが、複数の接続先ホスト14に特定の順番でアクセスする傾向がある、あるいは、ある特定の順番でDNSサーバ18から情報を取得する傾向がある場合、当該接続元端末12に対応するクエリタイプ列は、当該ユーザの傾向を表すものとなる。つまり、クエリタイプ列の特徴は、接続元端末12からの通信の特徴を表すものであり、LSTMは、接続元端末12からよく行われる通信の特徴を学習していると言える。
【0068】
このように、LSTMは、接続元端末12からよく行われる通信の特徴を学習しているので、あるクエリタイプ列がLSTMに入力された場合、LSTMは、入力されたクエリタイプ列が示す接続元端末12からの通信の特徴が、学習済みの接続元端末12からの通信の特徴、いわば、「いつもの」接続元端末12からの通信の特徴と同じであるのか否かを判定することができる。そして、入力されたクエリタイプ列が示す接続元端末12からの通信の特徴と、学習済みの接続元端末12からの通信の特徴との差分に基づいて、接続元端末12がいつもと違う通信をしている可能性、すなわち、接続元端末12がマルウェアに感染している可能性を出力することができる。
【0069】
第2学習器36のもう一つの代表的な態様としては、
図13に示すような、自己符号化器である。自己符号化器は、オートエンコーダとも呼ばれる学習器である。自己符号化器は、それぞれが複数のニューロン36aを含む複数の層36bから構成される。自己符号化器は、入力データの次元数を縮小して(すなわち入力データの特徴を圧縮して)、入力データの特徴を表す圧縮された特徴ベクトル36cを抽出するエンコーダ36dと、圧縮された特徴ベクトル36cから次元数を拡大して、元の入力データに戻して出力するデコーダ36eとを含んで構成される。エンコーダ36d及びデコーダ36eは、それぞれ複数の層36bを含んで構成される。エンコーダ36dにおいては、入力側から深い層36b側に向かうにつれ、層36bが有するニューロン36aの数(すなわちデータの次元数)が徐々に減っていく。デコーダ36eにおいては、出力側に向かうにつれ、層36bが有するニューロン36aの数が徐々に増えていく。エンコーダ36d及びデコーダ36eにおいて、ある層36bに含まれる複数のニューロン36aと、当該層36bに隣接する層36bに含まれる複数のニューロン36aは全結合されている
【0070】
学習処理部44は、ネットワーク装置16から受信した、接続元端末12からの通信の通信履歴としての通信ログ16bに基づくデータを学習データとして用いて、自己符号化器を学習させる学習処理を行う。
【0071】
まず、学習処理部44は、通信ログ16bに含まれる情報を自己符号化器の学習データとして適した形式に変更する。具体的には、学習処理部44は、通信ログ16bに含まれる、接続元端末12のIPアドレスが有する各セグメント(IPv4ではオクテットとも呼ばれる)の数値、及び、接続先ホスト14のIPアドレスが有する各セグメントの数値を連結したものを学習データとする。例えば、通信ログ16bの内容が
図3に示す内容であるとすると、学習データは、接続元端末12のIPアドレスと接続先ホスト14のIPアドレスを並べて「192,168,183,190,192,168,180,22」となる。すなわち、学習データには、接続元端末12のIPアドレス、及び、接続先ホストのIPアドレスが含まれる。
【0072】
望ましくは、学習データには、通信ログ16bに含まれる、タイムゾーンを示す情報及び接続先ホスト14のIPアドレスの保有国を示す情報の少なくとも一方が含まれていてもよい。この場合、これらの情報がさらに連結されたものが学習データとなる。本実施形態では、学習データは、タイムゾーンを示す情報、接続元端末12のIPアドレス、接続先ホストのIPアドレス、及び、接続先ホスト14のIPアドレスの保有国を示す情報を含む。例えば、通信ログ16bの内容が
図3に示す内容であるとすると、学習データは、「1,192,168,183,190,192,168,180,22,jp」となる。
【0073】
上述の処理にて、ネットワーク装置16に蓄積記憶された通信ログ16bの数と同じサンプル数の学習データが得られる。学習処理部44は、得られた学習データを用いて自己符号化器を学習させる。
【0074】
学習処理部44が学習データを入力データとして自己符号化器に入力すると、自己符号化器のエンコーダ36dが当該入力データの特徴から圧縮された特徴ベクトル36cを抽出し、自己符号化器のデコーダ36eが特徴ベクトル36cから入力データを復元して出力しようとする。学習処理部44は、自己符号化器の出力データと入力データとの差分に基づいて、自己符号化器を学習させる。
【0075】
学習処理部44が上述の学習処理を繰り返すことで、学習済みの自己符号化器は、入力データの特徴を学習し、入力データが学習済みの特徴を有しているならば、当該入力データから抽出された、圧縮された特徴ベクトル36cに基づいて、当該入力データを復元して出力データとして出力できるようになる。つまり、自己符号化器は、入力データが学習済みの特徴を有しているならば、当該入力データをそのまま出力データとして出力できるようになる。換言すれば、自己符号化器は、入力データがこれまでに学習していない特徴を有しているならば、当該入力データを復元して出力データとして出力することができない。その場合、入力データと出力データとが異なることとなる。
【0076】
正常時、つまり、接続元端末12がマルウェアに感染していない場合においては、接続元端末12は、特定の複数の接続先ホスト14にアクセスする場合が多い。これは、接続元端末12を使用するユーザが特定の行動パターンで行動している場合が多いことなどに起因するものである。したがって、接続元端末12のIPアドレスと、接続先ホスト14のIPアドレスとの組み合わせが、接続元端末12からの通信の特徴を表すものとなり得る。さらに好適には、接続元端末12のIPアドレスと、接続先ホスト14のIPアドレスとにタイムゾーンや接続先ホスト14のIPアドレスの保有国を含めたものが、接続元端末12からの通信の特徴を表すものとなり得る。したがって、上述の学習データを用いて学習される自己符号化器は、接続元端末12からよく行われる通信の特徴を学習すると言える。
【0077】
このように、自己符号化器は、接続元端末12からよく行われる通信の特徴を学習しているので、接続元端末12からの、ある通信の特徴を示す入力データが自己符号化器に入力された場合、自己符号化器は、入力データが示す接続元端末12からの通信の特徴が、学習済みの接続元端末12からの通信の特徴、いわば、「いつもの」接続元端末12からの通信の特徴と同じである場合には入力データと同等の出力データを出力できるし、そうでなかれば入力データとは異なる出力データを出力することとなる。そして、入力データと出力データとの差分に基づいて、接続元端末12がいつもと違う通信をしている可能性、すなわち、接続元端末12がマルウェアに感染している可能性を出力することができる。
【0078】
上述のように、第2学習器36に用いられる学習データには、それが正常な接続元端末12からの通信によって得られた学習データであるのか、マルウェアに感染した接続元端末12からの通信によって得られた学習データであるのかを示すラベルが付されていない。したがって、第2学習器36は、教師無し学習により学習されていると言える。なお、第2学習器36としては、接続元端末12からの通信の通信履歴を学習データとし、接続元端末12の通信異常度を出力するように学習される限りにおいて、どのような学習器であってもよい。
【0079】
図4に戻り、脅威度取得部46は、学習済みの第1学習器34に、処理対象の接続先ホスト14である対象接続先ホスト14aを示す情報を入力することで、対象接続先ホスト14aの脅威度を取得する。
【0080】
第1学習器34の学習データに含められた、接続先ホスト14を示す情報に応じて、対象接続先ホスト14aを示す情報が決定される。例えば、接続先ホスト14のFQDNを用いて第1学習器34が学習されたのであれば、脅威度取得部46は、対象接続先ホスト14aのFQDNを学習済みの第1学習器34に入力する。また、接続先ホスト14のIPアドレス及び、当該接続先ホスト14のFQDNを管理するネームサーバのIPアドレスを用いて第1学習器34が学習されたのであれば、脅威度取得部46は、対象接続先ホスト14aのIPアドレス及び、当該対象接続先ホスト14aのFQDNを管理するネームサーバのIPアドレスを学習済みの第1学習器34に入力する。さらに、接続先ホスト14のIPアドレスの保有国やネットワーク名を用いて第1学習器34が学習されている場合は、脅威度取得部46は、対象接続先ホスト14aを示す情報に加え、対象接続先ホスト14aのIPアドレスの保有国やネットワーク名を第1学習器34に入力するようにしてもよい。
【0081】
具体的には、接続元端末12が対象接続先ホスト14aにアクセスしようとして、接続元端末12からネットワーク装置16に対象接続先ホスト14aのFQDNが送信された場合、ネットワーク装置16は、当該FQDNをセキュリティサーバ22に送信する。また、ネットワーク装置16は、当該FQDNに基づいてDNSサーバ18から受信した、対象接続先ホスト14aのIPアドレスや、当該FQDNを管理するネームサーバ20のIPアドレスをセキュリティサーバ22に送信する。さらに、ネットワーク装置16がWhoisなどから取得した、対象接続先ホスト14aのIPアドレスの保有国を示す情報、及び、対象接続先ホスト14aのIPアドレスのネットワーク名をセキュリティサーバ22に送信する。脅威度取得部46は、受信したこれらの情報を学習済みの第1学習器34に入力する。
【0082】
通信異常度取得部48は、学習済みの第2学習器36に、処理対象の接続元端末12である対象接続元端末12aの通信履歴を入力することで、対象接続元端末12aの通信異常度を取得する。
【0083】
例えば、第2学習器36が上述のLSTMで構成される場合、通信異常度取得部48は、以下のように対象接続元端末12aの通信異常度を取得する。
【0084】
まず、通信異常度取得部48は、対象接続元端末12aについてのクエリログ16aに基づいて、学習処理部44と同様の処理により、検出対象となる対象クエリタイプ列を取得する。通信異常度取得部48は、取得した対象クエリタイプ列を学習済みのLSTMに入力する。1つのLSTMが接続元端末12毎に学習されている場合には、通信異常度取得部48は、対象クエリタイプと共に、接続元端末12を識別する情報(ここでは接続元端末12のIPアドレス)をLSTMに入力する。接続元端末12毎に別個のLSTMが用意されている場合には、通信異常度取得部48は、対応するLSTMに対象クエリタイプ列を入力する。
【0085】
以下、第2学習器36がLSTMである場合における通信異常度の算出処理の詳細を説明する。通信異常度取得部48は、まず、取得した対象クエリタイプ列のうち、先頭から所定数以上のクエリタイプからなる部分対象クエリタイプ列を定義し、当該部分対象クエリタイプ列をLSTMに入力する。
【0086】
LSTMは、当該部分対象クエリタイプ列に基づいて、当該部分対象クエリタイプ列に後続するクエリタイプを予測し、各クエリタイプについての、当該部分対象クエリタイプ列に後続するクエリタイプである確率を出力する。そして、通信異常度取得部48は、LSTMが出力した各クエリタイプの確率のうち、対象クエリタイプ列において、実際に当該部分対象クエリタイプ列に後続するクエリタイプの確率を、当該部分対象クエリタイプ列に後続するクエリタイプの個別スコアとする。
【0087】
図14を参照しつつ、詳しく説明する。
図14には、対象クエリタイプ列「・・・,A,AAAA,A,CNAME,NS,A,CNAME,AAAA,・・・」が示されている。通信異常度取得部48は、まず、対象クエリタイプ列のうち、「・・・,A,AAAA」を部分対象クエリタイプ列とし、これをLSTMに入力する。LSTMは、部分対象クエリタイプ列「・・・,A,AAAA」に基づいて、当該部分対象クエリタイプ列に後続するクエリタイプの確率を出力する。
図14に示すように、ここでは、代表的に、当該部分対象クエリタイプ列に後続するクエリタイプが、「A」である確率が「0.95」であり、「AAAA」である確率が「0.03」であり、「TXT」である確率が「0.00000007」であり、「CNAME」である確率が「0.000004」であるとする。
【0088】
次いで、通信異常度取得部48は、対象クエリタイプ列を参照し、入力した部分対象クエリタイプ列「・・・A,AAAA」に実際に後続するクエリタイプを特定する。ここでは、実際の後続クエリタイプとして「A」が特定される。そして、通信異常度取得部48は、LSTMが出力した各クエリタイプの確率のうち、特定した実際の後続クエリタイプである「A」の確率である「0.95」を当該後続クエリタイプの「A」の個別スコアとする。この個別スコアは、値が小さい程、対象クエリタイプ列がより異常である(すなわち当該接続元端末12のいつもの通信の特徴とはより異なる)ことを示す。
【0089】
次いで、通信異常度取得部48は、部分対象クエリタイプ列に、それに後続するクエリタイプを1つ追加する。
図14の例では、部分対象クエリタイプ列が「・・・,A,AAAA,A」となる。LSTMは、同様に、部分対象クエリタイプ列「・・・,A,AAAA,A」に基づいて、当該部分対象クエリタイプ列に後続するクエリタイプの確率を出力する。
図14に示すように、ここでは、代表的に、当該部分対象クエリタイプ列に後続するクエリタイプが、「A」である確率が「0.03」であり、「AAAA」である確率が「0.000005」であり、「TXT」である確率が「0.93」であり、「CNAME」である確率が「0.00000002」であるとする。そして、通信異常度取得部48は、LSTMが出力した各クエリタイプの確率のうち、入力した部分対象クエリタイプ列「・・・A,AAAA,A」に実際に後続するクエリタイプである「CNAME」の確率である「0.00000002」を当該後続クエリタイプの「CNAME」の個別スコアとする。
【0090】
その後も通信異常度取得部48は、部分対象クエリタイプ列に1つずつクエリタイプを追加し、当該部分対象クエリタイプの後続クエリタイプの個別スコアを算出していく。
【0091】
通信異常度取得部48は、対象クエリタイプに含まれる各クエリタイプについて算出された個別スコアに基づいて、対象接続元端末12aの通信異常度を算出する。
【0092】
個別スコアに基づく対象接続元端末12aの通信異常度の算出方法としては、種々の方法が考えられるが、ここでは、通信異常度取得部48は、以下の処理によって対象接続元端末12aの通信異常度を算出する。
【0093】
まず、通信異常度取得部48は、対象クエリタイプに含まれる各クエリタイプのうち、予め定められた閾値(例えば0.00001)以下の個別スコアが算出されたクエリタイプのみを抽出する。そして、クエリログ16aを参照し、抽出されたクエリタイプを含むリクエストのリクエスト日時、当該クエリタイプについて算出された個別スコアを含む異常ログを生成する。異常ログには、クエリタイプに対応する接続元端末12のIPアドレスやクエリタイプなどが含まれていてもよい。
【0094】
次いで、通信異常度取得部48は、現時点から過去の一定時間(例えば10分間)の枠である時間ウィンドウにおける、生成した異常ログに含まれる個別スコアに基づく評価スコアを算出する。ここでは、通信異常度取得部48は、パープレキシティ(Perplexity)という尺度に基づいて評価スコアを算出する。具体的には、通信異常度取得部48は、設定された時間ウィンドウ内に含まれる各異常ログ(異常ログに含まれるリクエスト日時が当該時間ウィンドウ内であるもの)に含まれる各個別スコアPの-log2Pを計算し、当該時間ウィンドウ内における各個別スコアPの-log2Pの平均値を算出する。当該平均値が当該時間ウィンドウの評価スコアとなる。評価スコアが大きい程、対象クエリタイプ列がより異常である(すなわち当該接続元端末12のいつもの通信の特徴とはより異なる)ことを示す。通信異常度取得部48は、算出された評価スコアを値が0~1となるように調整し、これを対象接続元端末12aの通信異常度とする。
【0095】
また、例えば、第2学習器36が上述の自己符号化器で構成される場合、通信異常度取得部48は、以下のように対象接続元端末12aの通信異常度を取得する。
【0096】
通信異常度取得部48は、対象接続元端末12aについての通信ログ16bに基づいて、学習処理部44と同様の処理により、対象接続元端末12aのIPアドレスが有する各セグメントの数値、及び、対象接続元端末12aが接続した対象接続先ホスト14aのIPアドレスが有する各セグメントの数値を連結した対象入力データを取得する。自己符号化器が、タイムゾーンを示す情報を含んだ学習データで学習されている場合、通信異常度取得部48は、通信ログ16bに基づいて、タイムゾーンを示す情報、対象接続元端末12aのIPアドレスが有する各セグメントの数値、及び、対象接続先ホスト14aのIPアドレスが有する各セグメントの数値を連結した対象入力データを含む対象入力データを取得する。また、自己符号化器が、対象接続先ホスト14aのIPアドレスの保有国を示す情報を含んだ学習データで学習されている場合、通信異常度取得部48は、通信ログ16bに基づいて、対象接続元端末12aのIPアドレスが有する各セグメントの数値、対象接続先ホスト14aのIPアドレスが有する各セグメントの数値を一列に並べた対象入力データ、及び、対象接続先ホスト14aのIPアドレスの保有国を示す情報を連結した対象入力データを取得する。ここでは、通信異常度取得部48は、タイムゾーンを示す情報、対象接続元端末12aのIPアドレスが有する各セグメントの数値、対象接続先ホスト14aのIPアドレスが有する各セグメントの数値、及び、対象接続先ホスト14aのIPアドレスの保有国を示す情報を含む対象入力データを取得する。
【0097】
通信異常度取得部48は、取得した対象入力データを学習済みの自己符号化器に入力し、当該対象入力データと、当該対象入力データに対する自己符号化器の出力データ(「対象出力データ」と呼ぶ)との比較に基づいて、対象接続元端末12aの通信異常度を算出する。
【0098】
以下、第2学習器36が自己符号化器である場合における通信異常度の算出処理の詳細を説明する。
図15には、学習済みの自己符号化器に入力された対象入力データと、当該対象入力データに対する自己符号化器の対象出力データとの例が示されている。通信異常度取得部48は、対象入力データと対象出力データとを比較して、両者の差異を表す誤差スコアを算出する。
【0099】
具体的には、通信異常度取得部48は、対象入力データが有する各情報(すなわちタイムゾーンを示す情報、接続元端末12のIPアドレスの各セグメント、接続先ホスト14のIPアドレスの各セグメント、接続先ホスト14のIPアドレスの保有国を示す情報)と、対象出力データが有する対応する情報とを比較して、各情報毎に個別誤差スコアを算出する。例えば、
図15に示すように、対象入力データにおけるタイムゾーン「1」と、対象出力データにおけるタイムゾーン「1」とを比較し、両者の差異を表す個別誤差スコア「0.0001」を算出する。また、例えば、対象入力データにおける対象接続先ホスト14aのIPアドレスの第1セグメント「192」と、対象出力データにおける対象接続先ホスト14aのIPアドレスの第1セグメント「194」とを比較し、両者の差異を表す個別誤差スコア「0.1」を算出する。
【0100】
個別誤差スコアの算出方法は種々の方法が考えられるため、任意の方法を採用することができる。ここでは、対象入力データと対象出力データとの差異が大きい程、個別誤差スコアが大きくなるように算出され、対象入力データと対象出力データとの差異が小さい程、個別誤差スコアが小さくなるように算出される。
【0101】
対象入力データ及び対象出力データが有する情報毎に算出された、複数の個別誤差スコアに基づいて、対象入力データ全体と、対象出力データ全体との差異を表す誤差スコアが算出される。ここでは、対象入力データと対象出力データとの間で算出された複数の個別誤差スコアのうちの最大値を、対象入力データと対象出力データとの間の誤差スコアとする。
図15の例では、対象入力データにおける対象接続先ホスト14aのIPアドレスの第2セグメント「168」と、対象出力データにおける対象接続先ホスト14aのIPアドレスの第2セグメント「190」との間の個別誤差スコア「0.5」が最大値であるため、対象入力データと対象出力データとの間の誤差スコアが「0.5」となる。なお、誤差スコアは、対象入力データと対象出力データとの差異が大きい程、誤差スコアが大きくなるように算出される限りにおいて、その他の方法(例えば複数の個別誤差スコアの平均値など)によって算出されてもよい。
【0102】
通信異常度取得部48は、算出された誤差スコアを値が0~1となるように調整し、これを対象接続元端末12aの通信異常度とする。
【0103】
再度
図4に戻り、通信判定部50は、脅威度取得部46が取得した対象接続先ホスト14aの脅威度、及び、通信異常度取得部48が取得した対象接続元端末12aの通信異常度に基づいて、対象接続元端末12aから対象接続先ホスト14aへの通信が不良通信であるか否かを判定する判定処理を実行する。
【0104】
まず、通信判定部50は、閾値対応情報38(
図5参照)を参照し、通信異常度取得部48が取得した対象接続元端末12aの通信異常度に対応する脅威度閾値を特定する。例えば、閾値対応情報38が
図5に示すような内容である場合を考える。このとき、通信異常度取得部48が取得した対象接続元端末12aの通信異常度が「0.7」である場合、通信判定部50は、脅威度閾値として「0.99」を特定する。また、通信異常度取得部48が取得した対象接続元端末12aの通信異常度が「0.95」である場合、通信判定部50は、脅威度閾値として「0.70」を特定する。
【0105】
上述の通り、閾値対応情報38においては、通信異常度αが大きい程、より小さい脅威度閾値が対応付けられ、換言すれば、通信異常度αが小さい程、より大きい脅威度閾値が対応付けられているから、対象接続元端末12aの通信異常度が大きい程、より小さい脅威度閾値が特定され、対象接続元端末12aの通信異常度が小さい程、より大きい脅威度閾値が特定される。
【0106】
次いで、通信判定部50は、特定した脅威度閾値と、脅威度取得部46が取得した対象接続先ホスト14aの脅威度とを比較し、対象接続先ホスト14aの脅威度が特定した脅威度閾値以上となった場合に、対象接続先ホスト14aに脅威が有ると判定する。これにより、対象接続元端末12aから対象接続先ホスト14aへの通信が不良通信である、と判定する。一方、対象接続先ホスト14aの脅威度が特定した脅威度閾値未満である場合は、対象接続先ホスト14aに脅威が無いと判定する。これにより、対象接続元端末12aから対象接続先ホスト14aへの通信は不良通信ではない、と判定する。このように、通信判定部50は、対象接続元端末12aの通信異常度に基づいて、対象接続先ホスト14aの脅威の有無を判定する。
【0107】
また、通信判定部50は、対象接続先ホスト14aの脅威度に基づいて、対象接続元端末12aがマルウェアに感染しているか否かを判定するようにしてもよい。この場合、閾値対応情報38として、
図16に示すように、接続先ホスト14の脅威度βと、接続元端末12の通信異常度に関する閾値である通信異常度閾値とが対応付けられている情報が予め用意される。
【0108】
この場合、通信判定部50は、閾値対応情報38を参照し、脅威度取得部46が取得した対象接続先ホスト14aの脅威度に対応する通信異常度閾値を特定する。閾値対応情報38においては、脅威度βが大きい程、より小さい通信異常度閾値が対応付けられ、換言すれば、脅威度βが小さい程、より大きい通信異常度閾値が対応付けられているから、対象接続先ホスト14aの脅威度が大きい程、より小さい通信異常度閾値が特定され、対象接続先ホスト14aの脅威度が小さい程、より大きい通信異常度閾値が特定される。
【0109】
そして、通信判定部50は、特定した通信異常度閾値と、通信異常度取得部48が取得した対象接続元端末12aの通信異常度とを比較し、対象接続元端末12aの通信異常度が特定した通信異常度閾値以上となった場合に、対象接続元端末12aがマルウェアに感染していると判定する。これにより、対象接続元端末12aから対象接続先ホスト14aへの通信が不良通信である、と判定する。一方、対象接続元端末12aの通信異常度が特定した通信異常度閾値未満である場合は、対象接続元端末12aはマルウェアに感染していないと判定する。これにより、対象接続元端末12aから対象接続先ホスト14aへの通信は不良通信ではない、と判定する。
【0110】
上述のように、本実施形態では、通信判定部50は、対象接続元端末12aの通信異常度と、対象接続先ホスト14aの脅威度の両方に基づいて、対象接続元端末12aから対象接続先ホスト14aへの通信が不良通信であるか否かを判定する。これにより、単に、対象接続元端末12aの通信異常度に基づいて、対象接続元端末12aがマルウェアに感染しているか否かを判定する場合、あるいは、単に、対象接続先ホスト14aの脅威度に基づいて、対象接続先ホスト14aに脅威が有るか否かを判定する場合に比して、より高精度に対象接続元端末12aから対象接続先ホスト14aへの通信が不良通信であるか否かを判定することができる。
【0111】
例えば、本実施形態によれば、対象接続先ホスト14aの脅威度が低い場合であっても、対象接続元端末12aの通信異常度が高ければ、当該対象接続先ホスト14aに脅威が有ると判定することができ、すなわち、対象接続元端末12aから対象接続先ホスト14aへの通信が不良通信であると判定することができる。また、対象接続元端末12aの通信異常度が低い場合であっても、対象接続先ホスト14aの脅威度が高ければ、当該対象接続元端末12aがマルウェアに感染していると判定することができ、すなわち、対象接続元端末12aから対象接続先ホスト14aへの通信が不良通信であると判定することができる。
【0112】
通信判定部50は、間欠的に(例えば数分毎に)上述の判定処理を実行する。ここで、判定処理の度に、第1学習器34に対象接続先ホスト14aの脅威度を出力させ、第2学習器36に対象接続元端末12aの通信異常度を出力させる場合、第1学習器34、第2学習器36、又はプロセッサ42の処理負荷が大きくなってしまうという問題が生じ得る。特に、セキュリティサーバ22が多数の接続元端末12と多数の接続先ホスト14との間の通信について判定処理を実行する場合、その問題は顕著となり得る。
【0113】
したがって、脅威度取得部46が取得した各接続先ホスト14の脅威度をキャッシュデータ40(
図6参照)として所定時間保持しておき、通信判定部50は、キャッシュデータ40の中に対象接続先ホスト14aの脅威度がある場合には、改めて脅威度取得部46及び第1学習器34に処理を行わせず、キャッシュデータ40として保持された対象接続先ホスト14aの脅威度に基づいて、上述の判定処理を行うようにしてもよい。
【0114】
また、通信異常度取得部48が取得した各接続元端末12の通信異常度をキャッシュデータ40(
図7参照)として所定時間保持しておき、通信判定部50は、キャッシュデータ40の中に対象接続元端末12aの通信異常度がある場合には、改めて通信異常度取得部48及び第2学習器36に処理を行わせず、キャッシュデータ40として保持された対象接続元端末12aの通信異常度に基づいて、上述の判定処理を行うようにしてもよい。
【0115】
再度
図4に戻り、不良通信対応処理部52は、対象接続元端末12aから対象接続先ホスト14aへの通信が不良通信であることを通信判定部50が判定したことに応じて、種々の処理を実行する。例えば、不良通信対応処理部52は、ネットワーク装置16を制御して、対象接続元端末12aから対象接続先ホスト14aへの通信を遮断する。また、対象接続元端末12aに警告を出力させるべく、警告出力指示を対象接続元端末12aに送信する。また、ネットワーク装置16の管理者が使用する管理者端末に対して通知を出力するようにしてもよい。
【0116】
以上、本発明に係る実施形態を説明したが、本発明は上記実施形態に限られるものではなく、本発明の趣旨を逸脱しない限りにおいて種々の変更が可能である。
【0117】
例えば、本実施形態では、第1学習器34及び第2学習器36はセキュリティサーバ22の学習処理部44により学習されていたが、第1学習器34及び第2学習器36は別の装置において学習され、学習済みの第1学習器34及び第2学習器36がメモリ32に記憶されてもよい。また、本実施形態では、学習処理部44、脅威度取得部46、通信異常度取得部48、通信判定部50、及び不良通信対応処理部52の機能はセキュリティサーバ22が有していたが、これらの機能をネットワーク装置16が有するようにしてもよい。
【符号の説明】
【0118】
10 ネットワークシステム、12 接続元端末、12a 対象接続元端末、14 接続先ホスト、14a 対象接続先ホスト、16 ネットワーク装置、16a クエリログ、16b 通信ログ、16c 判定ログ、18 DNSサーバ、20 ネームサーバ、22 セキュリティサーバ、24 通信回線、30 通信インターフェース、32 メモリ、34 第1学習器、36 第2学習器、38 閾値対応情報、40 キャッシュデータ、42 プロセッサ、44 学習処理部、46 脅威度取得部、48 通信異常度取得部、50 通信判定部、52 不良通信対応処理部。